\r
// HEADER FILES ------------------------------------------------------------\r
\r
+#if defined(_WIN32) && !defined(_MSC_VER)\r
+#define WIN32_LEAN_AND_MEAN\r
+#include <windows.h>\r
+#endif\r
+\r
#ifdef __NeXT__\r
#include <libc.h>\r
#else\r
#ifndef unix\r
#include <io.h>\r
#endif\r
+#include <limits.h>\r
#include <fcntl.h>\r
#include <stdlib.h>\r
#endif\r
int tk_Line;\r
int tk_Number;\r
char *tk_String;\r
-U_BYTE tk_SpecialValue;\r
+int tk_SpecialValue;\r
int tk_SpecialArgCount;\r
char *tk_SourceName;\r
int tk_IncludedLines;\r
{ "wadauthor", TK_WADAUTHOR },\r
{ "nowadauthor", TK_NOWADAUTHOR },\r
{ "acs_executewait", TK_ACSEXECUTEWAIT },\r
+ { "acs_namedexecutewait", TK_ACSNAMEDEXECUTEWAIT },\r
{ "encryptstrings", TK_ENCRYPTSTRINGS },\r
{ "import", TK_IMPORT },\r
{ "library", TK_LIBRARY },\r
{ "libdefine", TK_LIBDEFINE },\r
{ "bool", TK_BOOL },\r
{ "net", TK_NET },\r
+ { "clientside", TK_CLIENTSIDE }, // [BB]\r
{ "disconnect", TK_DISCONNECT },\r
{ "unloading", TK_UNLOADING },\r
- { "static", TK_STATIC }\r
+ { "static", TK_STATIC },\r
+ { "strparam", TK_STRPARAM_EVAL }, // [FDARI]\r
+ { "strcpy", TK_STRCPY }, // [FDARI]\r
};\r
\r
#define NUM_KEYWORDS (sizeof(Keywords)/sizeof(Keywords[0]))\r
\r
//==========================================================================\r
//\r
-// AddIncludePath\r
+// TK_AddIncludePath\r
// This adds an include path with less priority than the ones already added\r
// \r
// Pascal 12/11/08\r
// Add a directory delimiter to the include path\r
strcat(IncludePaths[NumIncludePaths], "/");\r
}\r
+ MS_Message(MSG_DEBUG, "Add include path %d: \"%s\"\n", NumIncludePaths, IncludePaths[NumIncludePaths]);\r
NumIncludePaths++;\r
}\r
}\r
\r
+//==========================================================================\r
+//\r
+// TK_AddProgramIncludePath\r
+// Adds an include path for the directory of the executable.\r
+//\r
+//==========================================================================\r
+\r
+void TK_AddProgramIncludePath(char *progname)\r
+{\r
+ if(NumIncludePaths < MAX_INCLUDE_PATHS)\r
+ {\r
+#ifdef _WIN32\r
+#ifdef _MSC_VER\r
+#if _MSC_VER >= 1300\r
+ if (_get_pgmptr(&progname) != 0)\r
+ {\r
+ return;\r
+ }\r
+#else\r
+ progname = _pgmptr;\r
+#endif\r
+#else\r
+ char progbuff[1024];\r
+ GetModuleFileName(0, progbuff, sizeof(progbuff));\r
+ progbuff[sizeof(progbuff)-1] = '\0';\r
+ progname = progbuff;\r
+#endif\r
+#else\r
+ char progbuff[PATH_MAX];\r
+ if (realpath(progname, progbuff) != NULL)\r
+ {\r
+ progname = progbuff;\r
+ }\r
+#endif\r
+ strcpy(IncludePaths[NumIncludePaths], progname);\r
+ if(MS_StripFilename(IncludePaths[NumIncludePaths]))\r
+ {\r
+ MS_Message(MSG_DEBUG, "Program include path is %d: \"%s\"\n", NumIncludePaths, IncludePaths[NumIncludePaths]);\r
+ NumIncludePaths++;\r
+ }\r
+ }\r
+}\r
\r
//==========================================================================\r
//\r
\r
void TK_SkipPast(tokenType_t token)\r
{\r
- while (tk_Token != token)\r
+ while (tk_Token != token && tk_Token != TK_EOF)\r
{\r
TK_NextToken();\r
}\r
\r
void TK_SkipTo(tokenType_t token)\r
{\r
- while (tk_Token != token)\r
+ while (tk_Token != token && tk_Token != TK_EOF)\r
{\r
TK_NextToken();\r
}\r
\r
static void EvalFixedConstant(int whole)\r
{\r
- int frac;\r
- int divisor;\r
+ double frac;\r
+ double divisor;\r
\r
frac = 0;\r
divisor = 1;\r
divisor *= 10;\r
NextChr();\r
}\r
- tk_Number = (whole<<16)+((frac<<16)/divisor);\r
+ tk_Number = (whole<<16)+(int)(65536.0*frac/divisor);\r
tk_Token = TK_NUMBER;\r
}\r
\r
tk_Number = '\r';\r
break;\r
case '\'':\r
+ case '\\':\r
tk_Number = Chr;\r
break;\r
default:\r