(FILECREATED "25-Jul-85 22:38:51" {ERIS}<LISP>INTERMEZZO>PATCHES>DORADODIRPATCH.;1 4310         changes to:  (VARS DORADODIRPATCHCOMS)		   (FNS \M44GENERATENEXT))(PRETTYCOMPRINT DORADODIRPATCHCOMS)(RPAQQ DORADODIRPATCHCOMS ((FNS \M44GENERATENEXT)))(DEFINEQ(\M44GENERATENEXT  [LAMBDA (DIRSTREAM SEARCHSTATE FILTER DESIREDVERSION HOSTPREFIX PATTERNLENGTH GENFILESTATE)                                                             (* edited: "25-Jul-85 22:37")          (* * Produces the next filename from directory DIRSTREAM satisfying SEARCHSTATE and the more constrained FILTER and 	  DESIREDVERSION, or returns NIL if no more files. HOSTPREFIX is string to put on front, or NIL for names only.	  PATTERNLENGTH is the length of the pattern in SEARCHSTATE. GENFILESTATE is a a M44GENFILESTATE whose GENSTREAM and 	  ENTRYSTART want to be set appropriately for \M44FILEINFOFN; if NIL, then the value is returned for SORTFILES in the 	  form (name version entrystart))    (PROG ((SAWDOT (MEMB (CHARCODE %.)			 (fetch CHARLIST of SEARCHSTATE)))	   ENTRYSTART TEMP PREFIXLEN TOTALLEN THISVERSION RESULT INDEX)      LP  (RETURN (COND		    ((SETQ TEMP (\SEARCHDIR1 DIRSTREAM SEARCHSTATE))		      (SETQ ENTRYSTART (IDIFFERENCE (GETFILEPTR DIRSTREAM)						    (IPLUS PATTERNLENGTH 13)))                                                             (* Read all the characters from the directory)		      (SETQ TOTALLEN (IPLUS PATTERNLENGTH (SUB1 TEMP)))		      (for I from (SUB1 TEMP) to 1 by -1			 do                                  (* The SUB1 is because the last character is the 							     undesired dot)			    (SELCHARQ (\BIN DIRSTREAM)				      [! (RETURN (SETQ THISVERSION (\M44READVERSION DIRSTREAM										    (SUB1 I]				      (%. (SETQ SAWDOT T))				      NIL)			 finally (SETQ THISVERSION 1))		      (COND			((AND DESIREDVERSION (NEQ THISVERSION DESIREDVERSION))                                                             (* Failure, try next)			  (GO LP)))		      [SETQ RESULT (ALLOCSTRING (IPLUS TOTALLEN (SETQ PREFIXLEN							 (COND							   (HOSTPREFIX (NCHARS HOSTPREFIX))							   (T 0)))						       (COND							 ((AND (EQ THISVERSION 1)							       HOSTPREFIX)							   2)							 (T 0))						       (COND							 (SAWDOT 0)							 (T 1]		      (AND HOSTPREFIX (RPLSTRING RESULT 1 HOSTPREFIX))		      (\SETFILEPTR DIRSTREAM (IPLUS ENTRYSTART 13))                                                             (* Now read the whole name)		      (SETQ INDEX PREFIXLEN)		      (for I from TOTALLEN to 1 by -1			 do (SELCHARQ (SETQ TEMP (\BIN DIRSTREAM))				      (%. (SETQ SAWDOT T))				      (! [OR SAWDOT (\RPLCHARCODE RESULT (add INDEX 1)								  (SETQ SAWDOT (CHARCODE %.]					 [COND					   (HOSTPREFIX (\RPLCHARCODE RESULT (add INDEX 1)								     (CHARCODE ;))						       (to (SUB1 I)							  do (\RPLCHARCODE RESULT (add INDEX 1)									   (COND									     (GENFILESTATE									       (\BIN DIRSTREAM))									     (T                                                              (* Make everything look like version 1 for benefit of 							     SORT. Will replace with real thing later)										(CHARCODE 1]					 (RETURN))				      NIL)			    (\RPLCHARCODE RESULT (add INDEX 1)					  TEMP))		      (OR SAWDOT (\RPLCHARCODE RESULT (add INDEX 1)					       (CHARCODE %.)))		      (COND			((AND (EQ THISVERSION 1)			      HOSTPREFIX)			  (RPLSTRING RESULT (ADD1 INDEX)				     ";1")))		      (COND			((AND FILTER (NOT (DIRECTORY.MATCH FILTER RESULT)))			  (GO LP)))		      (COND			(GENFILESTATE (replace ENTRYSTART of GENFILESTATE with ENTRYSTART)				      (replace DIRINFO of (fetch GENSTREAM of GENFILESTATE)					 with NIL)				      RESULT)			(T (LIST RESULT THISVERSION ENTRYSTART]))(DECLARE: DONTCOPY  (FILEMAP (NIL (267 4288 (\M44GENERATENEXT 277 . 4286)))))STOP