okay, i've attached take two, which moves the signal stuff into portability instead...
works for me on macOS and Linux. On Mon, Jun 10, 2019 at 3:33 PM Rob Landley <r...@landley.net> wrote: > > On 6/10/19 3:56 PM, enh wrote: > > thanks. > > > > much lower priority for me (and i'm volunteering to fix it), but... > > what should i do about the mac here? > > Sigh, sounds like signames[] needs to move to portability.c. > > > #if around the > > linux-only/mac-only signals (SIGPOLL is linux-only, SIGEMT is > > mac-only, for example). > > Remember that horrible trick the kernel guys used to turn an #ifdef into a > macro > returning 0 or 1? Maybe that can be used to provide a default value of 0 (in > which case it wouldn't need to be moved to portability.c). > > Dig dig... it's include/linux/kconfig.h: > > #define __ARG_PLACEHOLDER_1 0, > #define __take_second_arg(__ignored, val, ...) val > /* > * Getting something that works in C and CPP for an arg that may or may > * not be defined is tricky. Here, if we have "#define CONFIG_BOOGER 1" > * we match on the placeholder define, insert the "0," for arg1 and generate > * the triplet (0, 1, 0). Then the last step cherry picks the 2nd arg (a > one). > * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when > * the last step cherry picks the 2nd arg, we get a zero. > */ > #define __is_defined(x) ___is_defined(x) > #define ___is_defined(val) > ____is_defined(__ARG_PLACEHOLDER_##val) > #define ____is_defined(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0) > > #define IS_BUILTIN(option) __is_defined(option) > > That's ugly, #if __APPLE__ sections in portability.c may be less ugly... > > > also -- something i didn't know until just now -- it turns out that > > the mac doesn't have real-time signals. > > Well of course. > > > i've attached a patch, but it > > adds #ifs to lib.c which doesn't currently have them, so i don't know > > if you'd prefer me to move those bits to portability.c? > > If we can do it without #ifs it can stay where it is. If we need #ifs, they > should go in portability.c. > > > (i also didn't > > know whether you'd prefer big "linux" vs "macOS" #ifs or per-constant > > #ifs, but assumed the former given the complaints i've heard about GNU > > code...) > > You assumed correctly, fewer #ifs is better. > > Rob
0001-Move-sig_to_num-and-num_to_sig-into-portability.c.patch
Description: Binary data
_______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net