1 LISP LIBRARY PACKAGES MANUAL 1 LISP LIBRARY PACKAGES MANUAL SAMEDIR 1 FILE UTILITIES 1 SAMEDIR 6 The SameDir package modifies MAKEFILE to guard against inadvertently writing out a file onto a directory other than the one it came from. If you do a MAKEFILE and you are connected to a directory other than one that occurs in one of the names on the FILEDATES property of the file, and the file has a FILEDATES property at all (i.e., this isn't a brand new file), the system will prompt you with: You haven't loaded or written TORTOISE in your connected directory {DSK}%should I write it out anyway ?'' Your options are one of the letters Y, N, C, or O: Yes do the MAKEFILE No abort the MAKEFILE Connect to other directory: allows you to type in another directory path Oops! Connect to directory Connect to the best guess.'' This option requires confirmation, in case you don't like what the system prompts you with. Default to the ASKUSER is Y (do the MAKEFILE). Parameters: MIGRATIONS [Variable] For those who regularly LOADFROM files on one directory and MAKEFILE elsewhere, there is the variable MIGRATIONS is ALIST of (olddir . newdir), which specifies which migrations are allowable.'' For example, if it is legitimate to LOADFROM a file on {MYHOST} and then do a MAKEFILE to {MYHOST}, then adding ({MYHOST} . {MYHOST}) to MIGRATIONS will prevent MAKEFILE from complaining about such movement. Implementation 1 SameDir adds the form (CHECKSAMEDIR) to MAKEFILEFORMS. It compares the (HOST&DIRECTORYFIELD OLDFILE) against (DIRECTORYNAME T T) to see whether the connected directory matches the old files source. Known problems 1 For Unix hosts using PUP FTP protocol, there is sometimes an inconsistency between the directory name in the full file name'' and the directory name in DIRECTORYNAME. SameDir may have troubles in that case detecting that the directories are the same.(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC ) STARTINGPAGE# 169) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC )) (270 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE NIL FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE NIL FOLIOINFO (ARABIC) STARTINGPAGE# NIL) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (270 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))))); PAGEHEADINGFOOTINGV< PAGEHEADING VERSOHEAD2,T1hh1,1 ,1,1,1,.. .< PAGEHEADING RECTOHEAD; PAGEHEADINGFOOTINGR(MODERN MODERN MODERNMODERN ?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))  HRULE.GETFNMODERN  HRULE.GETFNMODERN    HRULE.GETFNMODERN  HRULE.GETFNMODERN    HRULE.GETFNMODERN  U# 3J /   A HRULE.GETFNMODERN \c HRULE.GETFNMODERN Jz