/**********************************************************************
This file is part of Crack dot Com's free source code release of
Golgotha.
for
information about compiling & licensing issues visit this URL
If that doesn't help, contact Jonathan Clark at golgotha_source@usa.net (Subject should have "GOLG" in it) ***********************************************************************/ #include#include "string/string.hh" #include "arch.hh" #include "file/get_dir.hh" #include "memory/array.hh" class i4_dir_string : public i4_str { public: i4_dir_string(char *st) : i4_str(strlen(st)+1) { strcpy(ptr,st); len=strlen(st); } char *buffer() { return ptr; } void set_len(w16 _len) { len = _len; } }; i4_bool i4_get_directory(const i4_const_str &path, i4_str **&files, w32 &tfiles, i4_str **&dirs, w32 &tdirs, i4_file_status_struct **file_status) { files=NULL; dirs=NULL; tfiles=0; tdirs=0; _finddata_t fdat; char os_str[255],buf[256]; sprintf(os_str,"%s/*.*",i4_os_string(path,buf,sizeof(buf))); long handle=_findfirst(os_str,&fdat),done; if (handle==-1) return i4_F; i4_array stats(64,64); do { if (fdat.attrib & _A_SUBDIR) { tdirs++; dirs=(i4_str **)i4_realloc(dirs,sizeof(i4_str *)*tdirs,"dir list"); dirs[tdirs-1]=new i4_dir_string(fdat.name); } else { i4_file_status_struct *s=stats.add(); s->last_accessed=fdat.time_access; s->last_modified=fdat.time_write; s->created=fdat.time_create; tfiles++; files=(i4_str **)i4_realloc(files,sizeof(i4_str *)*tfiles,"dir list"); files[tfiles-1]=new i4_dir_string(fdat.name); } done=_findnext(handle, &fdat); } while (done!=-1); if (file_status) { if (!tfiles) *file_status=0; else { i4_file_status_struct *sa; sa=(i4_file_status_struct *)i4_malloc(sizeof (i4_file_status_struct) * tfiles, "stat array"); for (int j=0; j