ncdf4a13/ncgen/escapes.c File Reference

#include <stdlib.h>
#include <netcdf.h>
#include "generic.h"
#include "ncgen.h"
#include "genlib.h"

Include dependency graph for escapes.c:

Go to the source code of this file.

Functions

void expand_escapes (char *termstring, char *yytext, int yyleng)


Function Documentation

void expand_escapes char *  termstring,
char *  yytext,
int  yyleng
 

Definition at line 21 of file escapes.c.

00025 {
00026     char *s, *t, *endp;
00027     
00028     yytext[yyleng-1]='\0';      /* don't copy quotes */
00029     /* expand "\" escapes, e.g. "\t" to tab character  */
00030     s = termstring;
00031     t = yytext+1;
00032     while(*t) {
00033         if (*t == '\\') {
00034             t++;
00035             switch (*t) {
00036               case 'a':
00037                 *s++ = '\007'; t++; /* will use '\a' when STDC */
00038                 break;
00039               case 'b':
00040                 *s++ = '\b'; t++;
00041                 break;
00042               case 'f':
00043                 *s++ = '\f'; t++;
00044                 break;
00045               case 'n':
00046                 *s++ = '\n'; t++;
00047                 break;
00048               case 'r':
00049                 *s++ = '\r'; t++;
00050                 break;
00051               case 't':
00052                 *s++ = '\t'; t++;
00053                 break;
00054               case 'v':
00055                 *s++ = '\v'; t++;
00056                 break;
00057               case '\\':
00058                 *s++ = '\\'; t++;
00059                 break;
00060               case '?':
00061                 *s++ = '\177'; t++;
00062                 break;
00063               case '\'':
00064                 *s++ = '\''; t++;
00065                 break;
00066               case '\"':
00067                 *s++ = '\"'; t++;
00068                 break;
00069               case 'x':
00070                 t++; /* now t points to one or more hex digits */
00071                 *s++ = (char) strtol(t, &endp, 16);
00072                 t = endp;
00073                 break;
00074               case '0':
00075               case '1':
00076               case '2':
00077               case '3':
00078               case '4':
00079               case '5':
00080               case '6':
00081               case '7':
00082                 /* t now points to octal digits */
00083                 *s++ = (char) strtol(t, &endp, 8);
00084                 t = endp;
00085                 break;
00086               default:
00087                 *s++ = *t++;
00088                 break;
00089             }
00090         } else {
00091             *s++ = *t++;
00092         }
00093     }
00094     *s = '\0';
00095     return;
00096 }


Generated on Thu Mar 16 18:12:17 2006 for nco by  doxygen 1.4.4