X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Fmount_src%2Fmain.c;h=602aefd439fd527ce3c8e19fc52e58c3afea5b76;hb=c275e76e346b3996829cf1d66ddd488daab35a30;hp=b84e85f4750e5470800f42e0543addc64f3b6bb9;hpb=466eda7c917791866a29c253c6c22197faf41bf7;p=tpg%2Facess2.git diff --git a/Usermode/Applications/mount_src/main.c b/Usermode/Applications/mount_src/main.c index b84e85f4..602aefd4 100644 --- a/Usermode/Applications/mount_src/main.c +++ b/Usermode/Applications/mount_src/main.c @@ -6,11 +6,11 @@ #include #define MOUNTABLE_FILE "/Acess/Conf/Mountable" -#define MOUNTED_FILE "/Acess/Conf/Mounted" +#define MOUNTED_FILE "/Devices/System/VFS/Mounts" // === PROTOTYPES === -void ShowUsage(); - int GetMountDefs(char **spDevice, char **spDir, char **spType, char **spOptions); +void ShowUsage(char *ProgName); + int GetMountDefs(char *Ident, char **spDevice, char **spDir, char **spType, char **spOptions); // === CODE === /** @@ -27,8 +27,21 @@ int main(int argc, char *argv[]) char *sDir = NULL; char *sOptions = NULL; + // List mounted filesystems + // - This is cheating, isn't it? + if(argc == 1) { + // Dump the contents of /Devices/system/VFS/Mounts + FILE *fp = fopen("/Devices/system/VFS/Mounts", "r"); + char buf[1024]; + int len; + while( (len = fread(buf, 1024, 1, fp)) ) + fwrite(buf, len, 1, stdout); + printf("\n"); + return 0; + } + if(argc < 3) { - ShowUsage(); + ShowUsage(argv[0]); return EXIT_FAILURE; } @@ -41,7 +54,9 @@ int main(int argc, char *argv[]) { switch(arg[1]) { + // -t :: Filesystem driver to use case 't': sType = argv[++i]; break; + case 'o': sOptions = argv[++i]; break; case '-': //TODO: Long Arguments default: @@ -51,11 +66,13 @@ int main(int argc, char *argv[]) continue; } + // Device? if(sDevice == NULL) { sDevice = arg; continue; } + // Directory? if(sDir == NULL) { sDir = arg; continue; @@ -77,7 +94,8 @@ int main(int argc, char *argv[]) if(sDir == NULL || getuid() != 0) { // Check if it is defined in the mounts file - if(GetMountDefs(&sDevice, &sDir, &sType, &sOptions) == 0) + // - At this point sDevice could be a device name or a mount point + if(GetMountDefs(sDevice, &sDevice, &sDir, &sType, &sOptions) == 0) { if(sDir == NULL) fprintf(stderr, "Unable to find '%s' in '%s'\n", @@ -129,19 +147,20 @@ int main(int argc, char *argv[]) void ShowUsage(char *ProgName) { - fprintf(stderr, "Usage:\n", ProgName); - fprintf(stderr, " %s [-t ] \n"); - fprintf(stderr, "or %s \n"); - fprintf(stderr, "or %s \n"); + fprintf(stderr, "Usage:\n"); + fprintf(stderr, " %s [-t ] [-o ]\n", ProgName); + fprintf(stderr, "or %s \n", ProgName); + fprintf(stderr, "or %s \n", ProgName); + fprintf(stderr, "or %s\n", ProgName); } /** - * \fn int GetMountDefs(char **spDevice, char **spDir, char **spType, char **spOptions) + * \fn int GetMountDefs(char *Ident, char **spDevice, char **spDir, char **spType, char **spOptions) * \brief Reads the mountable definitions file and returns the corresponding entry * \param spDevice Pointer to a string (pointer) determining the device (also is the input for this function) * \note STUB */ -int GetMountDefs(char **spDevice, char **spDir, char **spType, char **spOptions) +int GetMountDefs(char *Ident, char **spDevice, char **spDir, char **spType, char **spOptions) { // TODO: Read the mounts file (after deciding what it will be) return 0;