;; Copyright (C) 1992, 1994 Free Software Foundation, Inc.
;; Author: Francesco Potorti` <pot@cnuce.cnr.it>
-;; Version: $Id: cmacexp.el,v 1.13 1994/04/21 18:40:14 rms Exp kwzh $
+;; Version: $Id: cmacexp.el,v 1.14 1994/05/03 22:17:03 kwzh Exp rms $
;; Adapted-By: ESR
;; Keywords: c
(defvar c-macro-preprocessor "/lib/cpp -C"
"The preprocessor used by the cmacexp package.
-If you change this, be sure to preserve the -C (don't strip comments)
+If you change this, be sure to preserve the `-C' (don't strip comments)
option, or to set an equivalent one.")
(defvar c-macro-cppflags ""
- "*Preprocessor flags used by c-macro-expand.")
+ "*Preprocessor flags used by `c-macro-expand'.")
(defconst c-macro-buffer-name "*Macroexpansion*")
(startlinenum 0)
(linenum 0)
(startstat ())
- (startmarker ""))
+ (startmarker "")
+ (tempname (make-temp-name "/tmp/")))
(unwind-protect
(save-excursion
(save-restriction
;; Call the preprocessor.
(if display (message mymsg))
- (call-process-region 1 (point-max) "sh" t t nil "-c"
- (concat cppcommand " 2>/dev/null"))
+ (setq exit-status
+ (call-process-region 1 (point-max) "sh" t t nil "-c"
+ (concat cppcommand " 2>" tempname)))
(if display (message (concat mymsg "done")))
-
;; Find and delete the mark of the start of the expansion.
;; Look for `# nn "file.c"' lines and delete them.
(goto-char (point-min))
(forward-line 1)
(delete-region beg (point))))
+ ;; If CPP got errors, show them at the beginning.
+ (or (eq exit-status 0)
+ (progn
+ (goto-char (point-min))
+ (insert (format "Preprocessor terminated with status %s\n"
+ exit-status))
+ (insert-file-contents tempname)
+ (insert "\n")))
+ (delete-file tempname)
+
;; Compute the return value, keeping in account the space
;; inserted at the end of the buffer.
(buffer-substring 1 (max 1 (- (point-max) 1))))