Fix printf and stp_eprintf, to avoid format string vulnerability. 
Upstream candidate.

--- gutenprint-5.3.4/src/main/print-raw.c	2021-04-26 14:22:53.949074993 +0000
+++ gutenprint-5.3.4/src/main/print-raw.c	2021-04-26 14:22:27.644115343 +0000
@@ -240,14 +240,14 @@ raw_print(const stp_vars_t *v, stp_image
 
   if (!stp_verify(nv))
     {
-      stp_eprintf(nv, _("Print options not verified; cannot print.\n"));
+      stp_eprintf(nv, "%s", _("Print options not verified; cannot print.\n"));
       stp_vars_destroy(nv);
       stp_image_conclude(image);
       return 0;
     }
   if (width != stp_image_width(image) || height != stp_image_height(image))
     {
-      stp_eprintf(nv, _("Image dimensions must match paper dimensions"));
+      stp_eprintf(nv, "%s", _("Image dimensions must match paper dimensions"));
       stp_vars_destroy(nv);
       stp_image_conclude(image);
       return 0;
--- gutenprint-5.3.4/src/main/printers.c	2021-04-26 14:24:19.082410879 +0000
+++ gutenprint-5.3.4/src/main/printers.c	2021-04-26 14:23:47.430596650 +0000
@@ -845,7 +845,7 @@ stp_verify_printer_params(stp_vars_t *v)
 	  stp_get_page_width(v) <= min_width || stp_get_page_width(v) > width)
 	{
 	  answer = 0;
-	  stp_eprintf(v, _("Page size is not valid\n"));
+	  stp_eprintf(v, "%s", _("Page size is not valid\n"));
 	}
       stp_dprintf(STP_DBG_PAPER, v,
 		  "page size max %f %f min %f %f actual %f %f\n",
@@ -878,13 +878,13 @@ stp_verify_printer_params(stp_vars_t *v)
   if (stp_get_height(v) <= 0)
     {
       answer = 0;
-      stp_eprintf(v, _("Height must be greater than zero\n"));
+      stp_eprintf(v, "%s", _("Height must be greater than zero\n"));
     }
 
   if (stp_get_width(v) <= 0)
     {
       answer = 0;
-      stp_eprintf(v, _("Width must be greater than zero\n"));
+      stp_eprintf(v, "%s", _("Width must be greater than zero\n"));
     }
 
   if (stp_get_left(v) + stp_get_width(v) > right)
--- gutenprint-5.3.4/src/main/print-dyesub.c	2021-04-26 14:30:07.153421180 +0000
+++ gutenprint-5.3.4/src/main/print-dyesub.c	2021-04-26 14:29:48.604151073 +0000
@@ -3960,7 +3960,7 @@ static int mitsu_p95d_parse_parameters(s
   if (stp_check_raw_parameter(v, "UserComment", STP_PARAMETER_ACTIVE)) {
     usercomment = stp_get_raw_parameter(v, "UserComment");
     if (usercomment->bytes > 34) {
-      stp_eprintf(v, _("StpUserComment must be between 0 and 34 bytes!\n"));
+      stp_eprintf(v, "%s", _("StpUserComment must be between 0 and 34 bytes!\n"));
       return 0;
     }
   }
@@ -3968,7 +3968,7 @@ static int mitsu_p95d_parse_parameters(s
   if (stp_check_raw_parameter(v, "UserLUT", STP_PARAMETER_ACTIVE)) {
     userlut = stp_get_raw_parameter(v, "UserLUT");
     if (usercomment->bytes != 34) {
-      stp_eprintf(v, _("StpUserLUT must be exactly 34 bytes!\n"));
+      stp_eprintf(v, "%s", _("StpUserLUT must be exactly 34 bytes!\n"));
       return 0;
     }
   }
@@ -4373,7 +4373,7 @@ static int mitsu_p93d_parse_parameters(s
   if (stp_check_raw_parameter(v, "UserComment", STP_PARAMETER_ACTIVE)) {
     usercomment = stp_get_raw_parameter(v, "UserComment");
     if (usercomment->bytes > 40) {
-      stp_eprintf(v, _("StpUserComment must be between 0 and 40 bytes!\n"));
+      stp_eprintf(v, "%s", _("StpUserComment must be between 0 and 40 bytes!\n"));
       return 0;
     }
   }
@@ -6638,7 +6638,7 @@ static int mitsu_cpm1_parse_parameters(s
   const char *quality = stp_get_string_parameter(v, "PrintSpeed");
 
   if (use_lut && matching) {
-	  stp_eprintf(v, _("Cannot use Internal Correction and Color Matching together!\n"));
+	  stp_eprintf(v, "%s", _("Cannot use Internal Correction and Color Matching together!\n"));
 	  return 0;
   } else if (use_lut && !matching) {
 	  matching = 0;
@@ -7882,7 +7882,7 @@ static int dnpds80_parse_parameters(stp_
   } else if (!strcmp(pagesize, "w576h842")) {
     multicut = 21;
   } else {
-    stp_eprintf(v, _("Illegal print size selected for roll media!\n"));
+    stp_eprintf(v, "%s", _("Illegal print size selected for roll media!\n"));
     return 0;
   }
 
@@ -7936,7 +7936,7 @@ static int dnpds80dx_parse_parameters(st
 
   if (!strcmp(media->name, "Roll")) {
     if (strcmp(duplex_mode, "None") && strcmp(duplex_mode, "Standard")) {
-      stp_eprintf(v, _("Duplex not supported on roll media, switching to sheet media!\n"));
+      stp_eprintf(v, "%s", _("Duplex not supported on roll media, switching to sheet media!\n"));
       stp_set_string_parameter(v, "MediaType", "Sheet");
     } else {
       /* If we're not using duplex and roll media, this is
@@ -7970,7 +7970,7 @@ static int dnpds80dx_parse_parameters(st
   } else if (!strcmp(pagesize, "w576h864-div3sheet")) {
     multicut = 28;
   } else {
-    stp_eprintf(v, _("Illegal print size selected for sheet media!\n"));
+    stp_eprintf(v, "%s", _("Illegal print size selected for sheet media!\n"));
     return 0;
   }
 
@@ -9633,7 +9633,7 @@ static int magicard_parse_parameters(stp
   /* If overcoat is off, we can't use holokote or holopatch */
   if (lpar && strcmp("On", lpar)) {
     if ((holokote && strcmp(holokote, "Off")) || holopatch || overcoat_hole || holokote_custom) {
-      stp_eprintf(v, _("Holokote, Holopatch, and Overcoat hole features require Overcoat to be enabled!\n"));
+      stp_eprintf(v, "%s", _("Holokote, Holopatch, and Overcoat hole features require Overcoat to be enabled!\n"));
       return 0;
     }
   }
@@ -9642,21 +9642,21 @@ static int magicard_parse_parameters(stp
   if (stp_check_raw_parameter(v, "MagStripe1", STP_PARAMETER_ACTIVE)) {
     magstripe1 = stp_get_raw_parameter(v, "MagStripe1");
     if (magstripe1->bytes >= 79) {
-      stp_eprintf(v, _("StpMagStripe1 must be between 0 and 78 bytes!\n"));
+      stp_eprintf(v, "%s", _("StpMagStripe1 must be between 0 and 78 bytes!\n"));
       return 0;
     }
   }
   if (stp_check_raw_parameter(v, "MagStripe2", STP_PARAMETER_ACTIVE)) {
     magstripe2 = stp_get_raw_parameter(v, "MagStripe2");
     if (magstripe2->bytes >= 40) {
-      stp_eprintf(v, _("StpMagStripe2 must be between 0 and 39 bytes!\n"));
+      stp_eprintf(v, "%s", _("StpMagStripe2 must be between 0 and 39 bytes!\n"));
       return 0;
     }
   }
   if (stp_check_raw_parameter(v, "MagStripe3", STP_PARAMETER_ACTIVE)) {
     magstripe1 = stp_get_raw_parameter(v, "MagStripe3");
     if (magstripe1->bytes >= 107) {
-      stp_eprintf(v, _("StpMagStripe3 must be between 0 and 106 bytes!\n"));
+      stp_eprintf(v, "%s", _("StpMagStripe3 must be between 0 and 106 bytes!\n"));
       return 0;
     }
   }
@@ -9703,16 +9703,16 @@ static int magicard_parse_parameters(stp
     for (i = 0 ; i < magstripe1->bytes ; i++) {
       if (pd->privdata.magicard.mag1[i] < 0x20 ||
 	  pd->privdata.magicard.mag1[i] > 0x5f) {
-	stp_eprintf(v, _("Illegal Alphanumeric in Magstripe, 0x20->0x5F ASCII only\n"));
+	stp_eprintf(v, "%s", _("Illegal Alphanumeric in Magstripe, 0x20->0x5F ASCII only\n"));
 	return 0;
       }
     }
     if (pd->privdata.magicard.mag1[0] != '%') {
-      stp_eprintf(v, _("Magstripe alphanumeric data must start with '%%'\n"));
+      stp_eprintf(v, "%s", _("Magstripe alphanumeric data must start with '%%'\n"));
       return 0;
     }
     if (pd->privdata.magicard.mag1[magstripe1->bytes - 1] != '?') {
-      stp_eprintf(v, _("Magstripe string must end with '?'\n"));
+      stp_eprintf(v, "%s", _("Magstripe string must end with '?'\n"));
       return 0;
     }
   }
@@ -9723,16 +9723,16 @@ static int magicard_parse_parameters(stp
     for (i = 0 ; i < magstripe2->bytes ; i++) {
       if (pd->privdata.magicard.mag2[i] < 0x30 ||
 	  pd->privdata.magicard.mag2[i] > 0x3f) {
-	stp_eprintf(v, _("Illegal Numeric in Magstripe, 0x30->0x3F ASCII only\n"));
+	stp_eprintf(v, "%s", _("Illegal Numeric in Magstripe, 0x30->0x3F ASCII only\n"));
 	return 0;
       }
     }
     if (pd->privdata.magicard.mag2[0] != ';') {
-      stp_eprintf(v, _("Magstripe numeric data must start with ';'\n"));
+      stp_eprintf(v, "%s", _("Magstripe numeric data must start with ';'\n"));
       return 0;
     }
     if (pd->privdata.magicard.mag2[magstripe2->bytes - 1] != '?') {
-      stp_eprintf(v, _("Magstripe data must end with '?'\n"));
+      stp_eprintf(v, "%s", _("Magstripe data must end with '?'\n"));
       return 0;
     }
   }
@@ -9743,16 +9743,16 @@ static int magicard_parse_parameters(stp
     for (i = 0 ; i < magstripe3->bytes ; i++) {
       if (pd->privdata.magicard.mag3[i] < 0x30 ||
 	  pd->privdata.magicard.mag3[i] > 0x3f) {
-	stp_eprintf(v, _("Illegal Numeric in Magstripe, 0x30->0x3F ASCII only\n"));
+	stp_eprintf(v, "%s", _("Illegal Numeric in Magstripe, 0x30->0x3F ASCII only\n"));
 	return 0;
       }
     }
     if (pd->privdata.magicard.mag3[0] != ';') {
-      stp_eprintf(v, _("Magstripe numeric data must start with ';'\n"));
+      stp_eprintf(v, "%s", _("Magstripe numeric data must start with ';'\n"));
       return 0;
     }
     if (pd->privdata.magicard.mag3[magstripe3->bytes - 1] != '?') {
-      stp_eprintf(v, _("Magstripe data must end with '?'\n"));
+      stp_eprintf(v, "%s", _("Magstripe data must end with '?'\n"));
       return 0;
     }
   }
@@ -12163,7 +12163,7 @@ dyesub_do_print(stp_vars_t *v, stp_image
 
   if (!stp_verify(v))
     {
-      stp_eprintf(v, _("Print options not verified; cannot print.\n"));
+      stp_eprintf(v, "%s", _("Print options not verified; cannot print.\n"));
       return 0;
     }
 
--- gutenprint-5.3.4/src/main/print-escp2.c	2021-04-26 14:31:53.799910590 +0000
+++ gutenprint-5.3.4/src/main/print-escp2.c	2021-04-26 14:30:58.675023282 +0000
@@ -4493,7 +4493,7 @@ escp2_do_print(stp_vars_t *v, stp_image_
 
   if (!stp_verify(v))
     {
-      stp_eprintf(v, _("Print options not verified; cannot print.\n"));
+      stp_eprintf(v, "%s", _("Print options not verified; cannot print.\n"));
       return 0;
     }
 
--- gutenprint-5.3.4/src/escputil/escputil.c	2021-04-26 14:45:19.173900244 +0000
+++ gutenprint-5.3.4/src/escputil/escputil.c	2021-04-26 14:45:05.066975885 +0000
@@ -347,7 +347,7 @@ main(int argc, char **argv)
 	case 'P':
 	  if (the_printer || raw_device)
 	    {
-	      printf(_("You may only specify one printer or raw device."));
+	      printf("%s", _("You may only specify one printer or raw device."));
 	      do_help(1);
 	    }
 	  the_printer = c_strdup(optarg);
@@ -355,7 +355,7 @@ main(int argc, char **argv)
 	case 'r':
 	  if (the_printer || raw_device)
 	    {
-	      printf(_("You may only specify one printer or raw device."));
+	      printf("%s", _("You may only specify one printer or raw device."));
 	      do_help(1);
 	    }
 	  raw_device = c_strdup(optarg);
@@ -363,7 +363,7 @@ main(int argc, char **argv)
 	case 'm':
 	  if (printer_model)
 	    {
-	      printf(_("You may only specify one printer model."));
+	      printf("%s", _("You may only specify one printer model."));
 	      do_help(1);
 	    }
 	  printer_model = c_strdup(optarg);
@@ -387,7 +387,7 @@ main(int argc, char **argv)
 	  alignment_choices = atoi(optarg);
 	  if (alignment_choices < 1)
 	    {
-	      printf(_("Alignment choices must be at least 1."));
+	      printf("%s", _("Alignment choices must be at least 1."));
 	      do_help(1);
 	    }
 	  break;
@@ -395,7 +395,7 @@ main(int argc, char **argv)
 	  alignment_passes = atoi(optarg);
 	  if (alignment_passes < 1)
 	    {
-	      printf(_("Alignment passes must be at least 1."));
+	      printf("%s", _("Alignment passes must be at least 1."));
 	      do_help(1);
 	    }
 	  break;
@@ -521,7 +521,7 @@ do_print_cmd(void)
 	  retries++;
 	  if (retries > 2)
 	    {
-	      fprintf(stderr, _("Unable to send command to printer\n"));
+	      fprintf(stderr, "%s", _("Unable to send command to printer\n"));
 	      if (raw_device)
 		fclose(pfile);
 	      else
@@ -531,7 +531,7 @@ do_print_cmd(void)
 	}
       else if (status == -1)
 	{
-	  fprintf(stderr, _("Unable to send command to printer\n"));
+	  fprintf(stderr, "%s", _("Unable to send command to printer\n"));
 	  if (raw_device)
 	    fclose(pfile);
 	  else
@@ -592,7 +592,7 @@ read_from_printer(int fd, char *buf, int
   else if (status == 0 && retry == 0)
     {
       if (!quiet)
-	fprintf(stderr, _("Read from printer timed out\n"));
+	fprintf(stderr, "%s", _("Read from printer timed out\n"));
     }
   else if (status < 0)
     {
@@ -777,7 +777,7 @@ open_raw_device(void)
 
   if (!raw_device)
    {
-      fprintf(stderr, _("Please specify a raw device\n"));
+      fprintf(stderr, "%s", _("Please specify a raw device\n"));
       exit(1);
     }
 
@@ -986,7 +986,7 @@ initialize_printer(int quiet, int fail_i
 	    {
 	      if (!quiet && fail_if_not_found)
 		{
-		  fprintf(stderr, _("\nCannot detect printer type.\n"
+		  fprintf(stderr, "%s", _("\nCannot detect printer type.\n"
 				    "Please use -m to specify your printer model.\n"));
 		  do_help(1);
 		}
@@ -1108,31 +1108,31 @@ print_status(int param)
   switch (param)
     {
     case 0:
-      printf(_("Status: Error\n"));
+      printf("%s", _("Status: Error\n"));
       break;
     case 1:
-      printf(_("Status: Self-Printing\n"));
+      printf("%s", _("Status: Self-Printing\n"));
       break;
     case 2:
-      printf(_("Status: Busy\n"));
+      printf("%s", _("Status: Busy\n"));
       break;
     case 3:
-      printf(_("Status: Waiting\n"));
+      printf("%s", _("Status: Waiting\n"));
       break;
     case 4:
-      printf(_("Status: Idle\n"));
+      printf("%s", _("Status: Idle\n"));
       break;
     case 5:
-      printf(_("Status: Paused\n"));
+      printf("%s", _("Status: Paused\n"));
       break;
     case 7:
-      printf(_("Status: Cleaning\n"));
+      printf("%s", _("Status: Cleaning\n"));
       break;
     case 8:
-      printf(_("Status: Factory shipment\n"));
+      printf("%s", _("Status: Factory shipment\n"));
       break;
     case 0xa:
-      printf(_("Status: Shutting down\n"));
+      printf("%s", _("Status: Shutting down\n"));
       break;
     default:
       printf(_("Status: Unknown (%d)\n"), param);
@@ -1146,67 +1146,67 @@ print_error(int param)
   switch (param)
     {
     case 0:
-      printf(_("Error: Fatal Error\n"));
+      printf("%s", _("Error: Fatal Error\n"));
       break;
     case 1:
-      printf(_("Error: Other interface is selected\n"));
+      printf("%s", _("Error: Other interface is selected\n"));
       break;
     case 2:
-      printf(_("Error: Cover Open\n"));
+      printf("%s", _("Error: Cover Open\n"));
       break;
     case 4:
-      printf(_("Error: Paper jam\n"));
+      printf("%s", _("Error: Paper jam\n"));
       break;
     case 5:
-      printf(_("Error: Ink out\n"));
+      printf("%s", _("Error: Ink out\n"));
       break;
     case 6:
-      printf(_("Error: Paper out\n"));
+      printf("%s", _("Error: Paper out\n"));
       break;
     case 0xc:
-      printf(_("Error: Miscellaneous paper error\n"));
+      printf("%s", _("Error: Miscellaneous paper error\n"));
       break;
     case 0x10:
-      printf(_("Error: Maintenance cartridge overflow\n"));
+      printf("%s", _("Error: Maintenance cartridge overflow\n"));
       break;
     case 0x11:
-      printf(_("Error: Wait return from the tear-off position\n"));
+      printf("%s", _("Error: Wait return from the tear-off position\n"));
       break;
     case 0x12:
-      printf(_("Error: Double feed error\n"));
+      printf("%s", _("Error: Double feed error\n"));
       break;
     case 0x1a:
-      printf(_("Error: Ink cartridge lever released\n\n"));
+      printf("%s", _("Error: Ink cartridge lever released\n\n"));
       break;
     case 0x1c:
-      printf(_("Error: Unrecoverable cutter error\n"));
+      printf("%s", _("Error: Unrecoverable cutter error\n"));
       break;
     case 0x1d:
-      printf(_("Error: Recoverable cutter jam\n"));
+      printf("%s", _("Error: Recoverable cutter jam\n"));
       break;
     case 0x22:
-      printf(_("Error: No maintenance cartridge present\n"));
+      printf("%s", _("Error: No maintenance cartridge present\n"));
       break;
     case 0x25:
-      printf(_("Error: Rear cover open\n"));
+      printf("%s", _("Error: Rear cover open\n"));
       break;
     case 0x29:
-      printf(_("Error: CD Tray Out\n"));
+      printf("%s", _("Error: CD Tray Out\n"));
       break;
     case 0x2a:
-      printf(_("Error: Card loading error\n"));
+      printf("%s", _("Error: Card loading error\n"));
       break;
     case 0x2b:
-      printf(_("Error: Tray cover open\n"));
+      printf("%s", _("Error: Tray cover open\n"));
       break;
     case 0x36:
-      printf(_("Error: Maintenance cartridge cover open\n"));
+      printf("%s", _("Error: Maintenance cartridge cover open\n"));
       break;
     case 0x37:
-      printf(_("Error: Front cover open\n"));
+      printf("%s", _("Error: Front cover open\n"));
       break;
     case 0x41:
-      printf(_("Error: Maintenance request\n"));
+      printf("%s", _("Error: Maintenance request\n"));
       break;
     default:
       printf(_("Error: Unknown (%d)\n"), param);
@@ -1240,10 +1240,10 @@ print_warning(int param, const stp_strin
       switch (param)
 	{
 	case 0x20:
-	  printf(_("Warning: Maintenance cartridge near full\n"));
+	  printf("%s", _("Warning: Maintenance cartridge near full\n"));
 	  break;
 	case 0x21:
-	  printf(_("Warning: Maintenance request pending\n"));
+	  printf("%s", _("Warning: Maintenance request pending\n"));
 	  break;
 	default:
 	  printf(_("Warning: Unknown (%d)\n"), param);
@@ -1258,7 +1258,7 @@ print_self_printing_state(int param)
   switch (param)
     {
     case 0:
-      printf(_("Printing nozzle self-test\n"));
+      printf("%s", _("Printing nozzle self-test\n"));
       break;
     default:
       break;
@@ -1360,7 +1360,7 @@ do_old_status(status_cmd_t cmd, const ch
 	    }
 
 	  if (cmd == CMD_STATUS)
-	    printf(_("Ink Levels:\n"));
+	    printf("%s", _("Ink Levels:\n"));
 	  printf("%20s    %20s\n", _("Ink color"), _("Percent remaining"));
 	  print_old_ink_levels(ind, color_list);
 	  stp_string_list_destroy(color_list);
@@ -1404,7 +1404,7 @@ do_new_status(status_cmd_t cmd, char *bu
 	  size_t count = (total_param_count - 1) / param;
 	  ind = buf + i + 3;
 	  if (cmd == CMD_STATUS)
-	    printf(_("Ink Levels:\n"));
+	    printf("%s", _("Ink Levels:\n"));
 	  printf("%20s    %20s\n", _("Ink color"), _("Percent remaining"));
 	  for (j = 0; j < count; j++)
 	    {
@@ -1460,7 +1460,7 @@ do_new_status(status_cmd_t cmd, char *bu
 	    case 0x19:	/* Job name */
 	      if (total_param_count > 5)
 		{
-		  printf(_("Job Name: "));
+		  printf("%s", _("Job Name: "));
 		  for (j = 5; j < total_param_count; j++)
 		    putchar(buf[i + j + 2]);
 		  putchar('\n');
@@ -1822,7 +1822,7 @@ do_extended_ink_info(void)
 
   if (!raw_device)
     {
-      fprintf(stderr,_("Obtaining extended ink information requires using a raw device.\n"));
+      fprintf(stderr,"%s", _("Obtaining extended ink information requires using a raw device.\n"));
       exit(1);
     }
 
@@ -1849,7 +1849,7 @@ do_reset_ink_levels(void)
 
   if (!raw_device)
     {
-      fprintf(stderr,_("Resetting ink levels requires using a raw device.\n"));
+      fprintf(stderr,"%s", _("Resetting ink levels requires using a raw device.\n"));
       exit(1);
     }
 
@@ -1897,7 +1897,7 @@ do_identify(void)
   if (!raw_device)
     {
       fprintf(stderr,
-	      _("Printer identification requires using a raw device.\n"));
+	      "%s", _("Printer identification requires using a raw device.\n"));
       exit(1);
     }
   if (printer_model)
@@ -1915,7 +1915,7 @@ do_identify(void)
     printf("EPSON %s\n", printer_model);
   else
     {
-      fprintf(stderr, _("Cannot identify printer model.\n"));
+      fprintf(stderr, "%s", _("Cannot identify printer model.\n"));
       exit(1);
     }
 }
@@ -1937,7 +1937,7 @@ do_head_clean(void)
     (void) get_printer(1, 0);
   initialize_print_cmd(1);
   do_remote_cmd("CH", 2, 0, 0);
-  printf(_("Cleaning heads...\n"));
+  printf("%s", _("Cleaning heads...\n"));
   exit(do_print_cmd());
 }
 
@@ -1954,7 +1954,7 @@ do_nozzle_check(void)
   do_remote_cmd_only("NC", 2, 0, 0x10);
   do_remote_cmd_only("NC", 2, 0, 0);
   end_remote_sequence();
-  printf(_("Running nozzle check, please ensure paper is in the printer.\n"));
+  printf("%s", _("Running nozzle check, please ensure paper is in the printer.\n"));
   exit(do_print_cmd());
 }
 
@@ -2037,7 +2037,7 @@ do_align_help(int passes, int choices)
 static void
 printer_error(void)
 {
-  printf(_("Unable to send command to the printer, exiting.\n"));
+  printf("%s", _("Unable to send command to the printer, exiting.\n"));
   exit(1);
 }
 
@@ -2051,10 +2051,10 @@ do_final_alignment(void)
       retry_count++;
       if (retry_count > 10)
 	{
-	  printf(_("Exiting\n"));
+	  printf("%s", _("Exiting\n"));
 	  exit(1);
 	}
-      printf(_("Please inspect the final output very carefully to ensure that your\n"
+      printf("%s", _("Please inspect the final output very carefully to ensure that your\n"
 	       "printer is in proper alignment. You may now:\n"
 	       "  (s)ave the results in the printer,\n"
 	       "  (q)uit without saving the results, or\n"
@@ -2069,21 +2069,21 @@ do_final_alignment(void)
 	{
 	case 'q':
 	case 'Q':
-	  printf(_("Please confirm by typing 'q' again that you wish to quit without saving:\n"));
+	  printf("%s", _("Please confirm by typing 'q' again that you wish to quit without saving:\n"));
 	  fflush(stdout);
 	  inbuf = do_get_input (_("> "));
 	  if (!inbuf)
 	    continue;
 	  if (inbuf[0] == 'q' || inbuf[0] == 'Q')
 	    {
-	      printf(_("OK, your printer is aligned, but the alignment has not been saved.\n"
+	      printf("%s", _("OK, your printer is aligned, but the alignment has not been saved.\n"
 		       "If you wish to save the alignment, you must repeat this process.\n"));
 	      return 1;
 	    }
 	  break;
 	case 'r':
 	case 'R':
-	  printf(_("Please confirm by typing 'r' again that you wish to repeat the\n"
+	  printf("%s", _("Please confirm by typing 'r' again that you wish to repeat the\n"
 		   "alignment process:\n"));
 	  fflush(stdout);
 	  inbuf = do_get_input(_("> "));
@@ -2091,13 +2091,13 @@ do_final_alignment(void)
 	    continue;
 	  if (inbuf[0] == 'r' || inbuf[0] == 'R')
 	    {
-	      printf(_("Repeating the alignment process.\n"));
+	      printf("%s", _("Repeating the alignment process.\n"));
 	      return 0;
 	    }
 	  break;
 	case 's':
 	case 'S':
-	  printf(_("This will permanently alter the configuration of your printer.\n"
+	  printf("%s", _("This will permanently alter the configuration of your printer.\n"
 		   "WARNING: this procedure has not been approved by Seiko Epson, and\n"
 		   "it may damage your printer. Proceed?\n"
 		   "Please confirm by typing 's' again that you wish to save the settings\n"
@@ -2109,27 +2109,27 @@ do_final_alignment(void)
 	    continue;
 	  if (inbuf[0] == 's' || inbuf[0] == 'S')
 	    {
-	      printf(_("About to save settings..."));
+	      printf("%s", _("About to save settings..."));
 	      fflush(stdout);
 	      initialize_print_cmd(1);
 	      do_remote_cmd("SV", 0);
 	      if (do_print_cmd())
 		{
-		  printf(_("failed!\n"));
-		  printf(_("Your settings were not saved successfully.  You must repeat the\n"
+		  printf("%s", _("failed!\n"));
+		  printf("%s", _("Your settings were not saved successfully.  You must repeat the\n"
 			   "alignment procedure.\n"));
 		  exit(1);
 		}
-	      printf(_("succeeded!\n"));
-	      printf(_("Your alignment settings have been saved to the printer.\n"));
+	      printf("%s", _("succeeded!\n"));
+	      printf("%s", _("Your alignment settings have been saved to the printer.\n"));
 	      return 1;
 	    }
 	  break;
 	default:
-	  printf(_("Unrecognized command.\n"));
+	  printf("%s", _("Unrecognized command.\n"));
 	  continue;
 	}
-      printf(_("Final command was not confirmed.\n"));
+      printf("%s", _("Final command was not confirmed.\n"));
     }
 }
 
@@ -2210,7 +2210,7 @@ do_align(void)
 	do_remote_cmd("DT", 3, 0, curpass, 0);
       if (do_print_cmd())
 	printer_error();
-      printf(_("Please inspect the print, and choose the best pair of lines in each pattern.\n"
+      printf("%s", _("Please inspect the print, and choose the best pair of lines in each pattern.\n"
 	       "Type a pair number, '?' for help, or 'r' to repeat the procedure.\n"));
       initialize_print_cmd(1);
       for (curpass = 1; curpass <= alignment_passes; curpass ++)
@@ -2220,7 +2220,7 @@ do_align(void)
 	  retry_count++;
 	  if (retry_count > 10)
 	    {
-	      printf(_("Exiting\n"));
+	      printf("%s", _("Exiting\n"));
 	      return;
 	    }
 	  printf(_("Pass #%d"), curpass);
@@ -2231,7 +2231,7 @@ do_align(void)
 	    {
 	    case 'r':
 	    case 'R':
-	      printf(_("Please insert a fresh sheet of paper.\n"));
+	      printf("%s", _("Please insert a fresh sheet of paper.\n"));
 	      fflush(stdout);
 	      initialize_print_cmd(1);
 	      (void) do_get_input(_("Press enter to continue > "));
@@ -2250,12 +2250,12 @@ do_align(void)
 	  answer = strtol(inbuf, &endptr, 10);
 	  if (errno == ERANGE)
 	    {
-	      printf(_("Number out of range!\n"));
+	      printf("%s", _("Number out of range!\n"));
 	      goto reread;
 	    }
 	  if (endptr == inbuf)
 	    {
-	      printf(_("I cannot understand what you typed!\n"));
+	      printf("%s", _("I cannot understand what you typed!\n"));
 	      fflush(stdout);
 	      goto reread;
 	    }
@@ -2268,15 +2268,15 @@ do_align(void)
 	    }
 	  do_remote_cmd("DA", 4, 0, curpass - 1, 0, answer);
 	}
-      printf(_("Attempting to set alignment..."));
+      printf("%s", _("Attempting to set alignment..."));
       if (do_print_cmd())
 	printer_error();
-      printf(_("succeeded.\n"));
+      printf("%s", _("succeeded.\n"));
       printf(_("Please verify that the alignment is correct.  After the alignment pattern\n"
 	       "is printed again, please ensure that the best pattern for each line is\n"
 	       "pattern %d.  If it is not, you should repeat the process to get the best\n"
 	       "quality printing.\n"), (alignment_choices + 1) / 2);
-      printf(_("Please insert a fresh sheet of paper.\n"));
+      printf("%s", _("Please insert a fresh sheet of paper.\n"));
       (void) do_get_input(_("Press enter to continue > "));
       initialize_print_cmd(1);
       for (curpass = 0; curpass < alignment_passes; curpass++)
@@ -2318,7 +2318,7 @@ do_get_input (const char *prompt)
 	fgets_status = fgets (input, BUFSIZ, stdin);
 	if (fgets_status == NULL)
 	{
-		fprintf (stdout, _("Error in input\n"));
+		fprintf (stdout, "%s", _("Error in input\n"));
 		return (NULL);
 	}
 	else if (strlen (input) == 1 && input[0] == '\n')