|
version 1.10.6.3, 2012/05/23 12:16:13
|
version 1.12, 2012/08/02 00:47:47
|
|
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 405 ioStrAst(const char *csString)
|
Line 474 ioStrAst(const char *csString)
|
| io_Errno = EINVAL; |
io_Errno = EINVAL; |
| return NULL; |
return NULL; |
| } else { |
} else { |
| str = strdup(strchr(csString, '{') + 1); | str = io_strdup(strchr(csString, '{') + 1); |
| *strrchr(str, '}') = 0; |
*strrchr(str, '}') = 0; |
| } |
} |
| |
|
|
Line 427 ioStrAst(const char *csString)
|
Line 496 ioStrAst(const char *csString)
|
| /* ok, clear show */ |
/* ok, clear show */ |
| ext = str; |
ext = str; |
| |
|
| out = strdup(ext); | out = io_strdup(ext); |
| xfree(str); | io_free(str); |
| |
|
| return out; |
return out; |
| } |
} |
|
Line 450 ioMkDir(const char *csDir, int mode)
|
Line 519 ioMkDir(const char *csDir, int mode)
|
| if (!csDir) |
if (!csDir) |
| return cx; |
return cx; |
| |
|
| str = strdup(csDir); | str = io_strdup(csDir); |
| if (!str) { |
if (!str) { |
| LOGERR; |
LOGERR; |
| return cx; |
return cx; |
|
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; |
| } |
} |
| |
|