]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Fix lpc prompt (Issue #5946)
authorMichael R Sweet <michael.r.sweet@gmail.com>
Mon, 30 Aug 2021 20:27:44 +0000 (16:27 -0400)
committerMichael R Sweet <michael.r.sweet@gmail.com>
Mon, 30 Aug 2021 20:27:44 +0000 (16:27 -0400)
CHANGES.md
berkeley/lpc.c

index cfaa55456c8391b91bee40361d56bcf46f814ada..0ad35520487f6c7ae9a603b5082de30e27f984f0 100644 (file)
@@ -83,6 +83,7 @@ Changes in CUPS v2.3.5
   directive in `cupsd.conf` (Issue #5733)
 - Fixed `@IF(name)` handling in `cupsd.conf` (Issue #5918)
 - The scheduler now supports the "everywhere" model directly (Issue #5919)
+- Fixed the `lpc` command prompt (Issue #5946)
 - Fixed `job-pages-per-set` value for duplex print jobs.
 
 
index 7ab43ea123528fcb4d90cccf1807bc7be3f30fcf..7af10354fc7c2a214215338892fa30f581950c13 100644 (file)
@@ -21,6 +21,7 @@
 static int     compare_strings(const char *, const char *, size_t);
 static void    do_command(http_t *, const char *, const char *);
 static void    show_help(const char *);
+static void    show_prompt(const char *message);
 static void    show_status(http_t *, const char *);
 
 
@@ -59,7 +60,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
     * Do the command prompt thing...
     */
 
-    _cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no-newline version */
+    show_prompt(_("lpc> "));
     while (fgets(line, sizeof(line), stdin) != NULL)
     {
      /*
@@ -87,7 +88,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
         * Nothing left, just show a prompt...
        */
 
-       _cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no newline version */
+        show_prompt(_("lpc> "));
        continue;
       }
 
@@ -123,7 +124,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
       * Put another prompt out to the user...
       */
 
-      _cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no newline version */
+      show_prompt(_("lpc> "));
     }
   }
 
@@ -200,6 +201,30 @@ show_help(const char *command)             /* I - Command to describe or NULL */
 }
 
 
+/*
+ * 'show_prompt()' - Show a localized prompt message.
+ */
+
+static void
+show_prompt(const char *message)       /* I - Message string to use */
+{
+  ssize_t      bytes;                  /* Number of bytes formatted */
+  char         output[8192];           /* Message buffer */
+  cups_lang_t  *lang = cupsLangDefault();
+                                       /* Default language */
+
+ /*
+  * Transcode to the destination charset and write the prompt...
+  */
+
+  if ((bytes = cupsUTF8ToCharset(output, (cups_utf8_t *)_cupsLangString(lang, message), sizeof(output), lang->encoding)) > 0)
+  {
+    fwrite(output, 1, (size_t)bytes, stdout);
+    fflush(stdout);
+  }
+}
+
+
 /*
  * 'show_status()' - Show printers.
  */