xref: /original-bsd/libexec/makekey/makekey.c (revision c3e32dec)
1 /*-
2  * Copyright (c) 1990, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char copyright[] =
10 "@(#) Copyright (c) 1990, 1993\n\
11 	The Regents of the University of California.  All rights reserved.\n";
12 #endif /* not lint */
13 
14 #ifndef lint
15 static char sccsid[] = "@(#)makekey.c	8.1 (Berkeley) 06/04/93";
16 #endif /* not lint */
17 
18 #include <sys/types.h>
19 
20 #include <err.h>
21 #include <errno.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 #include <unistd.h>
26 
27 static void get __P((char *, int));
28 
29 int
30 main()
31 {
32 	int len;
33 	char *r, key[9], salt[3];
34 
35 	get(key, sizeof(key) - 1);
36 	get(salt, sizeof(salt) - 1);
37 	len = strlen(r = crypt(key, salt));
38 	if (write(STDOUT_FILENO, r, len) != len)
39 		err(1, "stdout");
40 	exit(0);
41 }
42 
43 static void
44 get(bp, len)
45 	char *bp;
46 	register int len;
47 {
48 	register int nr;
49 
50 	bp[len] = '\0';
51 	if ((nr = read(STDIN_FILENO, bp, len)) == len)
52 		return;
53 	if (nr >= 0)
54 		errno = EFTYPE;
55 	err(1, "stdin");
56 }
57