| From: Andrew Cagney <andrew.cag...@gmail.com> | > Did you check that the very early calls to lsw_abort can safely be | > replaced by passerts? These are the ones in plutomain.c. (I have | > not.) Logging may not be initialized.
What I meant: they were JUST calls to abort. In FreeS/WAN. | Only in the sense that I ran the testsuite. That will never cause those asserts to fire: passert(open("/dev/null", O_RDONLY) == 0); passert(dup2(0, 1) == 1); passert(log_to_stderr || dup2(0, 2) == 2); Those only fire when something is seriously wrong with the environment. | final_breath = TRUE; s/final_breath/dying_breath/ ================ passert is modelled on assert(3). It could be a macro that does nothing (not even evaluating its argument). So depending on a side-effect of argument evaluation is a no-no. I'd say that the original FreeS/WAN code is better than all its successors: if (open("/dev/null", O_RDONLY) != 0) abort(); if (dup2(0, 1) != 1) abort(); if (!log_to_stderr && dup2(0, 2) != 2) abort(); Since these cannot fail in a normal environment, it is good to not depend on much of the environment when failure is detected (passert does, lsw_abort does, abort does not). _______________________________________________ Swan-dev mailing list Swan-dev@lists.libreswan.org https://lists.libreswan.org/mailman/listinfo/swan-dev