[metapost] newer

Reinhard Kotucha reinhard.kotucha at web.de
Tue Nov 29 01:32:39 CET 2005


Hi,
because newer(1) sets

  int verbose = 1;

it complains when a target file is missing (which is quite normal,
usually).  This is a bit confusing, Lars Madsen reported that metapost
sais:

This is MetaPost, Version 0.901 (Web2C 7.5.5)
(test.mpnewer: target file `test.mpx' doesn't exist.
  [1] )
1 output file written: test.1
Transcript written on test.log.

This is indeed quite confusing.

The following patch fixes this problem.  Now it behaves like this:

* If no option is given, only missing input files are reported.  In
  most cases a missing input file is a bug and should be reported.
  Missing target files are ignored.

* The --verbose option also reports missing target files.  This option
  is useful to provide some diagnostic information to people debugging
  their own scripts.  It should only be used for debugging.

* The --quiet option seems to be useless since a missing input file
  always seems to be a bug.  But it might be useful in certain
  situations:

    if newer foo.tex bar.sty bar.cfg foo.dvi; then ...

  If bar.sty contains \InputIfFileExists{bar.cfg}... then a missing
  input file is not a bug and the --quiet option makes sense.


However, in most cases no option is required.

--verbose is ignored if --quiet is set.  It could be done vice versa,
but why does anybody want to set them both?

_________________________________________________________________

--- newer.c.orig        Wed Jun 22 01:11:25 2005
+++ newer.c     Mon Nov 28 23:55:15 2005
@@ -32,7 +32,8 @@
 #endif
 
 int i;
-int verbose = 1;
+int verbose = 0;
+int quiet = 0;
 int missing_source = 0;
 int missing_target = 0;
 int result = exit_false;
@@ -63,7 +64,7 @@
                    strcmp(argv[1], "-quiet") == 0 ||
                    strcmp(argv[1], "--quiet") == 0) {
 
-            verbose = 0;
+            quiet = 1;
             argv++;
             argc--;
 
@@ -75,10 +76,10 @@
   one of them is not older than `target'.\n\
   Also exit successfully if `target' doesn't exist.\n\
 \n\
---help      display this help and exit\n\
---quiet     do not print anything\n\
---verbose   list missing input files (default)\n\
---version   output version information and exit\n\n", stdout);
+--help      Display this help and exit\n\
+--quiet     Do not print anything\n\
+--verbose   List missing files, incuding missing target files\n\
+--version   Output version information and exit\n\n", stdout);
             fputs ("Email bug reports to metapost at tug.org.\n", stdout);
             exit(0);
 
@@ -108,7 +109,7 @@
     
     /* check the target file */
     if (stat(argv[argc-1], &target_stat) < 0) {
-        if (verbose) {
+        if (verbose && !quiet) {
             fprintf(stderr, "newer: target file `%s' doesn't exist.\n",
                     argv[argc-1]);
         }
@@ -118,7 +119,7 @@
     /* check the source files */
     for (i = 1; i < (argc-1); i++) {
         if (stat(argv[i], &source_stat) < 0) {
-           if (verbose) {
+           if (!quiet) {
                 fprintf (stderr, "newer: source file `%s' doesn't exist.\n", 
                          argv[i]);
             }
_________________________________________________________________

...and the manpage...

_________________________________________________________________

--- newer.1.orig        Mon Sep 12 21:23:35 2005
+++ newer.1     Mon Nov 28 23:56:15 2005
@@ -38,4 +38,4 @@
 .TP
 .B --verbose, -v
 .rb
-List missing source files.  This is the default.
+List missing files, including missing target files.

_________________________________________________________________

Regards,
  Reinhard

-- 
----------------------------------------------------------------------------
Reinhard Kotucha			              Phone: +49-511-4592165
Marschnerstr. 25
D-30167 Hannover	                      mailto:reinhard.kotucha at web.de
----------------------------------------------------------------------------
Microsoft isn't the answer. Microsoft is the question, and the answer is NO.
----------------------------------------------------------------------------




More information about the metapost mailing list