Ready for testing
[enscript.git] / src / main.c
index 3e8fe09..9001051 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "gsint.h"
 #include "getopt.h"
+#include <locale.h>
+#include <limits.h>
 
 /*
  * Prototypes for static functions.
@@ -329,6 +331,7 @@ unsigned int lines_per_page = (unsigned int) -1;
  * Send mail notification to user after print job has been completed.
  */
 int mail = 0;
+char *mailto;
 
 /*
  * -M, --media
@@ -803,6 +806,7 @@ EncodingRegistry encodings[] =
   {{"88597", "greek", NULL},           ENC_ISO_8859_7,         '\n', 8},
   {{"88599", "latin5", NULL},          ENC_ISO_8859_9,         '\n', 8},
   {{"885910", "latin6", NULL},         ENC_ISO_8859_10,        '\n', 8},
+  {{"885915", "latin9", NULL},         ENC_ISO_8859_15,        '\n', 8},
   {{"ascii", NULL, NULL},              ENC_ASCII,              '\n', 8},
   {{"asciifise", "asciifi", "asciise"},        ENC_ASCII_FISE,         '\n', 8},
   {{"asciidkno", "asciidk", "asciino"},        ENC_ASCII_DKNO,         '\n', 8},
@@ -848,7 +852,7 @@ static struct option long_options[] =
   {"no-page-prefeed",          no_argument,            0, 'K'},
   {"lineprinter",              no_argument,            0, 'l'},
   {"lines-per-page",           required_argument,      0, 'L'},
-  {"mail",                     no_argument,            0, 'm'},
+  {"mail",                     optional_argument,      0, 'm'},
   {"media",                    required_argument,      0, 'M'},
   {"copies",                   required_argument,      0, 'n'},
   {"newline",                  required_argument,      0, 'N'},
@@ -956,6 +960,10 @@ main (int argc, char *argv[])
    */
 #if HAVE_LC_MESSAGES
   setlocale (LC_MESSAGES, "");
+#endif
+  setlocale (LC_CTYPE, "");
+#ifdef LC_PAPER
+  setlocale (LC_PAPER, "");
 #endif
 #endif
 #if ENABLE_NLS
@@ -1085,10 +1093,8 @@ _("This is probably an installation error.  Please, try to rebuild:")));
                  ERROR ((stderr, _("\tmake")));
                  ERROR ((stderr, _("\tmake check")));
                  ERROR ((stderr, _("\tmake install")));
-                 ERROR ((stderr,
-_("or set the environment variable `ENSCRIPT_LIBRARY' to point to your")));
-                 ERROR ((stderr,
-_("library directory.")));
+                 ERROR ((stderr, _("or set the environment variable `ENSCRIPT_LIBRARY'"
+                       " to point to your library directory.")));
                  exit (1);
                }
 
@@ -1463,7 +1469,8 @@ name             width\theight\tllx\tlly\turx\tury\n\
       buffer_append (&buffer, enscript_library);
       buffer_append (&buffer, "/hl/*.st");
 
-      system (buffer_ptr (&buffer));
+      if (system (buffer_ptr (&buffer)) < 0)
+       perror("system");
       exit (0);
     }
 
@@ -1756,8 +1763,15 @@ name             width\theight\tllx\tlly\turx\tury\n\
        real_total_pages = total_pages;
 
       /* We did something, tell what.  */
-      MESSAGE (0, (stderr, _("[ %d pages * %d copy ]"), real_total_pages,
-                  num_copies));
+      char message[80];
+      snprintf(message, sizeof message, "%s%s%s%s%s",
+              "[ ",
+              ngettext("%d page", "%d pages", real_total_pages),
+              " * ",
+              ngettext("%d copy", "%d copies", num_copies),
+              " ]");
+      MESSAGE (0, (stderr, message, real_total_pages, num_copies));
+
       if (output_file == OUTPUT_FILE_NONE)
        MESSAGE (0, (stderr, _(" sent to %s\n"),
                     printer ? printer : _("printer")));
@@ -1838,7 +1852,11 @@ open_output_file ()
       /* Format spooler options. */
       spooler_options[0] = '\0';
       if (mail)
-       strcat (spooler_options, "-m ");
+       {
+         strcat (spooler_options, "-m ");
+         strcat (spooler_options, mailto);
+         strcat (spooler_options, " ");
+       }
       if (no_job_header)
        {
          strcat (spooler_options, no_job_header_switch);
@@ -2001,7 +2019,7 @@ handle_options (int argc, char *argv[])
       int i;
 
       c = getopt_long (argc, argv,
-                      "#:123456789a:A:b:BcC::d:D:e::E::f:F:gGhH::i:I:jJ:kKlL:mM:n:N:o:Op:P:qrRs:S:t:T:u::U:vVw:W:X:zZ",
+                      "#:123456789a:A:b:BcC::d:D:e::E::f:F:gGhH::i:I:jJ:kKlL:m::M:n:N:o:Op:P:qrRs:S:t:T:u::U:vVw:W:X:zZ",
                       long_options, &option_index);
 
       if (c == -1)
@@ -2202,6 +2220,10 @@ handle_options (int argc, char *argv[])
 
        case 'm':               /* send mail upon completion */
          mail = 1;
+         if(optarg)
+           mailto = (optarg);
+         else
+           mailto = (*passwd).pw_name;
          break;
 
        case 'M':               /* select output media */