diff options
-rw-r--r-- | source/include/proto.h | 3 | ||||
-rw-r--r-- | source/lib/doscalls.c | 17 | ||||
-rw-r--r-- | source/lib/genrand.c | 4 | ||||
-rw-r--r-- | source/lib/util.c | 3 | ||||
-rw-r--r-- | source/locking/locking_slow.c | 4 | ||||
-rw-r--r-- | source/smbd/dir.c | 4 |
6 files changed, 25 insertions, 10 deletions
diff --git a/source/include/proto.h b/source/include/proto.h index 8cfaea58663..4848c5e70fb 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -62,6 +62,7 @@ BOOL dbghdr( int level, char *file, char *func, int line ); int dos_unlink(char *fname); int dos_open(char *fname,int flags,mode_t mode); DIR *dos_opendir(char *dname); +char *dos_readdirname(DIR *p); int dos_stat(char *fname,SMB_STRUCT_STAT *sbuf); int dos_lstat(char *fname,SMB_STRUCT_STAT *sbuf); int dos_mkdir(char *dname,mode_t mode); @@ -275,7 +276,7 @@ char *uidtoname(uid_t uid); char *gidtoname(gid_t gid); uid_t nametouid(const char *name); void smb_panic(char *why); -char *readdirname(void *p); +char *readdirname(DIR *p); BOOL is_in_path(char *name, name_compare_entry *namelist); void set_namearray(name_compare_entry **ppname_array, char *namelist); void free_namearray(name_compare_entry *name_array); diff --git a/source/lib/doscalls.c b/source/lib/doscalls.c index 27e6877c5a7..031effcf520 100644 --- a/source/lib/doscalls.c +++ b/source/lib/doscalls.c @@ -57,7 +57,22 @@ int dos_open(char *fname,int flags,mode_t mode) DIR *dos_opendir(char *dname) { - return(opendir(dos_to_unix(dname,False))); + return(opendir(dos_to_unix(dname,False))); +} + +/******************************************************************* + Readdirname() wrapper that calls unix_to_dos. +********************************************************************/ + +char *dos_readdirname(DIR *p) +{ + char *dname = readdirname(p); + + if (!dname) + return(NULL); + + unix_to_dos(dname, True); + return(dname); } /******************************************************************* diff --git a/source/lib/genrand.c b/source/lib/genrand.c index 8b05b02f943..90e4a3194e1 100644 --- a/source/lib/genrand.c +++ b/source/lib/genrand.c @@ -56,7 +56,7 @@ static void do_filehash(char *fname, unsigned char *hash) static void do_dirrand(char *name, unsigned char *buf, int buf_len) { - void *dp = dos_opendir(name); + DIR *dp = opendir(name); pstring fullname; int len_left; int fullname_len; @@ -86,7 +86,7 @@ static void do_dirrand(char *name, unsigned char *buf, int buf_len) if(strlen(p) <= len_left) pstrcpy(pos, p); - if(dos_stat(fullname,&st) == 0) { + if(sys_stat(fullname,&st) == 0) { SIVAL(buf, ((counter * 4)%(buf_len-4)), IVAL(buf,((counter * 4)%(buf_len-4))) ^ st.st_atime); counter++; diff --git a/source/lib/util.c b/source/lib/util.c index fbd2fc34910..b4ee318570c 100644 --- a/source/lib/util.c +++ b/source/lib/util.c @@ -2347,7 +2347,7 @@ void smb_panic(char *why) /******************************************************************* a readdir wrapper which just returns the file name ********************************************************************/ -char *readdirname(void *p) +char *readdirname(DIR *p) { struct dirent *ptr; char *dname; @@ -2371,7 +2371,6 @@ char *readdirname(void *p) { static pstring buf; memcpy(buf, dname, NAMLEN(ptr)+1); - unix_to_dos(buf, True); dname = buf; } diff --git a/source/locking/locking_slow.c b/source/locking/locking_slow.c index 7c273552242..58f17e3a928 100644 --- a/source/locking/locking_slow.c +++ b/source/locking/locking_slow.c @@ -968,12 +968,12 @@ mode file %s (%s)\n", fname, strerror(errno))); /******************************************************************* call the specified function on each entry under management by the -share ode system +share mode system ********************************************************************/ static int slow_share_forall(void (*fn)(share_mode_entry *, char *)) { int i, count=0; - void *dir; + DIR *dir; char *s; share_mode_entry e; diff --git a/source/smbd/dir.c b/source/smbd/dir.c index db2de23f6de..dcf1d158b4c 100644 --- a/source/smbd/dir.c +++ b/source/smbd/dir.c @@ -518,7 +518,7 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto) { Dir *dirp; char *n; - void *p = dos_opendir(name); + DIR *p = dos_opendir(name); int used=0; if (!p) return(NULL); @@ -530,7 +530,7 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto) dirp->pos = dirp->numentries = dirp->mallocsize = 0; dirp->data = dirp->current = NULL; - while ((n = readdirname(p))) + while ((n = dos_readdirname(p))) { int l = strlen(n)+1; |