On 12/10/2013 22:05, Jorge Almeida wrote:

I'm really confused: I have
        (i) a TAI-10 system clock, AND
        (ii) a right timezone

 Ah, sorry, I misunderstood. So you have the right/ zones, and I guess
your TZ is configured to use them ?

 Then I'm not sure. Everything you dietcompile will choke on your TZ,
but lying to skalibs about your timezone is really dirty and won't work
in your case.

I think your best bet is to try and make skalibs work with musl: I
managed to do it and you're quite close. musl will correctly interpret,
for instance, "TZ=:right/Europe/Lisbon".


An emergency is when I need all the help I can get, in particular a
shell with history and tab completion, and colors. ash just doesn't cut
it.

 I understand.


  Does the problem go away if you compile with -D_POSIX_SOURCE ? That
could be an easy workaround.

Nope.

 Weird.
 The <time.h> header in musl contains this piece of code:

#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
 || defined(_BSD_SOURCE)
#define __NEED_struct_timespec
#define __NEED_clockid_t
#define __NEED_timer_t
#define __NEED_pid_t
#define __NEED_locale_t
#endif

#include <bits/alltypes.h>

 and <bits/alltypes.h> defines struct timespec iff __NEED_struct_timespec
is defined. Also, later on, under the same conditions, CLOCK_REALTIME
gets defined.
 (I'm looking at musl-0.9.14 btw.)
 So it definitely should be working here; I'm suspecting that something in
your gcc specs, or flags, or whatever happens before the header inclusion,
is removing all the needed _FOOBAR_SOURCE.

 Can you browse your musl headers to try and find what's wrong ? In particular
look at the <features.h> header; also experiment with musl-gcc -v to see the
exact compilation lines. I can't help you much right now, because I don't have
access to a native musl system, and I'm off and on tonight. All I can say is
Works For Me (tm), which isn't helpful.

 Also, until I release the new execline version, changing the
    if (argc1 + 1 == argc) df = 0 ;
line in pipeline.c, replacing it with
    if (argc1 + 1 == argc) strerr_dief1x(100, "empty remainder") ;
will fix the bug.
 (I was trying to be smart and allow empty remainders, optimizing away a
potential doublefork in that case, which makes sense in foreground; but
it does not make sense in pipeline.)

 Good luck,

--
 Laurent

Reply via email to