#include <stdio.h>
#include "epicsTypes.h"
#include "libComAPI.h"
Go to the source code of this file.
|
LIBCOM_API int | epicsStrnRawFromEscaped (char *outbuf, size_t outsize, const char *inbuf, size_t inlen) |
|
LIBCOM_API int | epicsStrnEscapedFromRaw (char *outbuf, size_t outsize, const char *inbuf, size_t inlen) |
|
LIBCOM_API size_t | epicsStrnEscapedFromRawSize (const char *buf, size_t len) |
|
LIBCOM_API int | epicsStrCaseCmp (const char *s1, const char *s2) |
|
LIBCOM_API int | epicsStrnCaseCmp (const char *s1, const char *s2, size_t len) |
|
LIBCOM_API char * | epicsStrDup (const char *s) |
|
LIBCOM_API char * | epicsStrnDup (const char *s, size_t len) |
|
LIBCOM_API int | epicsStrPrintEscaped (FILE *fp, const char *s, size_t n) |
|
LIBCOM_API size_t | epicsStrnLen (const char *s, size_t maxlen) |
|
LIBCOM_API int | epicsStrGlobMatch (const char *str, const char *pattern) |
|
LIBCOM_API char * | epicsStrtok_r (char *s, const char *delim, char **lasts) |
|
LIBCOM_API unsigned int | epicsStrHash (const char *str, unsigned int seed) |
|
LIBCOM_API unsigned int | epicsMemHash (const char *str, size_t length, unsigned int seed) |
|
LIBCOM_API int | dbTranslateEscape (char *s, const char *ct) |
|
LIBCOM_API int dbTranslateEscape |
( |
char * |
s, |
|
|
const char * |
ct |
|
) |
| |
Definition at line 30 of file epicsString.c.
32 size_t big_enough = strlen(src) + 1;
int epicsStrnRawFromEscaped(char *dst, size_t dstlen, const char *src, size_t srclen)
LIBCOM_API unsigned int epicsMemHash |
( |
const char * |
str, |
|
|
size_t |
length, |
|
|
unsigned int |
seed |
|
) |
| |
Definition at line 369 of file epicsString.c.
371 unsigned int hash = seed;
374 hash ^= ~((hash << 11) ^ *str++ ^ (hash >> 5));
375 if (!length--)
break;
376 hash ^= (hash << 7) ^ *str++ ^ (hash >> 3);
LIBCOM_API int epicsStrCaseCmp |
( |
const char * |
s1, |
|
|
const char * |
s2 |
|
) |
| |
Definition at line 191 of file epicsString.c.
194 int ch1 = toupper((
int) *s1);
195 int ch2 = toupper((
int) *s2);
197 if (ch2 == 0)
return (ch1 != 0);
198 if (ch1 == 0)
return -1;
199 if (ch1 < ch2)
return -1;
200 if (ch1 > ch2)
return 1;
LIBCOM_API char* epicsStrDup |
( |
const char * |
s | ) |
|
Definition at line 233 of file epicsString.c.
LIBCOM_API void * mallocMustSucceed(size_t size, const char *msg)
A malloc() that never returns NULL.
LIBCOM_API int epicsStrGlobMatch |
( |
const char * |
str, |
|
|
const char * |
pattern |
|
) |
| |
Definition at line 279 of file epicsString.c.
283 while ((*
str) && (*pattern !=
'*')) {
284 if ((*pattern != *
str) && (*pattern !=
'?'))
290 if (*pattern ==
'*') {
296 else if ((*pattern == *
str) || (*pattern ==
'?')) {
305 while (*pattern ==
'*')
LIBCOM_API unsigned int epicsStrHash |
( |
const char * |
str, |
|
|
unsigned int |
seed |
|
) |
| |
Definition at line 356 of file epicsString.c.
358 unsigned int hash = seed;
361 while ((c = *
str++)) {
362 hash ^= ~((hash << 11) ^ c ^ (hash >> 5));
363 if (!(c = *
str++))
break;
364 hash ^= (hash << 7) ^ c ^ (hash >> 3);
LIBCOM_API int epicsStrnCaseCmp |
( |
const char * |
s1, |
|
|
const char * |
s2, |
|
|
size_t |
len |
|
) |
| |
Definition at line 206 of file epicsString.c.
211 int ch1 = toupper((
int) *s1);
212 int ch2 = toupper((
int) *s2);
214 if (ch2 == 0)
return (ch1 != 0);
215 if (ch1 == 0)
return -1;
216 if (ch1 < ch2)
return -1;
217 if (ch1 > ch2)
return 1;
LIBCOM_API char* epicsStrnDup |
( |
const char * |
s, |
|
|
size_t |
len |
|
) |
| |
Definition at line 224 of file epicsString.c.
228 strncpy(buf, s, len);
LIBCOM_API void * mallocMustSucceed(size_t size, const char *msg)
A malloc() that never returns NULL.
LIBCOM_API int epicsStrnEscapedFromRaw |
( |
char * |
outbuf, |
|
|
size_t |
outsize, |
|
|
const char * |
inbuf, |
|
|
size_t |
inlen |
|
) |
| |
Definition at line 129 of file epicsString.c.
140 #define OUT(chr) ndst++; if (--rem > 0) *dst++ = chr 143 case '\a':
OUT(
'\\');
OUT(
'a');
break;
144 case '\b':
OUT(
'\\');
OUT(
'b');
break;
145 case '\f':
OUT(
'\\');
OUT(
'f');
break;
146 case '\n':
OUT(
'\\');
OUT(
'n');
break;
147 case '\r':
OUT(
'\\');
OUT(
'r');
break;
148 case '\t':
OUT(
'\\');
OUT(
't');
break;
149 case '\v':
OUT(
'\\');
OUT(
'v');
break;
150 case '\\':
OUT(
'\\');
OUT(
'\\');
break;
151 case '\'':
OUT(
'\\');
OUT(
'\'');
break;
152 case '\"':
OUT(
'\\');
OUT(
'\"');
break;
154 if (isprint(c & 0xff)) {
159 OUT(
'0' + ((c & 0300) >> 6));
160 OUT(
'0' + ((c & 0070) >> 3));
161 OUT(
'0' + (c & 0007));
LIBCOM_API size_t epicsStrnEscapedFromRawSize |
( |
const char * |
buf, |
|
|
size_t |
len |
|
) |
| |
Definition at line 170 of file epicsString.c.
172 size_t ndst = srclen;
178 case '\a':
case '\b':
case '\f':
case '\n':
179 case '\r':
case '\t':
case '\v':
case '\\':
180 case '\'':
case '\"':
184 if (!isprint(c & 0xff))
LIBCOM_API size_t epicsStrnLen |
( |
const char * |
s, |
|
|
size_t |
maxlen |
|
) |
| |
LIBCOM_API int epicsStrnRawFromEscaped |
( |
char * |
outbuf, |
|
|
size_t |
outsize, |
|
|
const char * |
inbuf, |
|
|
size_t |
inlen |
|
) |
| |
Definition at line 37 of file epicsString.c.
45 #define OUT(chr) if (--rem > 0) ndst++, *dst++ = chr 55 if (!srclen-- || !(c = *src++))
break;
58 case 'a':
OUT(
'\a');
break;
59 case 'b':
OUT(
'\b');
break;
60 case 'f':
OUT(
'\f');
break;
61 case 'n':
OUT(
'\n');
break;
62 case 'r':
OUT(
'\r');
break;
63 case 't':
OUT(
'\t');
break;
64 case 'v':
OUT(
'\v');
break;
65 case '\\':
OUT(
'\\');
break;
66 case '\'':
OUT(
'\'');
break;
67 case '\"':
OUT(
'\"');
break;
69 case '0' :
case '1' :
case '2' :
case '3' :
70 case '4' :
case '5' :
case '6' :
case '7' :
72 unsigned int u = c -
'0';
74 if (!srclen-- || !(c = *src++)) {
77 if (c < '0' || c >
'7') {
80 u = u << 3 | (c -
'0');
82 if (!srclen-- || !(c = *src++)) {
85 if (c < '0' || c >
'7') {
88 u = u << 3 | (c -
'0');
101 if (!srclen-- || !(c = *src++ & 0xff))
104 while (isxdigit(c)) {
105 u = u << 4 | ((c >
'9') ? toupper(c) -
'A' + 10 : c -
'0');
109 if (!srclen-- || !(c = *src++ & 0xff)) {
LIBCOM_API int epicsStrPrintEscaped |
( |
FILE * |
fp, |
|
|
const char * |
s, |
|
|
size_t |
n |
|
) |
| |
Definition at line 238 of file epicsString.c.
246 case '\a': nout += fprintf(fp,
"\\a");
break;
247 case '\b': nout += fprintf(fp,
"\\b");
break;
248 case '\f': nout += fprintf(fp,
"\\f");
break;
249 case '\n': nout += fprintf(fp,
"\\n");
break;
250 case '\r': nout += fprintf(fp,
"\\r");
break;
251 case '\t': nout += fprintf(fp,
"\\t");
break;
252 case '\v': nout += fprintf(fp,
"\\v");
break;
253 case '\\': nout += fprintf(fp,
"\\\\");
break;
254 case '\'': nout += fprintf(fp,
"\\'");
break;
255 case '\"': nout += fprintf(fp,
"\\\"");
break;
257 if (isprint(0xff & (
int)c))
258 nout += fprintf(fp,
"%c", c);
260 nout += fprintf(fp,
"\\%03o", (
unsigned char)c);
LIBCOM_API char* epicsStrtok_r |
( |
char * |
s, |
|
|
const char * |
delim, |
|
|
char ** |
lasts |
|
) |
| |
Definition at line 310 of file epicsString.c.
316 if (s ==
NULL && (s = *lasts) ==
NULL)
324 for (spanp = delim; (sc = *spanp++) != 0;) {
343 if ((sc = *spanp++) == c) {