--- libaitio/inc/aitio.h 2012/03/10 15:02:47 1.14.2.3 +++ libaitio/inc/aitio.h 2012/03/15 01:52:22 1.15 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.14.2.3 2012/03/10 15:02:47 misho Exp $ +* $Id: aitio.h,v 1.15 2012/03/15 01:52:22 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -115,13 +115,13 @@ typedef struct { #define AIT_TYPE(_vl) ((ait_type_t) (_vl)->val_type) #define AIT_LEN(_vl) (_vl)->val_len #define AIT_RAW(_vl) (_vl)->val.net +#define AIT_VOID(_vl) (_vl)->val.ptr #define AIT_BLOB_CHUNKS(_vl, _n) (assert((_vl)), AIT_LEN((_vl)) / _n + (AIT_LEN((_vl)) % _n) ? 1 : 0) #define AIT_ISEMPTY(_vl) (assert((_vl)), AIT_TYPE((_vl)) == empty) -#define AIT_GET_LIKE(_vl, _type) (assert((_vl)), (_type) (_vl)->val.net) +#define AIT_GET_LIKE(_vl, _type) (assert((_vl)), (_type) (_vl)->val.ptr) #define AIT_GET_PTR(_vl) (assert((_vl)), assert(AIT_TYPE((_vl)) == ptr), (_vl)->val.ptr) -#define AIT_GET_PTR2(_vl) (assert((_vl)), (_vl)->val.ptr) #define AIT_GET_BUF(_vl) (assert((_vl)), assert(AIT_TYPE((_vl)) == buffer), (_vl)->val.buffer) #define AIT_GET_STR(_vl) (assert((_vl)), assert(AIT_TYPE((_vl)) == string), (_vl)->val.string) #define AIT_GET_BLOB(_vl) (assert((_vl)), assert(AIT_TYPE((_vl)) == blob), (_vl)->val.blob) @@ -235,6 +235,9 @@ typedef union { } io_sockaddr_t; +#define io_align(x, a) (((x) + (a)) & ~(a)) + + // io_GetErrno() Get error code of last operation inline int io_GetErrno(); // io_GetError() Get error text of last operation @@ -439,6 +442,20 @@ inline unsigned char *io_Ch2Hex(unsigned char *psLine, * return: NULL nothing to do or error; !=0 Allocated new converted string(must be free) */ inline char *io_Hex2Ch(unsigned char *psLine, int lineLen); + +/* + * io_Path2File() - Parse and make path/filename pair + * + * @csArgs = Input argument line + * @psPath = Output Path, if ==NULL path not returned + * @pathLen = Size of path array + * @psFile = Output File + * @fileLen = Size of file array + * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items + */ +inline int +io_Path2File(const char * __restrict csArgs, char * __restrict psPath, + int pathLen, char * __restrict psFile, int fileLen); /* * io_arrayInit() - Create and initialize dynamic array