home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / canada-remote-systems / cpower / cref.arc / CREF3.C < prev   
Text File  |  2019-04-13  |  2KB  |  135 lines

  1. /* ├╥┼╞3.├  (3 OF 3 SOURCE FILES) */
  2.  
  3. /* ESC() - ESCAPED CHARACTER PROCESSING
  4.  
  5.    ┴UTHOR: ╩EFF ╘AYLOR, ╘HE ╘OOLSMITH
  6.            (C) COPYRIGHT 1985
  7.    ┼NVIRONMENT: ╒╬╔╪ 4.2 ┬╙─;
  8.                 ├├ COMPILER
  9.    ╨ORTED TO ├ ╨OWER ├; ├64/├128,
  10.    ┬EN ╨EDERSEN 01 ╩ULY 1989
  11. */
  12.  
  13. #INCLUDE <STDIO.H>
  14.  
  15. #DEFINE ┼╙├┴╨┼ '\\'
  16. #DEFINE ┼╧╙    '\0'
  17.  
  18. CHAR REAL[] = █0X20,0X0C,0X0D,0X14▌;
  19. CHAR SYMB[] = "TFNB";
  20.  
  21. /* ESC - MAP STRING INTO ESCAPED
  22.    CHARACTER IF APPROPRIATE */
  23. CHAR ESC(S)
  24. CHAR **S;
  25.  UNSIGNED I;
  26.  
  27.  IF(**S == ┼╙├┴╨┼ && *(*S+1) != ┼╧╙) █
  28.   ++(*S);
  29.   FOR(I=0; I<SIZEOF(SYMB)-1; ++I) █
  30.    IF(SYMB[I] == **S)    
  31.     RETURN(REAL[I]);
  32.   ▌
  33.  ▌
  34.  RETURN(**S);
  35.  
  36. /* LEXCMP() - ALPHABETICAL COMPARISON
  37.  
  38.    ┴UTHOR: ╩EFF ╘AYLOR, ╘HE ╘OOLSMITH
  39.            (C) COPYRIGHT 1985
  40.    ┼NVIRONMENT: ╒╬╔╪ 4.2 ┬╙─;
  41.                 ├├ COMPILER
  42.    ╨ORTED TO ├ ╨OWER ├; ├64/├128,
  43.    ┬EN ╨EDERSEN 01 ╩ULY 1989
  44. */
  45.  
  46. #DEFINE LOWER(C)  (ISUPPER(C)?(C-128):(C))
  47.  
  48. /* LEXCMP - ALPHABETICAL COMPARISON,
  49.    SIMILAR TO STRCMP() */
  50. INT LEXCMP(AA,BB)
  51. CHAR *AA,*BB;
  52.  CHAR *A,*B;
  53.  
  54.  FOR(A=AA,B=BB; ;A++,B++) █
  55.   IF(LOWER(*A)!=LOWER(*B))   
  56.    RETURN(LOWER(*A)-LOWER(*B));  /* UNEQUAL */
  57.   IF(*A==┼╧╙) BREAK;
  58.  ▌
  59.  FOR(A=AA,B=BB; ;A++,B++) █
  60.   IF(*A!=*B)   
  61.    RETURN(*A-*B);  /* UNEQUAL */
  62.   IF(*A==┼╧╙) BREAK;
  63.  ▌ 
  64.  RETURN(0);  /* EQUAL */
  65. /* ╙TRING PACKAGE - UNSIGNED INSET();
  66.    CHAR *NEWCPY();
  67.  
  68.    ┴UTHOR: ╩EFF ╘AYLOR, ╘HE ╘OOLSMITH
  69.            (C) COPYRIGHT 1985
  70.    ┼NVIRONMENT: ╒╬╔╪ 4.2 ┬╙─;
  71.                 ├├ COMPILER
  72.    ╨ORTED TO ├ ╨OWER ├; ├64/├128,
  73.    ┬EN ╨EDERSEN 01 ╩ULY 1989
  74. */
  75.  
  76. /* CPYñUNTL - COPY FROM 'SRC' TO 'DST'
  77.    UNTIL 'DELIMITERS' */
  78. UNSIGNED CPYñUNTL(DST,SRC,DELIMITERS)
  79. CHAR *DST,*SRC;
  80. CHAR *DELIMITERS;
  81.  CHAR *D;
  82.  
  83.  WHILE(*SRC!=┼╧╙) █
  84.   FOR(D=DELIMITERS;*D!=┼╧╙;++D) █
  85.    IF(*SRC==*D) GOTO OUT;
  86.   ▌
  87.   *DST++=*SRC++;
  88.  ▌
  89. OUT: *DST=┼╧╙;
  90.  
  91. /* ITOA - INTEGER TO ┴╙├╔╔ */
  92. CHAR *ITOA(N,ASCII)
  93. INT N;
  94. CHAR *ASCII;
  95.  INT POWER;
  96.  
  97.  IF(N<0) █
  98.   N=-N;
  99.   *ASCII++='-';
  100.  ▌
  101.  POWER=1;
  102.  WHILE(N/POWER>=10)
  103.   POWER=POWER*10;
  104.  DO █
  105.   *ASCII++=(N/POWER)+'0';
  106.   N=N%POWER;
  107.   POWER=POWER/10;
  108.  ▌ WHILE(POWER!=0);
  109.  *ASCII=┼╧╙; 
  110.  RETURN(ASCII);
  111.  
  112. /* NEWCPY - COPY A STRING INTO NEWLY
  113.    ALLOCATED SPACE */
  114. CHAR *NEWCPY(STRING)
  115. CHAR *STRING;
  116.  CHAR *MALLOC(),*STRCPY(),*SPTR;
  117.  
  118.  /* INCLUDE TERMINATING ┼╧╙ */
  119.  IF((SPTR=MALLOC(STRLEN(STRING)+1)) == ╬╒╠╠) █
  120.   FPRINTF(STDOUT,"ABORTED:MEMORY ALLOCATION ERROR\N\N");
  121.   EXIT();
  122.  ▌
  123.  RETURN(STRCPY(SPTR,STRING));
  124.  
  125.