xref: /csrg-svn/usr.bin/uucp/uuname/uuname.c (revision 13687)
1*13687Ssam #ifndef lint
2*13687Ssam static char sccsid[] = "@(#)uuname.c	5.1 (Berkeley) 07/02/83";
3*13687Ssam #endif
4*13687Ssam 
5*13687Ssam #include "uucp.h"
6*13687Ssam #include <signal.h>
7*13687Ssam 
8*13687Ssam /*******
9*13687Ssam  *      uuname  -  return list of all remote systems
10*13687Ssam  *		   recognized by uucp, or  (with -l) the local
11*13687Ssam  *		   uucp name.
12*13687Ssam  *
13*13687Ssam  *      return codes: 0 | 1  (can't read)
14*13687Ssam  */
15*13687Ssam 
16*13687Ssam main(argc,argv)
17*13687Ssam char *argv[];
18*13687Ssam int argc;
19*13687Ssam {
20*13687Ssam 	int i;
21*13687Ssam 	int intrEXIT();
22*13687Ssam 	FILE *np;
23*13687Ssam /* Increase buffers for s and prev.  cornell!pavel */
24*13687Ssam 	char prev[1000];
25*13687Ssam 	char s[1000];
26*13687Ssam 
27*13687Ssam 	chdir(Spool);
28*13687Ssam 	strcpy(Progname, "uuname");
29*13687Ssam 	signal(SIGILL, intrEXIT);
30*13687Ssam 	signal(SIGTRAP, intrEXIT);
31*13687Ssam 	signal(SIGIOT, intrEXIT);
32*13687Ssam 	signal(SIGEMT, intrEXIT);
33*13687Ssam 	signal(SIGFPE, intrEXIT);
34*13687Ssam 	signal(SIGBUS, intrEXIT);
35*13687Ssam 	signal(SIGSEGV, intrEXIT);
36*13687Ssam 	signal(SIGSYS, intrEXIT);
37*13687Ssam 	signal(SIGINT, intrEXIT);
38*13687Ssam 	signal(SIGHUP, intrEXIT);
39*13687Ssam 	signal(SIGQUIT, intrEXIT);
40*13687Ssam 	signal(SIGTERM, intrEXIT);
41*13687Ssam 
42*13687Ssam 	if(argv[1][0] == '-' && argv[1][1] == 'l') {
43*13687Ssam 		uucpname(s);
44*13687Ssam 		printf("%s\n",s);
45*13687Ssam 		exit(0);
46*13687Ssam 	}
47*13687Ssam         if(argc != 1) {printf("Usage: uuname [-l]\n"); exit(1);}
48*13687Ssam 	if((np = fopen(SYSFILE,"r")) == NULL) {
49*13687Ssam 		printf("%s (name file) protected\n",SYSFILE);
50*13687Ssam 		exit(1);
51*13687Ssam 	}
52*13687Ssam 	while ( cfgets(s,sizeof(s),np) != NULL ) {
53*13687Ssam 		for(i=0; s[i]!=' ' && s[i]!='\t'; i++)
54*13687Ssam 			;
55*13687Ssam 		s[i]='\0';
56*13687Ssam 		if (strcmp(s, prev) == SAME)
57*13687Ssam 			continue;
58*13687Ssam 		if(s[0]=='x' && s[1]=='x' && s[2]=='x')
59*13687Ssam 			continue;
60*13687Ssam 		printf("%s\n",s);
61*13687Ssam 		strcpy(prev, s);
62*13687Ssam 	}
63*13687Ssam 
64*13687Ssam 	exit(0);
65*13687Ssam }
66*13687Ssam intrEXIT(inter)
67*13687Ssam {
68*13687Ssam 	exit(inter);
69*13687Ssam }
70