AcePerl
view release on metacpan or search on metacpan
acelib/filsubs.c view on Meta::CPAN
continue ;
if (ending && dName[dLen - endLen - 1] == '.') /* remove ending */
dName[dLen - endLen - 1] = 0 ;
/* the memory of these strings is freed my
the messfree()'s in filDirectoryDestroy() */
dName_copy = messalloc(strlen(dName)+1) ;
strcpy (dName_copy, dName);
array(a, arrayMax(a), char*) = dName_copy;
}
closedir (dirp) ;
/************* reorder ********************/
arraySort(a, dirOrder) ;
return a ;
#else /* defined(WIN32) */
return 0 ;
#endif /* defined(WIN32) */
} /* filDirectoryCreate */
/*************************************************************/
UTIL_FUNC_DEF void filDirectoryDestroy (Array filDirArray)
{
#ifndef WIN32
int i;
char *cp;
for (i = 0; i < arrayMax(filDirArray); ++i)
{
cp = arr(filDirArray, i, char*);
messfree (cp);
}
arrayDestroy (filDirArray);
#endif /* !WIN32 */
return;
} /* filDirectoryDestroy */
/************************************************************/
/* determines the age of a file, according to its last modification date.
returns TRUE if the age could determined and the int-pointers
(if non-NULL will be filled with the numbers).
returns FALSE if the file doesn't exist, is not readable,
or the age could not be detrmined. */
/************************************************************/
BOOL filAge (char *name, char *end,
int *diffYears, int *diffMonths, int *diffDays,
int *diffHours, int *diffMins, int *diffSecs)
{
struct stat status;
mytime_t time_now, time_modified;
char time_modified_str[25];
/* get the last-modification time of the file,
we parse the time into two acedb-style time structs
in order to compare them using the timediff functions */
if (!(filName (name, end, "r")))
return FALSE;
if (stat (filName (name, end, "r"), &status) == -1)
return FALSE;
{
time_t t = status.st_mtime;
struct tm *ts;
/* convert the time_t time into a tm-struct time */
ts = localtime(&t);
/* get a string with that time in it */
strftime (time_modified_str, 25, "%Y-%m-%d_%H:%M:%S", ts) ;
time_now = timeNow();
time_modified = timeParse(time_modified_str);
if (diffYears)
timeDiffYears (time_modified, time_now, diffYears);
if (diffMonths)
timeDiffMonths (time_modified, time_now, diffMonths);
if (diffDays)
timeDiffDays (time_modified, time_now, diffDays);
if (diffHours)
timeDiffHours (time_modified, time_now, diffHours);
if (diffMins)
timeDiffMins (time_modified, time_now, diffMins);
if (diffSecs)
timeDiffSecs (time_modified, time_now, diffSecs);
}
return TRUE;
} /* filAge */
/************************************************************/
/********** Some WIN32-specific filsub-like code ************/
/************************************************************/
#if defined(WIN32)
/************************************************************
* Converts MSDOS-like pathnames to POSIX-like ones. *
* Warning: This function is not reentrant, to avoid *
* the complexities of heap memory allocation and release *
************************************************************/
UTIL_FUNC_DEF char *DosToPosix(char *path)
{
static char newFilName[MAXPATHLEN] ;
char cwdpath[MAXPATHLEN], *cwd ;
int i , drive ;
( run in 0.650 second using v1.01-cache-2.11-cpan-98e64b0badf )