# 2.11BSD#431 - /usr/src/ucb/PORT/pascal/src/string.c

##### Functions

    esavestr          X
    evenit            X
    initstring        X
    savestr           X
    soffset           X
    sreloc            X

##### Variables

    stract            X
    strings           X
    strmax            X
    strng             X
    strngp            X
    strp              X

       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

esavestr defined in line 96; used 2 times

- in /usr/src/ucb/PORT/pascal/src/0.h line 716
- in /usr/src/ucb/PORT/pascal/src/yyid.c line 111

evenit defined in line 150; never used
initstring defined in line 45; never used
savestr defined in line 64; used 5 times

- in line 105
- in /usr/src/ucb/PORT/pascal/src/0.h line 715
- in /usr/src/ucb/PORT/pascal/src/const.c line 221
- in /usr/src/ucb/PORT/pascal/src/hash.c line 178
- in /usr/src/ucb/PORT/pascal/src/yyget.c line 237

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

- in line 52, 79, 120

strings defined in line 28; used 6 times

- in line 29-30(2), 47-54(4)

strmax defined in line 38; used 3 times

- in line 56, 80, 145

strng defined in line 32; used 3 times

- in line 54, 71, 83

strngp defined in line 32; used 13 times

- in line 54, 71-73(3), 79-87(5), 104(2), 153(2)

strp defined in line 37; used 2 times

- in line 120, 147

Last modified: 1985-06-05 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 887 |