X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Fmount_src%2Fmain.c;h=7c401bd2bf49c4fdb332cbf0dd9271245a5b3257;hb=a897ce08ed162eff3e06db533c490c4dd5b23e54;hp=a272214e365fdd86688d48e0f9af8d2e64e7717c;hpb=6e70970166702d1cdc8e25c096167e0d80ba38c9;p=tpg%2Facess2.git diff --git a/Usermode/Applications/mount_src/main.c b/Usermode/Applications/mount_src/main.c index a272214e..7c401bd2 100644 --- a/Usermode/Applications/mount_src/main.c +++ b/Usermode/Applications/mount_src/main.c @@ -22,10 +22,12 @@ int main(int argc, char *argv[]) int fd; int i; char *arg; + char *sType = NULL; char *sDevice = NULL; char *sDir = NULL; char *sOptions = NULL; + int bUnmount = 0; // List mounted filesystems // - This is cheating, isn't it? @@ -56,7 +58,10 @@ int main(int argc, char *argv[]) { // -t :: Filesystem driver to use case 't': sType = argv[++i]; break; + // -o option_list :: Options to pass the driver case 'o': sOptions = argv[++i]; break; + // -u :: Unmount + case 'u': bUnmount = 1; break; case '-': //TODO: Long Arguments default: @@ -82,6 +87,22 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } + if( bUnmount ) + { + // TODO: Check for a match in the fstab + + if( sDir ) { + fprintf(stderr, "`mount -u` takes one argument\n"); + } + + sDir = sDevice; + if( _SysMount(NULL, sDir, NULL, NULL) ) // Unmount (Dev=NULL means unmount) + { + fprintf(stderr, "Unmount failed\n"); + } + return EXIT_SUCCESS; + } + // Check if we even got a device/mountpoint if(sDevice == NULL) { ShowUsage(argv[0]); @@ -141,8 +162,12 @@ int main(int argc, char *argv[]) // Let's Mount! if( _SysMount(sDevice, sDir, sType, sOptions) ) { +// perror("_SysMount"); if( !sType ) fprintf(stderr, "Filesystem autodetection failed, please pass a type\n"); + else { + fprintf(stderr, "Mount %s:'%s'=>'%s' failed\n", sType, sDevice, sDir); + } } return 0;