xref: /csrg-svn/usr.bin/uucp/uuname/uuname.c (revision 17844)
113687Ssam #ifndef lint
2*17844Sralph static char sccsid[] = "@(#)uuname.c	5.2 (Berkeley) 01/22/85";
313687Ssam #endif
413687Ssam 
513687Ssam #include "uucp.h"
613687Ssam #include <signal.h>
713687Ssam 
813687Ssam /*******
913687Ssam  *      uuname  -  return list of all remote systems
1013687Ssam  *		   recognized by uucp, or  (with -l) the local
1113687Ssam  *		   uucp name.
1213687Ssam  *
1313687Ssam  *      return codes: 0 | 1  (can't read)
1413687Ssam  */
1513687Ssam 
1613687Ssam main(argc,argv)
1713687Ssam char *argv[];
1813687Ssam int argc;
1913687Ssam {
20*17844Sralph 	int ret;
2113687Ssam 	int i;
2213687Ssam 	int intrEXIT();
2313687Ssam 	FILE *np;
2413687Ssam /* Increase buffers for s and prev.  cornell!pavel */
2513687Ssam 	char prev[1000];
2613687Ssam 	char s[1000];
2713687Ssam 
28*17844Sralph 	ret = chdir(Spool);
29*17844Sralph 	ASSERT(ret >= 0, "CHDIR FAILED", Spool, ret);
3013687Ssam 	strcpy(Progname, "uuname");
3113687Ssam 	signal(SIGILL, intrEXIT);
3213687Ssam 	signal(SIGTRAP, intrEXIT);
3313687Ssam 	signal(SIGIOT, intrEXIT);
3413687Ssam 	signal(SIGEMT, intrEXIT);
3513687Ssam 	signal(SIGFPE, intrEXIT);
3613687Ssam 	signal(SIGBUS, intrEXIT);
3713687Ssam 	signal(SIGSEGV, intrEXIT);
3813687Ssam 	signal(SIGSYS, intrEXIT);
3913687Ssam 	signal(SIGINT, intrEXIT);
4013687Ssam 	signal(SIGHUP, intrEXIT);
4113687Ssam 	signal(SIGQUIT, intrEXIT);
4213687Ssam 	signal(SIGTERM, intrEXIT);
4313687Ssam 
44*17844Sralph 	if(argc > 1 && argv[1][0] == '-' && argv[1][1] == 'l') {
4513687Ssam 		uucpname(s);
4613687Ssam 		printf("%s\n",s);
4713687Ssam 		exit(0);
4813687Ssam 	}
4913687Ssam         if(argc != 1) {printf("Usage: uuname [-l]\n"); exit(1);}
5013687Ssam 	if((np = fopen(SYSFILE,"r")) == NULL) {
5113687Ssam 		printf("%s (name file) protected\n",SYSFILE);
5213687Ssam 		exit(1);
5313687Ssam 	}
5413687Ssam 	while ( cfgets(s,sizeof(s),np) != NULL ) {
5513687Ssam 		for(i=0; s[i]!=' ' && s[i]!='\t'; i++)
5613687Ssam 			;
5713687Ssam 		s[i]='\0';
5813687Ssam 		if (strcmp(s, prev) == SAME)
5913687Ssam 			continue;
6013687Ssam 		if(s[0]=='x' && s[1]=='x' && s[2]=='x')
6113687Ssam 			continue;
6213687Ssam 		printf("%s\n",s);
6313687Ssam 		strcpy(prev, s);
6413687Ssam 	}
6513687Ssam 
6613687Ssam 	exit(0);
6713687Ssam }
6813687Ssam intrEXIT(inter)
6913687Ssam {
7013687Ssam 	exit(inter);
7113687Ssam }
72*17844Sralph 
73*17844Sralph cleanup(code)
74*17844Sralph int code;
75*17844Sralph {
76*17844Sralph 	exit(code);
77*17844Sralph }
78