version 1.10.6.3, 2012/05/23 12:16:13
|
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 io_mpool; | int use_mm; |
|
|
int io_Errno; |
int io_Errno; |
char io_Error[STRSIZ]; |
char io_Error[STRSIZ]; |
Line 86 io_SetErr(int eno, char *estr, ...)
|
Line 96 io_SetErr(int eno, char *estr, ...)
|
va_end(lst); |
va_end(lst); |
} |
} |
|
|
// mpool_inuse() Check for mpool usage | // io_mm_inuse() Check for memory management model |
inline int |
inline int |
mpool_inuse() | io_mm_inuse() |
{ |
{ |
return io_mpool; | return use_mm & IO_MPOOL; |
} |
} |
|
|
|
|
Line 98 mpool_inuse()
|
Line 108 mpool_inuse()
|
void |
void |
_init() |
_init() |
{ |
{ |
#ifdef USE_MPOOL | ioLibInit(IO_MPOOL, 0); |
io_mpool = 42; | |
#else | |
io_mpool = 0; | |
#endif | |
} |
} |
|
|
// fini libaitio routine |
// fini libaitio routine |
void |
void |
_fini() |
_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 339 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 xfree 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 355 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 = xmalloc(len); | str = io_malloc(len); |
if (!str) { |
if (!str) { |
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
Line 364 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 = xrealloc(str, len); | str = io_realloc(str, len); |
if (!str) { |
if (!str) { |
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
Line 373 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 = xrealloc(str, len); | str = io_realloc(str, len); |
if (!str) { |
if (!str) { |
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
Line 387 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 xfree() | * 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 428 ioStrAst(const char *csString)
|
Line 497 ioStrAst(const char *csString)
|
ext = str; |
ext = str; |
|
|
out = strdup(ext); |
out = strdup(ext); |
xfree(str); | io_free(str); |
|
|
return out; |
return out; |
} |
} |
Line 478 ioMkDir(const char *csDir, int mode)
|
Line 547 ioMkDir(const char *csDir, int mode)
|
} |
} |
end: |
end: |
chdir(szOld); |
chdir(szOld); |
xfree(str); | io_free(str); |
return cx; |
return cx; |
} |
} |
|
|