give up, GNU libc will never be compatible with UNIX libc

This commit is contained in:
albert 2002-10-10 20:44:35 +00:00
parent 2b7da1632b
commit 62b707978e
4 changed files with 3 additions and 42 deletions

View File

@ -230,28 +230,6 @@ extern int simple_escape_str(char *dst, const char *src, size_t n);
/********************* UNDECIDED GLOBALS **************/ /********************* UNDECIDED GLOBALS **************/
/*
* fputs(3) should (as in "good behavior") return the number of
* characters written as it does on Digital Unix, AIX, Irix, and SunOS.
* I'll assume glibc 2.1 has this extremely useful feature.
*
* Note: code ported from other systems will keep breaking until
* the library is updated. You should patch the library itself if
* at all possible. (for example, distributers who build libc from
* source with automatic patching as part of the build process)
*/
#if defined __GLIBC__ && ((__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) || __GLIBC__ > 2)
#warning Hopefully fputs(3) has been modernized...
#else
#define EMULATE_FPUTS
#define fputs something_to_avoid_libc_troubles
static inline int fputs(const char *s, FILE *fp){
return fwrite(s,1,strlen(s),fp);
/* return fprintf(fp, "%s", s); */
}
#endif
/* output.c */ /* output.c */
extern void show_one_proc(proc_t* p); extern void show_one_proc(proc_t* p);
extern void print_format_specifiers(void); extern void print_format_specifiers(void);

View File

@ -351,9 +351,6 @@ void reset_global(void){
/*********** spew variables ***********/ /*********** spew variables ***********/
void self_info(void){ void self_info(void){
#ifndef EMULATE_FPUTS
int count;
#endif
fprintf(stderr, fprintf(stderr,
"BSD j %s\n" "BSD j %s\n"
"BSD l %s\n" "BSD l %s\n"
@ -387,20 +384,6 @@ void self_info(void){
__GNU_LIBRARY__, __GLIBC__, __GLIBC_MINOR__ __GNU_LIBRARY__, __GLIBC__, __GLIBC_MINOR__
); );
#ifdef EMULATE_FPUTS
fprintf(stderr, "libc assumed lame, using fprintf to emulate fputs.\n\n");
#else
fprintf(stderr, "fputs(\"");
count = fputs("123456789", stderr);
fprintf(stderr, "\", stderr) gives %d, which is %s.\n",
count, count==9?"good":"BAD!\nAdjust ps/common.h or libc, then recompile"
);
if(count!=9){
fprintf(stderr, "(procps includes a libc patch called glibc.patch)\n");
}
fprintf(stderr, "\n");
#endif
fprintf(stderr, fprintf(stderr,
"header_gap=%d lines_to_next_header=%d\n" "header_gap=%d lines_to_next_header=%d\n"
"screen_cols=%d screen_rows=%d\n" "screen_cols=%d screen_rows=%d\n"

View File

@ -1709,7 +1709,7 @@ void show_one_proc(proc_t* p){
leftpad = 0; leftpad = 0;
break; break;
default: default:
fputs("bad alignment code\n", stderr); fprintf(stderr, "bad alignment code\n");
break; break;
} }
/* At this point: /* At this point:

View File

@ -864,7 +864,7 @@ static const char *parse_gnu_option(void){
case_help: case_help:
trace("--help\n"); trace("--help\n");
exclusive("--help"); exclusive("--help");
fputs(help_message, stderr); fwrite(help_message,1,strlen(help_message),stderr);
exit(0); exit(0);
return NULL; return NULL;
case_info: case_info:
@ -1131,7 +1131,7 @@ total_failure:
reset_parser(); reset_parser();
if(personality & PER_FORCE_BSD) fprintf(stderr, "ERROR: %s\n", err2); if(personality & PER_FORCE_BSD) fprintf(stderr, "ERROR: %s\n", err2);
else fprintf(stderr, "ERROR: %s\n", err); else fprintf(stderr, "ERROR: %s\n", err);
fputs(help_message, stderr); fwrite(help_message,1,strlen(help_message),stderr);
exit(1); exit(1);
/* return 1; */ /* useless */ /* return 1; */ /* useless */
} }