]> git.eshelyaron.com Git - emacs.git/commitdiff
Remove printmax_t etc.
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 7 Jul 2019 19:29:27 +0000 (12:29 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 7 Jul 2019 19:33:35 +0000 (12:33 -0700)
printmax_t etc. were needed only for platforms that lacked
support for printing intmax_t.  These platforms are now so
obsolete that they are no longer practical porting targets.
* src/image.c (gs_load): Fix unlikely buffer overrun
discovered while making these changes.  It was introduced in
2011-07-17T00:34:43!eggert@cs.ucla.edu.
* src/lisp.h (printmax_t, uprintmax_t, pMd, pMu, pMx):
Remove.  All uses replaced by their standard counterparts
intmax_t, uintmax_t, PRIdMAX, PRIuMAX, PRIxMAX.

19 files changed:
doc/lispref/internals.texi
src/dbusbind.c
src/dispnew.c
src/doprnt.c
src/editfns.c
src/emacs.c
src/filelock.c
src/font.c
src/frame.c
src/gnutls.c
src/image.c
src/lisp.h
src/print.c
src/process.c
src/sysdep.c
src/timefns.c
src/unexelf.c
src/xdisp.c
src/xselect.c

index f1f2ea215a5364ae7356323da6e7f6bcbac3c45f..72066d34f4454d20f4b0d22f7df0a4015edc6601 100644 (file)
@@ -2661,14 +2661,11 @@ seconds since the Epoch), prefer the corresponding system type (e.g.,
 signed, unless this assumption is known to be safe.  For example,
 although @code{off_t} is always signed, @code{time_t} need not be.
 
-@item
-Prefer the Emacs-defined type @code{printmax_t} for representing
-values that might be any signed integer that can be printed,
-using a @code{printf}-family function.
-
 @item
 Prefer @code{intmax_t} for representing values that might be any
 signed integer value.
+A @code{printf}-family function can print such a value
+via a format like @code{"%"PRIdMAX}.
 
 @item
 Prefer @code{bool}, @code{false} and @code{true} for booleans.
index 850d176c08fb3ab3f3e1839730214f026bffd417..90ba461c6bc083857706b0441f5effb8423633cf 100644 (file)
@@ -661,8 +661,8 @@ xd_append_arg (int dtype, Lisp_Object object, DBusMessageIter *iter)
            xd_extract_signed (object,
                               TYPE_MINIMUM (dbus_int64_t),
                               TYPE_MAXIMUM (dbus_int64_t));
-         printmax_t pval = val;
-         XD_DEBUG_MESSAGE ("%c %"pMd, dtype, pval);
+         intmax_t pval = val;
+         XD_DEBUG_MESSAGE ("%c %"PRIdMAX, dtype, pval);
          if (!dbus_message_iter_append_basic (iter, dtype, &val))
            XD_SIGNAL2 (build_string ("Unable to append argument"), object);
          return;
@@ -673,8 +673,8 @@ xd_append_arg (int dtype, Lisp_Object object, DBusMessageIter *iter)
          dbus_uint64_t val =
            xd_extract_unsigned (object,
                                 TYPE_MAXIMUM (dbus_uint64_t));
-         uprintmax_t pval = val;
-         XD_DEBUG_MESSAGE ("%c %"pMu, dtype, pval);
+         uintmax_t pval = val;
+         XD_DEBUG_MESSAGE ("%c %"PRIuMAX, dtype, pval);
          if (!dbus_message_iter_append_basic (iter, dtype, &val))
            XD_SIGNAL2 (build_string ("Unable to append argument"), object);
          return;
@@ -867,20 +867,18 @@ xd_retrieve_arg (int dtype, DBusMessageIter *iter)
     case DBUS_TYPE_INT64:
       {
        dbus_int64_t val;
-       printmax_t pval;
        dbus_message_iter_get_basic (iter, &val);
-       pval = val;
-       XD_DEBUG_MESSAGE ("%c %"pMd, dtype, pval);
+       intmax_t pval = val;
+       XD_DEBUG_MESSAGE ("%c %"PRIdMAX, dtype, pval);
        return INT_TO_INTEGER (val);
       }
 
     case DBUS_TYPE_UINT64:
       {
        dbus_uint64_t val;
-       uprintmax_t pval;
        dbus_message_iter_get_basic (iter, &val);
-       pval = val;
-       XD_DEBUG_MESSAGE ("%c %"pMu, dtype, pval);
+       uintmax_t pval = val;
+       XD_DEBUG_MESSAGE ("%c %"PRIuMAX, dtype, pval);
        return INT_TO_INTEGER (val);
       }
 
index 52a7b6d6ee01efd97ac26da1d9e66d7ff594e63d..5a6662e0f3bac111fde1d0e3c4c0247ec070af21 100644 (file)
@@ -157,7 +157,7 @@ static int history_idx;
 /* A tick that's incremented each time something is added to the
    history.  */
 
-static uprintmax_t history_tick;
+static uintmax_t history_tick;
 \f
 /* Add to the redisplay history how window W has been displayed.
    MSG is a trace containing the information how W's glyph matrix
@@ -176,7 +176,7 @@ add_window_display_history (struct window *w, const char *msg, bool paused_p)
   ++history_idx;
 
   snprintf (buf, sizeof redisplay_history[0].trace,
-           "%"pMu": window %p (%s)%s\n%s",
+           "%"PRIuMAX": window %p (%s)%s\n%s",
            history_tick++,
            ptr,
            ((BUFFERP (w->contents)
@@ -203,7 +203,7 @@ add_frame_display_history (struct frame *f, bool paused_p)
   buf = redisplay_history[history_idx].trace;
   ++history_idx;
 
-  sprintf (buf, "%"pMu": update frame %p%s",
+  sprintf (buf, "%"PRIuMAX": update frame %p%s",
           history_tick++,
           ptr, paused_p ? " ***paused***" : "");
 }
index 64bb368ee3e17f9c2007b4ce16b46e8c9b5ca8ec..819700f6798fb53d21b3fbe946a176307fdc95d9 100644 (file)
@@ -71,7 +71,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
      %<flags><width><precision><length>character
 
    where flags is [+ -0], width is [0-9]+, precision is .[0-9]+, and length
-   is empty or l or the value of the pD or pI or pMd (sans "d") macros.
+   is empty or l or the value of the pD or pI or PRIdMAX (sans "d") macros.
    Also, %% in a format stands for a single % in the output.  A % that
    does not introduce a valid %-sequence causes undefined behavior.
 
@@ -88,7 +88,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
    the respective argument is to be treated as `long int' or `unsigned long
    int'.  Similarly, the value of the pD macro means to use ptrdiff_t,
    the value of the pI macro means to use EMACS_INT or EMACS_UINT, the
-   value of the pMd etc. macros means to use intmax_t or uintmax_t,
+   value of the PRIdMAX etc. macros means to use intmax_t or uintmax_t,
    and the empty length modifier means `int' or `unsigned int'.
 
    The width specifier supplies a lower limit for the length of the printed
@@ -179,7 +179,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
          enum {
            pDlen = sizeof pD - 1,
            pIlen = sizeof pI - 1,
-           pMlen = sizeof pMd - 2
+           pMlen = sizeof PRIdMAX - 2
          };
          enum {
            no_modifier, long_modifier, pD_modifier, pI_modifier, pM_modifier
@@ -234,7 +234,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
                length_modifier = pD_modifier;
              if (mlen == pIlen && memcmp (fmt, pI, pIlen) == 0)
                length_modifier = pI_modifier;
-             if (mlen == pMlen && memcmp (fmt, pMd, pMlen) == 0)
+             if (mlen == pMlen && memcmp (fmt, PRIdMAX, pMlen) == 0)
                length_modifier = pM_modifier;
            }
 
index ee538e50e25fe9a764ef747f1d6b38e6a1d4cc25..fd9fbaeaea2fb46607c94077fd708ef24f2a6de8 100644 (file)
@@ -3477,8 +3477,8 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
            error ("Format specifier doesn't match argument type");
          else
            {
-             /* Length of pM (that is, of pMd without the trailing "d").  */
-             enum { pMlen = sizeof pMd - 2 };
+             /* Length of PRIdMAX without the trailing "d".  */
+             enum { pMlen = sizeof PRIdMAX - 2 };
 
              /* Avoid undefined behavior in underlying sprintf.  */
              if (conversion == 'd' || conversion == 'i')
@@ -3487,7 +3487,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
              /* Create the copy of the conversion specification, with
                 any width and precision removed, with ".*" inserted,
                 with "L" possibly inserted for floating-point formats,
-                and with pM inserted for integer formats.
+                and with PRIdMAX (sans "d") inserted for integer formats.
                 At most two flags F can be specified at once.  */
              char convspec[sizeof "%FF.*d" + max (sizeof "L" - 1, pMlen)];
              char *f = convspec;
@@ -3616,7 +3616,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
                {
                  if (FIXNUMP (arg))
                    {
-                     printmax_t x = XFIXNUM (arg);
+                     intmax_t x = XFIXNUM (arg);
                      sprintf_bytes = sprintf (p, convspec, prec, x);
                    }
                  else
@@ -3636,7 +3636,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
                }
              else
                {
-                 uprintmax_t x;
+                 uintmax_t x;
                  bool negative;
                  if (FIXNUMP (arg))
                    {
@@ -3655,8 +3655,8 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
                  else
                    {
                      double d = XFLOAT_DATA (arg);
-                     double uprintmax = TYPE_MAXIMUM (uprintmax_t);
-                     if (! (0 <= d && d < uprintmax + 1))
+                     double uintmax = UINTMAX_MAX;
+                     if (! (0 <= d && d < uintmax + 1))
                        xsignal1 (Qoverflow_error, arg);
                      x = d;
                      negative = false;
index fc1a4beec509d09728aad1d6fa5db8bce8807337..0f03dd656d357045b3b490acf3ff0b6015a4bc5f 100644 (file)
@@ -150,7 +150,7 @@ bool display_arg;
 
 #if defined GNU_LINUX && defined HAVE_UNEXEC
 /* The gap between BSS end and heap start as far as we can tell.  */
-static uprintmax_t heap_bss_diff;
+static uintmax_t heap_bss_diff;
 #endif
 
 /* To run as a background daemon under Cocoa or Windows,
@@ -2548,7 +2548,8 @@ You must run Emacs in batch mode in order to dump it.  */)
     {
       fprintf (stderr, "**************************************************\n");
       fprintf (stderr, "Warning: Your system has a gap between BSS and the\n");
-      fprintf (stderr, "heap (%"pMu" bytes).  This usually means that exec-shield\n",
+      fprintf (stderr, ("heap (%"PRIuMAX" bytes).  "
+                       "This usually means that exec-shield\n"),
                heap_bss_diff);
       fprintf (stderr, "or something similar is in effect.  The dump may\n");
       fprintf (stderr, "fail because of this.  See the section about\n");
index b1f7d9dce61a7c57ac99520979e0e48456b6d1a6..46349a63e4aecf41f2a8c222bfc95dc6a0d236aa 100644 (file)
@@ -429,26 +429,26 @@ static int
 lock_file_1 (char *lfname, bool force)
 {
   /* Call this first because it can GC.  */
-  printmax_t boot = get_boot_time ();
+  intmax_t boot = get_boot_time ();
 
   Lisp_Object luser_name = Fuser_login_name (Qnil);
   char const *user_name = STRINGP (luser_name) ? SSDATA (luser_name) : "";
   Lisp_Object lhost_name = Fsystem_name ();
   char const *host_name = STRINGP (lhost_name) ? SSDATA (lhost_name) : "";
   char lock_info_str[MAX_LFINFO + 1];
-  printmax_t pid = getpid ();
+  intmax_t pid = getpid ();
 
   if (boot)
     {
       if (sizeof lock_info_str
           <= snprintf (lock_info_str, sizeof lock_info_str,
-                       "%s@%s.%"pMd":%"pMd,
+                      "%s@%s.%"PRIdMAX":%"PRIdMAX,
                        user_name, host_name, pid, boot))
         return ENAMETOOLONG;
     }
   else if (sizeof lock_info_str
            <= snprintf (lock_info_str, sizeof lock_info_str,
-                        "%s@%s.%"pMd,
+                       "%s@%s.%"PRIdMAX,
                         user_name, host_name, pid))
     return ENAMETOOLONG;
 
index 409ffa6ae0cfa747081db1240b79b839e44590da..b4a85a1ca5a31297eccf112a032e038caf5f218b 100644 (file)
@@ -1295,14 +1295,12 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
   if (INTEGERP (val))
     {
       intmax_t v;
-      if (! (integer_to_intmax (val, &v)
-            && 0 < v && v <= TYPE_MAXIMUM (uprintmax_t)))
+      if (! (integer_to_intmax (val, &v) && 0 < v))
        v = pixel_size;
       if (v > 0)
        {
-         uprintmax_t u = v;
          f[XLFD_PIXEL_INDEX] = p = font_size_index_buf;
-         sprintf (p, "%"pMu"-*", u);
+         sprintf (p, "%"PRIdMAX"-*", v);
        }
       else
        f[XLFD_PIXEL_INDEX] = "*-*";
index 03bbbfb4da20c91bc4934cdd5644f45f091a1311..6363a873684b47750b573072876922ea1adb4ce5 100644 (file)
@@ -1048,7 +1048,7 @@ make_minibuffer_frame (void)
 \f
 /* Construct a frame that refers to a terminal.  */
 
-static printmax_t tty_frame_count;
+static intmax_t tty_frame_count;
 
 struct frame *
 make_initial_frame (void)
@@ -1108,7 +1108,7 @@ make_terminal_frame (struct terminal *terminal)
 {
   register struct frame *f;
   Lisp_Object frame;
-  char name[sizeof "F" + INT_STRLEN_BOUND (printmax_t)];
+  char name[sizeof "F" + INT_STRLEN_BOUND (tty_frame_count)];
 
   if (!terminal->name)
     error ("Terminal is not live, can't create new frames on it");
@@ -1118,7 +1118,7 @@ make_terminal_frame (struct terminal *terminal)
   XSETFRAME (frame, f);
   Vframe_list = Fcons (frame, Vframe_list);
 
-  fset_name (f, make_formatted_string (name, "F%"pMd, ++tty_frame_count));
+  fset_name (f, make_formatted_string (name, "F%"PRIdMAX, ++tty_frame_count));
 
   SET_FRAME_VISIBLE (f, 1);
 
@@ -2920,14 +2920,14 @@ set_term_frame_name (struct frame *f, Lisp_Object name)
   /* If NAME is nil, set the name to F<num>.  */
   if (NILP (name))
     {
-      char namebuf[sizeof "F" + INT_STRLEN_BOUND (printmax_t)];
+      char namebuf[sizeof "F" + INT_STRLEN_BOUND (tty_frame_count)];
 
       /* Check for no change needed in this very common case
         before we do any consing.  */
       if (frame_name_fnn_p (SSDATA (f->name), SBYTES (f->name)))
        return;
 
-      name = make_formatted_string (namebuf, "F%"pMd, ++tty_frame_count);
+      name = make_formatted_string (namebuf, "F%"PRIdMAX, ++tty_frame_count);
     }
   else
     {
@@ -4201,7 +4201,7 @@ void
 gui_report_frame_params (struct frame *f, Lisp_Object *alistptr)
 {
   Lisp_Object tem;
-  uprintmax_t w;
+  uintmax_t w;
   char buf[INT_BUFSIZE_BOUND (w)];
 
   /* Represent negative positions (off the top or left screen edge)
@@ -4249,7 +4249,7 @@ gui_report_frame_params (struct frame *f, Lisp_Object *alistptr)
      warnings.  */
   w = (uintptr_t) FRAME_NATIVE_WINDOW (f);
   store_in_alist (alistptr, Qwindow_id,
-                 make_formatted_string (buf, "%"pMu, w));
+                 make_formatted_string (buf, "%"PRIuMAX, w));
 #ifdef HAVE_X_WINDOWS
 #ifdef USE_X_TOOLKIT
   /* Tooltip frame may not have this widget.  */
@@ -4257,7 +4257,7 @@ gui_report_frame_params (struct frame *f, Lisp_Object *alistptr)
 #endif
     w = (uintptr_t) FRAME_OUTER_WINDOW (f);
   store_in_alist (alistptr, Qouter_window_id,
-                 make_formatted_string (buf, "%"pMu, w));
+                 make_formatted_string (buf, "%"PRIuMAX, w));
 #endif
   store_in_alist (alistptr, Qicon_name, f->icon_name);
   store_in_alist (alistptr, Qvisibility,
index 1afbb2bd4e5e112b054dedeb3da4da8f785ee008..267ba9aba35b42e051760ab139d0ec2febb6be9d 100644 (file)
@@ -2098,8 +2098,8 @@ gnutls_symmetric_aead (bool encrypting, gnutls_cipher_algorithm_t gca,
   SAFE_FREE ();
   return list2 (output, actual_iv);
 # else
-  printmax_t print_gca = gca;
-  error ("GnuTLS AEAD cipher %"pMd" is invalid or not found", print_gca);
+  intmax_t print_gca = gca;
+  error ("GnuTLS AEAD cipher %"PRIdMAX" is invalid or not found", print_gca);
 # endif
 }
 
index 6ead12166b6d94a89581427e5fa331d6500c29c7..b4b6c1bac1caf563fccce589d66a25353b80d96b 100644 (file)
@@ -9735,8 +9735,8 @@ gs_image_p (Lisp_Object object)
 static bool
 gs_load (struct frame *f, struct image *img)
 {
-  uprintmax_t printnum1, printnum2;
-  char buffer[sizeof " " + INT_STRLEN_BOUND (printmax_t)];
+  uintmax_t printnum1, printnum2;
+  char buffer[sizeof " " + 2 * INT_STRLEN_BOUND (intmax_t)];
   Lisp_Object window_and_pixmap_id = Qnil, loader, pt_height, pt_width;
   Lisp_Object frame;
   double in_width, in_height;
@@ -9788,12 +9788,14 @@ gs_load (struct frame *f, struct image *img)
   printnum1 = FRAME_X_DRAWABLE (f);
   printnum2 = img->pixmap;
   window_and_pixmap_id
-    = make_formatted_string (buffer, "%"pMu" %"pMu, printnum1, printnum2);
+    = make_formatted_string (buffer, "%"PRIuMAX" %"PRIuMAX,
+                            printnum1, printnum2);
 
   printnum1 = FRAME_FOREGROUND_PIXEL (f);
   printnum2 = FRAME_BACKGROUND_PIXEL (f);
   pixel_colors
-    = make_formatted_string (buffer, "%"pMu" %"pMu, printnum1, printnum2);
+    = make_formatted_string (buffer, "%"PRIuMAX" %"PRIuMAX,
+                            printnum1, printnum2);
 
   XSETFRAME (frame, f);
   loader = image_spec_value (img->spec, QCloader, NULL);
index 1a1d8ee7e48d2e22cda8b436dfca42a9e3ae519a..8acf63fe22715c64b792f5c2e2cf60160d823fda 100644 (file)
@@ -134,25 +134,6 @@ enum { BITS_PER_BITS_WORD = BOOL_VECTOR_BITS_PER_CHAR };
 #endif
 verify (BITS_WORD_MAX >> (BITS_PER_BITS_WORD - 1) == 1);
 
-/* printmax_t and uprintmax_t are types for printing large integers.
-   These are the widest integers that are supported for printing.
-   pMd etc. are conversions for printing them.
-   On C99 hosts, there's no problem, as even the widest integers work.
-   Fall back on EMACS_INT on pre-C99 hosts.  */
-#ifdef PRIdMAX
-typedef intmax_t printmax_t;
-typedef uintmax_t uprintmax_t;
-# define pMd PRIdMAX
-# define pMu PRIuMAX
-# define pMx PRIxMAX
-#else
-typedef EMACS_INT printmax_t;
-typedef EMACS_UINT uprintmax_t;
-# define pMd pI"d"
-# define pMu pI"u"
-# define pMx pI"x"
-#endif
-
 /* Use pD to format ptrdiff_t values, which suffice for indexes into
    buffers and strings.  Emacs never allocates objects larger than
    PTRDIFF_MAX bytes, as they cause problems with pointer subtraction.
index 406abbf4a3f0c3229d2203c778e15d68780333f1..dc44b1e89e02bf9ea9588bd93fb214e46a83c51b 100644 (file)
@@ -1017,8 +1017,8 @@ float_to_string (char *buf, double data)
   if (isnan (data))
     {
       union ieee754_double u = { .d = data };
-      uprintmax_t hi = u.ieee_nan.mantissa0;
-      return sprintf (buf, &"-%"pMu".0e+NaN"[!u.ieee_nan.negative],
+      uintmax_t hi = u.ieee_nan.mantissa0;
+      return sprintf (buf, &"-%"PRIuMAX".0e+NaN"[!u.ieee_nan.negative],
                      (hi << 31 << 1) + u.ieee_nan.mantissa1);
     }
 #endif
@@ -1811,9 +1811,9 @@ print_vectorlike (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag,
 
            /* In theory this assignment could lose info on pre-C99
               hosts, but in practice it doesn't.  */
-           uprintmax_t up = ui;
+           uintmax_t up = ui;
 
-           int len = sprintf (buf, "at 0x%"pMx, up);
+           int len = sprintf (buf, "at 0x%"PRIxMAX, up);
            strout (buf, len, len, printcharfun);
          }
        else
@@ -1841,9 +1841,9 @@ static void
 print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
 {
   char buf[max (sizeof "from..to..in " + 2 * INT_STRLEN_BOUND (EMACS_INT),
-               max (sizeof " . #" + INT_STRLEN_BOUND (printmax_t),
+               max (sizeof " . #" + INT_STRLEN_BOUND (intmax_t),
                     max ((sizeof "at 0x"
-                          + (sizeof (uprintmax_t) * CHAR_BIT + 4 - 1) / 4),
+                          + (sizeof (uintmax_t) * CHAR_BIT + 4 - 1) / 4),
                          40)))];
   current_thread->stack_top = buf;
   maybe_quit ();
@@ -2096,11 +2096,11 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
 
          /* Negative values of print-length are invalid in CL.
             Treat them like nil, as CMUCL does.  */
-         printmax_t print_length = (FIXNATP (Vprint_length)
-                                    ? XFIXNAT (Vprint_length)
-                                    : TYPE_MAXIMUM (printmax_t));
+         intmax_t print_length = (FIXNATP (Vprint_length)
+                                  ? XFIXNAT (Vprint_length)
+                                  : INTMAX_MAX);
 
-         printmax_t i = 0;
+         intmax_t i = 0;
          while (CONSP (obj))
            {
              /* Detect circular list.  */
@@ -2109,7 +2109,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
                  /* Simple but incomplete way.  */
                  if (i != 0 && EQ (obj, halftail))
                    {
-                     int len = sprintf (buf, " . #%"pMd, i / 2);
+                     int len = sprintf (buf, " . #%"PRIdMAX, i >> 1);
                      strout (buf, len, len, printcharfun);
                      goto end_of_list;
                    }
index cab390c10c6075055533552a0bf8292dc95569c4..5f552675db69df1c0f3f9e50ebdc5a080007a5ac 100644 (file)
@@ -888,13 +888,13 @@ make_process (Lisp_Object name)
   /* If name is already in use, modify it until it is unused.  */
 
   Lisp_Object name1 = name;
-  for (printmax_t i = 1; ; i++)
+  for (intmax_t i = 1; ; i++)
     {
       Lisp_Object tem = Fget_process (name1);
       if (NILP (tem))
        break;
-      char const suffix_fmt[] = "<%"pMd">";
-      char suffix[sizeof suffix_fmt + INT_STRLEN_BOUND (printmax_t)];
+      char const suffix_fmt[] = "<%"PRIdMAX">";
+      char suffix[sizeof suffix_fmt + INT_STRLEN_BOUND (i)];
       AUTO_STRING_WITH_LEN (lsuffix, suffix, sprintf (suffix, suffix_fmt, i));
       name1 = concat2 (name, lsuffix);
     }
index 48eebb594f72578e08b047bd2cef635a1afaeeb8..c7d7eefc2ab7137c89b7d06ddf4ec603a9b287d1 100644 (file)
@@ -3269,7 +3269,7 @@ system_process_attributes (Lisp_Object pid)
   char *cmdline = NULL;
   ptrdiff_t cmdline_size;
   char c;
-  printmax_t proc_id;
+  intmax_t proc_id;
   int ppid, pgrp, sess, tty, tpgid, thcount;
   uid_t uid;
   gid_t gid;
@@ -3284,7 +3284,7 @@ system_process_attributes (Lisp_Object pid)
 
   CHECK_NUMBER (pid);
   CONS_TO_INTEGER (pid, pid_t, proc_id);
-  sprintf (procfn, "/proc/%"pMd, proc_id);
+  sprintf (procfn, "/proc/%"PRIdMAX, proc_id);
   if (stat (procfn, &st) < 0)
     return attrs;
 
@@ -3505,7 +3505,7 @@ system_process_attributes (Lisp_Object pid)
   struct psinfo pinfo;
   int fd;
   ssize_t nread;
-  printmax_t proc_id;
+  intmax_t proc_id;
   uid_t uid;
   gid_t gid;
   Lisp_Object attrs = Qnil;
@@ -3514,7 +3514,7 @@ system_process_attributes (Lisp_Object pid)
 
   CHECK_NUMBER (pid);
   CONS_TO_INTEGER (pid, pid_t, proc_id);
-  sprintf (procfn, "/proc/%"pMd, proc_id);
+  sprintf (procfn, "/proc/%"PRIdMAX, proc_id);
   if (stat (procfn, &st) < 0)
     return attrs;
 
index 7b5af6a5d241c3136e399d6c19759cf20fcc7cb0..3b7ed4602225920eb6244ec2afbd38555b597e3c 100644 (file)
@@ -1573,9 +1573,9 @@ without consideration for daylight saving time.  */)
   static char const mon_name[][4] =
     { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
       "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-  printmax_t year_base = TM_YEAR_BASE;
+  intmax_t year_base = TM_YEAR_BASE;
   char buf[sizeof "Mon Apr 30 12:49:17 " + INT_STRLEN_BOUND (int) + 1];
-  int len = sprintf (buf, "%s %s%3d %02d:%02d:%02d %"pMd,
+  int len = sprintf (buf, "%s %s%3d %02d:%02d:%02d %"PRIdMAX,
                     wday_name[tm.tm_wday], mon_name[tm.tm_mon], tm.tm_mday,
                     tm.tm_hour, tm.tm_min, tm.tm_sec,
                     tm.tm_year + year_base);
index 6d19bf1fb9f9a4d66db9618a0203f9b79274b6de..79b3d444639f5c0e2a74add81e07ff7da49467c8 100644 (file)
@@ -187,7 +187,8 @@ verify ((! TYPE_SIGNED (ElfW (Half))
        && TYPE_MAXIMUM (ElfW (Half)) <= PTRDIFF_MAX);
 
 #ifdef UNEXELF_DEBUG
-# define DEBUG_LOG(expr) fprintf (stderr, #expr " 0x%jx\n", (uintmax_t) (expr))
+# define DEBUG_LOG(expr) fprintf (stderr, #expr " 0x%"PRIxMAX"\n", \
+                                 (uintmax_t) (expr))
 #endif
 
 /* Get the address of a particular section or program header entry,
index 5fb690e746d0f8d9609d3aace910b18549777635..75cc97df1c01826b170b6f45dc0a7ad25922507d 100644 (file)
@@ -10540,7 +10540,7 @@ message_dolog (const char *m, ptrdiff_t nbytes, bool nlflag, bool multibyte)
       if (nlflag)
        {
          ptrdiff_t this_bol, this_bol_byte, prev_bol, prev_bol_byte;
-         printmax_t dups;
+         intmax_t dups;
 
           /* Since we call del_range_both passing false for PREPARE,
              we aren't prepared to run modification hooks (we could
@@ -10572,11 +10572,12 @@ message_dolog (const char *m, ptrdiff_t nbytes, bool nlflag, bool multibyte)
                  if (dups > 1)
                    {
                      char dupstr[sizeof " [ times]"
-                                 + INT_STRLEN_BOUND (printmax_t)];
+                                 + INT_STRLEN_BOUND (dups)];
 
                      /* If you change this format, don't forget to also
                         change message_log_check_duplicate.  */
-                     int duplen = sprintf (dupstr, " [%"pMd" times]", dups);
+                     int duplen = sprintf (dupstr, " [%"PRIdMAX" times]",
+                                           dups);
                      TEMP_SET_PT_BOTH (Z - 1, Z_BYTE - 1);
                      insert_1_both (dupstr, duplen, duplen,
                                     true, false, true);
index 5f0bb44cc9a798309aa8fc2ccd7bc50d1b4e9970..c5085f7e7b42659335fd5e166064477cd2606bcb 100644 (file)
@@ -63,13 +63,13 @@ static void lisp_data_to_selection_data (struct x_display_info *, Lisp_Object,
 
 #ifdef TRACE_SELECTION
 #define TRACE0(fmt) \
-  fprintf (stderr, "%"pMd": " fmt "\n", (printmax_t) getpid ())
+  fprintf (stderr, "%"PRIdMAX": " fmt "\n", (intmax_t) getpid ())
 #define TRACE1(fmt, a0) \
-  fprintf (stderr, "%"pMd": " fmt "\n", (printmax_t) getpid (), a0)
+  fprintf (stderr, "%"PRIdMAX": " fmt "\n", (intmax_t) getpid (), a0)
 #define TRACE2(fmt, a0, a1) \
-  fprintf (stderr, "%"pMd": " fmt "\n", (printmax_t) getpid (), a0, a1)
+  fprintf (stderr, "%"PRIdMAX": " fmt "\n", (intmax_t) getpid (), a0, a1)
 #define TRACE3(fmt, a0, a1, a2) \
-  fprintf (stderr, "%"pMd": " fmt "\n", (printmax_t) getpid (), a0, a1, a2)
+  fprintf (stderr, "%"PRIdMAX": " fmt "\n", (intmax_t) getpid (), a0, a1, a2)
 #else
 #define TRACE0(fmt)            (void) 0
 #define TRACE1(fmt, a0)                (void) 0