MCPcopy Create free account
hub / github.com/apache/httpd / getstr

Function getstr

modules/metadata/mod_mime_magic.c:1308–1414  ·  view source on GitHub ↗

* Convert a string containing C character escapes. Stop at an unescaped * space or tab. Copy the converted version to "p", returning its length in * *slen. Return updated scan pointer as function result. */

Source from the content-addressed store, hash-verified

1306 * *slen. Return updated scan pointer as function result.
1307 */
1308static char *getstr(server_rec *serv, register char *s, register char *p,
1309 int plen, int *slen)
1310{
1311 char *origs = s, *origp = p;
1312 char *pmax = p + plen - 1;
1313 register int c;
1314 register int val;
1315
1316 while ((c = *s++) != '\0') {
1317 if (apr_isspace(c))
1318 break;
1319 if (p >= pmax) {
1320 ap_log_error(APLOG_MARK, APLOG_ERR, 0, serv, APLOGNO(01526)
1321 MODNAME ": string too long: %s", origs);
1322 break;
1323 }
1324 if (c == '\\') {
1325 switch (c = *s++) {
1326
1327 case '\0':
1328 goto out;
1329
1330 default:
1331 *p++ = (char) c;
1332 break;
1333
1334 case 'n':
1335 *p++ = '\n';
1336 break;
1337
1338 case 'r':
1339 *p++ = '\r';
1340 break;
1341
1342 case 'b':
1343 *p++ = '\b';
1344 break;
1345
1346 case 't':
1347 *p++ = '\t';
1348 break;
1349
1350 case 'f':
1351 *p++ = '\f';
1352 break;
1353
1354 case 'v':
1355 *p++ = '\v';
1356 break;
1357
1358 /* \ and up to 3 octal digits */
1359 case '0':
1360 case '1':
1361 case '2':
1362 case '3':
1363 case '4':
1364 case '5':
1365 case '6':

Callers 1

getvalueFunction · 0.85

Calls 2

hextointFunction · 0.85
ap_log_errorFunction · 0.50

Tested by

no test coverage detected