Diff for /libaitio/src/aitio.c between versions 1.10.6.3 and 1.12.6.1

version 1.10.6.3, 2012/05/23 12:16:13 version 1.12.6.1, 2012/11/15 23:18:33
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;
 }  }
   
   
 // init libaitio routine  // init libaitio routine
void__attribute__((constructor)) void
_init()_io_init()
 {  {
#ifdef USE_MPOOL        ioLibInit(IO_MPOOL, 0);
        io_mpool = 42; 
#else 
        io_mpool = 0; 
#endif 
 }  }
   
 // fini libaitio routine  // fini libaitio routine
void__attribute__((destructor)) void
_fini()_io_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:
                           io_malloc = malloc;
                           io_calloc = calloc;
                           io_realloc = realloc;
                           io_strdup = strdup;
                           io_free = free;
                           use_mm = IO_SYSM;
   
                           mpool_destroy(&io_mpool);
                           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;
 }  }
   

Removed from v.1.10.6.3  
changed lines
  Added in v.1.12.6.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>