Initial import, 0.1 + pk 0.2.4-B1
[unix-history] / usr.sbin / sendmail / praliases / praliases.c
CommitLineData
15637ed4
RG
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, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 * must display the following acknowledgement:
16 * This product includes software developed by the University of
17 * California, Berkeley and its contributors.
18 * 4. Neither the name of the University nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 */
34
35#ifndef lint
36char copyright[] =
37"@(#) Copyright (c) 1988 Regents of the University of California.\n\
38 All rights reserved.\n";
39#endif /* not lint */
40
41#ifndef lint
42static char sccsid[] = "@(#)praliases.c 5.5 (Berkeley) 6/1/90";
43#endif /* not lint */
44
45#include <sendmail.h>
46
47typedef struct {
48 char *dptr;
49 int dsize;
50} datum;
51
52
53main(argc, argv)
54 char **argv;
55{
56 extern char *optarg;
57 extern int optind;
58 static char *filename = "/usr/lib/aliases";
59 datum content, key, firstkey(), nextkey(), fetch();
60 int ch;
61
62 while ((ch = getopt(argc, argv, "f:")) != EOF)
63 switch((char)ch) {
64 case 'f':
65 filename = optarg;
66 break;
67 case '?':
68 default:
69 fputs("usage: praliases [-f file]\n", stderr);
70 exit(EX_USAGE);
71 }
72 argc -= optind;
73 argv += optind;
74
75 if (dbminit(filename) < 0)
76 exit(EX_OSFILE);
77 if (!argc)
78 for (key = firstkey(); key.dptr; key = nextkey(key)) {
79 content = fetch(key);
80 printf("%s:%s\n", key.dptr, content.dptr);
81 }
82 else for (; *argv; ++argv) {
83 key.dptr = *argv;
84 key.dsize = strlen(*argv) + 1;
85 content = fetch(key);
86 if (!content.dptr)
87 printf("%s: No such key\n", key.dptr);
88 else
89 printf("%s:%s\n", key.dptr, content.dptr);
90 }
91 exit(EX_OK);
92}