|
version 1.9.30.1, 2023/03/14 22:33:43
|
version 1.12, 2026/07/27 21:11:07
|
|
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 - 2019 | Copyright 2004 - 2026 |
| 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 325 str_Dig2Hex2(u_char * __restrict digz, int diglen)
|
Line 325 str_Dig2Hex2(u_char * __restrict digz, int diglen)
|
| } |
} |
| |
|
| /* |
/* |
| |
* str_makeup() - Makeup the string, delete character or replace it |
| |
* |
| |
* @str = String for makeup |
| |
* @ch = Find character |
| |
* @replace = Replace found character with this one if it !=0 |
| |
* return: how many replaces are done or -1 error |
| |
*/ |
| |
int |
| |
str_makeup(char * __restrict str, char ch, char replace) |
| |
{ |
| |
int ret = 0; |
| |
char *p, *c; |
| |
|
| |
if (!str) |
| |
return -1; |
| |
|
| |
for (p = c = str; *c; c++) |
| |
if (*c != ch) |
| |
*p++ = *c; |
| |
else { |
| |
if (replace) |
| |
*p++ = replace; |
| |
ret++; |
| |
} |
| |
*p = 0; |
| |
|
| |
return ret; |
| |
} |
| |
|
| |
/* |
| * str_LTrim() - Remove left whitespaces from text string |
* str_LTrim() - Remove left whitespaces from text string |
| * |
* |
| * @psLine = Text string |
* @psLine = Text string |
|
Line 522 str_getString2(char * __restrict data, int dlen, char
|
Line 552 str_getString2(char * __restrict data, int dlen, char
|
| if (next) |
if (next) |
| *next = (char*) pos + 1; |
*next = (char*) pos + 1; |
| return pos - data; |
return pos - data; |
| |
} |
| |
|
| |
/* |
| |
* str_find2replace() - Search find string into data and replace |
| |
* |
| |
* @data = input string |
| |
* @find = search for string |
| |
* @replace = replace to string. If it is NULL then deletes found search string |
| |
* @str = new produced allocate string. If it is NULL then just return found occurances of find |
| |
* @mlen = allocated memory size for new string |
| |
* return: -1 error, 0 not found or >0 how many occurances we have for find string |
| |
*/ |
| |
int |
| |
str_find2replace(const char *data, const char *find, const char *replace, char **str, int *mlen) |
| |
{ |
| |
int cnt = 0, data_len, slen, find_len, replace_len = 0; |
| |
const char *pos, *s; |
| |
|
| |
if (!data || !find) |
| |
return -1; |
| |
|
| |
find_len = strlen(find); |
| |
data_len = strlen(data); |
| |
for (pos = data; (pos = strstr(pos, find)); pos += find_len, cnt++); |
| |
|
| |
/* just count occurances */ |
| |
if (!str || !mlen) |
| |
return cnt; |
| |
|
| |
slen = data_len - find_len * cnt; |
| |
if (replace) { |
| |
replace_len = strlen(replace); |
| |
slen += replace_len * cnt; |
| |
} |
| |
/* alloc exports string */ |
| |
*mlen = slen + 1; |
| |
*str = e_malloc(*mlen); |
| |
if (!*str) |
| |
return -1; |
| |
else |
| |
memset(*str, 0, *mlen); |
| |
|
| |
/* search & replace */ |
| |
for (pos = data; *pos;) { |
| |
s = strstr(pos, find); |
| |
if (s) |
| |
slen = s - pos; |
| |
else |
| |
slen = strlen(pos); |
| |
/* |
| |
* This hack was made due to behaviour of compiler against strncat(*str, pos, slen)! |
| |
*/ |
| |
memcpy(*str + strlen(*str), pos, slen); |
| |
if (s) { |
| |
if (replace) |
| |
strncat(*str, replace, replace_len); |
| |
pos += find_len; |
| |
} |
| |
pos += slen; |
| |
} |
| |
|
| |
return cnt; |
| } |
} |