| 1 | greg | 3.1 | #ifndef lint | 
| 2 | greg | 3.11 | static const char       RCSid[] = "$Id: fputword.c,v 3.10 2020/11/13 01:06:14 greg Exp $"; | 
| 3 | greg | 3.1 | #endif | 
| 4 |  |  | /* | 
| 5 | greg | 3.9 | * Write word to stream, quoting as necessary | 
| 6 | greg | 3.1 | * | 
| 7 | greg | 3.4 | *  External symbols declared in rtio.h | 
| 8 | greg | 3.1 | */ | 
| 9 |  |  |  | 
| 10 | greg | 3.2 | #include "copyright.h" | 
| 11 | greg | 3.1 |  | 
| 12 |  |  | #include <ctype.h> | 
| 13 |  |  |  | 
| 14 | schorsch | 3.7 | #include "rtio.h" | 
| 15 | greg | 3.1 |  | 
| 16 |  |  | void | 
| 17 |  |  | fputword(s, fp)                 /* put (quoted) word to file stream */ | 
| 18 |  |  | char  *s; | 
| 19 |  |  | FILE  *fp; | 
| 20 |  |  | { | 
| 21 | greg | 3.3 | int             hasspace = 0; | 
| 22 |  |  | int             quote = 0; | 
| 23 | greg | 3.1 | register char   *cp; | 
| 24 |  |  | /* check if quoting needed */ | 
| 25 |  |  | for (cp = s; *cp; cp++) | 
| 26 | greg | 3.3 | if (isspace(*cp)) | 
| 27 |  |  | hasspace++; | 
| 28 | greg | 3.10 | else if ((cp > s) & (*cp == '"') && cp[1]) | 
| 29 | greg | 3.3 | quote = '\''; | 
| 30 | greg | 3.10 | else if ((cp > s) & (*cp == '\'') && cp[1]) | 
| 31 | greg | 3.3 | quote = '"'; | 
| 32 |  |  |  | 
| 33 | greg | 3.11 | if (!*s | hasspace | quote) {   /* output with quotes */ | 
| 34 | greg | 3.3 | if (!quote) quote = '"'; | 
| 35 |  |  | fputc(quote, fp); | 
| 36 |  |  | fputs(s, fp); | 
| 37 |  |  | fputc(quote, fp); | 
| 38 |  |  | } else                          /* output sans quotes */ | 
| 39 |  |  | fputs(s, fp); | 
| 40 | greg | 3.1 | } |