bug-groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #62776] [troff] want "style" warning category for self-deceptive in


From: Alejandro Colomar
Subject: [bug #62776] [troff] want "style" warning category for self-deceptive inputs
Date: Mon, 1 May 2023 19:15:06 -0400 (EDT)

Follow-up Comment #13, bug #62776 (project groff):


[comment #12 comment #12:]
> 
> [comment #10 comment #10:]
> [...]
> 
> N.B.  Your text lines are unnecessary long.
> 
>   When deleting lines from output, (one) "sed -e '/<regex>/d' [...]" is
> simpler than (many) "grep -v ... || : ...

I still need the ||: to ignore the exit status of mandoc(1), since I don't
want to fail for messages that I later filter out.  I only want to fail,
if there's any remaining byte in stderr after my filtering takes place;
thus, the last grep ^ >&2.

Regarding the substitution of grep by sed, I don't think there's a clear
win: both lines take the same number of bytes ('//d' vs 'p-v'), and both
commands are equally well known.  Since grep is what I already have, I'll
keep it.

> 
>   Or (simpler) use a file for the regular expressions, "sed -f <file>",
> where the file contains lines with

However, the idea of putting these patterns into a file is an interesting
thing; I could modify it without having to modify the Makefile (which
causes unnecessary rebuilds).  That would also reduce the number of
fork+exec.

> 
> /<regex/d

Since POSIX grep(1) defines -v and -f, I'll do this with grep(1), and then
the files will be simpler, as they'll only have to contain the actual
patterns, with no 'd' command.

> 
> 
> >> 
> > $(_LINT_man_mandoc): $(_MANDIR)/%.lint-man.mandoc.touch: $(MANDIR)/% |
$$(@D)/
> >     $(info LINT (mandoc)    $@)
> >     ! ($(MANDOC) -man $(MANDOCFLAGS) $< 2>&1 \
> >        | $(GREP) -v 'STYLE: lower case character in document title:' \
> >        | $(GREP) -v 'UNSUPP: ignoring macro in table:' \
> >        | $(GREP) -v 'WARNING: cannot parse date, using it verbatim: TH
(date)' \
> >        | $(GREP) -v 'WARNING: empty block: UR' \
> >        | $(GREP) -v 'WARNING: missing date, using "": TH' \
> >        | $(GREP) -v 'WARNING: undefined escape, printing literally: \\\\' \
> >        ||:; \
> >     ) \
> >     | $(GREP) '.' >&2
> >     touch $@
> > 
> > $(_LINT_mdoc_mandoc): $(_MANDIR)/%.lint-mdoc.mandoc.touch: $(MANDIR)/% |
$$(@D)/
> >     $(info LINT (mandoc)    $@)
> >     ! ($(MANDOC) -mdoc $(MANDOCFLAGS) $< 2>&1 \
> >        | $(GREP) -v 'STYLE: operating system explicitly specified: Os ' \
> >        | $(GREP) -v 'WARNING: cross reference to self: Xr ' \
> >        ||:; \
> >     ) \
> >     | $(GREP) '.' >&2
> >     touch $@
> > 
> > 
> > grep(1) is your tool for disabling unwanted diagnostics.  ;)
> 
>   sed(1) is a better tool.

No, grep is even better ;)
But thanks for the idea!


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?62776>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]