Mercurial > emacs
diff src/editfns.c @ 53687:4f06a8a0e7a6
For `format', make source and documentation match.
author | Jonathan Yavner <jyavner@member.fsf.org> |
---|---|
date | Sat, 24 Jan 2004 17:39:47 +0000 |
parents | 41ceb9298a4e |
children | a3fe35a8b56b |
line wrap: on
line diff
--- a/src/editfns.c Sat Jan 24 17:00:21 2004 +0000 +++ b/src/editfns.c Sat Jan 24 17:39:47 2004 +0000 @@ -3193,6 +3193,10 @@ The argument used for %d, %o, %x, %e, %f, %g or %c must be a number. Use %% to put a single % into the output. +The basic structure of a %-sequence is + % <flags> <width> <precision> character +where flags is [- #0]+, width is [0-9]+, and precision is .[0-9]+ + usage: (format STRING &rest OBJECTS) */) (nargs, args) int nargs; @@ -3300,7 +3304,7 @@ where - flags ::= [#-* 0]+ + flags ::= [- #0]+ field-width ::= [0-9]+ precision ::= '.' [0-9]* @@ -3312,14 +3316,7 @@ digits to print after the '.' for floats, or the max. number of chars to print from a string. */ - /* NOTE the handling of specifiers here differs in some ways - from the libc model. There are bugs in this code that lead - to incorrect formatting when flags recognized by C but - neither parsed nor rejected here are used. Further - revisions will be made soon. */ - - /* incorrect list of flags to skip; will be fixed */ - while (index ("-*# 0", *format)) + while (index ("-0# ", *format)) ++format; if (*format >= '0' && *format <= '9') @@ -3403,7 +3400,7 @@ if (*format == 'c') { if (! SINGLE_BYTE_CHAR_P (XINT (args[n])) - /* Note: No one can remeber why we have to treat + /* Note: No one can remember why we have to treat the character 0 as a multibyte character here. But, until it causes a real problem, let's don't change it. */ @@ -3494,17 +3491,19 @@ discarded[format - format_start] = 1; format++; - /* Process a numeric arg and skip it. */ - /* NOTE atoi is the wrong thing to use here; will be fixed */ + while (index("-0# ", *format)) + { + if (*format == '-') + { + negative = 1; + } + discarded[format - format_start] = 1; + ++format; + } + minlen = atoi (format); - if (minlen < 0) - minlen = - minlen, negative = 1; - - /* NOTE the parsing here is not consistent with the first - pass, and neither attempt is what we want to do. Will be - fixed. */ - while ((*format >= '0' && *format <= '9') - || *format == '-' || *format == ' ' || *format == '.') + + while ((*format >= '0' && *format <= '9') || *format == '.') { discarded[format - format_start] = 1; format++;