📄 gnsys.c
字号:
#include "uucp.h"#define LSIZE 30 /* number of systems to store */#define WSUFSIZE 6 /* work file name suffix size *//******* * gnsys(sname, dir, pre) * char *sname, *dir, pre; * * gnsys - this routine will return the next * system name which has work to be done. * "pre" is the prefix for work files. * "dir" is the directory to search. * "sname" is a string of size DIRSIZ - WSUFSIZE. * * return codes: * 0 - no more names * 1 - name returned in sname * FAIL - bad directory */gnsys(sname, dir, pre)char *sname, *dir, pre;{ char *s, *p1, *p2; char px[3]; static char *list[LSIZE]; static int nitem=0, n=0; char sysname[NAMESIZE], filename[NAMESIZE]; FILE *fp; px[0] = pre; px[1] = '.'; px[2] = '\0'; if (nitem == 0) { /* get list of systems with work */ int i; fp = fopen(dir, "r"); ASSERT(fp != NULL, "BAD DIRECTRY %s\n", dir); for (i = 0; i < LSIZE; i++) list[i] = NULL; while (gnamef(fp, filename) != 0) { if (!prefix(px, filename)) continue; p2 = filename + strlen(filename) - WSUFSIZE; p1 = filename + strlen(px); for(s = sysname; p1 <= p2; p1++) *s++ = *p1; *s = '\0'; if (sysname[0] == '\0') continue; if (callok(sysname) == 0) nitem = srchst(sysname, list, nitem); if (LSIZE <= nitem) break; } fclose(fp); } if (nitem == 0) return(0); if (nitem <= n ) { for (n = 0; n < nitem; n++) if (list[n] != NULL) free(list[n]); nitem = n = 0; return(0); } strcpy(sname, list[n++]); return(1);}/*** * srchst(name, list, n) * char *name, **list; * int n; * * srchst - this routine will do a linear search * of list (list) to find name (name). * If the name is not found, it is added to the * list. * The number of items in the list (n) is * returned (incremented if a name is added). * * return codes: * n - the number of items in the list */srchst(name, list, n)char *name, **list;int n;{ int i; char *p; extern char *calloc(); for (i = 0; i < n; i++) if (strcmp(name, list[i]) == 0) break; if (i >= n) { if ((p = calloc(strlen(name) + 1, sizeof (char))) == NULL) return(n); strcpy(p, name); list[n++] = p; } return(n);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -