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