/* * AUTHOR * N. Nielsen * * VERSION * 2.1.2b * * LICENSE * This software is in the public domain. * * The software is provided "as is", without warranty of any kind, * express or implied, including but not limited to the warranties * of merchantability, fitness for a particular purpose, and * noninfringement. In no event shall the author(s) be liable for any * claim, damages, or other liability, whether in an action of * contract, tort, or otherwise, arising from, out of, or in connection * with the software or the use or other dealings in the software. * * SUPPORT * Send bug reports to: */ #ifndef __XSTRING_H__ #define __XSTRING_H__ #include /* Insert bytes at a memory location */ void memins(void* buff, size_t cbuff, const void* ins, size_t cins); /* Insert string into a string */ #define strins(buff, ins) \ memins((byte*)buff, strlen(buff) + 1, (byte*)ins, strlen(ins)) /* Replace a number of bytes with other bytes at a memory location */ void* memrep(void* buff, size_t len, size_t cold, const void* ins, size_t cnew); /* Replace a number of chars with a string */ #define strrep(s, cold, ins) \ (char*)memrep(s, sizeof(char) * (strlen(s) + 1), cold, ins, strlen(ins)) #define strnrep(s, cold, ins, cins) \ (char*)memrep(s, sizeof(char) * (strlen(s) + 1), cold, ins, cins) /* Reserve memory in a string. (NOTE: buff must be allocated with malloc) */ #define strrsrv(buff, cnt) \ (buff = (char*)realloc(buff, sizeof(char) * ((cnt) + 1))) /* Get the length of a null terminated string array */ size_t starlen(const char* array); /* Get the end of a null terminated string array */ char* starend(const char* array); /* Add a string to the end of a null terminated string array */ char* starnadd(char** parray, const char* str, size_t len); #define staradd(parray, str) \ starnadd(parray, str, strlen(str)) /* Get next value in a null terminated string array */ const char* starnext(const char* prev); /* Clear a null terminated string array */ #define starclr(arr) \ (arr[0] = arr[1] = 0) #endif //__XSTRING_H__