1 /*
2 * Copyright (c) 1983, 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 sccsid[] = "@(#)getcom.c 8.1 (Berkeley) 05/31/93";
10 #endif /* not lint */
11
12 #include <stdio.h>
13 #include <ctype.h>
14
15 char *
getcom(buf,size,prompt,error)16 getcom(buf, size, prompt, error)
17 char *buf;
18 int size;
19 char *prompt, *error;
20 {
21 for (;;) {
22 fputs(prompt, stdout);
23 if (fgets(buf, size, stdin) == 0) {
24 clearerr(stdin);
25 continue;
26 }
27 while (isspace(*buf))
28 buf++;
29 if (*buf)
30 break;
31 if (error)
32 puts(error);
33 }
34 return (buf);
35 }
36
37
38 /*
39 * shifts to UPPERCASE if flag > 0, lowercase if flag < 0,
40 * and leaves it unchanged if flag = 0
41 */
42 char *
getword(buf1,buf2,flag)43 getword(buf1, buf2, flag)
44 register char *buf1, *buf2;
45 register flag;
46 {
47 while (isspace(*buf1))
48 buf1++;
49 if (*buf1 != ',') {
50 if (!*buf1) {
51 *buf2 = 0;
52 return (0);
53 }
54 while (*buf1 && !isspace(*buf1) && *buf1 != ',')
55 if (flag < 0)
56 if (isupper(*buf1))
57 *buf2++ = tolower(*buf1++);
58 else
59 *buf2++ = *buf1++;
60 else if (flag > 0)
61 if (islower(*buf1))
62 *buf2++ = toupper(*buf1++);
63 else
64 *buf2++ = *buf1++;
65 else
66 *buf2++ = *buf1++;
67 } else
68 *buf2++ = *buf1++;
69 *buf2 = 0;
70 while (isspace(*buf1))
71 buf1++;
72 return (*buf1 ? buf1 : 0);
73 }
74