From f4d0842e01aaa77298c8ed28b86b22041a5f2888 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 5 Apr 2002 08:42:02 +0000 Subject: [PATCH] More hacks to handle quoted arguments. Write, append, and filelength tests. Upped version to 0.1.1. --- test/test_physfs.c | 207 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 197 insertions(+), 10 deletions(-) diff --git a/test/test_physfs.c b/test/test_physfs.c index d8afe3c9..208a1095 100644 --- a/test/test_physfs.c +++ b/test/test_physfs.c @@ -29,7 +29,7 @@ #define TEST_VERSION_MAJOR 0 #define TEST_VERSION_MINOR 1 -#define TEST_VERSION_PATCH 0 +#define TEST_VERSION_PATCH 1 static FILE *history_file = NULL; @@ -80,6 +80,12 @@ static int cmd_quit(char *args) static int cmd_init(char *args) { + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + if (PHYSFS_init(args)) printf("Successful.\n"); else @@ -110,7 +116,7 @@ static int cmd_addarchive(char *args) { args++; *(ptr - 1) = '\0'; - } + } /* if */ /*printf("[%s], [%d]\n", args, appending);*/ @@ -125,6 +131,12 @@ static int cmd_addarchive(char *args) static int cmd_removearchive(char *args) { + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + if (PHYSFS_removeFromSearchPath(args)) printf("Successful.\n"); else @@ -136,7 +148,15 @@ static int cmd_removearchive(char *args) static int cmd_enumerate(char *args) { - char **rc = PHYSFS_enumerateFiles(args); + char **rc; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + rc = PHYSFS_enumerateFiles(args); if (rc == NULL) printf("Failure. reason: %s.\n", PHYSFS_getLastError()); @@ -174,7 +194,7 @@ static int cmd_getcdromdirs(char *args) char **rc = PHYSFS_getCdRomDirs(); if (rc == NULL) - printf("Failure. reason: %s.\n", PHYSFS_getLastError()); + printf("Failure. Reason: [%s].\n", PHYSFS_getLastError()); else { int dir_count; @@ -234,6 +254,12 @@ static int cmd_getwritedir(char *args) static int cmd_setwritedir(char *args) { + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + if (PHYSFS_setWriteDir(args)) printf("Successful.\n"); else @@ -245,7 +271,15 @@ static int cmd_setwritedir(char *args) static int cmd_permitsyms(char *args) { - int num = atoi(args); + int num; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + num = atoi(args); PHYSFS_permitSymbolicLinks(num); printf("Symlinks are now %s.\n", num ? "permitted" : "forbidden"); return(1); @@ -282,6 +316,12 @@ static int cmd_setsaneconfig(char *args) static int cmd_mkdir(char *args) { + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + if (PHYSFS_mkdir(args)) printf("Successful.\n"); else @@ -293,6 +333,12 @@ static int cmd_mkdir(char *args) static int cmd_delete(char *args) { + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + if (PHYSFS_delete(args)) printf("Successful.\n"); else @@ -304,7 +350,15 @@ static int cmd_delete(char *args) static int cmd_getrealdir(char *args) { - const char *rc = PHYSFS_getRealDir(args); + const char *rc; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + rc = PHYSFS_getRealDir(args); if (rc) printf("Found at [%s].\n", rc); else @@ -316,7 +370,15 @@ static int cmd_getrealdir(char *args) static int cmd_exists(char *args) { - int rc = PHYSFS_exists(args); + int rc; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + rc = PHYSFS_exists(args); printf("File %sexists.\n", rc ? "" : "does not "); return(1); } /* cmd_exists */ @@ -324,7 +386,15 @@ static int cmd_exists(char *args) static int cmd_isdir(char *args) { - int rc = PHYSFS_isDirectory(args); + int rc; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + rc = PHYSFS_isDirectory(args); printf("File %s a directory.\n", rc ? "is" : "is NOT"); return(1); } /* cmd_isdir */ @@ -332,7 +402,15 @@ static int cmd_isdir(char *args) static int cmd_issymlink(char *args) { - int rc = PHYSFS_isSymbolicLink(args); + int rc; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + rc = PHYSFS_isSymbolicLink(args); printf("File %s a symlink.\n", rc ? "is" : "is NOT"); return(1); } /* cmd_issymlink */ @@ -340,7 +418,15 @@ static int cmd_issymlink(char *args) static int cmd_cat(char *args) { - PHYSFS_file *f = PHYSFS_openRead(args); + PHYSFS_file *f; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + f = PHYSFS_openRead(args); if (f == NULL) printf("failed to open. Reason: [%s].\n", PHYSFS_getLastError()); else @@ -373,6 +459,104 @@ static int cmd_cat(char *args) } /* cmd_cat */ +static int cmd_filelength(char *args) +{ + PHYSFS_file *f; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + f = PHYSFS_openRead(args); + if (f == NULL) + printf("failed to open. Reason: [%s].\n", PHYSFS_getLastError()); + else + { + PHYSFS_sint64 len = PHYSFS_fileLength(f); + if (len == -1) + printf("failed to determine length. Reason: [%s].\n", PHYSFS_getLastError()); + else + printf(" (cast to int) %d bytes.\n", (int) len); + + PHYSFS_close(f); + } /* else */ + + return(1); +} /* cmd_filelength */ + + +#define WRITESTR "The cat sat on the mat.\n\n" + +static int cmd_append(char *args) +{ + PHYSFS_file *f; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + f = PHYSFS_openAppend(args); + if (f == NULL) + printf("failed to open. Reason: [%s].\n", PHYSFS_getLastError()); + else + { + size_t bw = strlen(WRITESTR); + PHYSFS_sint64 rc = PHYSFS_write(f, WRITESTR, 1, bw); + if (rc != bw) + { + printf("Wrote (%d) of (%d) bytes. Reason: [%s].\n", rc, bw, + PHYSFS_getLastError()); + } /* if */ + else + { + printf("Successful.\n"); + } /* else */ + + PHYSFS_close(f); + } /* else */ + + return(1); +} /* cmd_append */ + + +static int cmd_write(char *args) +{ + PHYSFS_file *f; + + if (*args == '\"') + { + args++; + args[strlen(args) - 1] = '\0'; + } /* if */ + + f = PHYSFS_openWrite(args); + if (f == NULL) + printf("failed to open. Reason: [%s].\n", PHYSFS_getLastError()); + else + { + size_t bw = strlen(WRITESTR); + PHYSFS_sint64 rc = PHYSFS_write(f, WRITESTR, 1, bw); + if (rc != bw) + { + printf("Wrote (%d) of (%d) bytes. Reason: [%s].\n", rc, bw, + PHYSFS_getLastError()); + } /* if */ + else + { + printf("Successful.\n"); + } /* else */ + + PHYSFS_close(f); + } /* else */ + + return(1); +} /* cmd_write */ + + /* must have spaces trimmed prior to this call. */ static int count_args(const char *str) { @@ -432,6 +616,9 @@ static const command_info commands[] = { "isdir", cmd_isdir, 1, "" }, { "issymlink", cmd_issymlink, 1, "" }, { "cat", cmd_cat, 1, "" }, + { "filelength", cmd_filelength, 1, "" }, + { "append", cmd_append, 1, "" }, + { "write", cmd_write, 1, "" }, { NULL, NULL, -1, NULL } };