diff options
Diffstat (limited to 'app-editors/emacs-cvs/files/emacs-cvs-format-int.patch')
-rw-r--r-- | app-editors/emacs-cvs/files/emacs-cvs-format-int.patch | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/app-editors/emacs-cvs/files/emacs-cvs-format-int.patch b/app-editors/emacs-cvs/files/emacs-cvs-format-int.patch deleted file mode 100644 index 851bcb91f4d9..000000000000 --- a/app-editors/emacs-cvs/files/emacs-cvs-format-int.patch +++ /dev/null @@ -1,79 +0,0 @@ -2007-11-15 Andreas Schwab <schwab@suse.de> - - * editfns.c (Fformat): Correctly format EMACS_INT values. Also - take precision into account when formatting an integer. - ---- src/editfns.c 8 Aug 2007 07:49:19 -0000 1.439.2.3 -+++ src/editfns.c 16 Nov 2007 00:18:55 -0000 1.439.2.8 -@@ -3543,8 +3543,10 @@ usage: (format STRING &rest OBJECTS) */ - precision[n+1] = 10 * precision[n+1] + *format - '0'; - } - -- if (format - this_format_start + 1 > longest_format) -- longest_format = format - this_format_start + 1; -+ /* Extra +1 for 'l' that we may need to insert into the -+ format. */ -+ if (format - this_format_start + 2 > longest_format) -+ longest_format = format - this_format_start + 2; - - if (format == end) - error ("Format string ends in middle of format specifier"); -@@ -3605,7 +3607,7 @@ usage: (format STRING &rest OBJECTS) */ - && *format != 'i' && *format != 'X' && *format != 'c') - error ("Invalid format operation %%%c", *format); - -- thissize = 30; -+ thissize = 30 + (precision[n] > 0 ? precision[n] : 0); - if (*format == 'c') - { - if (! SINGLE_BYTE_CHAR_P (XINT (args[n])) -@@ -3803,23 +3805,35 @@ usage: (format STRING &rest OBJECTS) */ - format - this_format_start); - this_format[format - this_format_start] = 0; - -- if (INTEGERP (args[n])) -+ if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g') -+ sprintf (p, this_format, XFLOAT_DATA (args[n])); -+ else - { -- if (format[-1] == 'd') -- sprintf (p, this_format, XINT (args[n])); -- /* Don't sign-extend for octal or hex printing. */ -+ if (sizeof (EMACS_INT) > sizeof (int)) -+ { -+ /* Insert 'l' before format spec. */ -+ this_format[format - this_format_start] -+ = this_format[format - this_format_start - 1]; -+ this_format[format - this_format_start - 1] = 'l'; -+ this_format[format - this_format_start + 1] = 0; -+ } -+ -+ if (INTEGERP (args[n])) -+ { -+ if (format[-1] == 'd') -+ sprintf (p, this_format, XINT (args[n])); -+ /* Don't sign-extend for octal or hex printing. */ -+ else -+ sprintf (p, this_format, XUINT (args[n])); -+ } -+ else if (format[-1] == 'd') -+ /* Maybe we should use "%1.0f" instead so it also works -+ for values larger than MAXINT. */ -+ sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n])); - else -- sprintf (p, this_format, XUINT (args[n])); -+ /* Don't sign-extend for octal or hex printing. */ -+ sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n])); - } -- else if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g') -- sprintf (p, this_format, XFLOAT_DATA (args[n])); -- else if (format[-1] == 'd') -- /* Maybe we should use "%1.0f" instead so it also works -- for values larger than MAXINT. */ -- sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n])); -- else -- /* Don't sign-extend for octal or hex printing. */ -- sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n])); - - if (p > buf - && multibyte |