Usermode/libc - Adding features
authorJohn Hodge <[email protected]>
Sat, 1 Sep 2012 06:38:42 +0000 (14:38 +0800)
committerJohn Hodge <[email protected]>
Sat, 1 Sep 2012 06:38:42 +0000 (14:38 +0800)
Usermode/Libraries/libc.so_src/Makefile
Usermode/Libraries/libc.so_src/fileIO.c
Usermode/Libraries/libc.so_src/include_exp/assert.h [new file with mode: 0644]
Usermode/Libraries/libc.so_src/include_exp/stdio.h
Usermode/Libraries/libc.so_src/perror.c [new file with mode: 0644]
Usermode/Libraries/libc.so_src/rules.mk

index 61d127f..6484897 100644 (file)
@@ -11,6 +11,7 @@ LDFLAGS  += -soname libc.so -Map map.txt -lgcc
 INCFILES := stdio.h stdlib.h\r
 \r
 OBJ  = stub.o heap.o stdlib.o env.o fileIO.o string.o select.o rand.o\r
+OBJ += perror.o\r
 OBJ += arch/$(ARCHDIR).ao\r
 # signals.o\r
 DEPFILES := $(OBJ:%.o=%.d)\r
index 776a2de..c0013c9 100644 (file)
@@ -131,6 +131,25 @@ EXPORT void fflush(FILE *fp)
        ///\todo Implement\r
 }\r
 \r
+EXPORT void clearerr(FILE *stream)\r
+{\r
+       /// \todo Impliment\r
+}\r
+\r
+EXPORT int feof(FILE *stream)\r
+{\r
+       return 0;       //stream->;     // ?\r
+}\r
+\r
+EXPORT int ferror(FILE *stream)\r
+{\r
+       return 0;\r
+}\r
+EXPORT int fileno(FILE *stream)\r
+{\r
+       return stream->FD;\r
+}\r
+\r
 EXPORT off_t ftell(FILE *fp)\r
 {\r
        if(!fp || !fp->FD)      return -1;\r
diff --git a/Usermode/Libraries/libc.so_src/include_exp/assert.h b/Usermode/Libraries/libc.so_src/include_exp/assert.h
new file mode 100644 (file)
index 0000000..07b20b3
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Acess2 C Library
+ * - By John Hodge (thePowersGang)
+ *
+ * assert.h
+ * - assert(expr)
+ */
+#ifndef _LIBC__ASSERT_H_
+#define _LIBC__ASSERT_H_
+
+#ifdef NDEBUG
+# define assert(expr)  do{}while(0)
+#else
+# define assert(expr)  do{if(!(expr)) { fprintf(stderr, "%s:%i: Assertion '%s' failed\n", __FILE__, __LINE__, #expr); exit(-1);}}while(0)
+#endif
+
+#endif
+
index be4f20a..faf20f0 100644 (file)
@@ -21,6 +21,7 @@ extern int    vsnprintf(char *buf, size_t __maxlen, const char *format, va_list arg
 extern int     vsprintf(char *buf, const char *format, va_list args);
 extern int     sprintf(char *buf, const char *format, ...);
 extern int     snprintf(char *buf, size_t maxlen, const char *format, ...);
+extern void    perror(const char *s);
 
 extern FILE    *fopen(const char *file, const char *mode);
 extern FILE    *freopen(const char *file, const char *mode, FILE *fp);
@@ -29,6 +30,10 @@ extern int   fclose(FILE *fp);
 extern void    fflush(FILE *fp);
 extern off_t   ftell(FILE *fp);
 extern int     fseek(FILE *fp, long int amt, int whence);
+extern void    clearerr(FILE *stream);
+extern int     feof(FILE *stream);
+extern int     ferror(FILE *stream);
+extern int     fileno(FILE *stream);
 
 extern size_t  fread(void *buf, size_t size, size_t n, FILE *fp);
 extern size_t  fwrite(void *buf, size_t size, size_t n, FILE *fp);
diff --git a/Usermode/Libraries/libc.so_src/perror.c b/Usermode/Libraries/libc.so_src/perror.c
new file mode 100644 (file)
index 0000000..0431635
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Acess2 C Library
+ * - By John Hodge (thePowersGang)
+ *
+ * perror.c
+ * - perror() and friends
+ */
+#include <errno.h>
+#include <stdio.h>
+
+void perror(const char *s)
+{
+       fprintf(stderr, "%s: Error (%i)\n", s, errno);
+}
index f689f34..23f3925 100644 (file)
@@ -4,6 +4,7 @@ include $(BASE)header.mk
 
 # Variables
 SRCS := stub.c heap.c stdlib.c env.c fileIO.c string.c select.c
+SRCS += perror.c
 SRCS += arch/$(ARCHDIR).$(ASSUFFIX)
 # signals.c
 BIN  := $(OUTPUTDIR)Libs/libc.so

UCC git Repository :: git.ucc.asn.au