to manipulate /etc/mtab (setmntent) but, everything else in nfs-utils
uses a local private version (nfs_setmntent). The local version does
some extra mangling of the mtab entries.
We should check what util-linux does these days to be sure, but for now,
let's make the mount.nfs command use the nfs_ variants of setmntent().
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
#include "nls.h"
#include "mount_constants.h"
#include "nfs_paths.h"
#include "nls.h"
#include "mount_constants.h"
#include "nfs_paths.h"
#include "nfs_mount.h"
#include "nfs4_mount.h"
#include "nfs_mount.h"
#include "nfs4_mount.h"
int flags, char *opts, int freq, int pass)
{
struct mntent ment;
int flags, char *opts, int freq, int pass)
{
struct mntent ment;
int result = EX_FILEIO;
ment.mnt_fsname = spec;
int result = EX_FILEIO;
ment.mnt_fsname = spec;
- if ((mtab = setmntent(MOUNTED, "a+")) == NULL) {
+ mtab = nfs_setmntent(MOUNTED, "a+");
+ if (mtab == NULL || mtab->mntent_fp == NULL) {
nfs_error(_("Can't open mtab: %s"),
strerror(errno));
goto fail_unlock;
}
nfs_error(_("Can't open mtab: %s"),
strerror(errno));
goto fail_unlock;
}
- if (addmntent(mtab, &ment) == 1) {
+ if (nfs_addmntent(mtab, &ment) == 1) {
nfs_error(_("Can't write mount entry to mtab: %s"),
strerror(errno));
goto fail_close;
}
nfs_error(_("Can't write mount entry to mtab: %s"),
strerror(errno));
goto fail_close;
}
- if (fchmod(fileno(mtab), 0644) == -1) {
+ if (fchmod(fileno(mtab->mntent_fp), 0644) == -1) {
nfs_error(_("Can't set permissions on mtab: %s"),
strerror(errno));
goto fail_close;
nfs_error(_("Can't set permissions on mtab: %s"),
strerror(errno));
goto fail_close;
result = EX_SUCCESS;
fail_close:
result = EX_SUCCESS;
fail_close:
fail_unlock:
unlock_mtab();
free(ment.mnt_opts);
fail_unlock:
unlock_mtab();
free(ment.mnt_opts);