version 1.1, 2010/02/23 22:54:52
|
version 1.2.2.2, 2011/02/10 19:45:07
|
Line 9
|
Line 9
|
#include "global.h" |
#include "global.h" |
|
|
|
|
|
int io_Debug; |
|
|
|
|
#pragma GCC visibility push(hidden) |
#pragma GCC visibility push(hidden) |
|
|
int io_Errno; |
int io_Errno; |
Line 301 char *ioRegexReplace(const char *csRegex, const char *
|
Line 304 char *ioRegexReplace(const char *csRegex, const char *
|
strlcat(str, csData + ep, len); |
strlcat(str, csData + ep, len); |
|
|
return str; |
return str; |
|
} |
|
|
|
|
|
/* |
|
* ioMkDir() Function for racursive directory creation and validation |
|
* @csDir = Full directory path |
|
* @mode = Mode for directory creation if missing dir |
|
* return: -1 error, 0 directory path exist, >0 created missing dirs |
|
*/ |
|
int |
|
ioMkDir(const char *csDir, int mode) |
|
{ |
|
char *str, *s, *pbrk, szOld[MAXPATHLEN] = { 0 }; |
|
register int cx = -1; |
|
|
|
if (!csDir) |
|
return cx; |
|
|
|
str = strdup(csDir); |
|
if (!str) { |
|
LOGERR; |
|
return cx; |
|
} |
|
|
|
getcwd(szOld, MAXPATHLEN); |
|
if (*str == '/') |
|
chdir("/"); |
|
|
|
for (cx = 0, s = strtok_r(str, "/", &pbrk); s; s = strtok_r(NULL, "/", &pbrk)) { |
|
if (mkdir(s, mode) == -1) { |
|
if (errno != EEXIST) { |
|
LOGERR; |
|
cx = -1; |
|
goto end; |
|
} |
|
} else |
|
cx++; |
|
|
|
if (chdir(s) == -1) { |
|
LOGERR; |
|
cx = -1; |
|
goto end; |
|
} |
|
} |
|
end: |
|
chdir(szOld); |
|
free(str); |
|
return cx; |
|
} |
|
|
|
|
|
/* |
|
* ioVarAst() Function for evaluate string like asterisk variable "{text[:[-]#[:#]]}" |
|
* @csString = Input string |
|
* return: NULL error, !=NULL Allocated new string evaluated from input string, must be free() |
|
*/ |
|
char * |
|
ioVarAst(const char *csString) |
|
{ |
|
char *ext, *str, *out = NULL; |
|
int e[2] = { 0 }; |
|
|
|
if (!csString) |
|
return NULL; |
|
|
|
if (!strchr(csString, '{') || !strrchr(csString, '}')) { |
|
memset(io_Error, 0, STRSIZ); |
|
snprintf(io_Error, STRSIZ, "Error:: Invalid input string format ... " |
|
"must be like {text[:[-]#[:#]]}"); |
|
io_Errno = EINVAL; |
|
return NULL; |
|
} else { |
|
str = strdup(strchr(csString, '{') + 1); |
|
*strrchr(str, '}') = 0; |
|
} |
|
|
|
if ((ext = strchr(str, ':'))) { |
|
*ext++ = 0; |
|
e[0] = strtol(ext, NULL, 0); |
|
if ((ext = strchr(ext, ':'))) |
|
e[1] = strtol(++ext, NULL, 0); |
|
|
|
/* make cut prefix */ |
|
if (e[0] >= 0) |
|
ext = str + e[0]; |
|
else |
|
ext = str + strlen(str) + e[0]; |
|
/* make cut suffix */ |
|
if (e[1] > 0) |
|
*(ext + e[1]) = 0; |
|
} else |
|
/* ok, clear show */ |
|
ext = str; |
|
|
|
out = strdup(ext); |
|
free(str); |
|
|
|
return out; |
} |
} |