|
|
1.1 root 1: #include <stdio.h>
2:
3: char *__modemcap;
4: char *MODEMCAP = "/etc/modemcap";
5:
6: static isent (ent, name)
7: char *ent;
8: char *name;
9: {
10: char buf[16];
11: register int i;
12:
13: while (*ent != ':' && *ent != 0) {
14: for (i = 0;*ent != ':' && *ent != '|' && *ent != 0 && i < 15;i++)
15: buf[i] = *ent++;
16:
17: if (*ent == '|')
18: ent++;
19:
20: buf[i] = 0;
21: if (strcmp (buf, name) == 0)
22: return (1);
23: }
24: return (0);
25: }
26:
27: mgetent (bp, name)
28: char *bp;
29: char *name;
30: {
31: static char buf[1024];
32: register char *cp;
33: register FILE *modemcap;
34: register int i;
35: char *getenv ();
36:
37: if ((cp = getenv ("MODEMCAP")) != NULL) {
38: if (*cp != '/') {
39: if (isent (cp, name)) {
40: strcpy (buf, cp);
41: return (1);
42: }
43: }
44: MODEMCAP = cp;
45: }
46: if ((modemcap = fopen (MODEMCAP, "r")) == NULL)
47: return (-1);
48:
49: while (fgets (buf, 512, modemcap) != NULL) {
50: if (buf[0] == '#') /* skip all comment lines*/
51: continue;
52:
53: i = strlen (buf) - 1; /* find last character in line*/
54: buf[i] = 0; /* remove trailing newline*/
55: if (i == 0) /* ignore blank lines */
56: continue;
57:
58: while (buf[(i = strlen (buf) - 1)] == '\\') { /* is last character a \\, still more*/
59: cp = &buf[i]; /* find last character */
60: cp[0] = 0; /* nullify, end of this part*/
61: if (fgets (cp, 512, modemcap) == NULL) /* end of file? ... */
62: break; /* ... end of entry */
63:
64: cp[strlen (cp) - 1] = 0;/* remove trailing newline*/
65: if (cp[0] == '#') { /* comment line? ... */
66: cp[0] = 0; /* remove that line */
67: continue; /* go get another line */
68: }
69: }
70: if (isent (buf, name)) {
71: __modemcap = bp;
72: strcpy (bp, buf);
73: fclose (modemcap);
74: return (1);
75: }
76: }
77: fclose (modemcap);
78: return (0);
79: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.