diff --git a/Makefile b/Makefile index 011aad7..1abb6b3 100644 --- a/Makefile +++ b/Makefile @@ -17,12 +17,13 @@ test: testCompile testLink testExec testCompile: gcc $(INC) $(UNITY) -g -c -o build/unity.o $(UNITYPATH)/unity.c gcc $(INC) -c -o build/main.o src/main.c - gcc $(INC) -g -c -o build/fuse.o src/fuse.c + gcc $(INC) -c -o build/fuse.o src/fuse.c + gcc $(INC) -c -o build/fuseactions.o src/fuseactions.c gcc $(INC) -g -c -o build/test.o test/test.c testLink: - gcc -g -o bin/test.out build/fuse.o build/test.o build/unity.o - gcc -o bin/fuse.out build/fuse.o build/main.o + gcc -g -o bin/test.out build/fuseactions.o build/fuse.o build/test.o build/unity.o + gcc -o bin/fuse.out build/fuseactions.o build/fuse.o build/main.o testExec: ./bin/test.out diff --git a/include/fuse.h b/include/fuse.h index 3457ea9..16efffe 100644 --- a/include/fuse.h +++ b/include/fuse.h @@ -18,6 +18,7 @@ typedef struct fuseArgStruct } fuseArgStruct; void Fuse(int argc, char* argv[]); +void FuseGetArgs(int argc, char* argv[], fuseArgStruct* fuseArgs); void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs); void FuseGivenTest(fuseArgStruct* fuseArgs, char* programPath); void FuseStructInit(fuseArgStruct* fuseStruct); diff --git a/src/fuse.c b/src/fuse.c index 250a4c7..1a35b6f 100644 --- a/src/fuse.c +++ b/src/fuse.c @@ -18,11 +18,42 @@ void Fuse(int argc, char* argv[]) FuseGivenTest(&fuseArgs, argv[0]); } +// New method for getting arguments +void FuseGetArgs(int argc, char* argv[], fuseArgStruct* fuseArgs) +{ + for (int i = 0; i < argc; i++) + { + if (argv[i][0] == '-' && argv[i][1] == 'l') + fuseArgs->list = 1; + if (argv[i][0] == '-' && argv[i][1] == 'a') + { + fuseArgs->add = 1; + fuseArgs->toAdd = strdup(argv[i+1]); + } + if (argv[i][0] == '-' && argv[i][1] == 'r') + { + fuseArgs->remove = 1; + fuseArgs->toRemove = strdup(argv[i+1]); + } + if (argv[i][0] == '-' && argv[i][1] == 'e') + { + fuseArgs->extract = 1; + fuseArgs->toExtract = strdup(argv[i+1]); + } + if (argv[i][0] == '-' && argv[i][1] == 'f') + { + fuseArgs->filefsname = 1; + fuseArgs->fsname = strdup(argv[i+1]); + } + } +} + // Originally given method for getting arguments +// Depreciated void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs) { int opt; - while ((opt = getopt(argc, argv, "la:r:e:")) != -1) + while ((opt = getopt(argc, argv, "la:r:e:f:")) != -1) { switch (opt) { @@ -41,6 +72,10 @@ void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs) fuseArgs->extract = 1; fuseArgs->toExtract = strdup(optarg); break; + case 'f': + fuseArgs->filefsname = 1; + fuseArgs->fsname = strdup(optarg); + break; default: FuseUsageError(argv[0]); } @@ -121,4 +156,4 @@ int zerosize(int fd) if(stats.st_size == 0) return 1; return 0; -} \ No newline at end of file +} diff --git a/test/fakefs b/test/fakefs new file mode 100644 index 0000000..5630165 Binary files /dev/null and b/test/fakefs differ diff --git a/test/test.c b/test/test.c new file mode 100644 index 0000000..628bcdb --- /dev/null +++ b/test/test.c @@ -0,0 +1,47 @@ +#include +#include +#include +#include "unity/unity.h" +#include "fuse.h" +#include "fuseactions.h" + +fuseArgStruct dummyFuse; +int argc = 5; +char* argv[5]; + +void setUp(void) +{ + FuseStructInit(&dummyFuse); + argv[0] = "bin/fuse.out"; + argv[1] = "-l"; + argv[2] = "test/test.txt"; + argv[3] = "-f"; + argv[4] = "test/fakefs"; +} + +void tearDown(void) +{ + ; +} + +void Test_FuseGetArgs_Should_AddToDummy(void) +{ + FuseGetArgs(argc, argv, &dummyFuse); + TEST_ASSERT_EQUAL(1, dummyFuse.list); + argv[1] = "-a"; + FuseGetArgs(argc, argv, &dummyFuse); + TEST_ASSERT_EQUAL(1, dummyFuse.add); + argv[1] = "-r"; + FuseGetArgs(argc, argv, &dummyFuse); + TEST_ASSERT_EQUAL(1, dummyFuse.remove); + argv[1] = "-e"; + FuseGetArgs(argc, argv, &dummyFuse); + TEST_ASSERT_EQUAL(1, dummyFuse.extract); +} + +int main(void) +{ + UNITY_BEGIN(); + RUN_TEST(Test_FuseGetArgs_Should_AddToDummy); + return UNITY_END(); +} diff --git a/test/Unity/unity.c b/test/unity/unity.c similarity index 100% rename from test/Unity/unity.c rename to test/unity/unity.c diff --git a/test/Unity/unity.h b/test/unity/unity.h similarity index 100% rename from test/Unity/unity.h rename to test/unity/unity.h diff --git a/test/Unity/unity_internals.h b/test/unity/unity_internals.h similarity index 100% rename from test/Unity/unity_internals.h rename to test/unity/unity_internals.h