installcronjob: Solaris grep takes only one -e, use separate greps

The "no crontab" whitelist used multiple -e patterns, but Solaris
/usr/bin/grep honors only a single -e, so a fresh install was
refused there. Use one plain grep per message pattern, which every
grep implementation supports (caught by le_test_installcronjob_no_wipe
on the Solaris CI).
This commit is contained in:
neil 2026-07-12 22:28:56 +08:00
parent d621d6952a
commit 17964cfd6e

View file

@ -7011,9 +7011,11 @@ installcronjob() {
#failure must abort: piping an incomplete list back into 'crontab -'
#would wipe the user's existing cron jobs (issue 3079)
_cron_list_err="$($_CRONTAB -l 2>&1 >/dev/null)"
#multiple -e instead of \| : BRE alternation is a GNU extension that
#BSD grep does not support
if echo "$_cron_list_err" | grep -i -e "no crontab" -e "no fcrontab" -e "can't open" >/dev/null; then
#separate greps: BRE alternation \| is a GNU extension and Solaris
#grep takes only a single -e pattern
if echo "$_cron_list_err" | grep -i "no crontab" >/dev/null ||
echo "$_cron_list_err" | grep -i "no fcrontab" >/dev/null ||
echo "$_cron_list_err" | grep -i "can't open" >/dev/null; then
_cron_entries=""
else
_err "Can not list the current cron jobs: $_cron_list_err"