rem: _("%s: %lu: improperly formatted %s checksum line"), checkfile_name, (unsigned long) line_number,
add: _("%s: %" PRIuMAX ": improperly formatted %s checksum line"), checkfile_name, line_number,
context: digest_check (const char *checkfile_name, int (*digest_stream)(FILE *, void *)){  FILE *checkfile_stream;  int n_properly_formated_lines = 0;  int n_mismatched_checksums = 0;  int n_open_or_read_failures = 0;  unsigned char bin_buffer[MAX_DIGEST_BIN_BYTES];  size_t line_number;  char *line;  size_t line_chars_allocated;  if (STREQ (checkfile_name, "-"))    {      have_read_stdin = 1;      checkfile_name = _("standard input");      checkfile_stream = stdin;    }  else    {      checkfile_stream = fopen (checkfile_name, "r");      if (checkfile_stream == NULL)	{	  error (0, errno, "%s", checkfile_name);	  return 1;	}    }  SET_MODE (fileno (checkfile_stream), O_TEXT);  line_number = 0;  line = NULL;  line_chars_allocated = 0;  do    {      char *filename;      int binary;      unsigned char *hex_digest;      int err;      int line_length;      ++line_number;      line_length = getline (&line, &line_chars_allocated, checkfile_stream);      if (line_length <= 0)	break;      /* Ignore comment lines, which begin with a '#' character.  */      if (line[0] == '#')	continue;      /* Remove any trailing newline.  */      if (line[line_length - 1] == '\n')	line[--line_length] = '\0';      err = split_3 (line, line_length, &hex_digest, &binary, &filename);      if (err || !hex_digits (hex_digest))	{	  if (warn)	    {	      error (0, 0,		     _("%s: %lu: improperly formatted %s checksum line"),		     checkfile_name, (unsigned long) line_number,		     DIGEST_TYPE_STRING (algorithm));	    }	}      else	{	  static const char bin2hex[] = { '0', '1', '2', '3',					  '4', '5', '6', '7',					  '8', '9', 'a', 'b',					  'c', 'd', 'e', 'f' };	  int fail;	  ++n_properly_formated_lines;	  fail = digest_file (filename, binary, bin_buffer, digest_stream);	  if (fail)	    {	      ++n_open_or_read_failures;	      if (!status_only)		{		  printf (_("%s: FAILED open or read\n"), filename);		  fflush (stdout);		}	    }	  else	    {	      size_t digest_bin_bytes = digest_hex_bytes / 2;	      size_t cnt;	      /* Compare generated binary number with text representation		 in check file.  Ignore case of hex digits.  */	      for (cnt = 0; cnt < digest_bin_bytes; ++cnt)		{		  if (TOLOWER (hex_digest[2 * cnt])		      != bin2hex[bin_buffer[cnt] >> 4]		      || (TOLOWER (hex_digest[2 * cnt + 1])			  != (bin2hex[bin_buffer[cnt] & 0xf])))		    break;		}	      if (cnt != digest_bin_bytes)		++n_mismatched_checksums;	      if (!status_only)		{		  printf ("%s: %s\n", filename,			  (cnt != digest_bin_bytes ? _("FAILED") : _("OK")));		  fflush (stdout);		}	    }	}    }  while (!feof (checkfile_stream) && !ferror (checkfile_stream));  if (line)    free (line);  if (ferror (checkfile_stream))    {      error (0, 0, _("%s: read error"), checkfile_name);      return 1;    }  if (checkfile_stream != stdin && fclose (checkfile_stream) == EOF)    {      error (0, errno, "%s", checkfile_name);      return 1;    }  if (n_properly_formated_lines == 0)    {      /* Warn if no tests are found.  */      error (0, 0, _("%s: no properly formatted %s checksum lines found"),	     checkfile_name, DIGEST_TYPE_STRING (algorithm));    }  else    {      if (!status_only)	{	  int n_computed_checkums = (n_properly_formated_lines				     - n_open_or_read_failures);	  if (n_open_or_read_failures > 0)	    {	      error (0, 0,		     _("WARNING: %d of %d listed %s could not be read"),		     n_open_or_read_failures, n_properly_formated_lines,		     (n_properly_formated_lines == 1		      ? _("file") : _("files")));	    }	  if (n_mismatched_checksums > 0)	    {	      error (0, 0,		   _("WARNING: %d of %d computed %s did NOT match"),		     n_mismatched_checksums, n_computed_checkums,		     (n_computed_checkums == 1		      ? _("checksum") : _("checksums")));	    }	}    }  return ((n_properly_formated_lines > 0 && n_mismatched_checksums == 0	   && n_open_or_read_failures == 0) ? 0 : 1);}