]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/fstab.c
mount.nfs: Fix retry= to handle lack of reserved port situation
[nfs-utils.git] / support / nfs / fstab.c
index ba7e580eb08f97978bee156a9e81ecc6dc4b0120..aee8e5395453f30f204ed847f23963cb3be8a633 100644 (file)
@@ -101,6 +101,7 @@ fstab_head()
        return &fstab;
 }
 
+#if 0
 static void
 my_free(const void *s) {
        if (s)
@@ -120,11 +121,12 @@ discard_mntentchn(struct mntentchn *mc0) {
                free(mc);
        }
 }
+#endif
 
 static void
 read_mntentchn(mntFILE *mfp, const char *fnam, struct mntentchn *mc0) {
        struct mntentchn *mc = mc0;
-       nfs_mntent_t *mnt;
+       struct mntent *mnt;
 
        while ((mnt = nfs_getmntent(mfp)) != NULL) {
                if (!streq(mnt->mnt_type, MNTTYPE_IGNORE)) {
@@ -192,8 +194,8 @@ read_fstab()
        mfp = nfs_setmntent (fnam, "r");
        if (mfp == NULL || mfp->mntent_fp == NULL) {
                int errsv = errno;
-               error(_("warning: can't open %s: %s"),
-                       _PATH_FSTAB, strerror (errsv));
+               nfs_error(_("warning: can't open %s: %s"),
+                         _PATH_FSTAB, strerror (errsv));
                return;
        }
        read_mntentchn(mfp, fnam, mc);
@@ -444,7 +446,8 @@ lock_mtab (void) {
  */
 
 void
-update_mtab (const char *dir, nfs_mntent_t *instead) {
+update_mtab (const char *dir, struct mntent *instead)
+{
        mntFILE *mfp, *mftmp;
        const char *fnam = MOUNTED;
        struct mntentchn mtabhead;      /* dummy */
@@ -513,8 +516,14 @@ update_mtab (const char *dir, nfs_mntent_t *instead) {
                }
        }
 
+#if 0
+       /* the chain might have strings copied from 'instead',
+        * so we cannot safely free it.
+        * And there is no need anyway because we are going to exit
+        * shortly.  So just don't call discard_mntentchn....
+        */
        discard_mntentchn(mc0);
-
+#endif
        if (fchmod (fileno (mftmp->mntent_fp),
                    S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) < 0) {
                int errsv = errno;