(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP") (FILECREATED "28-Oct-86 23:23:37" ("compiled on " {ERIS}LIBRARY>GIVE-AND-TAKE.;12) "21-Oct-86 04:13:01" "COMPILE-FILEd" in "Xerox Lisp 21-Oct-86 ..." dated "21-Oct-86 04:48:43") (FILECREATED "28-Oct-86 23:23:08" {ERIS}LIBRARY>GIVE-AND-TAKE.;12 15825 previous date%: "17-Sep-86 16:12:46" {ERIS}LIBRARY>GIVE-AND-TAKE.;11) (RPAQQ GIVE-AND-TAKECOMS ((FNS GIVE TAKE STEAL GIVE-OR-TAKE-FIND ADD-DEFAULT-REGISTRY) (FUNCTIONS GIVE-FILE TAKE-FILE TAKEN?) (INITVARS (*GIVE-AND-TAKE-DIRECTORIES* (QUOTE ({ERIS}SOURCES> {ERIS}LIBRARY>)))) (GLOBALVARS *GIVE-AND-TAKE-DIRECTORIES*) (LISPXMACROS GIVE? TAKEN?) (PROP FILETYPE GIVE-AND-TAKE) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA STEAL TAKE GIVE) (NLAML) (LAMA))))) GIVE D1 (P 2 FILE P 0 SCORE I 0 FILES) (i@ IµH£Iºh„IºI¹J ´°é¸°æ(31 GIVE-FILE 7 NLAMBDA.ARGS) NIL () TAKE D1 (P 2 FILE P 0 SCORE I 0 FILES) (i@ IµH£Iºh„IºI¹J ´°é¸°æ(31 TAKE-FILE 7 NLAMBDA.ARGS) NIL () STEAL D1 (P 2 FILE P 0 SCORE I 0 FILES) )i@ IµH£Iºh„IºI¹Ji ´°è¸°å(32 TAKE-FILE 7 NLAMBDA.ARGS) NIL () GIVE-OR-TAKE-FIND D1 (P 0 NAME I 0 FILENAME) @i` Hµ io@ h(22 FORMAT 7 FINDFILE) (4 *GIVE-AND-TAKE-DIRECTORIES*) ( 18 "~A does not exist and so cannot be taken or given.~%%") ADD-DEFAULT-REGISTRY D1 (I 0 NAME F 0 DEFAULTREGISTRY) o@ ¡P¡@@oP (21 CONCAT 7 STRPOS) NIL ( 17 "." 3 ".") GIVE-FILEA0001 D1 (NAME ERRORSET F 0 NAME) !gggkgP gho h(28 OPENSTREAM 17 PACKFILENAME.STRING) (20 INPUT 12 BODY 8 VERSION 5 STATUS 2 EXTENSION) ( 25 (DON'TCACHE)) GIVE-FILE D1 (L (0 FILENAME) P 0 NAME) _@ !H¡ho Yd «¿ioH h Z ²I ioH iioHJI I h(91 CLOSEF 87 FORMAT 83 CL:READ 70 FORMAT 61 DELFILE 58 CLOSEF 52 STRING-EQUAL 49 ADD-DEFAULT-REGISTRY 46 USERNAME 42 ADD-DEFAULT-REGISTRY 39 CL:READ 34 FORMAT 23 STREAMP 17 GIVE-FILEA0001 3 GIVE-OR-TAKE-FIND) NIL ( 77 "Sorry, but you can't give what you haven't taken.~%%~A was taken by ~A on ~A.~%%" 66 "~A is now unlocked.~%%" 30 "Sorry, but you can't give what you haven't taken.~%%~A has not been taken by anyone, including you.~%%" 14 (GIVE-FILEA0001)) (LET* ((A0097 (QUOTE GIVE-FILE)) (A0098 (QUOTE CL:FUNCTION)) (A0099 "Find the file named and look for a STATUS file associated with it. If found and this user wrote it, then remove it, thus unlocking the file." )) (PROGN (COND ((CL:FBOUNDP (QUOTE SET-DOCUMENTATION)) (SET-DOCUMENTATION A0097 A0098 A0099))) A0099) ) TAKE-FILEA0001A0002 D1 (L (1 GROSS-LIST-HACK 0 NAME)) GA³@io@ Ad³d ²¿AA ¹HIA •A ¿A´A h(66 DELFILE 54 CLOSEF? 48 STREAMP 37 FULLNAME 25 STREAMP 14 FORMAT) NIL ( 10 "Interrupted during processing of ~A. Take aborted.~%%") TAKE-FILEA0001A0003 D1 (NAME ERRORSET F 0 GROSS-LIST-HACK) gkgP gho h(23 OPENSTREAM 12 PACKFILENAME.STRING) (15 INPUT 6 BODY 2 VERSION) ( 20 (DON'TCACHE)) TAKE-FILEA0001A0004 D1 (NAME ERRORSET L (0 NIL) F 2 GROSS-LIST-HACK F 3 NAME) R R ioSHI h(24 FORMAT 9 CL:READ 4 CL:READ) NIL ( 17 "Sorry, but ~A was already taken by ~A on ~A.~%%") TAKE-FILEA0001 D1 (NAME ERRORSET P 1 NAME P 0 GROSS-LIST-HACK F 14 FILENAME F 15 RESETVARSLST F 16 STEAL F 17 RESETY) ShdihÑ W Y£h±;ggghgI ºgIHhhhWc¿H½Jgho ¼ML¿H_ ¾ON¿Hg k ²f _¿_¿HoOO ¿H ¿ioIOO ¿I _ÁÉg'²!IOÁÉg'_ «ioIO ¿i°xH ¿H ¿H_¿o _¿OO¿H ¦io°DW ²*ioIHg ¿H ¿H ¿W °o hðH ¿´ io ¿h»Hi¿Kc"i(322 FORMAT 311 CLOSEF 304 TAKE-FILEA0001A0004 295 TAKE-FILE 289 DELFILE 286 FULLNAME 280 CLOSEF 274 FORMAT 271 GETFILEINFO 245 STREAMP 230 TAKE-FILEA0001A0003 218 DELFILE 211 CLOSEF 202 FORMAT 190 STRING-EQUAL 160 ROOTFILENAME 155 FORMAT 140 CLOSEF 134 FORMAT 115 DATE 112 ADD-DEFAULT-REGISTRY 109 USERNAME 104 %%= 100 FILENAMEFIELD 84 FULLNAME 72 OPENSTREAM 38 PACKFILENAME.STRING 14 GIVE-OR-TAKE-FIND) (268 AUTHOR 182 FILEDATES 169 FILE 97 VERSION 64 OUTPUT 42 TAKE-FILEA0001A0002 33 BODY 29 VERSION 26 STATUS 23 EXTENSION) ( 319 "Bad situation: Only an illegal status file exists.~%%Try again in a moment or try to fix the problem.~%%" 301 (TAKE-FILEA0001A0004) 262 "Stealing ~A from ~A.~%%" 251 "Bad situation: Illegal versions of the status file exist.~&Try again in a moment or try to fix the problem.~%%" 227 (TAKE-FILEA0001A0003) 196 "Warning: File ~A is different from loaded file ~A~%%" 146 "~A is now locked by ~A at ~A.~%%" 127 "~S ~S~%%" 69 (DON'TCACHE)) TAKE-FILE D1 (P 1 RESETY P 0 LISPXHIST I 1 STEAL I 0 FILENAME F 3 LISPXHIST F 4 RESETVARSLST) "S!Tog ‘h‚gZ J“I(29 ERROR! 24 RESETRESTORE 14 TAKE-FILEA0001) (20 ERROR 11 INTERNAL) ( 8 (TAKE-FILEA0001)) (LET* ((A0100 (QUOTE TAKE-FILE)) (A0101 (QUOTE CL:FUNCTION)) (A0102 "Find the given file and open a status file to be associated with it. If the file we open turns out to be version 1, then we've got the lock and we write our name and the date into the file. Otherwise, somebody (possibly us!) has already got it and the lock cannot be obtained." )) (PROGN (COND ((CL:FBOUNDP (QUOTE SET-DOCUMENTATION)) (SET-DOCUMENTATION A0100 A0101 A0102))) A0102) ) TAKEN?A0001 D1 (NAME ERRORSET L (0 NIL) F 4 DIR F 5 AUTHOR F 6 RESETY F 7 GIVE?) ËgTgogo oo 1H Y¥hc iHg ºUžUJkhih` ²ÝK³i ¿oi ¿Ti ¿i ¿i»Ig i ¿lhi ¿Hg i ¿l(hi ¿Ji ¿W¦i ¿°‡hdohi gð¢±ÿtghghgI  ¿±ÿ](197 GIVE-FILE 194 PACKFILENAME.STRING 170 ASKUSER 155 TERPRI 147 PRIN1 141 TAB 133 PRIN1 129 \GENERATEFILEINFO 121 TAB 113 PRIN1 109 FILENAMEFIELD 99 TERPRI 94 PRIN1 88 PRIN1 79 TERPRI 70 STRPOS 54 \GENERATEFILEINFO 39 \GENERATENEXTFILE 32 \GENERATEFILES 21 PACKFILENAME.STRING) (189 BODY 185 VERSION 181 EXTENSION 173 Y 126 CREATIONDATE 106 NAME 66 UPPERCASEARRAY 51 AUTHOR 13 EXTENSION 6 NAME 2 DIRECTORY) ( 164 " Give? " 84 " " 29 (RESETLST) 25 (AUTHOR CREATIONDATE) 17 "STATUS" 10 "*") TAKEN? D1 (L (0 -args-) P 9 RESETY P 8 LISPXHIST P 7 DIR P 6 GIVE? P 3 AUTHOR F 11 LISPXHIST F 12 RESETVARSLST) × eHkJdIó²7¿h1Hk½¼MdLó²:¿h¾KµG»oK ²VKkoK kÙ °Dagð•JkØa°ÃJlÔZ°µagð•MkØa°ÀMlÔ]°²o ³Ko ¨Ko ‘h»oi ¿Kµoi ¿i `°.dW! Wog ‘h‚g_ ¿O“¿µÓh(204 ERROR! 197 RESETRESTORE 186 TAKEN?A0001 159 TERPRI 154 PRIN1 142 PRIN1 131 STRING-EQUAL 122 STRING-EQUAL 112 STRING-EQUAL 65 SUBSTRING 60 STRPOS 48 STRPOS 39 USERNAME) (192 ERROR 183 INTERNAL 162 *GIVE-AND-TAKE-DIRECTORIES* 90 :GIVE? 71 :BY) ( 180 (TAKEN?A0001) 150 "any" 138 "Looking for files taken by " 128 "*" 119 "ALL" 109 "ANY" 56 "." 44 ".") (RPAQ? *GIVE-AND-TAKE-DIRECTORIES* (QUOTE ({ERIS}SOURCES> {ERIS}LIBRARY>))) (ADDTOVAR LISPXMACROS (GIVE? (TAKEN? :GIVE? T)) (TAKEN? (APPLY (FUNCTION TAKEN?) LISPXLINE))) (PUTPROPS GIVE-AND-TAKE FILETYPE CL:COMPILE-FILE) (PUTPROPS GIVE-AND-TAKE COPYRIGHT ("Xerox Corporation" 1986)) NIL