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