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
rcsid
defined in line
1;
never used
Defined macros