1: static char *rcsid =
   2:   "$Header: append.c,v 1.2 84/01/22 04:07:25 sklower Exp $";
   3: 
   4: /*
   5:  * append:  append a tail to a list of roots or prepend a head to a list
   6:  *	    of tails.
   7:  * use:
   8:  *	append tail root1 root2 ... rootn
   9:  * result:
  10:  *	root1tail root2tail ... rootntail
  11:  * or
  12:  * 	append -p root tail1 tail2 ... tailn
  13:  *  result:
  14:  *    	roottail1 roottail2 ... roottailn
  15:  *
  16:  * or
  17:  *	append -s xtail root1xoldt root2xoldt ...
  18:  *  result:
  19:  *	root1xtail  root2xtail ...
  20:  *   that is, each root is tested for the presence of 'x', the first character
  21:  *   in the tail.  If it is present, then all characters beyond it are thrown
  22:  *   away before merging.  This is useful for things like
  23:  *	append -s .c foo.o bar.o baz.o =>> foo.c bar.c baz.c
  24:  *
  25:  * Useful in Makefiles due to the lack of such facilities in make.
  26:  *
  27: */
  28: #include <stdio.h>
  29: #include "lconf.h"
  30: #include "config.h"
  31: #if os_unix_ts || os_masscomp
  32: #define rindex strrchr
  33: #endif
  34: 
  35: char buffer[2000];  /* nice and big */
  36: char *rindex();
  37: 
  38:  main(argc,argv)
  39:  char **argv;
  40:  {
  41:      int i, base;
  42:      int prepend = 0,
  43:          append = 0,
  44:      strip = 0;
  45:      char stripchar;
  46:      char *chp;
  47: 
  48:      if(argc <= 2)
  49:      {
  50:      fprintf(stderr,"use: append tail root1 root2 ... rootn\n");
  51:      exit(1);
  52:      }
  53:      if(argv[1][0] == '-')
  54:      {
  55:      switch(argv[1][1])
  56:      {
  57:          case 'p' : prepend = 1;
  58:                 break;
  59:          case 's' : strip = 1;
  60:                 append = 1;
  61:             stripchar = argv[2][0]; /* first char of tail */
  62:             break;
  63:          default:  fprintf(stderr,"append: illegal switch %s\n",argv[1]);
  64:                 exit(1);
  65:      }
  66:      base = 2;
  67:      }
  68:      else {
  69:      append = 1;
  70:      base = 1;
  71:      }
  72: 
  73:      for(i = base +1; i < argc ; i++)
  74:      {
  75:      if(append)
  76:      {
  77:         strcpy(buffer,argv[i]);
  78:         if(strip && (chp = rindex(buffer,stripchar)))
  79:         {
  80:         *chp = '\0';
  81:         }
  82:         strcat(buffer,argv[base]);
  83:      }
  84:      else {
  85:          strcpy(buffer,argv[base]);
  86:          strcat(buffer,argv[i]);
  87:      }
  88:      printf("%s ",buffer);
  89:      }
  90:      printf("\n");
  91:      exit(0);
  92:  }

Defined functions

main defined in line 38; never used

Defined variables

buffer defined in line 35; used 6 times
rcsid defined in line 1; never used

Defined macros

rindex defined in line 32; used 2 times
Last modified: 1985-08-14
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 761
Valid CSS Valid XHTML 1.0 Strict