1 #include <unistd.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <ctype.h>
6 #include <sys/types.h>
7 #include <sys/stat.h>
8 #include <fcntl.h>
9 #include <sys/time.h>
10
11 #include "fixer.h"
12
_mbclen(const unsigned char * s)13 size_t _mbclen(const unsigned char *s)
14 {
15 return strlen((const char *)s);
16 }
17
CreateFile(const char * file,int mode,int x,int y,int flags,int flags2,int z)18 HANDLE CreateFile(const char *file, int mode, int x, int y, int flags, int flags2, int z)
19 {
20 int fd;
21
22 fprintf(stderr, "CreateFile(%s, %d, %d, %d, %d, %d, %d)\n", file, mode, x, y, flags, flags2, z);
23
24 switch(mode) {
25 case GENERIC_READ:
26 if (flags != OPEN_EXISTING) {
27 fprintf(stderr, "CreateFile: GENERIC_READ flags = %d\n", flags);
28 exit(EXIT_FAILURE);
29 }
30 fd = open(file, O_RDONLY);
31 if (fd == -1) {
32 /* perror("CreateFile"); */
33 return INVALID_HANDLE_VALUE;
34 }
35 break;
36 case GENERIC_WRITE:
37 if (flags != CREATE_ALWAYS) {
38 fprintf(stderr, "CreateFile: GENERIC_WRITE flags = %d\n", flags);
39 exit(EXIT_FAILURE);
40 }
41 fd = open(file, O_WRONLY|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR);
42 if (fd == -1) {
43 perror("CreateFile");
44 return INVALID_HANDLE_VALUE;
45 }
46 break;
47 case GENERIC_READ|GENERIC_WRITE:
48 default:
49 fprintf(stderr, "CreateFile: unknown mode %d\n", mode);
50 exit(EXIT_FAILURE);
51 }
52
53 return (HANDLE)fd;
54 }
55
CreateFileA(const char * file,int write,int x,int y,int flags,int flags2,int z)56 HANDLE CreateFileA(const char *file, int write, int x, int y, int flags, int flags2, int z)
57 {
58 return CreateFile(file, write, x, y, flags, flags2, z);
59 }
60
WriteFile(HANDLE file,const void * data,int len,void * byteswritten,int lpOverlapped)61 int WriteFile(HANDLE file, const void *data, int len, void *byteswritten, int lpOverlapped)
62 {
63 unsigned long *bw, i;
64
65 fprintf(stderr, "WriteFile(%d, %p, %d, %p, %d)\n", file, data, len, byteswritten, lpOverlapped);
66
67 bw = (unsigned long *)byteswritten;
68 *bw = 0;
69
70 i = write(file, data, len);
71 if (i == -1) {
72 return 0;
73 } else {
74 *bw = i;
75 return 1;
76 }
77 }
78
ReadFile(HANDLE file,void * data,int len,void * bytesread,int lpOverlapped)79 int ReadFile(HANDLE file, void *data, int len, void *bytesread, int lpOverlapped)
80 {
81 unsigned long *br, i;
82
83 fprintf(stderr, "ReadFile(%d, %p, %d, %p, %d)\n", file, data, len, bytesread, lpOverlapped);
84
85 br = (unsigned long *)bytesread;
86 *br = 0;
87
88 i = read(file, data, len);
89 if (i == -1) {
90 return 0;
91 } else {
92 *br = i;
93 return 1;
94 }
95 }
96
GetFileSize(HANDLE file,int lpFileSizeHigh)97 int GetFileSize(HANDLE file, int lpFileSizeHigh)
98 {
99 struct stat buf;
100
101 fprintf(stderr, "GetFileSize(%d, %d)\n", file, lpFileSizeHigh);
102
103 if (fstat(file, &buf) == -1)
104 return -1;
105 return buf.st_size;
106 }
107
CloseHandle(HANDLE file)108 int CloseHandle(HANDLE file)
109 {
110
111 fprintf(stderr, "CloseHandle(%d)\n", file);
112
113 if (close(file) == -1)
114 return 0;
115 else
116 return 1;
117
118 return 0;
119 }
120
DeleteFile(const char * file)121 int DeleteFile(const char *file)
122 {
123
124 fprintf(stderr, "DeleteFile(%s)\n", file);
125
126 if (unlink(file) == -1)
127 return 0;
128 else
129 return 1;
130 }
131
DeleteFileA(const char * file)132 int DeleteFileA(const char *file)
133 {
134 return DeleteFile(file);
135 }
136
GetDiskFreeSpace(int x,unsigned long * a,unsigned long * b,unsigned long * c,unsigned long * d)137 int GetDiskFreeSpace(int x, unsigned long *a, unsigned long *b, unsigned long *c, unsigned long *d)
138 {
139 fprintf(stderr, "GetDiskFreeSpace(%d, %p, %p, %p, %p)\n", x, a, b, c, d);
140
141 return 0;
142 }
143
CreateDirectory(char * dir,int lpSecurityAttributes)144 int CreateDirectory(char *dir, int lpSecurityAttributes)
145 {
146
147 fprintf(stderr, "CreateDirectory(%s, %d)\n", dir, lpSecurityAttributes);
148
149 if (mkdir(dir, S_IRWXU) == -1)
150 return 0;
151 else
152 return 1;
153 }
154
MoveFile(const char * newfile,const char * oldfile)155 int MoveFile(const char *newfile, const char *oldfile)
156 {
157 fprintf(stderr, "MoveFile(%s, %s)\n", newfile, oldfile);
158
159 return 0;
160 }
161
MoveFileA(const char * newfile,const char * oldfile)162 int MoveFileA(const char *newfile, const char *oldfile)
163 {
164 return MoveFile(newfile, oldfile);
165 }
166
CopyFile(const char * newfile,const char * oldfile,int x)167 int CopyFile(const char *newfile, const char *oldfile, int x)
168 {
169 fprintf(stderr, "CopyFile(%s, %s, %d)\n", newfile, oldfile, x);
170
171 return 0;
172 }
173
GetFileAttributes(const char * file)174 int GetFileAttributes(const char *file)
175 {
176 fprintf(stderr, "GetFileAttributes(%s)\n", file);
177
178 return 0;
179 }
180
GetFileAttributesA(const char * file)181 int GetFileAttributesA(const char *file)
182 {
183 return GetFileAttributes(file);
184 }
185
SetFilePointer(HANDLE file,int x,int y,int z)186 unsigned int SetFilePointer(HANDLE file, int x, int y, int z)
187 {
188 fprintf(stderr, "SetFilePointer(%d, %d, %d, %d)\n", file, x, y, z);
189
190 return 0;
191 }
192
SetEndOfFile(HANDLE file)193 int SetEndOfFile(HANDLE file)
194 {
195 fprintf(stderr, "SetEndOfFile(%d)\n", file);
196
197 return 0;
198 }
199
200 /* time in miliseconds */
timeGetTime()201 unsigned int timeGetTime()
202 {
203 static struct timeval tv0;
204 struct timeval tv1;
205 int secs, usecs;
206
207 if (tv0.tv_sec == 0) {
208 gettimeofday(&tv0, NULL);
209
210 return 0;
211 }
212
213 gettimeofday(&tv1, NULL);
214
215 secs = tv1.tv_sec - tv0.tv_sec;
216 usecs = tv1.tv_usec - tv0.tv_usec;
217 if (usecs < 0) {
218 usecs += 1000000;
219 secs--;
220 }
221
222 return secs * 1000 + (usecs / 1000);
223 }
224
GetTickCount()225 unsigned int GetTickCount()
226 {
227 return timeGetTime();
228 }
229