| #include <ctype.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| |
| #if defined(_WIN32) && \ |
| (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__) || \ |
| defined(__MINGW32__)) |
| |
| # include <direct.h> |
| # include <io.h> |
| |
| # if defined(__WATCOMC__) |
| # include <direct.h> |
| # define _getcwd getcwd |
| # endif |
| |
| static const char* Getcwd(char* buf, unsigned int len) |
| { |
| const char* ret = _getcwd(buf, len); |
| char* p = NULL; |
| if (!ret) { |
| fprintf(stderr, "No current working directory.\n"); |
| abort(); |
| } |
| // make sure the drive letter is capital |
| if (strlen(buf) > 1 && buf[1] == ':') { |
| buf[0] = toupper(buf[0]); |
| } |
| for (p = buf; *p; ++p) { |
| if (*p == '\\') { |
| *p = '/'; |
| } |
| } |
| return ret; |
| } |
| |
| #else |
| # include <fcntl.h> |
| # include <unistd.h> |
| |
| # include <sys/types.h> |
| |
| static const char* Getcwd(char* buf, unsigned int len) |
| { |
| const char* ret = getcwd(buf, len); |
| if (!ret) { |
| fprintf(stderr, "No current working directory\n"); |
| abort(); |
| } |
| return ret; |
| } |
| |
| #endif |
| |
| int main(int argc, char* argv[]) |
| { |
| char buf[2048]; |
| const char* cwd = Getcwd(buf, sizeof(buf)); |
| |
| return strcmp(cwd, argv[1]); |
| } |