]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid the use of snprintf.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 Aug 2011 05:50:49 +0000 (22:50 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 Aug 2011 05:50:49 +0000 (22:50 -0700)
* font.c (APPEND_SNPRINTF): Remove.
(font_unparse_xlfd):
* xterm.c (x_io_error_quitter):
Use esnprintf, not snprintf.  That way, we don't have to worry
about porting to ancient platforms that lack snprintf.
(x_term_init): Use sprintf, not snprintf.

src/ChangeLog
src/font.c
src/xterm.c

index 67ec3140cd4f3dd3aa6913d0177d7f36de3816f4..d0f575932201ccc647fff8aa7324a42ff8f98719 100644 (file)
@@ -1,3 +1,13 @@
+2011-08-31  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Avoid the use of snprintf.
+       * font.c (APPEND_SNPRINTF): Remove.
+       (font_unparse_xlfd):
+       * xterm.c (x_io_error_quitter):
+       Use esnprintf, not snprintf.  That way, we don't have to worry
+       about porting to ancient platforms that lack snprintf.
+       (x_term_init): Use sprintf, not snprintf.
+
 2011-08-30  Paul Eggert  <eggert@cs.ucla.edu>
 
        sprintf-related integer and memory overflow issues (Bug#9412).
index 1609a2cc9ffec93ada71402af1ae0a9824b0817d..a5b873aea51711c756bf66957cab35650627813d 100644 (file)
@@ -1285,14 +1285,14 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
     }
   else
     f[XLFD_AVGWIDTH_INDEX] = "*";
-  len = snprintf (name, nbytes, "-%s-%s-%s-%s-%s-%s-%s-%s-%s-%s-%s",
-                 f[XLFD_FOUNDRY_INDEX], f[XLFD_FAMILY_INDEX],
-                 f[XLFD_WEIGHT_INDEX], f[XLFD_SLANT_INDEX],
-                 f[XLFD_SWIDTH_INDEX], f[XLFD_ADSTYLE_INDEX],
-                 f[XLFD_PIXEL_INDEX], f[XLFD_RESX_INDEX],
-                 f[XLFD_SPACING_INDEX], f[XLFD_AVGWIDTH_INDEX],
-                 f[XLFD_REGISTRY_INDEX]);
-  return len < nbytes ? len : -1;
+  len = esnprintf (name, nbytes, "-%s-%s-%s-%s-%s-%s-%s-%s-%s-%s-%s",
+                  f[XLFD_FOUNDRY_INDEX], f[XLFD_FAMILY_INDEX],
+                  f[XLFD_WEIGHT_INDEX], f[XLFD_SLANT_INDEX],
+                  f[XLFD_SWIDTH_INDEX], f[XLFD_ADSTYLE_INDEX],
+                  f[XLFD_PIXEL_INDEX], f[XLFD_RESX_INDEX],
+                  f[XLFD_SPACING_INDEX], f[XLFD_AVGWIDTH_INDEX],
+                  f[XLFD_REGISTRY_INDEX]);
+  return len == nbytes - 1 ? -1 : len;
 }
 
 /* Parse NAME (null terminated) and store information in FONT
@@ -1592,39 +1592,32 @@ font_unparse_fcname (Lisp_Object font, int pixel_size, char *name, int nbytes)
 
   p = name;
   lim = name + nbytes;
-# define APPEND_SNPRINTF(args)                 \
-    do {                                       \
-      int len = snprintf args;                 \
-      if (! (0 <= len && len < lim - p))       \
-       return -1;                              \
-      p += len;                                        \
-    } while (0)
   if (! NILP (family))
-    APPEND_SNPRINTF ((p, lim - p, "%s", SSDATA (family)));
+    p += esnprintf (p, lim - p, "%s", SSDATA (family));
   if (point_size > 0)
-    APPEND_SNPRINTF ((p, lim - p, "-%d" + (p == name), point_size));
+    p += esnprintf (p, lim - p, "-%d" + (p == name), point_size);
   else if (pixel_size > 0)
-    APPEND_SNPRINTF ((p, lim - p, ":pixelsize=%d", pixel_size));
+    p += esnprintf (p, lim - p, ":pixelsize=%d", pixel_size);
   if (! NILP (AREF (font, FONT_FOUNDRY_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p, ":foundry=%s",
-                     SSDATA (SYMBOL_NAME (AREF (font,
-                                                FONT_FOUNDRY_INDEX)))));
+    p += esnprintf (p, lim - p, ":foundry=%s",
+                   SSDATA (SYMBOL_NAME (AREF (font,
+                                              FONT_FOUNDRY_INDEX))));
   for (i = 0; i < 3; i++)
     if (! NILP (styles[i]))
-      APPEND_SNPRINTF ((p, lim - p, ":%s=%s", style_names[i],
-                       SSDATA (SYMBOL_NAME (styles[i]))));
+      p += esnprintf (p, lim - p, ":%s=%s", style_names[i],
+                     SSDATA (SYMBOL_NAME (styles[i])));
   if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p, ":dpi=%"pI"d",
-                     XINT (AREF (font, FONT_DPI_INDEX))));
+    p += esnprintf (p, lim - p, ":dpi=%"pI"d",
+                   XINT (AREF (font, FONT_DPI_INDEX)));
   if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p, ":spacing=%"pI"d",
-                     XINT (AREF (font, FONT_SPACING_INDEX))));
+    p += esnprintf (p, lim - p, ":spacing=%"pI"d",
+                   XINT (AREF (font, FONT_SPACING_INDEX)));
   if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p,
-                     (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0
-                      ? ":scalable=true"
-                      : ":scalable=false")));
-  return (p - name);
+    p += esnprintf (p, lim - p,
+                   (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0
+                    ? ":scalable=true"
+                    : ":scalable=false"));
+  return lim - p == 1 ? -1 : p - name;
 }
 
 /* Parse NAME (null terminated) and store information in FONT
index 86393cf411fc0e0be7db7ca76252f7eda589e752..72e9f2b2236acf1664a81c311e81e62913918d38 100644 (file)
@@ -7900,8 +7900,8 @@ x_io_error_quitter (Display *display)
 {
   char buf[256];
 
-  snprintf (buf, sizeof buf, "Connection lost to X server `%s'",
-           DisplayString (display));
+  esnprintf (buf, sizeof buf, "Connection lost to X server `%s'",
+            DisplayString (display));
   x_connection_closed (display, buf);
   return 0;
 }
@@ -10278,8 +10278,8 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
       atom_names[i] = (char *) atom_refs[i].name;
 
     /* Build _XSETTINGS_SN atom name */
-    snprintf (xsettings_atom_name, sizeof (xsettings_atom_name),
-              "_XSETTINGS_S%d", XScreenNumberOfScreen (dpyinfo->screen));
+    sprintf (xsettings_atom_name,
+            "_XSETTINGS_S%d", XScreenNumberOfScreen (dpyinfo->screen));
     atom_names[i] = xsettings_atom_name;
 
     XInternAtoms (dpyinfo->display, atom_names, total_atom_count,