Package: libc6 Version: 2.7-6 Severity: minor I used the following program to probe the behaviour of strftime: <file src="strftime.c">
#include <time.h> #include <stdio.h> const int bufsize = 4096; int main(int count, char *args[]) { char buf[bufsize]; time_t now = time(NULL); struct tm rom, *when = localtime_r(&now, &rom); int i = 1; if (when == 0) return 1; while (i < count) { size_t len = strftime(buf, bufsize, args[i++], when); if (len) puts(buf); } return 0; } </file> (I wanted to know what modifiers it supported to the various format specifiers; I could only see E and O mentioned in either POSIX or glibc's own manual page, but there are obvious uses for field widths on %A and %B, for example, and systematic support for '0' and ' ' would enable a simplification of the spec (e.g. we'd only need one of H, k), so I was pleased to find field widths supported and curious to see what, if anything else, is.) I found that printf's '#', '-' and '0' modifiers are honoured (but '+' and ' ' aren't). These don't really make sense, aside from "%0l" (ell) and "%0k" - and even these are mere aliases fo "%I" and "%H", so not actually useful. This is harmless. However, when I tried the malformed format string "|%20#%|" it emitted | %20#%| in which it's converted %20# to a string of width 20 (thanks to the field width), then decided not to treat it as a format specifier after all, so used %20# as the "content" right-justified within those 20 characters. For contrast, snprintf simply emitted the format specifier verbatim - as I expected, given that this is how invalid format specifiers are generally handled by both functions. This behaviour is inconsistent with the general handling of invalid format specifiers, although it probably isn't strictly a bug - I imagine the spec says the behaviour on undefined format specifiers is undefined. However, it does suggest some confusion in the implementation, so seems worth reporting upstream. It's not important or urgent, though ! -- System Information: Debian Release: lenny/sid APT prefers testing APT policy: (500, 'testing'), (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.22-3-686 (SMP w/2 CPU cores) Locale: LANG=en_GB.ISO-8859-15, LC_CTYPE=en_GB.ISO-8859-15 (charmap=ISO-8859-15) Shell: /bin/sh linked to /bin/bash Versions of packages libc6 depends on: ii libgcc1 1:4.3-20080116-1 GCC support library libc6 recommends no packages. -- debconf information: glibc/restart-failed: glibc/restart-services: -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]