From 79ba927ea0d883d505f6f7aa5aed6f7fa902d19d Mon Sep 17 00:00:00 2001 From: james <> Date: Fri, 7 Mar 2008 14:13:40 +0000 Subject: *** empty log message *** --- apps/expand.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'apps/expand.c') diff --git a/apps/expand.c b/apps/expand.c index 2c07ca1..a0ce888 100644 --- a/apps/expand.c +++ b/apps/expand.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.2 2008/03/07 14:13:40 james + * *** empty log message *** + * * Revision 1.1 2008/03/07 13:56:39 james * *** empty log message *** * @@ -108,7 +111,7 @@ hex (const char **in) } char * -expand (const char *in) +expand (const char *in,int *len) { const char *iptr = in; int l; @@ -123,42 +126,53 @@ expand (const char *in) if (!ret) return ret; + + l=0; + while (*iptr) { if (*iptr == '\\') { - iptr++; + iptr++; switch (*iptr) { case '\'': case '\"': case '\?': case '\\': *(optr++) = *(iptr++); + l++; break; case 'a': *(optr++) = '\a'; + l++; iptr++; break; case 'b': *(optr++) = '\b'; + l++; iptr++; break; case 'f': *(optr++) = '\f'; + l++; iptr++; break; case 'n': *(optr++) = '\n'; + l++; iptr++; break; case 'r': *(optr++) = '\r'; + l++; iptr++; break; case 't': *(optr++) = '\t'; + l++; iptr++; break; case 'v': *(optr++) = '\v'; + l++; iptr++; break; case '0': @@ -170,19 +184,27 @@ expand (const char *in) case '6': case '7': *(optr++) = octal (&iptr); + l++; break; case 'x': *(optr++) = hex (&iptr); + l++; break; default: *(optr++) = '\\'; + l++; *(optr++) = *(iptr++); + l++; } } else { *(optr++) = *(iptr++); + l++; } } + if (*len) *len=l; + + *(optr++) = 0; return ret; } -- cgit v1.2.3