|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Eric P. Allman
3: * Copyright (c) 1988 Regents of the University of California.
4: * All rights reserved.
5: *
6: * Redistribution and use in source and binary forms are permitted provided
7: * that: (1) source distributions retain this entire copyright notice and
8: * comment, and (2) distributions including binaries display the following
9: * acknowledgement: ``This product includes software developed by the
10: * University of California, Berkeley and its contributors'' in the
11: * documentation or other materials provided with the distribution and in
12: * all advertising materials mentioning features or use of this software.
13: * Neither the name of the University nor the names of its contributors may
14: * be used to endorse or promote products derived from this software without
15: * specific prior written permission.
16: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
17: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
18: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19: */
20:
21: #ifndef lint
22: char copyright[] =
23: "@(#) Copyright (c) 1988 Regents of the University of California.\n\
24: All rights reserved.\n";
25: #endif /* not lint */
26:
27: #ifndef lint
28: static char sccsid[] = "@(#)praliases.c 5.5 (Berkeley) 6/1/90";
29: #endif /* not lint */
30:
31: #include <sendmail.h>
32:
33: typedef struct {
34: char *dptr;
35: int dsize;
36: } datum;
37:
38:
39: main(argc, argv)
40: char **argv;
41: {
42: extern char *optarg;
43: extern int optind;
44: static char *filename = "/usr/lib/aliases";
45: datum content, key, firstkey(), nextkey(), fetch();
46: int ch;
47:
48: while ((ch = getopt(argc, argv, "f:")) != EOF)
49: switch((char)ch) {
50: case 'f':
51: filename = optarg;
52: break;
53: case '?':
54: default:
55: fputs("usage: praliases [-f file]\n", stderr);
56: exit(EX_USAGE);
57: }
58: argc -= optind;
59: argv += optind;
60:
61: if (dbminit(filename) < 0)
62: exit(EX_OSFILE);
63: if (!argc)
64: for (key = firstkey(); key.dptr; key = nextkey(key)) {
65: content = fetch(key);
66: printf("%s:%s\n", key.dptr, content.dptr);
67: }
68: else for (; *argv; ++argv) {
69: key.dptr = *argv;
70: key.dsize = strlen(*argv) + 1;
71: content = fetch(key);
72: if (!content.dptr)
73: printf("%s: No such key\n", key.dptr);
74: else
75: printf("%s:%s\n", key.dptr, content.dptr);
76: }
77: exit(EX_OK);
78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.