|
|
1.1 ! root 1: #ifndef lint ! 2: static char RCSid[] = "$Header: misc.c,v 2.0 85/11/21 07:21:41 jqj Exp $"; ! 3: #endif ! 4: ! 5: /* $Log: misc.c,v $ ! 6: * Revision 2.0 85/11/21 07:21:41 jqj ! 7: * 4.3BSD standard release ! 8: * ! 9: * Revision 1.3 85/03/11 16:39:50 jqj ! 10: * *** empty log message *** ! 11: * ! 12: * Revision 1.3 85/03/11 16:39:50 jqj ! 13: * Public alpha-test version, released 11 March 1985 ! 14: * ! 15: * Revision 1.2 85/02/21 11:05:34 jqj ! 16: * alpha test version ! 17: * ! 18: * Revision 1.1 85/02/15 13:55:34 jqj ! 19: * Initial revision ! 20: * ! 21: */ ! 22: ! 23: #include "compiler.h" ! 24: ! 25: /* ! 26: * String allocation. ! 27: */ ! 28: char * ! 29: copy(s) ! 30: char *s; ! 31: { ! 32: char *p; ! 33: extern char *malloc(); ! 34: ! 35: if ((p = malloc(strlen(s) + 1)) == NULL) { ! 36: error(FATAL, "out of string space"); ! 37: } ! 38: (void) strcpy(p, s); ! 39: return (p); ! 40: } ! 41: ! 42: ! 43: /* ! 44: * like atoi, convert a string to an integer. Accept ! 45: * 1/ numeric string, e.g. "34" ! 46: * 2/ hex string, e.g. "0x22" ! 47: * 3/ octal string, e.g. "042" ! 48: * Handles only positive integers. ! 49: */ ! 50: int ! 51: stringtocard(str) ! 52: char *str; ! 53: { ! 54: int val; ! 55: ! 56: if ( ! 57: sscanf(str, " -0x%x", &val) > 0 || ! 58: sscanf(str, " -0%o", &val) > 0) ! 59: return( -val); ! 60: if ( ! 61: sscanf(str, " 0x%x", &val) > 0 || ! 62: sscanf(str, " 0%o", &val) > 0 || ! 63: sscanf(str, " %d", &val) > 0 ! 64: ) ! 65: return(val); ! 66: return(0); ! 67: } ! 68: ! 69: ! 70: /* ! 71: * Lisp operations. ! 72: */ ! 73: list ! 74: cons(a, b) ! 75: list a, b; ! 76: { ! 77: list p; ! 78: ! 79: if ((p = New(struct cons)) == NIL) { ! 80: error(FATAL,"Out of list space."); ! 81: } ! 82: car(p) = a; ! 83: cdr(p) = b; ! 84: return (p); ! 85: } ! 86: ! 87: length(p) ! 88: list p; ! 89: { ! 90: int n; ! 91: ! 92: for (n = 0; p != NIL; p = cdr(p), n++) ! 93: ; ! 94: return (n); ! 95: } ! 96: ! 97: list ! 98: nconc(p, q) ! 99: list p, q; ! 100: { ! 101: list pp; ! 102: ! 103: pp = p; ! 104: if (p == NIL) ! 105: return (q); ! 106: while (cdr(p) != NIL) ! 107: p = cdr(p); ! 108: cdr(p) = q; ! 109: return (pp); ! 110: } ! 111:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.