X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnfs%2Ffstab.c;h=b4f8710ba2d3a5c75f286af4ee0c7320a17009ea;hp=ba7e580eb08f97978bee156a9e81ecc6dc4b0120;hb=26fd34002585e6a5aa09204b0b01d836fa83dcf3;hpb=ae5ec51e0ddc99dc5552e51bd5c095084dbb61aa diff --git a/support/nfs/fstab.c b/support/nfs/fstab.c index ba7e580..b4f8710 100644 --- a/support/nfs/fstab.c +++ b/support/nfs/fstab.c @@ -87,20 +87,21 @@ static void read_mounttable(void); static void read_fstab(void); static struct mntentchn * -mtab_head() { +mtab_head(void) { if (!got_mtab) read_mounttable(); return &mounttable; } static struct mntentchn * -fstab_head() +fstab_head(void) { if (!got_fstab) read_fstab(); 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;