FreeBSD Bugzilla – Attachment 234568 Details for
Bug 264560
Give mandoc a -V option to provide volume name
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
diff of mandoc with -V option
mandoc.diff (text/plain), 4.94 KB, created by
Steve Kargl
on 2022-06-08 23:29:29 UTC
(
hide
)
Description:
diff of mandoc with -V option
Filename:
MIME Type:
Creator:
Steve Kargl
Created:
2022-06-08 23:29:29 UTC
Size:
4.94 KB
patch
obsolete
>diff --git a/contrib/mandoc/main.c b/contrib/mandoc/main.c >index 3c0255387c7..2547b6c03f4 100644 >--- a/contrib/mandoc/main.c >+++ b/contrib/mandoc/main.c >@@ -137,6 +137,7 @@ main(int argc, char *argv[]) > char *auxpaths; /* -m: additional manpaths. */ > char *oarg; /* -O: output option string. */ > char *tagarg; /* -O tag: default value. */ >+ char *volume = NULL; /* -V volume title. */ > unsigned char *uc; > size_t ressz; /* Number of elements in res[]. */ > size_t resnsz; /* Number of elements in resn[]. */ >@@ -215,7 +216,11 @@ main(int argc, char *argv[]) > outmode = OUTMODE_DEF; > > while ((c = getopt(argc, argv, >+#ifdef __FreeBSD__ >+ "aC:cfhI:iK:klM:m:O:S:s:T:V:W:w")) != -1) { >+#else > "aC:cfhI:iK:klM:m:O:S:s:T:VW:w")) != -1) { >+#endif > if (c == 'i' && search.argmode == ARG_EXPR) { > optind--; > break; >@@ -320,6 +325,13 @@ main(int argc, char *argv[]) > return mandoc_msg_getrc(); > } > break; >+#ifdef __FreeBSD__ >+ case 'V': >+ volume = strdup(optarg); >+ if (volume == NULL) >+ err(1, "strdup"); >+ break; >+#endif > case 'W': > if (woptions(optarg, &os_e, &outst.wstop) == -1) > return mandoc_msg_getrc(); >@@ -635,7 +647,11 @@ main(int argc, char *argv[]) > } > > mchars_alloc(); >+#ifdef __FreeBSD__ >+ mp = mparse_alloc(options, os_e, os_s, volume); >+#else > mp = mparse_alloc(options, os_e, os_s); >+#endif > > /* > * Remember the original working directory, if possible. >diff --git a/contrib/mandoc/mandoc_parse.h b/contrib/mandoc/mandoc_parse.h >index b8b29dd931c..e989c02093c 100644 >--- a/contrib/mandoc/mandoc_parse.h >+++ b/contrib/mandoc/mandoc_parse.h >@@ -35,7 +35,11 @@ > struct roff_meta; > struct mparse; > >+#ifdef __FreeBSD__ >+struct mparse *mparse_alloc(int, enum mandoc_os, const char *, const char *); >+#else > struct mparse *mparse_alloc(int, enum mandoc_os, const char *); >+#endif > void mparse_copy(const struct mparse *); > void mparse_free(struct mparse *); > int mparse_open(struct mparse *, const char *); >diff --git a/contrib/mandoc/mandocdb.c b/contrib/mandoc/mandocdb.c >index a3360fe44d0..bf4f617d83d 100644 >--- a/contrib/mandoc/mandocdb.c >+++ b/contrib/mandoc/mandocdb.c >@@ -429,7 +429,11 @@ mandocdb(int argc, char *argv[]) > > exitcode = (int)MANDOCLEVEL_OK; > mchars_alloc(); >+#ifdef __FreeBSD__ >+ mp = mparse_alloc(mparse_options, MANDOC_OS_OTHER, NULL, NULL); >+#else > mp = mparse_alloc(mparse_options, MANDOC_OS_OTHER, NULL); >+#endif > mandoc_ohash_init(&mpages, 6, offsetof(struct mpage, inodev)); > mandoc_ohash_init(&mlinks, 6, offsetof(struct mlink, file)); > >diff --git a/contrib/mandoc/mdoc_validate.c b/contrib/mandoc/mdoc_validate.c >index 5c40842b1ae..d39d75f0c9f 100644 >--- a/contrib/mandoc/mdoc_validate.c >+++ b/contrib/mandoc/mdoc_validate.c >@@ -2784,14 +2784,17 @@ post_dt(POST_ARGS) > > free(mdoc->meta.title); > free(mdoc->meta.msec); >- free(mdoc->meta.vol); > free(mdoc->meta.arch); > > mdoc->meta.title = NULL; > mdoc->meta.msec = NULL; >- mdoc->meta.vol = NULL; > mdoc->meta.arch = NULL; > >+#ifndef __FreeBSD__ >+ free(mdoc->meta.vol); >+ mdoc->meta.vol = NULL; >+#endif >+ > /* Mandatory first argument: title. */ > > nn = n->child; >@@ -2827,19 +2830,20 @@ post_dt(POST_ARGS) > mdoc->meta.msec = mandoc_strdup(nn->string); > > /* Infer volume title from section number. */ >- >- cp = mandoc_a2msec(nn->string); >- if (cp == NULL) { >- mandoc_msg(MANDOCERR_MSEC_BAD, >- nn->line, nn->pos, "Dt ... %s", nn->string); >- mdoc->meta.vol = mandoc_strdup(nn->string); >- } else { >- mdoc->meta.vol = mandoc_strdup(cp); >- if (mdoc->filesec != '\0' && >- mdoc->filesec != *nn->string && >- *nn->string >= '1' && *nn->string <= '9') >- mandoc_msg(MANDOCERR_MSEC_FILE, nn->line, nn->pos, >- "*.%c vs Dt ... %c", mdoc->filesec, *nn->string); >+ if (!mdoc->meta.vol) { >+ cp = mandoc_a2msec(nn->string); >+ if (cp == NULL) { >+ mandoc_msg(MANDOCERR_MSEC_BAD, >+ nn->line, nn->pos, "Dt ... %s", nn->string); >+ mdoc->meta.vol = mandoc_strdup(nn->string); >+ } else { >+ mdoc->meta.vol = mandoc_strdup(cp); >+ if (mdoc->filesec != '\0' && >+ mdoc->filesec != *nn->string && >+ *nn->string >= '1' && *nn->string <= '9') >+ mandoc_msg(MANDOCERR_MSEC_FILE, nn->line, nn->pos, >+ "*.%c vs Dt ... %c", mdoc->filesec, *nn->string); >+ } > } > > /* Optional third argument: architecture. */ >diff --git a/contrib/mandoc/read.c b/contrib/mandoc/read.c >index 5b33edbe9ce..c64cbb997ec 100644 >--- a/contrib/mandoc/read.c >+++ b/contrib/mandoc/read.c >@@ -657,7 +657,12 @@ mparse_open(struct mparse *curp, const char *file) > } > > struct mparse * >+#ifdef __FreeBSD__ >+mparse_alloc(int options, enum mandoc_os os_e, const char *os_s, >+ const char *vol) >+#else > mparse_alloc(int options, enum mandoc_os os_e, const char *os_s) >+#endif > { > struct mparse *curp; > >@@ -680,6 +685,10 @@ mparse_alloc(int options, enum mandoc_os os_e, const char *os_s) > } > curp->man->meta.first->tok = TOKEN_NONE; > curp->man->meta.os_e = os_e; >+#ifdef __FreeBSD__ >+ if (vol) >+ curp->man->meta.vol = strdup(vol); >+#endif > tag_alloc(); > return curp; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 264560
: 234568