libc updates

This commit is contained in:
K. Lange 2018-08-21 21:50:52 +09:00
parent fec9781c23
commit bea8d8f6db
6 changed files with 34 additions and 3 deletions

View File

@ -38,14 +38,17 @@ extern int snprintf(char * buf, size_t size, const char * fmt, ...);
extern int vsprintf(char * buf, const char *fmt, va_list args);
extern int vsnprintf(char * buf, size_t size, const char *fmt, va_list args);
extern int vfprintf(FILE * device, const char *format, va_list ap);
extern int vprintf(const char *format, va_list ap);
extern int puts(const char *s);
extern int fputs(const char *s, FILE *stream);
extern int fputc(int c, FILE *stream);
#define putc(c,s) fputc((c),(s))
extern int putc(int c, FILE *stream);
extern int putchar(int c);
extern int fgetc(FILE *stream);
extern int getc(FILE *stream);
extern char *fgets(char *s, int size, FILE *stream);
extern int getchar(void);
extern void rewind(FILE *stream);
extern void setbuf(FILE * stream, char * buf);
@ -73,7 +76,5 @@ extern int rename(const char * oldpath, const char * newpath);
#define _IOLBF 1
#define _IOFBF 2
#define getc(s) fgetc(s)
extern char * tmpnam(char * s);
#define L_tmpnam 256

View File

@ -26,6 +26,9 @@ extern time_t time(time_t * out);
extern double difftime(time_t a, time_t b);
extern time_t mktime(struct tm *tm);
extern char * asctime(const struct tm *tm);
extern char * ctime(const time_t * timep);
typedef int clock_t;
extern clock_t clock(void);

View File

@ -282,6 +282,9 @@ int vfprintf(FILE * device, const char *fmt, va_list args) {
return out;
}
int vprintf(const char *fmt, va_list args) {
return vfprintf(stdout, fmt, args);
}
int fprintf(FILE * device, const char *fmt, ...) {
va_list args;

View File

@ -341,6 +341,8 @@ int fputc(int c, FILE *stream) {
return c;
}
int putc(int c, FILE *stream) __attribute__((weak, alias("fputc")));
int fgetc(FILE * stream) {
char buf[1];
int r;
@ -355,6 +357,12 @@ int fgetc(FILE * stream) {
return (unsigned char)buf[0];
}
int getc(FILE * stream) __attribute__((weak, alias("fgetc")));
int getchar(void) {
return fgetc(stdin);
}
char *fgets(char *s, int size, FILE *stream) {
int c;
char * out = s;

9
libc/time/ctime.c Normal file
View File

@ -0,0 +1,9 @@
#include <time.h>
#include <sys/time.h>
/*
* TODO: Also supposed to set tz values...
*/
char * ctime(const time_t * timep) {
return asctime(localtime(timep));
}

View File

@ -195,3 +195,10 @@ size_t strftime(char *s, size_t max, const char *fmt, const struct tm *tm) {
*b = '\0';
return b - s;
}
static char output[26];
char * asctime(const struct tm *tm) {
strftime(output, 26, "%a %b %d %T %Y\n", tm);
return output;
}