diff options
Diffstat (limited to 'src/libc/vendor')
-rw-r--r-- | src/libc/vendor/sortix/fscanf.c | 30 | ||||
-rw-r--r-- | src/libc/vendor/sortix/vfscanf.c | 43 |
2 files changed, 73 insertions, 0 deletions
diff --git a/src/libc/vendor/sortix/fscanf.c b/src/libc/vendor/sortix/fscanf.c new file mode 100644 index 0000000..93d300a --- /dev/null +++ b/src/libc/vendor/sortix/fscanf.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2012, 2013 Jonas 'Sortie' Termansen. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * stdio/fscanf.c + * Input format conversion. + */ + +#include <stdarg.h> +#include <stdio.h> + +int fscanf(FILE* fp, const char* format, ...) +{ + va_list ap; + va_start(ap, format); + int ret = vfscanf(fp, format, ap); + va_end(ap); + return ret; +} diff --git a/src/libc/vendor/sortix/vfscanf.c b/src/libc/vendor/sortix/vfscanf.c new file mode 100644 index 0000000..44efc38 --- /dev/null +++ b/src/libc/vendor/sortix/vfscanf.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2012, 2013, 2014 Jonas 'Sortie' Termansen. + * Modified by dzwdz. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * stdio/vfscanf.c + * Input format conversion. + * + * stdio/vfscanf_unlocked.c + * Input format conversion. + */ + +#include <errno.h> +#include <stdio.h> + +static int wrap_fgetc(void* fp) +{ + return fgetc((FILE*) fp); +} + +static int wrap_ungetc(int c, void* fp) +{ + return ungetc(c, (FILE*) fp); +} + +int vfscanf(FILE* fp, const char* format, va_list ap) +{ + // if ( !(fp->flags & _FILE_READABLE) ) + // return errno = EBADF, fp->flags |= _FILE_STATUS_ERROR, EOF; + + return vcbscanf(fp, wrap_fgetc, wrap_ungetc, format, ap); +} |