|
|
1.1 ! root 1: ;;; cmu file package. ! 2: ;;; ! 3: (setq rcs-cmufile- ! 4: "$Header: /usr/lib/lisp/cmufile.l,v 1.1 83/01/29 18:34:10 jkf Exp $") ! 5: ! 6: (eval-when (compile eval) ! 7: (load 'cmumacs) ! 8: (load 'cmufncs) ! 9: ) ! 10: ! 11: (declare (special $cur$ dc-switch piport %indent dc-switch ! 12: vars body form var init label part incr limit ! 13: getdeftable $outport$ tlmacros f tmp)) ! 14: ! 15: (declare (nlambda msg)) ! 16: ! 17: (declare ! 18: (special %changes ! 19: def-comment ! 20: filelst ! 21: found ! 22: getdefchan ! 23: getdefprops ! 24: history ! 25: historylength ! 26: args ! 27: i ! 28: l ! 29: lasthelp ! 30: prop ! 31: special ! 32: special ! 33: tlbuffer ! 34: z)) ! 35: ! 36: (dv dc-switch dc-define) ! 37: ! 38: (dv %indent 0) ! 39: ! 40: (dv *digits ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")) ! 41: ! 42: (dv *letters (a b c d e f g h i j k l m n o p q r s t u v w x y z)) ! 43: ! 44: (def changes ! 45: (lambda nil ! 46: (changes1) ! 47: (for-each f ! 48: filelst ! 49: (cond ! 50: ((get f 'changes) ! 51: (terpri) ! 52: (princ f) ! 53: (tab 15) ! 54: (princ (get f 'changes))))) ! 55: (cond ! 56: (%changes (terpri) (princ '<no-file>) (tab 15) (princ %changes))) ! 57: nil)) ! 58: ! 59: (def changes1 ! 60: (lambda nil ! 61: (cond ((null %changes) nil) ! 62: (t ! 63: (prog (found prop) ! 64: (for-each f ! 65: filelst ! 66: (setq found ! 67: (cons (set-of fn ! 68: (cons (concat f 'fns) ! 69: (eval ! 70: (concat f ! 71: 'fns))) ! 72: (memq fn %changes)) ! 73: found)) ! 74: (setq prop (get f 'changes)) ! 75: (for-each fn ! 76: (car found) ! 77: (setq prop (insert fn prop nil t))) ! 78: (putprop f prop 'changes)) ! 79: (setq found (apply 'append found)) ! 80: (setq %changes (set-of fn %changes (not (memq fn found))))))))) ! 81: ! 82: (def dc ! 83: (nlambda (args) ! 84: (eval (cons dc-switch args] ! 85: ! 86: (def dc-define ! 87: (nlambda (args) ! 88: (msg "Enter comment followed by <esc>" (N 1)) ! 89: (drain piport) ! 90: (eval (cons 'dc-dskin args] ! 91: ! 92: (def dc-help ! 93: (nlambda (args) ! 94: (cond ! 95: ((eval (cons 'helpfilter (cons (car args) (caddr args)))) ! 96: (transprint getdefchan))))) ! 97: ! 98: (def dskin ! 99: (nlambda (files) ! 100: (mapc (function ! 101: (lambda (f) ! 102: (prog nil ! 103: (setq dc-switch 'dc-dskin) ! 104: (file f) ! 105: (load f) ! 106: (changes1) ! 107: (putprop f nil 'changes) ! 108: (setq dc-switch 'dc-define) ! 109: ))) ! 110: files] ! 111: ! 112: (*** ! 113: The new version of dskout (7/26/80) tries to keep backup versions It returns ! 114: the setof its arguments that were successfully written If it can not write ! 115: a file (typically because of protection restrictions) it offers to (try to) ! 116: write a copy to /tmp A file written to /tmp is not considered to have been ! 117: successfully written (and changes will not consider it to be up-to-date) ) ! 118: ! 119: (def dskout ! 120: (nlambda (files) ! 121: (changes1) ! 122: (set-of f ! 123: files ! 124: (prog (ffns p tmp) ! 125: (cond ((atom (errset (setq p (infile f)) nil)) ! 126: (msg "creating " f N D)) ! 127: (t (close p) ! 128: (cond ((zerop ! 129: (eval ! 130: (list 'exec ! 131: 'mv ! 132: f ! 133: (setq tmp ! 134: (concat f '|.back|))))) ! 135: (msg "old version moved to " ! 136: tmp N D)) ! 137: (t (msg ! 138: "Unable to back up " ! 139: f ! 140: " - continue? (y/n) " D) ! 141: (cond ((not (ttyesno)) (return nil))))))) ! 142: (cond ! 143: ((atom ! 144: (errset (apply (function pp) ! 145: (cons (list 'F f) ! 146: (cons (setq ffns ! 147: (concat f ! 148: 'fns)) ! 149: (eval ffns)))) ! 150: nil)) ! 151: (msg ! 152: "Unable to write " ! 153: f ! 154: " - try to put it on /tmp? (y/n) " D) ! 155: (cond ! 156: ((ttyesno) ! 157: (setq f (explode f)) ! 158: (while (memq '/ f) ! 159: (setq f (cdr (memq '/ f)))) ! 160: (setq f ! 161: (apply (function concat) ! 162: (cons '/tmp/ f))) ! 163: (cond ((atom ! 164: (errset ! 165: (apply (function pp) ! 166: (cons (list 'F f) ! 167: (cons ffns (eval ffns)))))) ! 168: (msg ! 169: "Unable to create " ! 170: f ! 171: " - I give up! " N D )) ! 172: (t (msg f " written " N D ))))) ! 173: (return nil))) ! 174: (putprop f nil 'changes) ! 175: (return t))))) ! 176: ! 177: (def dskouts ! 178: (lambda nil ! 179: (changes1) ! 180: (apply (function dskout) (set-of f filelst (get f 'changes))))) ! 181: ! 182: (def evl-trace ! 183: (nlambda (exp) ! 184: (prog (val) ! 185: (tab %indent) ! 186: (prinlev (car exp) 2) ! 187: ((lambda (%indent) (setq val (eval (car exp)))) (+ 2 %indent)) ! 188: (tab %indent) ! 189: (prinlev val 2) ! 190: (return val)))) ! 191: ! 192: ! 193: (def file ! 194: (lambda (name) ! 195: (setq filelst (insert name filelst nil t)) ! 196: (cond ! 197: ((not (boundp (concat name 'fns))) ! 198: (set (concat name 'fns) nil))) ! 199: name)) ! 200: ! 201: (def getdef ! 202: (nlambda (%%l) ! 203: (prog (x u getdefchan found) ! 204: (setq getdefchan (infile (car %%l))) ! 205: l (cond ((atom ! 206: (setq u ! 207: (errset ! 208: (prog (x y z) ! 209: (cond ! 210: ((eq (tyipeek getdefchan) -1) ! 211: (err 'EOF))) ! 212: (cond ! 213: ((memq (tyipeek getdefchan) ! 214: '(12 13)) ! 215: (tyi getdefchan))) ! 216: (return ! 217: (cond ! 218: ((memq (tyipeek getdefchan) ! 219: '(40 91)) ! 220: (tyi getdefchan) ! 221: (cond ! 222: ((and (symbolp ! 223: (setq y (ratom getdefchan))) ! 224: (cond (t (comment - what about ! 225: intern?) ! 226: (setq x y) ! 227: t) ! 228: ((neq y ! 229: (setq x ! 230: (intern y))) ! 231: t) ! 232: (t (remob1 x) nil)) ! 233: (assoc x getdeftable) ! 234: (or (setq z (ratom getdefchan)) ! 235: t) ! 236: (some (cdr %%l) ! 237: (function ! 238: (lambda (x) ! 239: (matchq x z))) ! 240: nil) ! 241: (cond ((symbolp z) ! 242: (setq y z) ! 243: t) ! 244: (t (setq y z) t)) ! 245: (cond ((memq y found)) ! 246: ((setq found ! 247: (cons y found)))) ! 248: (not ! 249: (cond ! 250: ((memq (tyipeek ! 251: getdefchan) ! 252: '(40 91)) ! 253: (print x) ! 254: (terpri) ! 255: (princ y) ! 256: (tyo 32) ! 257: (princ ! 258: '" -- bad format") ! 259: t)))) ! 260: (cons x ! 261: (cons y ! 262: (cond ((memq (tyipeek ! 263: getdefchan) ! 264: '(41 ! 265: 93)) ! 266: (tyi ! 267: getdefchan) ! 268: nil) ! 269: (t (untyi 40 ! 270: getdefchan) ! 271: (read ! 272: getdefchan)))))))))))))) ! 273: (close getdefchan) ! 274: (return found)) ! 275: (t (setq x (car u)) ! 276: (*** free u) ! 277: (setq u nil) ! 278: (cond ! 279: ((not (atom x)) ! 280: (apply (cdr (assoc (car x) getdeftable)) (ncons x)))))) ! 281: (cond ((not (eq (tyi getdefchan) 10)) (zap getdefchan))) ! 282: (go l)))) ! 283: ! 284: (def getdefact ! 285: (lambda (i p exp) ! 286: (prog nil ! 287: (cond ((or (null getdefprops) (memq p getdefprops)) ! 288: (terpri) ! 289: (print (eval exp)) ! 290: (princ '" ") ! 291: (prin1 p)) ! 292: (t (terpri) ! 293: (print i) ! 294: (princ '" ") ! 295: (prin1 p) ! 296: (princ '" ") ! 297: (princ 'bypassed)))))) ! 298: ! 299: (dv getdefprops (function value expr fexpr macro)) ! 300: ! 301: (dv getdeftable ! 302: ((defprop lambda (x) (getdefact (cadr x) (cadddr x) x)) ! 303: (dc lambda ! 304: (x) ! 305: (cond ! 306: ((or (null getdefprops) (memq 'comment getdefprops)) ! 307: (eval x)))) ! 308: (de lambda (x) (getdefact (cadr x) 'expr x)) ! 309: (df lambda (x) (getdefact (cadr x) 'fexpr x)) ! 310: (dm lambda (x) (getdefact (cadr x) 'macro x)) ! 311: (setq lambda (x) (getdefact (cadr x) 'value x)) ! 312: (dv lambda (x) (getdefact (cadr x) 'value x)) ! 313: (def lambda (x) (getdefact (cadr x) 'function x)))) ! 314: ! 315: (setq filelst nil) ;; initial values ! 316: (setq %changes nil)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.