git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Usermode - Switched to the POSIX read()/write() argument order
[tpg/acess2.git]
/
Usermode
/
Libraries
/
libc.so_src
/
fileIO.c
diff --git
a/Usermode/Libraries/libc.so_src/fileIO.c
b/Usermode/Libraries/libc.so_src/fileIO.c
index
b588f24
..
60def89
100644
(file)
--- a/
Usermode/Libraries/libc.so_src/fileIO.c
+++ b/
Usermode/Libraries/libc.so_src/fileIO.c
@@
-10,6
+10,8
@@
#include "lib.h"
\r
#include "stdio_int.h"
\r
\r
#include "lib.h"
\r
#include "stdio_int.h"
\r
\r
+#define WRITE_STR(_fd, _str) write(_fd, _str, sizeof(_str))
\r
+
\r
#define DEBUG_BUILD 0
\r
\r
// === CONSTANTS ===
\r
#define DEBUG_BUILD 0
\r
\r
// === CONSTANTS ===
\r
@@
-116,10
+118,12
@@
EXPORT FILE *fopen(const char *file, const char *mode)
return freopen(file, mode, retFile);
\r
}
\r
\r
return freopen(file, mode, retFile);
\r
}
\r
\r
-EXPORT
void
fclose(FILE *fp)
\r
+EXPORT
int
fclose(FILE *fp)
\r
{
\r
close(fp->FD);
\r
{
\r
close(fp->FD);
\r
- free(fp);
\r
+ fp->Flags = 0;
\r
+ fp->FD = -1;
\r
+ return 0;
\r
}
\r
\r
EXPORT void fflush(FILE *fp)
\r
}
\r
\r
EXPORT void fflush(FILE *fp)
\r
@@
-152,20
+156,18
@@
EXPORT int vfprintf(FILE *fp, const char *format, va_list args)
int size;
\r
char sbuf[1024];
\r
char *buf = sbuf;
\r
int size;
\r
char sbuf[1024];
\r
char *buf = sbuf;
\r
-
\r
-
\r
\r
if(!fp || !format) return -1;
\r
\r
va_copy(tmpList, args);
\r
\r
\r
if(!fp || !format) return -1;
\r
\r
va_copy(tmpList, args);
\r
\r
- size = vsnprintf(sbuf,
1024
, (char*)format, tmpList);
\r
+ size = vsnprintf(sbuf,
sizeof(sbuf)
, (char*)format, tmpList);
\r
\r
\r
- if( size >=
1024
)
\r
+ if( size >=
sizeof(sbuf)
)
\r
{
\r
buf = (char*)malloc(size+1);
\r
if(!buf) {
\r
{
\r
buf = (char*)malloc(size+1);
\r
if(!buf) {
\r
-
write(_stdout, 31
, "vfprintf ERROR: malloc() failed");
\r
+
WRITE_STR(_stdout
, "vfprintf ERROR: malloc() failed");
\r
return 0;
\r
}
\r
buf[size] = '\0';
\r
return 0;
\r
}
\r
buf[size] = '\0';
\r
@@
-175,7
+177,7
@@
EXPORT int vfprintf(FILE *fp, const char *format, va_list args)
}
\r
\r
// Write to stream
\r
}
\r
\r
// Write to stream
\r
- write(fp->FD,
size, buf
);
\r
+ write(fp->FD,
buf, size
);
\r
\r
// Free buffer
\r
free(buf);
\r
\r
// Free buffer
\r
free(buf);
\r
@@
-210,7
+212,7
@@
EXPORT size_t fwrite(void *ptr, size_t size, size_t num, FILE *fp)
int ret;
\r
if(!fp || !fp->FD) return -1;
\r
\r
int ret;
\r
if(!fp || !fp->FD) return -1;
\r
\r
- ret = write(fp->FD,
size*num, ptr
);
\r
+ ret = write(fp->FD,
ptr, size*num
);
\r
\r
return ret;
\r
}
\r
\r
return ret;
\r
}
\r
@@
-224,7
+226,7
@@
EXPORT size_t fread(void *ptr, size_t size, size_t num, FILE *fp)
int ret;
\r
if(!fp || !fp->FD) return -1;
\r
\r
int ret;
\r
if(!fp || !fp->FD) return -1;
\r
\r
- ret = read(fp->FD,
size*num, ptr
);
\r
+ ret = read(fp->FD,
ptr, size*num
);
\r
\r
return ret;
\r
}
\r
\r
return ret;
\r
}
\r
@@
-236,7
+238,13
@@
EXPORT size_t fread(void *ptr, size_t size, size_t num, FILE *fp)
EXPORT int fputc(int c, FILE *fp)
\r
{
\r
if(!fp || !fp->FD) return -1;
\r
EXPORT int fputc(int c, FILE *fp)
\r
{
\r
if(!fp || !fp->FD) return -1;
\r
- return write(fp->FD, 1, &c);
\r
+ return write(fp->FD, &c, 1);
\r
+}
\r
+
\r
+EXPORT int putchar(int c)
\r
+{
\r
+ c &= 0xFF;
\r
+ return write(_stdout, &c, 1);
\r
}
\r
\r
/**
\r
}
\r
\r
/**
\r
@@
-247,7
+255,14
@@
EXPORT int fgetc(FILE *fp)
{
\r
char ret = 0;
\r
if(!fp) return -1;
\r
{
\r
char ret = 0;
\r
if(!fp) return -1;
\r
- if(read(fp->FD, 1, &ret) == -1) return -1;
\r
+ if(read(fp->FD, &ret, 1) == -1) return -1;
\r
+ return ret;
\r
+}
\r
+
\r
+EXPORT int getchar(void)
\r
+{
\r
+ char ret = 0;
\r
+ if(read(_stdin, &ret, 1) != 1) return -1;
\r
return ret;
\r
}
\r
\r
return ret;
\r
}
\r
\r
@@
-266,20
+281,15
@@
FILE *get_file_struct()
return NULL;
\r
}
\r
\r
return NULL;
\r
}
\r
\r
-EXPORT int putchar(int ch)
\r
-{
\r
- return write(_stdout, 1, (char*)&ch);
\r
-}
\r
-
\r
-EXPORT int puts(const char *str)
\r
+EXPORT int puts(const char *str)
\r
{
\r
int len;
\r
\r
if(!str) return 0;
\r
len = strlen(str);
\r
\r
{
\r
int len;
\r
\r
if(!str) return 0;
\r
len = strlen(str);
\r
\r
- len = write(_stdout,
len, (char*)str
);
\r
- write(_stdout,
1, "\n"
);
\r
+ len = write(_stdout,
str, len
);
\r
+ write(_stdout,
"\n", 1
);
\r
return len;
\r
}
\r
\r
return len;
\r
}
\r
\r
@@
-546,7
+556,7
@@
EXPORT int printf(const char *format, ...)
// Allocate buffer
\r
buf = (char*)malloc(size+1);
\r
if(buf) {
\r
// Allocate buffer
\r
buf = (char*)malloc(size+1);
\r
if(buf) {
\r
-
write(_stdout, 29, "PRINTF ERROR: malloc() failed
");
\r
+
WRITE_STR(_stdout, "PRINTF ERROR: malloc() failed\n
");
\r
return 0;
\r
}
\r
buf[size] = '\0';
\r
return 0;
\r
}
\r
buf[size] = '\0';
\r
@@
-558,7
+568,7
@@
EXPORT int printf(const char *format, ...)
}
\r
\r
// Send to stdout
\r
}
\r
\r
// Send to stdout
\r
- write(_stdout,
size+1, buf
);
\r
+ write(_stdout,
buf, size+1
);
\r
\r
// Free buffer
\r
free(buf);
\r
\r
// Free buffer
\r
free(buf);
\r
UCC
git Repository :: git.ucc.asn.au