Improve MinGW support.

- Code specific to Windows was #ifdef'ed with _MSC_VER so it wasn't included with MinGW. So _MSC_VER is replaced with _WIN32.
- MinGW doesn't support _get_pgmptr() so it is necessary to directly call the Win32 function GetModuleFileName(). This implies including windows.h which in turn causes a name clash with the Win32 function SearchPath(). So the cc65 type SearchPath is renamed to SearchPaths.
This commit is contained in:
Oliver Schmidt
2014-03-03 22:12:14 +01:00
parent fcc95f4c1c
commit 50c4fd1c4c
15 changed files with 73 additions and 77 deletions

View File

@@ -53,7 +53,7 @@
#define STRINGIZE(arg) _STRINGIZE(arg)
/* A search path is a pointer to the list */
typedef struct Collection SearchPath;
typedef struct Collection SearchPaths;
@@ -63,38 +63,38 @@ typedef struct Collection SearchPath;
SearchPath* NewSearchPath (void);
SearchPaths* NewSearchPath (void);
/* Create a new, empty search path list */
void AddSearchPath (SearchPath* P, const char* NewPath);
void AddSearchPath (SearchPaths* P, const char* NewPath);
/* Add a new search path to the end of an existing list */
void AddSearchPathFromEnv (SearchPath* P, const char* EnvVar);
void AddSearchPathFromEnv (SearchPaths* P, const char* EnvVar);
/* Add a search path from an environment variable to the end of an existing
* list.
*/
void AddSubSearchPathFromEnv (SearchPath* P, const char* EnvVar, const char* SubDir);
void AddSubSearchPathFromEnv (SearchPaths* P, const char* EnvVar, const char* SubDir);
/* Add a search path from an environment variable, adding a subdirectory to
* the environment variable value.
*/
void AddSubSearchPathFromWinBin (SearchPath* P, const char* SubDir);
void AddSubSearchPathFromWinBin (SearchPaths* P, const char* SubDir);
/* Windows only:
* Add a search path from the running binary, adding a subdirectory to
* the parent directory of the directory containing the binary.
*/
int PushSearchPath (SearchPath* P, const char* NewPath);
int PushSearchPath (SearchPaths* P, const char* NewPath);
/* Add a new search path to the head of an existing search path list, provided
* that it's not already there. If the path is already at the first position,
* return zero, otherwise return a non zero value.
*/
void PopSearchPath (SearchPath* P);
void PopSearchPath (SearchPaths* P);
/* Remove a search path from the head of an existing search path list */
char* SearchFile (const SearchPath* P, const char* File);
char* SearchFile (const SearchPaths* P, const char* File);
/* Search for a file in a list of directories. Return a pointer to a malloced
* area that contains the complete path, if found, return 0 otherwise.
*/