diff --git a/fisopfs/README.md b/fisopfs/README.md index c0d04f9..16c28b8 100644 --- a/fisopfs/README.md +++ b/fisopfs/README.md @@ -32,6 +32,14 @@ En el mismo directorio que se utilizó para compilar la solución, ejectuar: $ ./fisopfs prueba/ ``` +Hay una flag `--filedisk NAME` para indicar que archivo se + quiere utilizar como archivo de persistencia en disco. + El valor por defecto es "persistence_file.fisopfs" + +```bash +$ ./fisopfs prueba/ --filedisk nuevo_disco.fisopfs +``` + ### Verificar directorio ```bash diff --git a/fisopfs/fisopfs.c b/fisopfs/fisopfs.c index 65cdc3f..0a63a2d 100644 --- a/fisopfs/fisopfs.c +++ b/fisopfs/fisopfs.c @@ -10,6 +10,10 @@ #include #include +#define DEFAULT_FILE_DISK "persistence_file.fisopfs" + +char *filedisk = DEFAULT_FILE_DISK; + static int fisopfs_getattr(const char *path, struct stat *st) { @@ -91,5 +95,21 @@ static struct fuse_operations operations = { int main(int argc, char *argv[]) { + for (int i = 1; i < argc - 1; i++) { + if (strcmp(argv[i], "--filedisk") == 0) { + filedisk = argv[i + 1]; + + // We remove the argument so that fuse doesn't use our + // argument or name as folder. + // Equivalent to a pop. + for (int j = i; j < argc - 1; j++) { + argv[j] = argv[j + 2]; + } + + argc = argc - 2; + break; + } + } + return fuse_main(argc, argv, &operations, NULL); }