depends on MOUNT
help
Enable mounting of virtual file systems via external helpers.
- E.g. mount obexfs#-b00.11.22.33.44.55 /mnt will in effect call
- obexfs -b00.11.22.33.44.55 /mnt
- The idea is to use such virtual filesystems in /etc/fstab
+ E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
+ "obexfs -b00.11.22.33.44.55 /mnt"
+ Also "mount -t sometype [-o opts] fs /mnt" will try
+ "sometype [-o opts] fs /mnt" if simple mount syscall fails.
+ The idea is to use such virtual filesystems in /etc/fstab.
config FEATURE_MOUNT_NFS
bool "Support mounting NFS file systems"
fd = xopen(argv[1], O_RDWR);
/* fdlength was reported to be unreliable - use seek */
len = xlseek(fd, 0, SEEK_END);
+#if ENABLE_SELINUX
xlseek(fd, 0, SEEK_SET);
+#endif
pagesize = getpagesize();
printf("Setting up swapspace version 1, size = %"OFF_FMT"u bytes\n",
len - pagesize);
for (;;) {
rc = mount(mp->mnt_fsname, mp->mnt_dir, mp->mnt_type,
vfsflags, filteropts);
+
+ // If mount failed, try
+ // helper program <mnt_type>
+ if (ENABLE_FEATURE_MOUNT_HELPERS && rc) {
+ char *args[6];
+ int errno_save = errno;
+ args[0] = mp->mnt_type;
+ rc = 1;
+ if (filteropts) {
+ args[rc++] = (char *)"-o";
+ args[rc++] = filteropts;
+ }
+ args[rc++] = mp->mnt_fsname;
+ args[rc++] = mp->mnt_dir;
+ args[rc] = NULL;
+ rc = wait4pid(spawn(args));
+ if (!rc)
+ break;
+ errno = errno_save;
+ }
+
if (!rc || (vfsflags & MS_RDONLY) || (errno != EACCES && errno != EROFS))
break;
if (!(vfsflags & MS_SILENT))