Rev 145 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 145 | Rev 610 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #include "stdio.h" |
1 | #include "stdio.h" |
2 | int fputc(int c,FILE* file) |
2 | int fputc(int c,FILE* file) |
3 | { |
3 | { |
4 | void* p; |
4 | dword res; |
- | 5 | ||
5 | if ((file->mode & 3)==FILE_OPEN_READ) |
6 | if ((file->mode & 3)==FILE_OPEN_READ) return EOF; |
- | 7 | ||
6 | return EOF; |
8 | file->buffer[0]=c; |
7 | if ((file->mode & 3)==FILE_OPEN_APPEND) |
9 | if ((file->mode & 3)==FILE_OPEN_APPEND) |
8 | file->filepos=file->filesize; |
- | |
9 | if (file->filepos==file->filesize) |
- | |
10 | { |
10 | { |
- | 11 | file->filepos=file->filesize; |
|
11 | file->filesize++; |
12 | file->filesize++; |
12 | if (file->filesize>file->buffersize) |
- | |
13 | { |
- | |
14 | p=realloc(file->buffer,file->filesize+file->filesize<<1); |
13 | res=_ksys_appendtofile(file->filename,file->filepos,1,file->buffer); |
15 | if (p==0) |
14 | if (res!=0) return(res); |
16 | return EOF; |
15 | file->filepos++; |
17 | file->buffersize=file->filesize+file->filesize<<1; |
- | |
18 | file->buffer=p; |
16 | return(0); |
19 | } |
17 | } |
- | 18 | if ((file->mode & 3)==FILE_OPEN_WRITE) |
|
- | 19 | { |
|
- | 20 | if (file->filepos==0) |
|
- | 21 | { //file not craeted |
|
- | 22 | res=_ksys_rewritefile(file->filename,1,file->buffer); |
|
- | 23 | if (res!=0) return(res); |
|
- | 24 | file->filepos++; |
|
- | 25 | return 0; |
|
20 | } |
26 | } |
- | 27 | else |
|
21 | file->buffer[file->filepos]=(char)c; |
28 | { //file craeted and need append one byte |
- | 29 | res=_ksys_appendtofile(file->filename,file->filepos,1,file->buffer); |
|
- | 30 | if (res!=0) return(res); |
|
22 | file->filepos++; |
31 | file->filepos++; |
23 | return 0; |
32 | return 0; |
24 | }1; |
33 | } |
- | 34 | } |
|
- | 35 | } |