1: #ifndef lint
   2: static char sccsid[] = "@(#)streams.c	2.3	10/12/84";
   3: #endif not lint
   4: #
   5: 
   6: # include "stdio.h"
   7: # include "streams.h"
   8: # include "ctype.h"
   9: 
  10: /*  getword(stream,p,ignore):
  11:         read next sequence of nonspaces on current line into *p.
  12:     null if no more words on current line.
  13:     %x (x in ignore) terminates line.
  14:     all words of the form %a are returned as null.
  15:     *p is a null terminated string (char p[maxstr]).
  16: */
  17: getword(stream,p,ignore)
  18: FILE *stream;
  19: char *p, *ignore;
  20: {   char c;
  21:     char *oldp, *stop;
  22: 
  23:     oldp= p;
  24:     stop= p+maxstr-1;
  25:     do{ c= getc(stream);
  26:     }   while (isspace(c) && c!='\n');
  27: 
  28:     while (!isspace(c))
  29:     {   *p= c;
  30:         if (p < stop)  p++;
  31:         c= getc(stream);
  32:     }
  33:     *p= NULL;
  34: 
  35:     if (oldp[0]=='%')
  36:     {   oldp[0]= NULL;
  37:         if (index(ignore, oldp[1]) != NULL)
  38:             while (c!='\n') c=getc(stream);
  39:     }
  40: }
  41: 
  42: 
  43: 
  44: /*  recsize(stream,start):
  45:     returns length of record beginning at start
  46:     (record ends at blank line or eof)
  47:     assumes and retains stream positioned at start
  48: */
  49: long int recsize(stream,start)
  50: FILE *stream;
  51: long int start;
  52: {   char c;                 /*  length = # of chars from start to beginning */
  53:     long int length;        /*  of current line.  c in current line.        */
  54:     int nonspaces;          /*  nonspaces = # of nonspaces in current line. */
  55: 
  56:     nonspaces= 0;
  57:     c= getc(stream);
  58:     length= 0L;
  59: 
  60:     while ( (c!='\n' || nonspaces!=0) && c!=EOF)
  61:     {   if      (c=='\n')
  62:         {   length= ftell(stream)-start;
  63:             nonspaces= 0;
  64:         }
  65:         else if (!isspace(c))    nonspaces++;
  66: 
  67:         c= getc(stream);
  68:     }
  69: 
  70:     pos(start);
  71:     return(length);
  72: }
  73: 
  74: 
  75: /*  nextrecord(stream,x): seeks in stream for first non-blank line
  76:         at or after char x in stream. seeks to eof if x is past last record.
  77:         x is the index of a character in the file (not eof).
  78:     returns position in stream.  (returns EOF, if seeks to EOF)
  79: */
  80: long int nextrecord(stream,x)
  81: FILE *stream;
  82: long int x;
  83: {   long int start;         /*  position of the beginning of the line  */
  84:     char c;                 /*      containing c                       */
  85: 
  86:     pos(x);
  87:     start= x;
  88:     /*  find start of first non-blank record        */
  89:         for(;;)
  90:         {   c= getc(stream);
  91:             if      (c=='\n')           start= ftell(stream);
  92:             else if (!isspace(c))       break;
  93:         }
  94: 
  95:     if (feof(stream))   { pos(start);  start= EOF;  }
  96:     else                pos(start);
  97:     return(start);
  98: }
  99: 
 100: /*  nextline(stream,x): seeks in stream after first newline at or after
 101:         char x in stream. seeks to eof if x is in last line.
 102:         x is the index of a character in the file (not eof).
 103:     returns position in stream
 104: */
 105: long int nextline(stream,x)
 106: FILE *stream;
 107: long int x;
 108: {   pos(x);
 109:     while (getc(stream)!='\n') ;
 110:     return(ftell(stream));
 111: }
 112: 
 113: 
 114: /*  printline(stream): copies stream up to a newline
 115: */
 116: printline(stream)
 117: FILE *stream;
 118: {   char c;
 119:     while ((c=getc(stream)) != '\n' && c!=EOF)  putchar(c);
 120:     putchar('\n');
 121: }
 122: 
 123: /*  getline(stream,p):  store in *p next chars in stream up to \n
 124:         advance stream past \n.
 125:     limit of  maxstr-1 chars may be stored at p.
 126: */
 127: getline(stream,p)
 128: FILE *stream;
 129: char *p;
 130: {   char *stop;
 131:     stop= p+maxstr-1;
 132:     while ( (*p= getc(stream)) != '\n' && *p!=EOF)
 133:         if (p<stop)    p++;
 134:     *p= NULL;
 135: }
 136: 
 137: /* replace string old at the head of subj by new */
 138: strreplace(subj, old, new)
 139:     char *subj, *old, *new;
 140: {
 141:     char buf[128];
 142:     int lg;
 143:     strcpy(buf, &subj[strlen(old)]);
 144:     strcpy(subj, new);
 145:     strcat(subj, buf);
 146: }

Defined functions

getline defined in line 127; used 6 times
getword defined in line 17; used 1 times
nextline defined in line 105; used 4 times
nextrecord defined in line 80; used 2 times
printline defined in line 116; never used
recsize defined in line 49; used 2 times

Defined variables

sccsid defined in line 2; never used
Last modified: 1984-10-13
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 705
Valid CSS Valid XHTML 1.0 Strict