summaryrefslogtreecommitdiffstats
path: root/isys/imount.c
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2005-09-15 22:12:39 +0000
committerJeremy Katz <katzj@redhat.com>2005-09-15 22:12:39 +0000
commitaccc49c458eb7c7dc3660cbe65b3b34b340dfeef (patch)
tree4e1c594ecb74d73307820dccf1ac5bf29304456c /isys/imount.c
parent5e1e9a0619de4c5103a99379312fb71eb7de3a63 (diff)
downloadanaconda-accc49c458eb7c7dc3660cbe65b3b34b340dfeef.tar.gz
anaconda-accc49c458eb7c7dc3660cbe65b3b34b340dfeef.tar.xz
anaconda-accc49c458eb7c7dc3660cbe65b3b34b340dfeef.zip
2005-09-15 Jeremy Katz <katzj@redhat.com>
* isys/imount.c (doPwMount): Make arguments for doPwMount simpler. Use a bitmask of flags and pass extra data like mount(2). Use flags for nfs and pass arguments onto nfsmount(). Kill some dead code. * isys/imount.c (doPwMount): Update prototype, add constants. * isys/isys.c (doMount): Update for new API. * loader2/cdinstall.c: Likewise. * loader2/driverdisk.c: Likewise. * loader2/hdinstall.c: Likewise. * loader2/loader.c: Likewise. * loader2/method.c: Likewise. * loader2/nfsinstall.c: Likewise. * loader2/usb.c: Likewise.
Diffstat (limited to 'isys/imount.c')
-rw-r--r--isys/imount.c102
1 files changed, 36 insertions, 66 deletions
diff --git a/isys/imount.c b/isys/imount.c
index 4f5725373..e615f70f4 100644
--- a/isys/imount.c
+++ b/isys/imount.c
@@ -14,8 +14,7 @@
static int mkdirIfNone(char * directory);
-int doPwMount(char * dev, char * where, char * fs, int rdonly, int istty,
- char * acct, char * pw, int bindmnt, int remount) {
+int doPwMount(char * dev, char * where, char * fs, int options, void *data) {
char * buf = NULL;
int isnfs = 0;
char * mount_opt = NULL;
@@ -26,81 +25,52 @@ int doPwMount(char * dev, char * where, char * fs, int rdonly, int istty,
/*logMessage("mounting %s on %s as type %s", dev, where, fs);*/
- if (!strcmp(fs, "smb")) {
-#if 0 /* disabled for now */
- mkdirChain(where);
-
- if (!acct) acct = "guest";
- if (!pw) pw = "";
-
- buf = alloca(strlen(dev) + 1);
- strcpy(buf, dev);
- chptr = buf;
- while (*chptr && *chptr != ':') chptr++;
- if (!*chptr) {
- /*logMessage("bad smb mount point %s", where);*/
- return IMOUNT_ERR_OTHER;
- }
-
- *chptr = '\0';
- chptr++;
-
-#ifdef __i386__
- /*logMessage("mounting smb filesystem from %s path %s on %s",
- buf, chptr, where);*/
- return smbmount(buf, chptr, acct, pw, "localhost", where);
-#else
- errorWindow("smbfs only works on Intel machines");
-#endif
-#endif /* disabled */
+ if (mkdirChain(where))
+ return IMOUNT_ERR_ERRNO;
+
+ flag = MS_MGC_VAL;
+ if (options & IMOUNT_RDONLY)
+ flag |= MS_RDONLY;
+ if (options & IMOUNT_BIND)
+ flag |= MS_BIND;
+ if (options & IMOUNT_REMOUNT)
+ flag |= MS_REMOUNT;
+
+ if (!isnfs && (*dev == '/' || !strcmp(dev, "none"))) {
+ buf = dev;
+ } else if (!isnfs) {
+ buf = alloca(200);
+ strcpy(buf, "/tmp/");
+ strcat(buf, dev);
} else {
- if (mkdirChain(where))
- return IMOUNT_ERR_ERRNO;
-
- if (!isnfs && (*dev == '/' || !strcmp(dev, "none"))) {
- buf = dev;
- } else if (!isnfs) {
- buf = alloca(200);
- strcpy(buf, "/tmp/");
- strcat(buf, dev);
- } else {
#ifndef DISABLE_NETWORK
- char * extra_opts = NULL;
- int flags = 0;
+ char * extra_opts = strdup(data);
+ int flags = 0;
- buf = dev;
- /*logMessage("calling nfsmount(%s, %s, &flags, &extra_opts, &mount_opt)",
+ buf = dev;
+ /*logMessage("calling nfsmount(%s, %s, &flags, &extra_opts, &mount_opt)",
buf, where);*/
- if (nfsmount(buf, where, &flags, &extra_opts, &mount_opt, 0)) {
+ if (nfsmount(buf, where, &flags, &extra_opts, &mount_opt, 0)) {
/*logMessage("\tnfsmount returned non-zero");*/
/*fprintf(stderr, "nfs mount failed: %s\n",
nfs_error());*/
return IMOUNT_ERR_OTHER;
- }
+ }
#endif
}
- flag = MS_MGC_VAL;
- if (rdonly)
- flag |= MS_RDONLY;
- if (bindmnt)
- flag |= MS_BIND;
- if (remount)
- flag |= MS_REMOUNT;
-
- if (!strncmp(fs, "vfat", 4))
- mount_opt="check=relaxed";
- #ifdef __sparc__
- if (!strncmp(fs, "ufs", 3))
- mount_opt="ufstype=sun";
- #endif
-
- /*logMessage("calling mount(%s, %s, %s, %ld, %p)", buf, where, fs,
- flag, mount_opt);*/
-
- if (mount(buf, where, fs, flag, mount_opt)) {
- return IMOUNT_ERR_ERRNO;
- }
+ if (!strncmp(fs, "vfat", 4))
+ mount_opt="check=relaxed";
+#ifdef __sparc__
+ if (!strncmp(fs, "ufs", 3))
+ mount_opt="ufstype=sun";
+#endif
+
+ /*logMessage("calling mount(%s, %s, %s, %ld, %p)", buf, where, fs,
+ flag, mount_opt);*/
+
+ if (mount(buf, where, fs, flag, mount_opt)) {
+ return IMOUNT_ERR_ERRNO;
}
return 0;