# HG changeset patch # User John Tsiombikas # Date 1383519682 -7200 # Node ID a0b3b6682d923f562959b0ea90d91542214c6cef # Parent df5e9ee65a50c1a198d91502b9ff7ecafa96f62e *slowly* filling in some unimplemented functions diff -r df5e9ee65a50 -r a0b3b6682d92 src/pvfs.c --- a/src/pvfs.c Fri Aug 02 06:03:38 2013 +0300 +++ b/src/pvfs.c Mon Nov 04 01:01:22 2013 +0200 @@ -1,6 +1,7 @@ #include +#include +#include #include -#include #include "pvfs.h" #include "vnode.h" @@ -23,17 +24,18 @@ /* then locate the target vnode (if it exists) */ if(!(destnode = vnode_lookup(target))) { + PVFS_DIR *dir; + PVFS_FILE *fp; + /* it's some error other than that target doesn't exist, fail... */ if(pvfs_errno != ENOENT) { return -1; } + /* if it doesn't exist, it might be the case we're trying * to mount a package file or a real directory here. let's * try them in turn... */ - PVFS_DIR *dir; - PVFS_FILE *fp; - if((dir = pvfs_opendir(target))) { /* it's obviously a real dir as vnode_lookup failed before... */ assert(dir->real); @@ -156,18 +158,77 @@ void pvfs_rewind(PVFS_FILE *fp); size_t pvfs_fread(void *buf, size_t size, size_t nitems, PVFS_FILE *fp); -size_t pvfs_write(void *buf, size_t size, size_t nitems, PVFS_FILE *fp); +size_t pvfs_fwrite(void *buf, size_t size, size_t nitems, PVFS_FILE *fp); -int pvfs_fgetc(PVFS_FILE *fp); -int pvfs_fputc(int c, PVFS_FILE *fp); +int pvfs_fgetc(PVFS_FILE *fp) +{ + char c; + if(pvfs_fread(&c, 1, 1, fp) != 1) { + return -1; + } + return c; +} -char *pvfs_fgets(char *buf, int size, PVFS_FILE *fp); -int pvfs_fputs(char *buf, PVFS_FILE *fp); +int pvfs_fputc(int c, PVFS_FILE *fp) +{ + return pvfs_fwrite(&c, 1, 1, fp) == 1 ? 0 : -1; +} -int pvfs_fscanf(PVFS_FILE *fp, const char *fmt, ...); -int pvfs_vfscanf(PVFS_FILE *fp, const char *fmt, va_list ap); -int pvfs_fprintf(PVFS_FILE *fp, const char *fmt, ...); -int pvfs_vfprintf(PVFS_FILE *fp, const char *fmt, va_list ap); +char *pvfs_fgets(char *buf, int size, PVFS_FILE *fp) +{ + int i; + char *res = buf; + + for(i=0; i