Hi David,

David Gwynne wrote on Tue, Apr 03, 2018 at 02:01:33PM +1000:

> i landed on this manpage and got confused cos it looked different
> to the rest of them.

Note that the style of having multiple synopses in multiple sections
of a page is used in more than one page - though admittedly in few:

 * openssl(1)
 * ifconfig(8)
 * bus_dma(9)
 * kern(9)
 * pmap(9)
 * uvm(9)

In general, i don't like splitting the SYNOPSIS in this way much
because until a few years ago, OpenBSD was the only operating system
supporting it.  Now, all systems using mandoc support it, but groff
still doesn't, so it is still non-portable.  Besides, the syntax

  .nr nS 1

(as described in roff(7)) is exceedingly ugly and non-obvious,
originally an OpenBSD-specific hack.  So if we can reduce the usage
of this feature, i'm generally in favour, even though i don't have
much hope that openssl(1) and ifconfig(8) can survive without it.

> this shuffles it a bit to make it less different.
> the main change is to move the function prototypes up to the synopsis.

Sure, in the case at hand, that may be less surprising: The page is
short and the SYNOPSIS is only split into two parts.

> the other, less important change is to replace some headers with
> subheaders.

I know that jmc@ does not consider the difference between headers
and subheaders very important, in particular when splitting a large
DESCRIPTION into multiple parts.  I'm often a bit more in favour
of using subheaders than he is.  In this case, i like subheaders
better than separate sections, in particular since the page is short
enough such that the subsections won't be of excessive length.

> ok?

OK schwarze@
  Ingo


> Index: autoconf.9
> ===================================================================
> RCS file: /cvs/src/share/man/man9/autoconf.9,v
> retrieving revision 1.16
> diff -u -p -r1.16 autoconf.9
> --- autoconf.9        11 Dec 2015 16:07:02 -0000      1.16
> +++ autoconf.9        3 Apr 2018 03:58:20 -0000
> @@ -41,6 +41,21 @@
>  .Sh SYNOPSIS
>  .In sys/param.h
>  .In sys/device.h
> +.Ft "void *"
> +.Fn config_search "cfmatch_t func" "struct device *parent" "void *aux"
> +.Ft "void *"
> +.Fn config_rootsearch "cfmatch_t func" "char *rootname" "void *aux"
> +.Ft "struct device *"
> +.Fo config_found_sm
> +.Fa "struct device *parent"
> +.Fa "void *aux"
> +.Fa "cfprint_t print"
> +.Fa "cfmatch_t submatch"
> +.Fc
> +.Ft "struct device *"
> +.Fn config_found "struct device *parent" "void *aux" "cfprint_t print"
> +.Ft "struct device *"
> +.Fn config_rootfound "char *rootname" "void *aux"
>  .Sh DESCRIPTION
>  Autoconfiguration is the process of matching hardware devices with an
>  appropriate device driver.
> @@ -77,14 +92,7 @@ ends with a unit number.
>  The unit number identifies an instance of the driver.
>  Device data structures are allocated dynamically during autoconfiguration,
>  giving a unique address for each instance.
> -.Sh INDIRECT CONFIGURATION
> -.nr nS 1
> -.Ft "void *"
> -.Fn config_search "cfmatch_t func" "struct device *parent" "void *aux"
> -.Ft "void *"
> -.Fn config_rootsearch "cfmatch_t func" "char *rootname" "void *aux"
> -.nr nS 0
> -.Pp
> +.Ss Indirect Configuration
>  The
>  .Fn config_search
>  function performs indirect configuration of physical devices by iterating
> @@ -142,17 +150,7 @@ itself.
>  Note that this function is designed so that it can be used to apply an
>  arbitrary function to all potential children.
>  In this case callers may choose to ignore the return value.
> -.Sh DIRECT CONFIGURATION
> -.nr nS 1
> -.Ft "struct device *"
> -.Fn config_found_sm "struct device *parent" "void *aux" "cfprint_t print" \
> -                    "cfmatch_t submatch"
> -.Ft "struct device *"
> -.Fn config_found "struct device *parent" "void *aux" "cfprint_t print"
> -.Ft "struct device *"
> -.Fn config_rootfound "char *rootname" "void *aux"
> -.nr nS 0
> -.Pp
> +.Ss Direct Configuration
>  The
>  .Fn config_found_sm
>  function performs direct configuration on a physical device.

Reply via email to