version 1.9.2.1, 2012/04/02 09:10:30
|
version 1.11, 2012/07/03 08:51:05
|
Line 47 SUCH DAMAGE.
|
Line 47 SUCH DAMAGE.
|
|
|
|
|
int io_Debug; |
int io_Debug; |
|
mpool_t *io_mpool; |
|
|
|
|
|
/* Memory management */ |
|
|
|
void *(*io_malloc)(size_t) = malloc; |
|
void *(*io_calloc)(size_t, size_t) = calloc; |
|
void *(*io_realloc)(void*, size_t) = realloc; |
|
char *(*io_strdup)(const char*) = strdup; |
|
void (*io_free)(void*) = free; |
|
|
|
|
#pragma GCC visibility push(hidden) |
#pragma GCC visibility push(hidden) |
|
|
|
int use_mm; |
|
|
int io_Errno; |
int io_Errno; |
char io_Error[STRSIZ]; |
char io_Error[STRSIZ]; |
|
|
Line 84 io_SetErr(int eno, char *estr, ...)
|
Line 96 io_SetErr(int eno, char *estr, ...)
|
va_end(lst); |
va_end(lst); |
} |
} |
|
|
|
// io_mm_inuse() Check for memory management model |
|
inline int |
|
io_mm_inuse() |
|
{ |
|
return use_mm & IO_MPOOL; |
|
} |
|
|
|
|
|
// init libaitio routine |
|
void |
|
_init() |
|
{ |
|
ioLibInit(IO_MPOOL, 0); |
|
} |
|
|
|
// fini libaitio routine |
|
void |
|
_fini() |
|
{ |
|
ioLibFini(); |
|
} |
|
|
/* |
/* |
|
* ioLibInit() - Init libaitio library memory management |
|
* |
|
* @mm = memory management (IO_SYSM or IO_MPOOL) |
|
* @maxmem = memory limit |
|
* return: -1 error or !=-1 used memory management model |
|
*/ |
|
inline int |
|
ioLibInit(int mm, u_long maxmem) |
|
{ |
|
switch (mm) { |
|
case IO_MPOOL: /* mpool */ |
|
io_mpool = mpool_init(maxmem); |
|
if (io_mpool) { |
|
io_malloc = mpool_xmalloc; |
|
io_calloc = mpool_xcalloc; |
|
io_realloc = mpool_xrealloc; |
|
io_strdup = mpool_xstrdup; |
|
io_free = mpool_xfree; |
|
use_mm = mm; |
|
break; |
|
} else { |
|
#undef USE_MPOOL |
|
} |
|
case IO_SYSM: /* system */ |
|
io_malloc = malloc; |
|
io_calloc = calloc; |
|
io_realloc = realloc; |
|
io_strdup = strdup; |
|
io_free = free; |
|
use_mm = mm; |
|
break; |
|
default: /* not supported */ |
|
io_SetErr(EINVAL, "Not supported memory management"); |
|
return -1; |
|
} |
|
|
|
return use_mm; |
|
} |
|
|
|
/* |
|
* ioLibFini() - Finish libaitio library memory management |
|
* |
|
* return: none |
|
*/ |
|
inline void |
|
ioLibFini() |
|
{ |
|
switch (use_mm) { |
|
case IO_MPOOL: |
|
mpool_destroy(&io_mpool); |
|
|
|
io_malloc = malloc; |
|
io_calloc = calloc; |
|
io_realloc = realloc; |
|
io_strdup = strdup; |
|
io_free = free; |
|
use_mm = IO_SYSM; |
|
break; |
|
} |
|
} |
|
|
|
|
|
/* |
* ioPromptRead() - Read data from input h[0] with prompt to output h[1] |
* ioPromptRead() - Read data from input h[0] with prompt to output h[1] |
* |
* |
* @h = file handles h[0] = input, h[1] = output, if NULL use stdin, stdout |
* @h = file handles h[0] = input, h[1] = output, if NULL use stdin, stdout |
Line 249 ioRegexVerify(const char *csRegex, const char *csData,
|
Line 345 ioRegexVerify(const char *csRegex, const char *csData,
|
|
|
if ((ret = regcomp(&re, csRegex, REG_EXTENDED))) { |
if ((ret = regcomp(&re, csRegex, REG_EXTENDED))) { |
regerror(ret, &re, szErr, STRSIZ); |
regerror(ret, &re, szErr, STRSIZ); |
io_SetErr(ret, "Error:: %s\n", szErr); | io_SetErr(ret, "%s", szErr); |
regfree(&re); |
regfree(&re); |
return NULL; |
return NULL; |
} |
} |
Line 267 ioRegexVerify(const char *csRegex, const char *csData,
|
Line 363 ioRegexVerify(const char *csRegex, const char *csData,
|
|
|
if (ret) { |
if (ret) { |
regerror(ret, &re, szErr, STRSIZ); |
regerror(ret, &re, szErr, STRSIZ); |
io_SetErr(ret, "Error:: %s\n", szErr); | io_SetErr(ret, "%s", szErr); |
pos = NULL; |
pos = NULL; |
} |
} |
|
|
Line 312 ioRegexGet(const char *csRegex, const char *csData, ch
|
Line 408 ioRegexGet(const char *csRegex, const char *csData, ch
|
* @csRegex = Regulare expression pattern |
* @csRegex = Regulare expression pattern |
* @csData = Source data |
* @csData = Source data |
* @csNew = Data for replace |
* @csNew = Data for replace |
* return: NULL not match or error; !=NULL allocated new string, must be free after use! | * return: NULL not match or error; !=NULL allocated new string, must be io_free after use! |
*/ |
*/ |
char * |
char * |
ioRegexReplace(const char *csRegex, const char *csData, const char *csNew) |
ioRegexReplace(const char *csRegex, const char *csData, const char *csNew) |
Line 328 ioRegexReplace(const char *csRegex, const char *csData
|
Line 424 ioRegexReplace(const char *csRegex, const char *csData
|
|
|
// ___ before match |
// ___ before match |
len = sp + 1; |
len = sp + 1; |
str = malloc(len); | str = io_malloc(len); |
if (!str) { |
if (!str) { |
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
Line 337 ioRegexReplace(const char *csRegex, const char *csData
|
Line 433 ioRegexReplace(const char *csRegex, const char *csData
|
// * replace match * |
// * replace match * |
if (csNew) { |
if (csNew) { |
len += strlen(csNew); |
len += strlen(csNew); |
str = realloc(str, len); | str = io_realloc(str, len); |
if (!str) { |
if (!str) { |
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
Line 346 ioRegexReplace(const char *csRegex, const char *csData
|
Line 442 ioRegexReplace(const char *csRegex, const char *csData
|
} |
} |
// after match ___ |
// after match ___ |
len += strlen(csData) - ep; |
len += strlen(csData) - ep; |
str = realloc(str, len); | str = io_realloc(str, len); |
if (!str) { |
if (!str) { |
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
Line 360 ioRegexReplace(const char *csRegex, const char *csData
|
Line 456 ioRegexReplace(const char *csRegex, const char *csData
|
* ioStrAst() - Function for evaluate string like asterisk variable "{text[:[-]#[:#]]}" |
* ioStrAst() - Function for evaluate string like asterisk variable "{text[:[-]#[:#]]}" |
* |
* |
* @csString = Input string |
* @csString = Input string |
* return: NULL error, !=NULL Allocated new string evaluated from input string, must be free() | * return: NULL error, !=NULL Allocated new string evaluated from input string, must be io_free() |
*/ |
*/ |
char * |
char * |
ioStrAst(const char *csString) |
ioStrAst(const char *csString) |
Line 373 ioStrAst(const char *csString)
|
Line 469 ioStrAst(const char *csString)
|
|
|
if (!strchr(csString, '{') || !strrchr(csString, '}')) { |
if (!strchr(csString, '{') || !strrchr(csString, '}')) { |
memset(io_Error, 0, STRSIZ); |
memset(io_Error, 0, STRSIZ); |
snprintf(io_Error, STRSIZ, "Error:: Invalid input string format ... " | snprintf(io_Error, STRSIZ, "Invalid input string format ... " |
"must be like {text[:[-]#[:#]]}"); |
"must be like {text[:[-]#[:#]]}"); |
io_Errno = EINVAL; |
io_Errno = EINVAL; |
return NULL; |
return NULL; |
Line 401 ioStrAst(const char *csString)
|
Line 497 ioStrAst(const char *csString)
|
ext = str; |
ext = str; |
|
|
out = strdup(ext); |
out = strdup(ext); |
free(str); | io_free(str); |
|
|
return out; |
return out; |
} |
} |
Line 451 ioMkDir(const char *csDir, int mode)
|
Line 547 ioMkDir(const char *csDir, int mode)
|
} |
} |
end: |
end: |
chdir(szOld); |
chdir(szOld); |
free(str); | io_free(str); |
return cx; |
return cx; |
} |
} |
|
|