1: /*
   2:  * Copyright (c) 1980 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifndef lint
   8: static char sccsid[] = "@(#)string.c	5.1 (Berkeley) 6/5/85";
   9: #endif not lint
  10: 
  11: #include "whoami.h"
  12: #include "0.h"
  13: #ifndef PI01
  14: #ifndef PXP
  15: #include "send.h"
  16: #endif
  17: #endif
  18: 
  19: /*
  20:  * STRING SPACE DECLARATIONS
  21:  *
  22:  * Strng is the base of the current
  23:  * string space and strngp the
  24:  * base of the free area therein.
  25:  * Strp is the array of descriptors.
  26:  */
  27: #ifndef PI0
  28: STATIC  char strings[STRINC];
  29: STATIC  char *strng = strings;
  30: STATIC  char *strngp = strings;
  31: #else
  32: char    *strng, *strngp;
  33: #endif
  34: #ifndef PI01
  35: #ifndef PXP
  36: STATIC  char *strp[20];
  37: STATIC  char **stract strp;
  38: int strmax;
  39: #endif
  40: #endif
  41: 
  42: #ifndef PI01
  43: #ifndef PXP
  44: #ifndef PI0
  45: initstring()
  46: #else
  47: initstring(strings)
  48:     char *strings;
  49: #endif
  50: {
  51: 
  52:     *stract++ = strings;
  53: #ifdef PI0
  54:     strng = strngp = strings;
  55: #endif
  56:     strmax = STRINC * 2;
  57: }
  58: #endif
  59: #endif
  60: 
  61: /*
  62:  * Copy a string into the string area.
  63:  */
  64: char *
  65: savestr(cp)
  66:     register char *cp;
  67: {
  68:     register int i;
  69: 
  70:     i = strlen(cp) + 1;
  71:     if (strngp + i >= strng + STRINC) {
  72:         strngp = malloc(STRINC);
  73:         if (strngp == 0) {
  74:             yerror("Ran out of memory (string)");
  75:             pexit(DIED);
  76:         }
  77: #ifndef PI01
  78: #ifndef PXP
  79:         *stract++ = strngp;
  80:         strmax =+ STRINC;
  81: #endif
  82: #endif
  83:         strng = strngp;
  84:     }
  85:     (void) pstrcpy(strngp, cp);
  86:     cp = strngp;
  87:     strngp = cp + i;
  88: #ifdef PI0
  89:     send(RSTRING, cp);
  90: #endif
  91:     return (cp);
  92: }
  93: 
  94: #ifndef PI1
  95: #ifndef PXP
  96: char *
  97: esavestr(cp)
  98:     char *cp;
  99: {
 100: 
 101: #ifdef PI0
 102:     send(REVENIT);
 103: #endif
 104:     strngp = ( (char *) ( ( (int) (strngp + 1) ) &~ 1 ) );
 105:     return (savestr(cp));
 106: }
 107: #endif
 108: #endif
 109: 
 110: #ifndef PI01
 111: #ifndef PXP
 112: soffset(cp)
 113:     register char *cp;
 114: {
 115:     register char **sp;
 116:     register int i;
 117: 
 118:     if (cp == NIL || cp == OCT || cp == HEX)
 119:         return (-cp);
 120:     for (i = STRINC, sp = strp; sp < stract; sp++) {
 121:         if (cp >= *sp && cp < (*sp + STRINC))
 122:             return (i + (cp - *sp));
 123:         i =+ STRINC;
 124:     }
 125:     i = nlfund(cp);
 126:     if (i != 0)
 127:         return (i);
 128:     panic("soffset");
 129: }
 130: #ifdef PI1
 131: sreloc(i)
 132:     register int i;
 133: {
 134: 
 135:     if (i == 0 || i == -OCT || i == -HEX)
 136:         return (-i);
 137:     if (i < STRINC) {
 138:         if (i >= INL)
 139:             panic("sreloc INL");
 140:         i = nl[i].symbol;
 141:         if (i == 0)
 142:             panic("sreloc nl[i]");
 143:         return (i);
 144:     }
 145:     if (i > strmax || i < 0)
 146:         panic("sreloc");
 147:     return (strp[(i / STRINC) - 1] + (i % STRINC));
 148: }
 149: 
 150: evenit()
 151: {
 152: 
 153:     strngp = (strngp + 1) &~ 1;
 154: }
 155: #endif
 156: #endif
 157: #endif

Defined functions

evenit defined in line 150; never used
initstring defined in line 45; never used
soffset defined in line 112; never used
sreloc defined in line 131; never used

Defined variables

sccsid defined in line 8; never used
stract defined in line 37; used 3 times
strings defined in line 28; used 6 times
strmax defined in line 38; used 3 times
strng defined in line 32; used 3 times
strngp defined in line 32; used 13 times
strp defined in line 37; used 2 times
Last modified: 1985-06-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2660
Valid CSS Valid XHTML 1.0 Strict