give up, GNU libc will never be compatible with UNIX libc
This commit is contained in:
parent
2b7da1632b
commit
62b707978e
22
ps/common.h
22
ps/common.h
@ -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);
|
||||||
|
17
ps/global.c
17
ps/global.c
@ -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"
|
||||||
|
@ -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:
|
||||||
|
@ -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 */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user