On Thu, May 07, 2026 at 07:22:13PM +0000, WaitronCharm via Lynx-dev wrote: > Hello, > > I would like to propose the following patch for Lynx 2.9.0:
It seems useful (thanks)
> $ diff lynx2.9.0/src/HTAlert.c.orig lynx2.9.0/src/HTAlert.c
> 62a63,66
> > if (LYFailOnAlert) {
> > alert_occurred = TRUE;
> > }
> >
hmm - most but not all calls to HTAlert are urgent. I see some cases
where you might not want to exit immediately:
src/GridText.c:13908: HTAlert(gettext("Very long lines have been
truncated!"));
src/HTFWriter.c:990: HTAlert(EXECUTION_DISABLED);
src/LYLocal.c:354: HTAlert(gettext("The selected item is not a file or a
directory! Request ignored."));
src/LYLocal.c:676: HTAlert(gettext("There is already a directory with that
name! Request ignored."));
src/LYLocal.c:678: HTAlert(gettext("There is already a file with that
name! Request ignored."));
src/LYMain.c:2438: HTAlert(gettext("persistent cookies state will be
changed in next session only."));
src/LYMainLoop.c:5399: HTAlert(SHIFT_VS_LINEWRAP);
src/LYOptions.c:3399: HTAlert(UA_PLEASE_USE_LYNX);
>
> $ diff lynx2.9.0/src/LYGlobalDefs.h.orig lynx2.9.0/src/LYGlobalDefs.h
> 669a670,671
> > extern BOOLEAN LYFailOnAlert;
> > extern BOOLEAN alert_occurred;
>
> $ diff lynx2.9.0/src/LYMain.c.orig lynx2.9.0/src/LYMain.c
> 731a732,734
> > BOOLEAN LYFailOnAlert = FALSE;
> > BOOLEAN alert_occurred = FALSE;
> >
> 919c922,927
> < exit(code);
> ---
> >
> > if (LYFailOnAlert && alert_occurred) {
> > exit(EXIT_FAILURE);
> > } else {
> > exit(code);
> > }
> 3548a3557,3560
> > PARSE_SET(
> > "fail_on_alert", 4|SET_ARG, LYFailOnAlert,
> > "exit with error code if any alert is written"
> > ),
>
>
> This patch introduces a new command-line option, -fail_on_alert, and a
> corresponding global flag LYFailOnAlert.
>
> The patch modifies HTAlert.c, LYGlobalDefs.h, and LYMain.c to track whether
> 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 EXIT_FAILURE
> regardless of the standard exit code.
>
> 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, for
> example:
>
> 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>&-) > ...
>
> 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.
>
> I believe this is a useful addition for anyone using Lynx in automated
> environments or CI/CD pipelines.
>
>
--
Thomas E. Dickey <[email protected]>
https://invisible-island.net
signature.asc
Description: PGP signature
