ps: work around libc bug: printf("%.*s\n", MAX_INT, buffer)

This commit is contained in:
Denis Vlasenko 2007-03-28 21:57:12 +00:00
parent b7cffd4bed
commit 450196c119
2 changed files with 6 additions and 4 deletions

View File

@ -253,9 +253,9 @@ void smart_ulltoa5(unsigned long long ul, char buf[5])
buf[4] = '\0'; buf[4] = '\0';
} }
// Convert unsigned integer to ascii, writing into supplied buffer. A // Convert unsigned integer to ascii, writing into supplied buffer.
// truncated result is always null terminated (unless buflen is 0), and // A truncated result contains the first few digits of the result ala strncpy.
// contains the first few digits of the result ala strncpy. // Returns a pointer past last generated digit, does _not_ store NUL.
void BUG_sizeof_unsigned_not_4(void); void BUG_sizeof_unsigned_not_4(void);
char *utoa_to_buf(unsigned n, char *buf, unsigned buflen) char *utoa_to_buf(unsigned n, char *buf, unsigned buflen)
{ {

View File

@ -262,7 +262,9 @@ int ps_main(int argc, char **argv)
parse_o(default_o); parse_o(default_o);
post_process(); post_process();
terminal_width = INT_MAX; /* Was INT_MAX, but some libc's go belly up with printf("%.*s")
* and such large widths */
terminal_width = 30000;
if (isatty(1)) { if (isatty(1)) {
get_terminal_width_height(1, &terminal_width, NULL); get_terminal_width_height(1, &terminal_width, NULL);
terminal_width--; terminal_width--;