|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: static char sccsid[] = "@(#)getcom.c 5.2 (Berkeley) 6/19/88";
20: #endif /* not lint */
21:
22: #include <stdio.h>
23: #include <ctype.h>
24:
25: char *
26: getcom(buf, size, prompt, error)
27: char *buf;
28: int size;
29: char *prompt, *error;
30: {
31: for (;;) {
32: fputs(prompt, stdout);
33: if (fgets(buf, size, stdin) == 0) {
34: clearerr(stdin);
35: continue;
36: }
37: while (isspace(*buf))
38: buf++;
39: if (*buf)
40: break;
41: if (error)
42: puts(error);
43: }
44: return (buf);
45: }
46:
47:
48: /*
49: * shifts to UPPERCASE if flag > 0, lowercase if flag < 0,
50: * and leaves it unchanged if flag = 0
51: */
52: char *
53: getword(buf1, buf2, flag)
54: register char *buf1, *buf2;
55: register flag;
56: {
57: while (isspace(*buf1))
58: buf1++;
59: if (*buf1 != ',') {
60: if (!*buf1) {
61: *buf2 = 0;
62: return (0);
63: }
64: while (*buf1 && !isspace(*buf1) && *buf1 != ',')
65: if (flag < 0)
66: if (isupper(*buf1))
67: *buf2++ = tolower(*buf1++);
68: else
69: *buf2++ = *buf1++;
70: else if (flag > 0)
71: if (islower(*buf1))
72: *buf2++ = toupper(*buf1++);
73: else
74: *buf2++ = *buf1++;
75: else
76: *buf2++ = *buf1++;
77: } else
78: *buf2++ = *buf1++;
79: *buf2 = 0;
80: while (isspace(*buf1))
81: buf1++;
82: return (*buf1 ? buf1 : 0);
83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.