diff options
Diffstat (limited to 'Utilities/cmtar/filesystem.c')
-rw-r--r-- | Utilities/cmtar/filesystem.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/Utilities/cmtar/filesystem.c b/Utilities/cmtar/filesystem.c deleted file mode 100644 index 496f81c..0000000 --- a/Utilities/cmtar/filesystem.c +++ /dev/null @@ -1,87 +0,0 @@ - - - -// First microsoft compilers - -#include <windows.h> -#include <io.h> -#include <ctype.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/stat.h> -#include <sys/types.h> - -#include <libtarint/filesystem.h> - - -kwDirectory * kwOpenDir(const char* name) -{ -// struct _KWDIR ssss; - char* buf; - size_t n = strlen(name); - kwDirectory * dir = (kwDirectory *)malloc(sizeof (kwDirectory)); - if(dir==NULL) - { - return NULL; - } - dir->EOD=0; //not the end of directory - if ( name[n - 1] == '/' ) - { - buf = (char*) malloc(n + 1 + 1); -// buf = new char[n + 1 + 1]; - sprintf(buf, "%s*", name); - } - else - { - buf = (char*)malloc(n + 2 + 1); -// buf = new char[n + 2 + 1]; - sprintf(buf, "%s/*", name); - } - - // Now put them into the file array - dir->SrchHandle = _findfirst(buf, &dir->Entry); - free(buf); - - if ( dir->SrchHandle == -1 ) - { - free(dir); - return NULL; - } - return dir; -} - -kwDirEntry * kwReadDir(kwDirectory * dir) -{ - static kwDirEntry entry; - if(!dir || dir->EOD ==1) - { - return NULL; - } - strncpy(entry.d_name,dir->Entry.name,TAR_MAXPATHLEN-1); - if(_findnext(dir->SrchHandle, &dir->Entry) == -1) - { - dir->EOD=1; - } - - // It is both stupid and dangerous to return a pointer to a static like this. - // This can only be called by one caller at a time: i.e., it's not thread safe. - // On the other hand, it mimics the documented behavior of "readdir" which is - // what it's implemented to replace for platforms that do not have readdir. - // Memory leaks are also stupid and dangerous... perhaps this is less so. - // - return &entry; -} - -int kwCloseDir(kwDirectory * dir) -{ - int r=-1; - if(dir) - { - r=_findclose(dir->SrchHandle); - free(dir); - } - if(r==-1) return 0; - return 1; -} |