Use make_formatted_string to avoid double length calculation.
* lisp.h (make_formatted_string): New prototype. * alloc.c (make_formatted_string): New function. * buffer.c (Fgenerate_new_buffer_name): Use it. * dbus.c (syms_of_dbusbind): Likewise. * editfns.c (Fcurrent_time_zone): Likewise. * filelock.c (get_boot_time): Likewise. * frame.c (make_terminal_frame, set_term_frame_name) (x_report_frame_params): Likewise. * image.c (gs_load): Likewise. * minibuf.c (get_minibuffer): Likewise. * msdos.c (dos_set_window_size): Likewise. * process.c (make_process): Likewise. * xdisp.c (ensure_echo_area_buffers): Likewise. * xsettings.c (apply_xft_settings): Likewise.
This commit is contained in:
parent
27505cf5e4
commit
a8290ec31c
14 changed files with 71 additions and 41 deletions
|
@ -1,3 +1,21 @@
|
|||
2012-07-09 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Use make_formatted_string to avoid double length calculation.
|
||||
* lisp.h (make_formatted_string): New prototype.
|
||||
* alloc.c (make_formatted_string): New function.
|
||||
* buffer.c (Fgenerate_new_buffer_name): Use it.
|
||||
* dbus.c (syms_of_dbusbind): Likewise.
|
||||
* editfns.c (Fcurrent_time_zone): Likewise.
|
||||
* filelock.c (get_boot_time): Likewise.
|
||||
* frame.c (make_terminal_frame, set_term_frame_name)
|
||||
(x_report_frame_params): Likewise.
|
||||
* image.c (gs_load): Likewise.
|
||||
* minibuf.c (get_minibuffer): Likewise.
|
||||
* msdos.c (dos_set_window_size): Likewise.
|
||||
* process.c (make_process): Likewise.
|
||||
* xdisp.c (ensure_echo_area_buffers): Likewise.
|
||||
* xsettings.c (apply_xft_settings): Likewise.
|
||||
|
||||
2012-07-09 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
Stop ns builds polluting the environment with EMACSDATA, EMACSDOC.
|
||||
|
|
14
src/alloc.c
14
src/alloc.c
|
@ -2517,6 +2517,20 @@ make_uninit_multibyte_string (EMACS_INT nchars, EMACS_INT nbytes)
|
|||
return string;
|
||||
}
|
||||
|
||||
/* Print arguments to BUF according to a FORMAT, then return
|
||||
a Lisp_String initialized with the data from BUF. */
|
||||
|
||||
Lisp_Object
|
||||
make_formatted_string (char *buf, const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
ptrdiff_t length;
|
||||
|
||||
va_start (ap, format);
|
||||
length = vsprintf (buf, format, ap);
|
||||
va_end (ap);
|
||||
return make_string (buf, length);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -861,8 +861,9 @@ is first appended to NAME, to speed up finding a non-existent buffer. */)
|
|||
if (!strncmp (SSDATA (name), " ", 1)) /* see bug#1229 */
|
||||
{
|
||||
/* Note fileio.c:make_temp_name does random differently. */
|
||||
sprintf (number, "-%"pI"d", XFASTINT (Frandom (make_number (999999))));
|
||||
tem2 = concat2 (name, build_string (number));
|
||||
tem2 = concat2 (name, make_formatted_string
|
||||
(number, "-%"pI"d",
|
||||
XFASTINT (Frandom (make_number (999999)))));
|
||||
tem = Fget_buffer (tem2);
|
||||
if (NILP (tem))
|
||||
return tem2;
|
||||
|
@ -873,8 +874,8 @@ is first appended to NAME, to speed up finding a non-existent buffer. */)
|
|||
count = 1;
|
||||
while (1)
|
||||
{
|
||||
sprintf (number, "<%"pD"d>", ++count);
|
||||
gentemp = concat2 (tem2, build_string (number));
|
||||
gentemp = concat2 (tem2, make_formatted_string
|
||||
(number, "<%"pD"d>", ++count));
|
||||
tem = Fstring_equal (gentemp, ignore);
|
||||
if (!NILP (tem))
|
||||
return gentemp;
|
||||
|
|
|
@ -1757,8 +1757,8 @@ syms_of_dbusbind (void)
|
|||
int major, minor, micro;
|
||||
char s[sizeof ".." + 3 * INT_STRLEN_BOUND (int)];
|
||||
dbus_get_version (&major, &minor, µ);
|
||||
sprintf (s, "%d.%d.%d", major, minor, micro);
|
||||
Vdbus_runtime_version = build_string (s);
|
||||
Vdbus_runtime_version
|
||||
= make_formatted_string (s, "%d.%d.%d", major, minor, micro);
|
||||
#else
|
||||
Vdbus_runtime_version = Qnil;
|
||||
#endif
|
||||
|
|
|
@ -2082,8 +2082,9 @@ the data it can't find. */)
|
|||
int m = offset / 60;
|
||||
int am = offset < 0 ? - m : m;
|
||||
char buf[sizeof "+00" + INT_STRLEN_BOUND (int)];
|
||||
sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
|
||||
zone_name = build_string (buf);
|
||||
zone_name = make_formatted_string (buf, "%c%02d%02d",
|
||||
(offset < 0 ? '-' : '+'),
|
||||
am / 60, am % 60);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -174,14 +174,14 @@ get_boot_time (void)
|
|||
|
||||
filename = Qnil;
|
||||
|
||||
sprintf (cmd_string, "%s.%d", WTMP_FILE, counter);
|
||||
tempname = build_string (cmd_string);
|
||||
tempname = make_formatted_string
|
||||
(cmd_string, "%s.%d", WTMP_FILE, counter);
|
||||
if (! NILP (Ffile_exists_p (tempname)))
|
||||
filename = tempname;
|
||||
else
|
||||
{
|
||||
sprintf (cmd_string, "%s.%d.gz", WTMP_FILE, counter);
|
||||
tempname = build_string (cmd_string);
|
||||
tempname = make_formatted_string (cmd_string, "%s.%d.gz",
|
||||
WTMP_FILE, counter);
|
||||
if (! NILP (Ffile_exists_p (tempname)))
|
||||
{
|
||||
Lisp_Object args[6];
|
||||
|
|
18
src/frame.c
18
src/frame.c
|
@ -518,9 +518,7 @@ make_terminal_frame (struct terminal *terminal)
|
|||
XSETFRAME (frame, f);
|
||||
Vframe_list = Fcons (frame, Vframe_list);
|
||||
|
||||
tty_frame_count++;
|
||||
sprintf (name, "F%"pMd, tty_frame_count);
|
||||
f->name = build_string (name);
|
||||
f->name = make_formatted_string (name, "F%"pMd, ++tty_frame_count);
|
||||
|
||||
f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */
|
||||
f->async_visible = 1; /* Don't let visible be cleared later. */
|
||||
|
@ -2028,9 +2026,7 @@ set_term_frame_name (struct frame *f, Lisp_Object name)
|
|||
SBYTES (f->name)))
|
||||
return;
|
||||
|
||||
tty_frame_count++;
|
||||
sprintf (namebuf, "F%"pMd, tty_frame_count);
|
||||
name = build_string (namebuf);
|
||||
name = make_formatted_string (namebuf, "F%"pMd, ++tty_frame_count);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3049,20 +3045,16 @@ x_report_frame_params (struct frame *f, Lisp_Object *alistptr)
|
|||
actually a pointer. Explicit casting avoids compiler
|
||||
warnings. */
|
||||
w = (unsigned long) FRAME_X_WINDOW (f);
|
||||
sprintf (buf, "%lu", w);
|
||||
store_in_alist (alistptr, Qwindow_id,
|
||||
build_string (buf));
|
||||
make_formatted_string (buf, "%lu", w));
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
#ifdef USE_X_TOOLKIT
|
||||
/* Tooltip frame may not have this widget. */
|
||||
if (FRAME_X_OUTPUT (f)->widget)
|
||||
#endif
|
||||
{
|
||||
w = (unsigned long) FRAME_OUTER_WINDOW (f);
|
||||
sprintf (buf, "%lu", w);
|
||||
}
|
||||
w = (unsigned long) FRAME_OUTER_WINDOW (f);
|
||||
store_in_alist (alistptr, Qouter_window_id,
|
||||
build_string (buf));
|
||||
make_formatted_string (buf, "%lu", w));
|
||||
#endif
|
||||
store_in_alist (alistptr, Qicon_name, f->icon_name);
|
||||
FRAME_SAMPLE_VISIBILITY (f);
|
||||
|
|
|
@ -8549,13 +8549,13 @@ gs_load (struct frame *f, struct image *img)
|
|||
don't either. Let the Lisp loader use `unwind-protect' instead. */
|
||||
printnum1 = FRAME_X_WINDOW (f);
|
||||
printnum2 = img->pixmap;
|
||||
sprintf (buffer, "%"pMu" %"pMu, printnum1, printnum2);
|
||||
window_and_pixmap_id = build_string (buffer);
|
||||
window_and_pixmap_id
|
||||
= make_formatted_string (buffer, "%"pMu" %"pMu, printnum1, printnum2);
|
||||
|
||||
printnum1 = FRAME_FOREGROUND_PIXEL (f);
|
||||
printnum2 = FRAME_BACKGROUND_PIXEL (f);
|
||||
sprintf (buffer, "%"pMu" %"pMu, printnum1, printnum2);
|
||||
pixel_colors = build_string (buffer);
|
||||
pixel_colors
|
||||
= make_formatted_string (buffer, "%"pMu" %"pMu, printnum1, printnum2);
|
||||
|
||||
XSETFRAME (frame, f);
|
||||
loader = image_spec_value (img->spec, QCloader, NULL);
|
||||
|
|
|
@ -2611,6 +2611,7 @@ extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
|
|||
extern Lisp_Object allocate_misc (void);
|
||||
extern _Noreturn void string_overflow (void);
|
||||
extern Lisp_Object make_string (const char *, ptrdiff_t);
|
||||
extern Lisp_Object make_formatted_string (char *, const char *, ...);
|
||||
extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
|
||||
extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, ptrdiff_t);
|
||||
extern Lisp_Object make_event_array (int, Lisp_Object *);
|
||||
|
|
|
@ -792,8 +792,8 @@ get_minibuffer (EMACS_INT depth)
|
|||
buf = Fcar (tail);
|
||||
if (NILP (buf) || NILP (BVAR (XBUFFER (buf), name)))
|
||||
{
|
||||
sprintf (name, " *Minibuf-%"pI"d*", depth);
|
||||
buf = Fget_buffer_create (build_string (name));
|
||||
buf = Fget_buffer_create
|
||||
(make_formatted_string (name, " *Minibuf-%"pI"d*", depth));
|
||||
|
||||
/* Although the buffer's name starts with a space, undo should be
|
||||
enabled in it. */
|
||||
|
|
|
@ -520,8 +520,10 @@ dos_set_window_size (int *rows, int *cols)
|
|||
|
||||
/* If the user specified a special video mode for these dimensions,
|
||||
use that mode. */
|
||||
sprintf (video_name, "screen-dimensions-%dx%d", *rows, *cols);
|
||||
video_mode = Fsymbol_value (Fintern_soft (build_string (video_name), Qnil));
|
||||
video_mode
|
||||
= Fsymbol_value (Fintern_soft (make_formatted_string
|
||||
(video_name, "screen-dimensions-%dx%d",
|
||||
*rows, *cols), Qnil));
|
||||
|
||||
if (INTEGERP (video_mode)
|
||||
&& (video_mode_value = XINT (video_mode)) > 0)
|
||||
|
|
|
@ -645,8 +645,7 @@ make_process (Lisp_Object name)
|
|||
{
|
||||
tem = Fget_process (name1);
|
||||
if (NILP (tem)) break;
|
||||
sprintf (suffix, "<%"pMd">", i);
|
||||
name1 = concat2 (name, build_string (suffix));
|
||||
name1 = concat2 (name, make_formatted_string (suffix, "<%"pMd">", i));
|
||||
}
|
||||
name = name1;
|
||||
p->name = name;
|
||||
|
|
|
@ -9866,8 +9866,8 @@ ensure_echo_area_buffers (void)
|
|||
int j;
|
||||
|
||||
old_buffer = echo_buffer[i];
|
||||
sprintf (name, " *Echo Area %d*", i);
|
||||
echo_buffer[i] = Fget_buffer_create (build_string (name));
|
||||
echo_buffer[i] = Fget_buffer_create
|
||||
(make_formatted_string (name, " *Echo Area %d*", i));
|
||||
BVAR (XBUFFER (echo_buffer[i]), truncate_lines) = Qnil;
|
||||
/* to force word wrap in echo area -
|
||||
it was decided to postpone this*/
|
||||
|
|
|
@ -711,10 +711,12 @@ apply_xft_settings (struct x_display_info *dpyinfo,
|
|||
if (send_event_p)
|
||||
store_config_changed_event (Qfont_render,
|
||||
XCAR (dpyinfo->name_list_element));
|
||||
sprintf (buf, format, oldsettings.aa, oldsettings.hinting,
|
||||
oldsettings.rgba, oldsettings.lcdfilter,
|
||||
oldsettings.hintstyle, oldsettings.dpi);
|
||||
Vxft_settings = build_string (buf);
|
||||
Vxft_settings
|
||||
= make_formatted_string (buf, format,
|
||||
oldsettings.aa, oldsettings.hinting,
|
||||
oldsettings.rgba, oldsettings.lcdfilter,
|
||||
oldsettings.hintstyle, oldsettings.dpi);
|
||||
|
||||
}
|
||||
else
|
||||
FcPatternDestroy (pat);
|
||||
|
|
Loading…
Add table
Reference in a new issue