From: SourceForge.net <no...@so...> - 2005-01-26 04:42:41
|
Bugs item #1109601, was opened at 2005-01-25 21:27 Message generated for change (Comment added) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1109601&group_id=4933 Category: Lisp Core Group: None Status: Open Resolution: None Priority: 5 Submitted By: Robert Dodier (robert_dodier) Assigned to: Nobody/Anonymous (nobody) >Summary: batch sometimes returns nothing/ proposed fix Initial Comment: batch ("foo.mac") might return "/home/whatever/foo.mac" or it might return nothing (not even done or false), depending on the content of foo.mac. If the file ends with a comment, then batch returns the filename. Otherwise, batch returns nothing. From looking at the code it appears the intent is to return the path, but it's getting goofed up somehow -- looks like it has something to do with continue. Here are the relevant lines of code (circa lines 728--732 in src/mload.lisp): (with-open-file (in-stream filename) (format t "~%batching ~A" (truename in-stream)) (continue in-stream demo) (namestring in-stream))))) If this code is modified to print a message just before the final (namestring in-stream), the message is printed if the file ends with a comment and not otherwise. So it looks like continue is throwing or return-from-ing or something?? Haven't investigated continue, so that's just a speculation. Example: $ cat << EOF > foo.mac a: 1$ EOF $ cat << EOF > bar.mac a: 1$ /* FOOBAR */ EOF $ maxima (%i1) foo_return: batch ("foo.mac")$ batching /home/robert/maxima/sandbox/tmp/foo.mac (%i2) a : 1 (%i3) bar_return: batch ("bar.mac")$ batching /home/robert/maxima/sandbox/tmp/bar.mac (%i4) a : 1 (%i5) foo_return; (%o5) foo_return (%i6) bar_return; (%o6) bar.mac ---------------------------------------------------------------------- >Comment By: Robert Dodier (robert_dodier) Date: 2005-01-25 21:42 Message: Logged In: YES user_id=501686 continue is apparently throwing 'macsyma-quit when it gets to EOF and there is no comment there. (Why that doesn't happen if there is a comment at EOF, I don't know.) Catching 'macsyma-quit in $batch causes the final (namestring in-stream) to be evaluated, which is what we want, I think. I propose this patch -- substitute this line for 731 in src/mload.lisp -- (catch 'macsyma-quit (continue in-stream demo)) which at present is just (continue in-stream demo) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1109601&group_id=4933 |