Diff for /libaitio/src/aitio.c between versions 1.8 and 1.9.2.2

version 1.8, 2011/12/13 02:23:08 version 1.9.2.2, 2012/05/14 12:48:21
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 86  io_SetErr(int eno, char *estr, ...) Line 86  io_SetErr(int eno, char *estr, ...)
   
   
 /*  /*
 * 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
  * @csPrompt = Prompt before input, may be NULL   * @csPrompt = Prompt before input, may be NULL
  * @psData = Readed data   * @psData = Readed data
Line 139  ioPromptRead(int *h, const char *csPrompt, char * __re Line 140  ioPromptRead(int *h, const char *csPrompt, char * __re
 }  }
   
 /*  /*
 * ioPromptPassword() Read password from input h[0] with prompt to output h[1] * ioPromptPassword() - Read password 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
  * @csPrompt = Prompt before input, may be NULL   * @csPrompt = Prompt before input, may be NULL
  * @psPass = Readed password   * @psPass = Readed password
Line 225  next: Line 227  next:
 }  }
   
 /*  /*
 * ioRegexVerify() Function for verify data match in regex expression * ioRegexVerify() - Function for verify data match in regex expression
  *
  * @csRegex = Regulare expression pattern   * @csRegex = Regulare expression pattern
  * @csData = Data for check and verify   * @csData = Data for check and verify
  * @startPos = Return start positions   * @startPos = Return start positions
Line 246  ioRegexVerify(const char *csRegex, const char *csData, Line 249  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 264  ioRegexVerify(const char *csRegex, const char *csData, Line 267  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 273  ioRegexVerify(const char *csRegex, const char *csData, Line 276  ioRegexVerify(const char *csRegex, const char *csData,
 }  }
   
 /*  /*
 * ioRegexGet() Function for get data match in regex expression * ioRegexGet() - Function for get data match in regex expression
  *
  * @csRegex = Regulare expression pattern   * @csRegex = Regulare expression pattern
  * @csData = Data from get   * @csData = Data from get
  * @psString = Returned string if match   * @psString = Returned string if match
Line 303  ioRegexGet(const char *csRegex, const char *csData, ch Line 307  ioRegexGet(const char *csRegex, const char *csData, ch
 }  }
   
 /*  /*
 * ioRegexReplace() Function for replace data match in regex expression with newdata * ioRegexReplace() - Function for replace data match in regex expression with newdata
  *
  * @csRegex = Regulare expression pattern   * @csRegex = Regulare expression pattern
  * @csData = Source data   * @csData = Source data
  * @csNew = Data for replace   * @csNew = Data for replace
Line 352  ioRegexReplace(const char *csRegex, const char *csData Line 357  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 free()
 */  */
Line 367  ioStrAst(const char *csString) Line 373  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 402  ioStrAst(const char *csString) Line 408  ioStrAst(const char *csString)
   
   
 /*  /*
 * ioMkDir() Function for racursive directory creation and validation * ioMkDir() - Function for racursive directory creation and validation
  *
  * @csDir = Full directory path   * @csDir = Full directory path
  * @mode = Mode for directory creation if missing dir   * @mode = Mode for directory creation if missing dir
  * return: -1 error, 0 directory path exist, >0 created missing dirs   * return: -1 error, 0 directory path exist, >0 created missing dirs
Line 449  end: Line 456  end:
 }  }
   
 /*  /*
 * ioWatchDirLoop() Function for watching changes in directory and fire callback * ioWatchDirLoop() - Function for watching changes in directory and fire callback
  *
  * @csDir = Full directory path   * @csDir = Full directory path
  * @callback = Callback if raise event! nOp -1 delete, 0 change/move, 1 create   * @callback = Callback if raise event! nOp -1 delete, 0 change/move, 1 create
  * return: -1 error, !=-1 ok, number of total signaled events   * return: -1 error, !=-1 ok, number of total signaled events
Line 560  ioWatchDirLoop(const char *csDir, int (*callback)(cons Line 568  ioWatchDirLoop(const char *csDir, int (*callback)(cons
 }  }
   
 /*  /*
 * ioCreatePIDFile() Create PID file * ioCreatePIDFile() - Create PID file
  *
  * @csName = PID filename   * @csName = PID filename
  * @ifExists = !=0 if filename exists return error   * @ifExists = !=0 if filename exists return error
  * return: -1 error or 0 ok   * return: -1 error or 0 ok
Line 587  ioCreatePIDFile(const char *csName, int ifExists) Line 596  ioCreatePIDFile(const char *csName, int ifExists)
   
   
 /*  /*
 * ioSendFile() AITNET sendfile() userland implementation, not dependant from OS * ioSendFile() - AITNET sendfile() userland implementation, not dependant from OS
  *
  * @s = socket   * @s = socket
  * @csFile = file for send   * @csFile = file for send
  * @sendLen = bytes to send, if 0 send all data   * @sendLen = bytes to send, if 0 send all data
Line 653  ioSendFile(int s, const char *csFile, size_t sendLen,  Line 663  ioSendFile(int s, const char *csFile, size_t sendLen, 
 }  }
   
 /*  /*
 * ioRecvFile() Receive file from socket, fastest (zero-copy) way * ioRecvFile() - Receive file from socket, fastest (zero-copy) way
  *
  * @s = socket   * @s = socket
  * @csFile = file for receive   * @csFile = file for receive
  * @recvLen = receive bytes   * @recvLen = receive bytes
Line 687  ioRecvFile(int s, const char *csFile, size_t recvLen,  Line 698  ioRecvFile(int s, const char *csFile, size_t recvLen, 
                 unlink(csFile);                  unlink(csFile);
                 return 0;                  return 0;
         }          }
        if (lseek(fd, recvLen - 1, SEEK_SET) == -1) {        if (ftruncate(fd, recvLen) == -1) {
                LOGERR; 
                close(fd); 
                unlink(csFile); 
                return 0; 
        } 
        if (write(fd, "", 1) == -1) { 
                 LOGERR;                  LOGERR;
                 close(fd);                  close(fd);
                 unlink(csFile);                  unlink(csFile);

Removed from v.1.8  
changed lines
  Added in v.1.9.2.2


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