/* Copyright (c) 1984 AT&T */ /* All Rights Reserved */ /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ #ident "$Revision: 1.4 $" /* strecpy(output, input, except) strccpy copys the input string to the output string expanding any non-graphic character with the C escape sequence. Esacpe sequences produced are those defined in "The C Programming Language" pages 180-181. Characters in the except string will not be expanded. */ #include #include #include char * strecpy( pout, pin, except ) register char *pout; register char *pin; char *except; { register unsigned c; register char *output; output = pout; while( c = *pin++ ) { if( !isprint( c ) && ( !except || !strchr( except, c ) ) ) { *pout++ = '\\'; switch( c ) { case '\n': *pout++ = 'n'; continue; case '\t': *pout++ = 't'; continue; case '\b': *pout++ = 'b'; continue; case '\r': *pout++ = 'r'; continue; case '\f': *pout++ = 'f'; continue; case '\v': *pout++ = 'v'; continue; case '\\': continue; default: sprintf( pout, "%.3o", c ); pout += 3; continue; } } if( c == '\\' && ( !except || !strchr( except, c ) ) ) *pout++ = '\\'; *pout++ = c; } *pout = '\0'; return output; }