home *** CD-ROM | disk | FTP | other *** search
- /************************************************************
-
- StringToC.c
- Last Modified: Friday, May 31, 1991 at 9:46 PM
-
- Convert a string to a C version of the string
-
- © Copyright Evatac Software 1988-1990
- All rights reserved
-
- ************************************************************/
-
- #include <PCMD.h>
-
- main(
- unsigned char *sourceText,
- long sourceLength,
- unsigned char *destText,
- long *destSpace,
- PCMDInfo *info
- )
- {
- #pragma unused(info)
- long i;
-
- if (sourceLength > *destSpace)
- return(kPCMDMoreSpace);
-
- i = sourceLength;
- while (i-- > 0) {
- if (*sourceText == '\n' || *sourceText == '\t' ||
- *sourceText == '\v' || *sourceText == '\b' ||
- *sourceText == '\r' || *sourceText == '\f' ||
- *sourceText == '\a' || *sourceText == '\\' ||
- *sourceText == '\"' || *sourceText == '\'') {
-
- sourceLength++;
- if (sourceLength > *destSpace)
- return(kPCMDMoreSpace);
-
- switch (*sourceText) {
-
- case '\n':
- *(destText++) = '\\'; *(destText++) = 'n'; break;
- case '\t':
- *(destText++) = '\\'; *(destText++) = 't'; break;
- case '\v':
- *(destText++) = '\\'; *(destText++) = 'v'; break;
- case '\b':
- *(destText++) = '\\'; *(destText++) = 'b'; break;
- case '\r':
- *(destText++) = '\\'; *(destText++) = 'r'; break;
- case '\f':
- *(destText++) = '\\'; *(destText++) = 'f'; break;
- case '\a':
- *(destText++) = '\\'; *(destText++) = 'a'; break;
- case '\\':
- *(destText++) = '\\'; *(destText++) = '\\'; break;
- case '\"':
- *(destText++) = '\\'; *(destText++) = '\"'; break;
- case '\'':
- *(destText++) = '\\'; *(destText++) = '\''; break;
- }
- sourceText++;
- }
- else
- *(destText++) = *(sourceText++);
- }
-
- *destSpace = sourceLength;
-
- return(kPCMDSuccess);
- }
-
-