home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / Tools / Preditor 2.0 / Preditor Folder / PCMD Source / Think C / StringToC.c < prev   
Encoding:
C/C++ Source or Header  |  1991-06-04  |  1.7 KB  |  76 lines  |  [TEXT/TCEd]

  1. /************************************************************
  2.  
  3.     StringToC.c
  4.     Last Modified: Friday, May 31, 1991 at 9:46 PM
  5.     
  6.     Convert a string to a C version of the string
  7.  
  8.     © Copyright Evatac Software  1988-1990
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #include "PCMD.h"
  14.  
  15. main(
  16.     unsigned char        *sourceText,
  17.     long                sourceLength,
  18.     unsigned char        *destText,
  19.     long                *destSpace,
  20.     PCMDInfo            *info
  21.     )
  22. {
  23. #pragma unused(info)
  24.  
  25.     long        i;
  26.     
  27.     if (sourceLength > *destSpace)
  28.         return(kPCMDMoreSpace);
  29.         
  30.     i = sourceLength;
  31.     while (i-- > 0) {
  32.         if (*sourceText == '\n' || *sourceText == '\t' ||
  33.             *sourceText == '\v' || *sourceText == '\b' ||
  34.             *sourceText == '\r' || *sourceText == '\f' ||
  35.             *sourceText == '\a' || *sourceText == '\\' ||
  36.             *sourceText == '\"' || *sourceText == '\'') {
  37.             
  38.             sourceLength++;
  39.             if (sourceLength > *destSpace)
  40.                 return(kPCMDMoreSpace);
  41.             
  42.             switch (*sourceText) {
  43.         
  44.             case '\n':
  45.                 *(destText++) = '\\'; *(destText++) = 'n'; break;
  46.             case '\t':
  47.                 *(destText++) = '\\'; *(destText++) = 't'; break;
  48.             case '\v':
  49.                 *(destText++) = '\\'; *(destText++) = 'v'; break;
  50.             case '\b':
  51.                 *(destText++) = '\\'; *(destText++) = 'b'; break;
  52.             case '\r':
  53.                 *(destText++) = '\\'; *(destText++) = 'r'; break;
  54.             case '\f':
  55.                 *(destText++) = '\\'; *(destText++) = 'f'; break;
  56.             case '\a':
  57.                 *(destText++) = '\\'; *(destText++) = 'a'; break;
  58.             case '\\':
  59.                 *(destText++) = '\\'; *(destText++) = '\\'; break;
  60.             case '\"':
  61.                 *(destText++) = '\\'; *(destText++) = '\"'; break;
  62.             case '\'':
  63.                 *(destText++) = '\\'; *(destText++) = '\''; break;
  64.             }
  65.             sourceText++;
  66.         }
  67.         else
  68.             *(destText++) = *(sourceText++);
  69.     }
  70.     
  71.     *destSpace = sourceLength;
  72.     
  73.     return(kPCMDSuccess);
  74. }
  75.  
  76.