Re: Add -fail_on_alert option to exit with error on alerts

WaitronCharm via Lynx-dev <[email protected]> Wed, 20 May 2026 17:22:19 +0000
Newsgroups gmane.comp.web.lynx.devel
Message-ID <L6V5gaU4t9t2zrd5tea-JU4wGWfdxhhgGYycAbtPF5BHq0h4WY519bW4slgkpxOiR1tdUyb9UO7AprmqR_12myuzcOVs03CkQ4Ph0LXbQzI=@proton.me>
Thanks for the feedback on the proposed -fail_on_alert option.

Following up on our recent thread, I would like to formally suggest integra=
ting this patch into the next official Lynx build.

Having this option natively supported would be highly beneficial for automa=
ted environments, CI/CD pipelines, and scripting, where users need Lynx to =
cleanly exit with an error code the moment an alert is triggered. Merging t=
his upstream would allow the wider community to benefit from more robust er=
ror handling without anyone having to maintain individual forks or local pa=
tches.

Please let me know if any further adjustments, cleanup, or documentation up=
dates are needed to make the patch ready for inclusion in the official sour=
ce.


Thank you.

On Friday, May 8th, 2026 at 1:38 AM, Thomas Dickey <dickey@invisible-island=
.net> wrote:

> On Thu, May 07, 2026 at 07:22:13PM +0000, WaitronCharm via Lynx-dev wrote=
:
> > Hello,
> >=20
> > I would like to propose the following patch for Lynx 2.9.0:
>=20
> It seems useful (thanks)=20
> =20
> > $ diff lynx2.9.0/src/HTAlert.c.orig lynx2.9.0/src/HTAlert.c
> > 62a63,66
> > >     if (LYFailOnAlert) {
> > >         alert_occurred =3D TRUE;
> > >     }
> > >=20
>=20
> hmm - most but not all calls to HTAlert are urgent.  I see some cases
> where you might not want to exit immediately:
>=20
> src/GridText.c:13908:=09=09HTAlert(gettext("Very long lines have been tru=
ncated!"));
> src/HTFWriter.c:990:=09    HTAlert(EXECUTION_DISABLED);
> src/LYLocal.c:354:=09HTAlert(gettext("The selected item is not a file or =
a directory!  Request ignored."));
> src/LYLocal.c:676:=09HTAlert(gettext("There is already a directory with t=
hat name!  Request ignored."));
> src/LYLocal.c:678:=09HTAlert(gettext("There is already a file with that n=
ame!  Request ignored."));
> src/LYMain.c:2438:=09    HTAlert(gettext("persistent cookies state will b=
e changed in next session only."));
> src/LYMainLoop.c:5399:=09HTAlert(SHIFT_VS_LINEWRAP);
> src/LYOptions.c:3399:=09=09    HTAlert(UA_PLEASE_USE_LYNX);
>=20
> >=20
> > $ diff lynx2.9.0/src/LYGlobalDefs.h.orig lynx2.9.0/src/LYGlobalDefs.h
> > 669a670,671
> > >     extern BOOLEAN LYFailOnAlert;
> > >     extern BOOLEAN alert_occurred;
> >=20
> > $ diff lynx2.9.0/src/LYMain.c.orig lynx2.9.0/src/LYMain.c
> > 731a732,734
> > > BOOLEAN LYFailOnAlert =3D FALSE;
> > > BOOLEAN alert_occurred =3D FALSE;
> > >=20
> > 919c922,927
> > <     exit(code);
> > ---
> > >=20
> > >     if (LYFailOnAlert && alert_occurred) {
> > >         exit(EXIT_FAILURE);
> > >     } else {
> > >         exit(code);
> > >     }
> > 3548a3557,3560
> > >    PARSE_SET(
> > >       "fail_on_alert",=094|SET_ARG,=09=09LYFailOnAlert,
> > >       "exit with error code if any alert is written"
> > >    ),
> >=20
> >=20
> > This patch introduces a new command-line option, -fail_on_alert, and a =
corresponding global flag LYFailOnAlert.
> >=20
> > The patch modifies HTAlert.c, LYGlobalDefs.h, and LYMain.c to track whe=
ther an alert has occurred during a session. If the -fail_on_alert flag is =
set and the alert_occurred boolean is triggered, Lynx will now exit with EX=
IT_FAILURE regardless of the standard exit code.
> >=20
> > Currently, detecting if a Lynx session encountered an alert (such as a =
403 Forbidden error) from a script is unnecessarily difficult. Without this=
 patch, one has to resort to convoluted shell piping and stderr scraping, f=
or example:
> >=20
> > set -e; set -o pipefail; ((lynx -stderr -source "$URL" 3>&1 1>&2 2>&3 3=
>&- | (grep -F -x 'Alert!: HTTP/1.0 403 Forbidden' || test $? -eq 1) | cmp =
-s - /dev/null) 3>&1 1>&2 2>&3 3>&-) > ...
> >=20
> > This approach is brittle and hard to maintain. Providing a built-in way=
 to fail on alerts aligns Lynx with similar functional options available in=
 other CLI tools like curl (--fail) and wget.
> >=20
> > I believe this is a useful addition for anyone using Lynx in automated =
environments or CI/CD pipelines.
> >=20
> >=20
>=20
> --=20
> Thomas E. Dickey <[email protected]>
> https://invisible-island.net
>