]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/xio.c
2000-12-03 Chip Salzenberg <chip@valinux.com>
[nfs-utils.git] / support / nfs / xio.c
index de51a15c0a8d4b6d30d4f7c77a1b284057671e7b..db5e2c3aa500e2378c711707b55b1b62e7e62327 100644 (file)
@@ -29,7 +29,7 @@ xfopen(char *fname, char *type)
                return NULL;
        xfp = (XFILE *) xmalloc(sizeof(*xfp));
        xfp->x_fp = fp;
-       xfp->x_line = 0;
+       xfp->x_line = 1;
 
        return xfp;
 }
@@ -55,7 +55,7 @@ xflock(char *fname, char *type)
        struct flock    fl = { readonly? F_RDLCK : F_WRLCK, SEEK_SET, 0, 0, 0 };
        int             fd;
 
-       if ((fd = open(fname, readonly? O_RDONLY : O_RDWR)) < 0) {
+       if ((fd = open(fname, readonly? O_RDONLY : (O_RDWR|O_CREAT))) < 0) {
                xlog(L_WARNING, "could not open %s for locking", fname);
                return -1;
        }
@@ -92,7 +92,7 @@ xgettok(XFILE *xfp, char sepa, char *tok, int len)
        while (i < len && (c = xgetc(xfp)) != EOF && c != sepa && !isspace(c))
                tok[i++] = c;
        if (c == '\n')
-               xungetc(c, xfp->x_fp);
+               xungetc(c, xfp);
        if (!i)
                return 0;
        if (i >= len || (sepa && c != sepa))
@@ -128,11 +128,12 @@ xgetc(XFILE *xfp)
 void
 xungetc(int c, XFILE *xfp)
 {
-       if (c != EOF) {
-               ungetc(c, xfp->x_fp);
-               if (c == '\n')
-                       xfp->x_line--;
-       }
+       if (c == EOF)
+               return;
+
+       ungetc(c, xfp->x_fp);
+       if (c == '\n')
+               xfp->x_line--;
 }
 
 void