bug 581798



A fix for bug 581798:

*translation-msgs-files* (look at the function translate-file
in transs.lisp) is a list of streams, yet  tr-tell
(defined in transl.lisp) expects a non-list:

(DEFTRFUN TR-TELL (&REST X &AUX (TP T))
  (DO ((X X (CDR X)))
      ((NULL X))
      (COND ((ATOM (CAR X)) ;;; simple heuristic that seems to work.
          (COND ((OR TP (> (FLATC (CAR X)) 10.))
              (TERPRI *TRANSLATION-MSGS-FILES*)
              (SETQ TP NIL)))
          (PRINC (STRIPDOLLAR (CAR X)) *TRANSLATION-MSGS-FILES*))
         (T
          (MGRIND (CAR X) *TRANSLATION-MSGS-FILES*)))))

This bug becomes apparent when Maxima translates

-----  start of file -----------------
my_apply(f, x) := f(x);  /* a silly function */
-----  end of file -------------------

To fix it, I changed tr-tell to

(deftrfun tr-tell (&rest x &aux (tp t))
  (let ((y))
    (do ((x x (cdr x)))
     ((null x))
      (cond ((atom (car x)) ;;; simple heuristic that seems to work.
          (cond ((or tp (> (flatc (car x)) 10.))
              (mapcar #'terpri *translation-msgs-files*)
              (setq tp nil)))
          (setq y (stripdollar (car x)))
          (dolist (f *translation-msgs-files*)
            (princ y f)))
         (t
          (setq x (car x))
          (dolist (f *translation-msgs-files*)
            (mgrind x f)))))))


Also (related to bug 581769) to get translate_file
to  make ".lisp" and ".unlisp" files instead of ".LISP" and
".UNLISP" files, change the keyword :type (in the function
translate-file defined in transs.lisp) to lowercase.  Thus

(DEFUN TRANSLATE-FILE (IN-FILE-NAME OUT-FILE-NAME
.
.
.
   (setq translated-file (alter-pathname (or out-file-name in-file-name) :type "lisp"))
   (setq warn-file (alter-pathname in-file-name :type "unlisp"))

Maybe something similar will fix bug 581769.


Barton