|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California, ! 3: * All rights reserved. Redistribution permitted subject to ! 4: * the terms of the Berkeley Software License Agreement. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: static char sccsid[] = "@(#)getcom.c 1.3 4/24/85"; ! 9: #endif ! 10: ! 11: #include <stdio.h> ! 12: #include <ctype.h> ! 13: ! 14: char * ! 15: getcom(buf, size, prompt, error) ! 16: char *buf; ! 17: int size; ! 18: char *prompt, *error; ! 19: { ! 20: for (;;) { ! 21: fputs(prompt, stdout); ! 22: if (fgets(buf, size, stdin) == 0) { ! 23: clearerr(stdin); ! 24: continue; ! 25: } ! 26: while (isspace(*buf)) ! 27: buf++; ! 28: if (*buf) ! 29: break; ! 30: if (error) ! 31: puts(error); ! 32: } ! 33: return (buf); ! 34: } ! 35: ! 36: ! 37: /* ! 38: * shifts to UPPERCASE if flag > 0, lowercase if flag < 0, ! 39: * and leaves it unchanged if flag = 0 ! 40: */ ! 41: char * ! 42: getword(buf1, buf2, flag) ! 43: register char *buf1, *buf2; ! 44: register flag; ! 45: { ! 46: while (isspace(*buf1)) ! 47: buf1++; ! 48: if (*buf1 != ',') { ! 49: if (!*buf1) { ! 50: *buf2 = 0; ! 51: return (0); ! 52: } ! 53: while (*buf1 && !isspace(*buf1) && *buf1 != ',') ! 54: if (flag < 0) ! 55: if (isupper(*buf1)) ! 56: *buf2++ = tolower(*buf1++); ! 57: else ! 58: *buf2++ = *buf1++; ! 59: else if (flag > 0) ! 60: if (islower(*buf1)) ! 61: *buf2++ = toupper(*buf1++); ! 62: else ! 63: *buf2++ = *buf1++; ! 64: else ! 65: *buf2++ = *buf1++; ! 66: } else ! 67: *buf2++ = *buf1++; ! 68: *buf2 = 0; ! 69: while (isspace(*buf1)) ! 70: buf1++; ! 71: return (*buf1 ? buf1 : 0); ! 72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.