[m-rev.] for review: make `mmc --make' warn about truncated error logs

Peter Wang wangp at students.cs.mu.OZ.AU
Mon Dec 12 10:54:52 AEDT 2005


Estimated hours taken: 2
Branches: main

compiler/make.util.m:
	Make `mmc --make' print an informative message telling the user where
	to look for the full error message log if it is truncating the log on
	standard output because of the `--output-compile-error-lines' option.

Index: compiler/make.util.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/make.util.m,v
retrieving revision 1.26
diff -u -r1.26 make.util.m
--- compiler/make.util.m	28 Nov 2005 04:11:45 -0000	1.26
+++ compiler/make.util.m	11 Dec 2005 23:34:12 -0000
@@ -454,9 +454,8 @@
                 LinesToWrite, !IO),
             io__output_stream(CurrentOutputStream, !IO),
             io__input_stream_foldl2_io(TmpErrorInputStream,
-                write_error_char(ErrorFileOutputStream,
-                CurrentOutputStream, LinesToWrite),
-                0, TmpFileInputRes, !IO),
+                write_error_char(ErrorFileOutputStream, CurrentOutputStream),
+                LinesToWrite, TmpFileInputRes, !IO),
             (
                 TmpFileInputRes = ok(_)
             ;
@@ -492,18 +491,26 @@
     io__remove_file(TmpErrorFileName, _, !IO).
 
 :- pred write_error_char(io__output_stream::in, io__output_stream::in,
-    int::in, char::in, int::in, int::out, io::di, io::uo) is det.
+    char::in, int::in, int::out, io::di, io::uo) is det.
 
-write_error_char(FullOutputStream, PartialOutputStream, LineLimit,
-        Char, !Lines, !IO) :-
+write_error_char(FullOutputStream, PartialOutputStream, Char,
+        !LinesRemaining, !IO) :-
     io__write_char(FullOutputStream, Char, !IO),
-    ( !.Lines < LineLimit ->
-        io__write_char(PartialOutputStream, Char, !IO)
-    ;
-        true
-    ),
-    ( Char = '\n' ->
-        !:Lines = !.Lines + 1
+    ( !.LinesRemaining > 0 ->
+        io__write_char(PartialOutputStream, Char, !IO),
+        ( Char = '\n' ->
+            !:LinesRemaining = !.LinesRemaining - 1
+        ;
+            true
+        )
+    ; !.LinesRemaining = 0 ->
+        io.output_stream_name(FullOutputStream, FullOutputFileName, !IO),
+        io.write_string(PartialOutputStream, "... error log truncated, see `",
+            !IO),
+        io.write_string(PartialOutputStream, FullOutputFileName, !IO),
+        io.write_string(PartialOutputStream, "' for the rest.\n", !IO),
+        % Only write the above message once.
+        !:LinesRemaining = -1
     ;
         true
     ).
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list