diff options
Diffstat (limited to 'contrib/sendmail/libsm/string.c')
| -rw-r--r-- | contrib/sendmail/libsm/string.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/contrib/sendmail/libsm/string.c b/contrib/sendmail/libsm/string.c new file mode 100644 index 000000000000..9820d93dfe95 --- /dev/null +++ b/contrib/sendmail/libsm/string.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2001 Proofpoint, Inc. and its suppliers. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set + * forth in the LICENSE file which can be found at the top level of + * the sendmail distribution. + * + */ + +#include <sm/gen.h> +SM_RCSID("@(#)$Id: string.c,v 1.4 2013-11-22 20:51:43 ca Exp $") + +#include <ctype.h> +#include <errno.h> + +#include <sm/string.h> + +/* +** STRIPQUOTES -- Strip quotes & quote bits from a string. +** +** Runs through a string and strips off unquoted quote +** characters and quote bits. This is done in place. +** +** Parameters: +** s -- the string to strip. +** +** Returns: +** none. +*/ + +void +stripquotes(s) + char *s; +{ + register char *p; + register char *q; + register char c; + + if (s == NULL) + return; + + p = q = s; + do + { + c = *p++; + if (c == '\\') + c = *p++; + else if (c == '"') + continue; + *q++ = c; + } while (c != '\0'); +} + +/* +** UNFOLDSTRIPQUOTES -- Strip quotes & quote bits from a string. +** +** Parameters: +** s -- the string to strip. +** +** Returns: +** none. +*/ + +void +unfoldstripquotes(s) + char *s; +{ + char *p, *q, c; + + if (s == NULL) + return; + + p = q = s; + do + { + c = *p++; + if (c == '\\' || c == '\n') + c = *p++; + else if (c == '"') + continue; + *q++ = c; + } while (c != '\0'); +} |
