home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / CPM68K / SNOBOL4.LBR / GENPRIM.CQ / GENPRIM.C
Text File  |  2000-06-30  |  2KB  |  79 lines

  1. /* -*-c,save-*- */
  2. /*
  3.  * genprim.c - general prims - replace and dupl
  4.  * Robert Heller. Created: Sun Mar 9, 1986 15:58:08.74
  5.  * Last Mod: 
  6.  * 
  7.  * (c) Copyright 1986 by Robert Heller
  8.  *     All Rights Reserved
  9.  * 
  10.  * 
  11.  */
  12.  
  13. #include <stdio.h>
  14.  
  15. dupl(instr,count,outbuff)
  16. register char *instr,*outbuff;
  17. register int count;
  18. {
  19.     register char *p;
  20.     register int len;
  21.  
  22.     p = outbuff; len = strlen(instr);
  23.     while (count-- > 0) {
  24.     strcpy(p,instr);
  25.     p += len;
  26.     }
  27.     }
  28. char *a_dupl(instr,count)
  29. register char *instr;
  30. register int count;
  31. {
  32.     char *malloc();
  33.     register int len;
  34.     register char *new;
  35.  
  36.     len = strlen(instr) * count;
  37.     new = malloc(len+1);
  38.     if (new == NULL) {
  39.     perror("dupl");
  40.     abort(0);
  41.     }
  42.     dupl(instr,count,new);
  43.     return(new);
  44.     }
  45. replace(input,olds,news,result)
  46. char *input,*olds,*news,*result;
  47. {
  48.     register int indx;
  49.     register char *p1,*p2,*p3;
  50.     char *index();
  51.  
  52.     p1 = input; p2 = result;
  53.     while (*p1 != '\0') {
  54.     p3 = index(olds,*p1);
  55.     if (p3 == NULL) {
  56.         fprintf(stderr,"replace: bad string: %s\n",input);
  57.         abort(*p1);
  58.         }
  59.     indx = (int) (p3 - olds);
  60.     *p2 = news[indx];
  61.     p1++; p2++;
  62.     }
  63.     *p2 = '\0';
  64.     }
  65. char *a_replace(input,olds,news)
  66. char *input,*olds,*news;
  67. {
  68.     char *malloc();
  69.     register char *result;
  70.  
  71.     result = malloc(strlen(input)+1);
  72.     if (result == NULL) {
  73.     perror("replace");
  74.     abort(0);
  75.     }
  76.     replace(input,olds,news,result);
  77.     return(result);
  78.     }
  79.