Annotation of 43BSD/ucb/lisp/lisplib/cmufile.l, revision 1.1

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)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.