maximilian attems
2011-Jun-04 07:15 UTC
[klibc] [PATCH] [SHELL] Fix klibc DEBUG compilation v2
dash didn't compile in DEBUG mode against klibc for all long time. Now it only fails at link stage for not having setlinebuf(3) and freopen(3). Fixes: usr/dash/show.o: In function `opentrace': show.c:(.text+0x36): undefined reference to `freopen' show.c:(.text+0x86): undefined reference to `setlinebuf' Skip setlinebuf and use fclose/fopen inside SMALL. Signed-off-by: maximilian attems <max at stro.at> --- src/show.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/src/show.c b/src/show.c index 14dbef3..81e54ac 100644 --- a/src/show.c +++ b/src/show.c @@ -378,7 +378,11 @@ opentrace(void) scopy("./trace", s); #endif /* not_this_way */ if (tracefile) { +#ifndef SMALL if (!freopen(s, "a", tracefile)) { +#else + if (!(!fclose(tracefile) && (tracefile = fopen(s, "a")))) { +#endif /* SMALL */ fprintf(stderr, "Can't re-open %s\n", s); debug = 0; return; @@ -394,7 +398,9 @@ opentrace(void) if ((flags = fcntl(fileno(tracefile), F_GETFL, 0)) >= 0) fcntl(fileno(tracefile), F_SETFL, flags | O_APPEND); #endif +#ifndef SMALL setlinebuf(tracefile); +#endif /* SMALL */ fputs("\nTracing started.\n", tracefile); } #endif /* DEBUG */ -- 1.7.4.4
On Sat, Jun 04, 2011 at 09:15:49AM +0200, maximilian attems wrote:> dash didn't compile in DEBUG mode against klibc for all long time. > Now it only fails at link stage for not having setlinebuf(3) and > freopen(3). > > Fixes: > > usr/dash/show.o: In function `opentrace': > show.c:(.text+0x36): undefined reference to `freopen' > show.c:(.text+0x86): undefined reference to `setlinebuf' > > Skip setlinebuf and use fclose/fopen inside SMALL. > > Signed-off-by: maximilian attems <max at stro.at>Please change this to use a klibc-specific ifdef instead of everyone that uses SMALL. Thanks, -- Email: Herbert Xu <herbert at gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt