rbb 99/04/08 10:09:36
Modified: apr/file_io/unix open.c apr/test testfile.c docs fileio.txt include apr_file_io.h Log: Added a function to remove files. apr_remove_file. Also all the needed test functions to make sure it works. Revision Changes Path 1.10 +11 -0 apache-apr/apr/file_io/unix/open.c Index: open.c =================================================================== RCS file: /home/cvs/apache-apr/apr/file_io/unix/open.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- open.c 1999/02/25 21:33:43 1.9 +++ open.c 1999/04/08 17:09:30 1.10 @@ -137,3 +137,14 @@ /* Are there any error conditions other than EINTR or EBADF? */ } } + +apr_status_t apr_remove_file(char *path) +{ + if (unlink(path) == 0) { + return APR_SUCCESS; + } + else { + return APR_FAILURE; + } +} + 1.6 +58 -0 apache-apr/apr/test/testfile.c Index: testfile.c =================================================================== RCS file: /home/cvs/apache-apr/apr/test/testfile.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- testfile.c 1999/04/07 20:42:05 1.5 +++ testfile.c 1999/04/08 17:09:31 1.6 @@ -62,6 +62,8 @@ #include <unistd.h> #endif +int test_filedel(void); + int main() { apr_file_t *thefile = NULL; @@ -145,5 +147,61 @@ else { fprintf(stdout, "OK\n"); } + + fprintf(stdout, "Deleting file......."); + status = apr_remove_file(thefile->fname); + if (status == APR_FAILURE) { + fprintf(stderr, "Couldn't delete the file\n"); + exit(-1); + } + else { + fprintf(stdout, "OK\n"); + } + + fprintf(stdout, "Making sure it's gone......."); + thefile = apr_open(filename, APR_READ, 444); + if (thefile != NULL) { + fprintf(stderr, "I could open the file for some reason?\n"); + exit(-1); + } + else { + fprintf(stdout, "OK\n"); + } + + fprintf(stdout, "Deleting file while still open......."); + if (test_filedel() == APR_FAILURE) { + fprintf(stderr, "Something happened, please look into it.\n"); + exit(-1); + } + else { + fprintf(stdout, "OK\n"); + } + return 1; +} + +int test_filedel(void) +{ + apr_file_t *thefile; + apr_int32_t flag = APR_READ | APR_WRITE | APR_CREATE; + + thefile = apr_open("testdel", flag, 444); + if (thefile == NULL) { + return APR_FAILURE; + } + + if (apr_remove_file(thefile->fname) == APR_FAILURE) { + return APR_FAILURE; + } + + if (apr_close(thefile) == APR_FAILURE) { + return APR_FAILURE; + } + + thefile = apr_open("testdel", APR_READ, 444); + if (thefile != NULL) { + return APR_FAILURE; + } + + return APR_SUCCESS; } 1.8 +8 -0 apache-apr/docs/fileio.txt Index: fileio.txt =================================================================== RCS file: /home/cvs/apache-apr/docs/fileio.txt,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- fileio.txt 1999/04/07 20:42:07 1.7 +++ fileio.txt 1999/04/08 17:09:32 1.8 @@ -98,6 +98,14 @@ APR_END -- add the offset to the current file size. return) Offset into file that the pointer was set to. + apr_status_t apr_rem_file(char *) + Removes the file pointed to by the character string + Arguments: + arg 1) The full path of the file to delete. + return) APR_SUCCESS or APR_FAILURE. +Notes: If the file is still open, it will not actually be removed until the + all references of the file are closed. + APRStatus apr_access(char *, APRFilePerms) Determine the Accessibility of a file Arguments: 1.10 +1 -0 apache-apr/include/apr_file_io.h Index: apr_file_io.h =================================================================== RCS file: /home/cvs/apache-apr/include/apr_file_io.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- apr_file_io.h 1999/04/08 02:36:26 1.9 +++ apr_file_io.h 1999/04/08 17:09:34 1.10 @@ -101,6 +101,7 @@ /* Function definitions */ apr_file_t *apr_open(char *, apr_int32_t, apr_fileperms_t); apr_status_t apr_close(apr_file_t *); +apr_status_t apr_remove_file(char *); apr_ssize_t apr_read(apr_file_t *, void *, apr_size_t); apr_ssize_t apr_write(apr_file_t *, void *, apr_size_t);