OSDN Git Service

- Added the ACC program directory as an implicit include path.
authorRandy Heit <rheit@zdoom.fake>
Wed, 24 Dec 2008 19:16:32 +0000 (19:16 +0000)
committerRandy Heit <rheit@zdoom.fake>
Wed, 24 Dec 2008 19:16:32 +0000 (19:16 +0000)
SVN r1329 (trunk)

acc.c
token.c
token.h

diff --git a/acc.c b/acc.c
index 8cadea2..f4aab51 100644 (file)
--- a/acc.c
+++ b/acc.c
@@ -242,6 +242,8 @@ static void ProcessArgs(void)
        {\r
                DisplayUsage();\r
        }\r
+\r
+       TK_AddProgramIncludePath(ArgVector[0]);\r
        \r
        if(count == 1)\r
        {\r
diff --git a/token.c b/token.c
index bc19cc9..32055e4 100644 (file)
--- a/token.c
+++ b/token.c
@@ -7,12 +7,18 @@
 \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
@@ -305,7 +311,7 @@ static char *AddFileName(const char *name)
 \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
@@ -329,6 +335,43 @@ void TK_AddIncludePath(char *sourcePath)
        }\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 (_get_pgmptr(&progname) != 0)\r
+               {\r
+                       return;\r
+               }\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
+                       NumIncludePaths++;\r
+               }\r
+       }\r
+}\r
 \r
 //==========================================================================\r
 //\r
diff --git a/token.h b/token.h
index f84db4e..d011b10 100644 (file)
--- a/token.h
+++ b/token.h
@@ -147,6 +147,7 @@ void TK_SkipLine(void);
 void TK_SkipPast(tokenType_t token);\r
 void TK_SkipTo(tokenType_t token);\r
 void TK_AddIncludePath(char *sourceName);\r
+void TK_AddProgramIncludePath(char *argv0);\r
 \r
 // PUBLIC DATA DECLARATIONS ------------------------------------------------\r
 \r