diff options
Diffstat (limited to 'src/winapi.c')
| -rw-r--r-- | src/winapi.c | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/src/winapi.c b/src/winapi.c new file mode 100644 index 0000000..6719293 --- /dev/null +++ b/src/winapi.c @@ -0,0 +1,197 @@ +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fixer.h" + +void FixFilename(char *str) +{ + int len = strlen(str); + int i; + + for (i = 0; i < len; i++) { + if (str[i] == '\\') + str[i] = '/'; + else if (str[i] == '\r') + str[i] = 0; + else if (str[i] == '\n') + str[i] = 0; + else + str[i] = tolower(str[i]); + } +} + +size_t _mbclen(const unsigned char *s) +{ + return strlen((const char *)s); +} + +HANDLE CreateFile(const char *file, int mode, int x, int y, int flags, int flags2, int z) +{ + int fd; + + fprintf(stderr, "CreateFile(%s, %d, %d, %d, %d, %d, %d)\n", file, mode, x, y, flags, flags2, z); + + switch(mode) { + case GENERIC_READ: + if (flags != OPEN_EXISTING) { + fprintf(stderr, "CreateFile: GENERIC_READ flags = %d\n", flags); + exit(EXIT_FAILURE); + } + fd = open(file, O_RDONLY); + if (fd == -1) + return -1; + break; + case GENERIC_WRITE: +// break; + case GENERIC_READ|GENERIC_WRITE: +// break; + default: + fprintf(stderr, "CreateFile: unknown mode %d\n", mode); + exit(EXIT_FAILURE); + } + + return (HANDLE)fd; +} + +HANDLE CreateFileA(const char *file, int write, int x, int y, int flags, int flags2, int z) +{ + return CreateFile(file, write, x, y, flags, flags2, z); +} + +int WriteFile(HANDLE file, const void *data, int len, /* unsigned long */ void *byteswritten, int x) +{ + unsigned long *bw; + + fprintf(stderr, "WriteFile(%d, %p, %d, %p, %d)\n", file, data, len, byteswritten, x); + + bw = (unsigned long *)byteswritten; + + *bw = write(file, data, len); + + return 0; +} + +int ReadFile(HANDLE file, void *data, int len, /* unsigned long */ void *bytesread, int x) +{ + unsigned long *br; + + fprintf(stderr, "ReadFile(%d, %p, %d, %p, %d)\n", file, data, len, bytesread, x); + + br = (unsigned long *)bytesread; + + *br = read(file, data, len); + + return 1; /* TODO: what is the correct return value? */ +} + +int GetFileSize(HANDLE file, int x) +{ + struct stat buf; + + fprintf(stderr, "GetFileSize(%d, %d)\n", file, x); + + if (fstat(file, &buf) == -1) + return -1; + return buf.st_size; +} + +int CloseHandle(HANDLE file) +{ + fprintf(stderr, "CloseHandle(%d)\n", file); + + close(file); + + return 0; +} + +int DeleteFile(const char *file) +{ + fprintf(stderr, "DeleteFile(%s)\n", file); + + return -1; +} + +int DeleteFileA(const char *file) +{ + return DeleteFile(file); +} + +int GetDiskFreeSpace(int x, unsigned long *a, unsigned long *b, unsigned long *c, unsigned long *d) +{ + fprintf(stderr, "GetDiskFreeSpace(%d, %p, %p, %p, %p)\n", x, a, b, c, d); + + return -1; +} + +int CreateDirectory(char *dir, int x) +{ + fprintf(stderr, "CreateDirectory(%s, %d)\n", dir, x); + + return -1; +} + +int MoveFile(const char *newfile, const char *oldfile) +{ + fprintf(stderr, "MoveFile(%s, %s)\n", newfile, oldfile); + + return -1; +} + +int MoveFileA(const char *newfile, const char *oldfile) +{ + return MoveFile(newfile, oldfile); +} + +int CopyFile(const char *newfile, const char *oldfile, int x) +{ + fprintf(stderr, "CopyFile(%s, %s, %d)\n", newfile, oldfile, x); + + return -1; +} + +int GetFileAttributes(const char *file) +{ + fprintf(stderr, "GetFileAttributes(%s)\n", file); + + return -1; +} + +int GetFileAttributesA(const char *file) +{ + return GetFileAttributes(file); +} + +int SetFilePointer(HANDLE file, int x, int y, int z) +{ + fprintf(stderr, "SetFilePointer(%d, %d, %d, %d)\n", file, x, y, z); + + return -1; +} + +int SetEndOfFile(HANDLE file) +{ + fprintf(stderr, "SetEndOfFile(%d)\n", file); + + return -1; +} + +/* time in miliseconds */ +int timeGetTime() +{ + fprintf(stderr, "timeGetTime()\n"); + + return 0; +} + +int GetTickCount() +{ + fprintf(stderr, "GetTickCount()\n"); + + return 0; +} |
