tech@mandoc.bsd.lv
 help / color / mirror / Atom feed
* call for testing: mandoc-1.13.5 release candidate
@ 2017-02-22 11:08 Ingo Schwarze
  2017-02-25 12:34 ` Jan Stary
  0 siblings, 1 reply; 3+ messages in thread
From: Ingo Schwarze @ 2017-02-22 11:08 UTC (permalink / raw)
  To: bapt; +Cc: tech

Hi,

now that mandoc-1.14.1 is out of the door, i'm planning to release
the SQLite3-compat version mandoc-1.13.5 soon.  A release candidate
tarball is available for testing:

  http://mdocml.bsd.lv/snapshots/mdocml-1.13.5rc1.tar.gz

Both reports of successes and failures are welcome!


Mandoc 1.13.5 is a backward compatibility maintenance release
containing all the improvements of 1.14.1 except the switch away
from SQLite3 and except catman(8).  It is intended exclusively for
-stable operating systems using mandoc-based apropos(1) who cannot
change the database format just like that - notably FreeBSD-stable.
Everybody else is encouraged to use the 1.14 branch instead because
the 1.14 database format is smaller and faster, the 1.14 makewhatis(8)
has some functionality improvements that could not be ported back,
and because the new code got better testing coverage, so there is
a lower risk of bugs in 1.14.1.


In a nutshell, the basic testing procedure is:

 $ ./configure
 $ make
 $ make regress

For more details, see the INSTALL file in the tarball.
Note that the regression suite does NOT test the database
functionality at all, so please check manually that the database
functionality you need works for you.  One minimal way to do that
looks like this:

 mkdir Test
 mkdir Test/man1
 mkdir Test/man3
 mkdir Test/man5
 mkdir Test/man7
 mkdir Test/man8
 cp *.1 Test/man1
 cp *.3 Test/man3
 cp *.5 Test/man5
 cp *.7 Test/man7
 cp *.8 Test/man8
 ln -s mandoc makewhatis
 ln -s mandoc man
 ./makewhatis Test

Then set "export MANPATH=Test" and play around with "./man -k".
Of course, it is better to try something similar with your real
manual page tree.


Optionally, you can run

 $ echo BUILD_CGI=1 > configure.local
 $ cp cgi.h.example cgi.h

before ./configure, but it is not very important.
I don't expect that anybody will run a 1.13.5 man.cgi(8) server.

Thank you for your support!
  Ingo
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: call for testing: mandoc-1.13.5 release candidate
  2017-02-22 11:08 call for testing: mandoc-1.13.5 release candidate Ingo Schwarze
@ 2017-02-25 12:34 ` Jan Stary
  2017-03-20 15:13   ` Ingo Schwarze
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Stary @ 2017-02-25 12:34 UTC (permalink / raw)
  To: tech

Hi Ingo,

> now that mandoc-1.14.1 is out of the door, i'm planning to release
> the SQLite3-compat version mandoc-1.13.5 soon.  A release candidate
> tarball is available for testing:
> http://mdocml.bsd.lv/snapshots/mdocml-1.13.5rc1.tar.gz
> Both reports of successes and failures are welcome!

I don't know if this is a bug or intended behaviour.
It certainly is not specific to 1.13.5rc1.

On systems where I don't have root (mostly linuxes),
I often install mdocml as a manpage formatter of choice into $HOME,
and alias 'man' as 'man -m $HOME/man' for some third-party software
which I can only install in $HOME.

Everything works as expected, except man -l

  $ alias man="man -m $HOME/man"
  $ man -l /usr/share/man/man1/ls.1.gz
  man: -m /home/hans/man: Bad argument

  $ unalias man
  $ man -l /usr/share/man/man1/ls.1.gz	# works OK

Should -m be ignored with -l, just like -M path and -s section?

	Jan

--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: call for testing: mandoc-1.13.5 release candidate
  2017-02-25 12:34 ` Jan Stary
@ 2017-03-20 15:13   ` Ingo Schwarze
  0 siblings, 0 replies; 3+ messages in thread
From: Ingo Schwarze @ 2017-03-20 15:13 UTC (permalink / raw)
  To: Jan Stary; +Cc: tech

Hi Jan,

Jan Stary wrote on Sat, Feb 25, 2017 at 01:34:26PM +0100:

> I don't know if this is a bug or intended behaviour.
> It certainly is not specific to 1.13.5rc1.
> 
> On systems where I don't have root (mostly linuxes),
> I often install mdocml as a manpage formatter of choice into $HOME,
> and alias 'man' as 'man -m $HOME/man' for some third-party software
> which I can only install in $HOME.
> 
> Everything works as expected, except man -l
> 
>   $ alias man="man -m $HOME/man"
>   $ man -l /usr/share/man/man1/ls.1.gz
>   man: -m /home/hans/man: Bad argument
> 
>   $ unalias man
>   $ man -l /usr/share/man/man1/ls.1.gz	# works OK
> 
> Should -m be ignored with -l, just like -M path and -s section?

the fact that the traditional mandoc(1) -m input format and man(1) -m
prepend to manpath options conflict with each other is a mess.
That said, input format specification is becoming less and less
relevant, it is almost never needed nowadays.  So i went the
direction you suggested.

Even is someone mistypes -mdoc - like in "mandoc -mdco" - it will
almost always just work, at least for legitimate manual page files.
The only case i can think of where it might fail in surprising ways
is in artificial testing like in

   $ echo .Ox | mandoc -mdco

But even there, the man(7)-style output formatting provides a clue
what went wrong, and if people are still confused, adding -Wall
provides yet another clue:

   $ echo .Ox | mandoc -mdco -Wall
  mandoc: <stdin>:1:2: ERROR: skipping unknown macro: .Ox

That makes it obvious that the wrong macro set was used for parsing.

See below for the commit.

Thanks for the report,
  Ingo


Log Message:
-----------
Silently ignore invalid -m input formats rather than erroring out.
As observed by Jan Stary <hans at stare dot cz>, this is useful such 
that after 'alias man="man -m $HOME/man"', 'man -l foo.1' still works.
Simplify and shorten the description of -m, and use .Ic for macros.

Modified Files:
--------------
    mdocml:
        main.c
        mandoc.1

Revision Data
-------------
Index: mandoc.1
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandoc.1,v
retrieving revision 1.179
retrieving revision 1.180
diff -Lmandoc.1 -Lmandoc.1 -u -p -r1.179 -r1.180
--- mandoc.1
+++ mandoc.1
@@ -26,7 +26,7 @@
 .Op Fl acfhkl
 .Op Fl I Cm os Ns = Ns Ar name
 .Op Fl K Ar encoding
-.Op Fl m Ns Ar format
+.Op Fl mdoc | man
 .Op Fl O Ar option
 .Op Fl T Ar output
 .Op Fl W Ar level
@@ -44,9 +44,7 @@ reads
 .Xr mdoc 7
 or
 .Xr man 7
-text from stdin, implying
-.Fl m Ns Cm andoc ,
-and produces
+text from stdin and produces
 .Fl T Cm locale
 output.
 .Pp
@@ -84,10 +82,10 @@ Override the default operating system
 .Ar name
 for the
 .Xr mdoc 7
-.Sq \&Os
+.Ic \&Os
 and for the
 .Xr man 7
-.Sq \&TH
+.Ic \&TH
 macro.
 .It Fl K Ar encoding
 Specify the input encoding.
@@ -138,13 +136,28 @@ Also reverts any earlier
 and
 .Fl k
 options.
-.It Fl m Ns Ar format
-Input format.
-See
-.Sx Input Formats
-for available formats.
-Defaults to
-.Fl m Ns Cm andoc .
+.It Fl mdoc | man
+With
+.Fl mdoc ,
+all input files are interpreted as
+.Xr mdoc 7 .
+With
+.Fl man ,
+all input files are interpreted as
+.Xr man 7 .
+By default, the input language is automatically detected for each file:
+if the the first macro is
+.Ic \&Dd
+or
+.Ic \&Dt ,
+the
+.Xr mdoc 7
+parser is used; otherwise, the
+.Xr man 7
+parser is used.
+With other arguments,
+.Fl m
+is silently ignored.
 .It Fl O Ar option
 Comma-separated output options.
 .It Fl T Ar output
@@ -209,49 +222,6 @@ also supports the options
 described in the
 .Xr apropos 1
 manual.
-.Ss Input Formats
-The
-.Nm
-utility accepts
-.Xr mdoc 7
-and
-.Xr man 7
-input with
-.Fl m Ns Cm doc
-and
-.Fl m Ns Cm an ,
-respectively.
-The
-.Xr mdoc 7
-format is
-.Em strongly
-recommended;
-.Xr man 7
-should only be used for legacy manuals.
-.Pp
-A third option,
-.Fl m Ns Cm andoc ,
-which is also the default, determines encoding on-the-fly: if the first
-non-comment macro is
-.Sq \&Dd
-or
-.Sq \&Dt ,
-the
-.Xr mdoc 7
-parser is used; otherwise, the
-.Xr man 7
-parser is used.
-.Pp
-If multiple
-files are specified with
-.Fl m Ns Cm andoc ,
-each has its file-type determined this way.
-If multiple files are
-specified and
-.Fl m Ns Cm doc
-or
-.Fl m Ns Cm an
-is specified, then this format is used exclusively.
 .Ss Output Formats
 The
 .Nm
@@ -391,7 +361,7 @@ The string
 for example,
 .Ar ../src/%I.html ,
 is used as a template for linked header files (usually via the
-.Sq \&In
+.Ic \&In
 macro).
 Instances of
 .Sq \&%I
@@ -404,7 +374,7 @@ The string
 for example,
 .Ar ../html%S/%N.%S.html ,
 is used as a template for linked manuals (usually via the
-.Sq \&Xr
+.Ic \&Xr
 macro).
 Instances of
 .Sq \&%N
@@ -450,7 +420,7 @@ If the input format is
 .Xr man 7 ,
 the input is copied to the output, expanding any
 .Xr roff 7
-.Sq so
+.Ic so
 requests.
 The parser is also run, and as usual, the
 .Fl W
Index: main.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/main.c,v
retrieving revision 1.285
retrieving revision 1.286
diff -Lmain.c -Lmain.c -u -p -r1.285 -r1.286
--- main.c
+++ main.c
@@ -93,7 +93,7 @@ static	void		  fs_search(const struct ma
 				const struct manpaths *, int, char**,
 				struct manpage **, size_t *);
 static	int		  koptions(int *, char *);
-static	int		  moptions(int *, char *);
+static	void		  moptions(int *, char *);
 static	void		  mmsg(enum mandocerr, enum mandoclevel,
 				const char *, int, int, const char *);
 static	void		  outdata_alloc(struct curparse *);
@@ -442,8 +442,8 @@ main(int argc, char *argv[])
 	}
 #endif
 
-	if (search.argmode == ARG_FILE && ! moptions(&options, auxpaths))
-		return (int)MANDOCLEVEL_BADARG;
+	if (search.argmode == ARG_FILE)
+		moptions(&options, auxpaths);
 
 	mchars_alloc();
 	curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos);
@@ -919,24 +919,16 @@ koptions(int *options, char *arg)
 	return 1;
 }
 
-static int
+static void
 moptions(int *options, char *arg)
 {
 
 	if (arg == NULL)
-		/* nothing to do */;
-	else if (0 == strcmp(arg, "doc"))
+		return;
+	if (strcmp(arg, "doc") == 0)
 		*options |= MPARSE_MDOC;
-	else if (0 == strcmp(arg, "andoc"))
-		/* nothing to do */;
-	else if (0 == strcmp(arg, "an"))
+	else if (strcmp(arg, "an") == 0)
 		*options |= MPARSE_MAN;
-	else {
-		warnx("-m %s: Bad argument", arg);
-		return 0;
-	}
-
-	return 1;
 }
 
 static int
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-03-20 15:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-22 11:08 call for testing: mandoc-1.13.5 release candidate Ingo Schwarze
2017-02-25 12:34 ` Jan Stary
2017-03-20 15:13   ` Ingo Schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).