* texi2mdoc: Add the -d option to specify the .Dd date, and fall back to
@ 2018-11-13 8:45 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2018-11-13 8:45 UTC (permalink / raw)
To: source
Log Message:
-----------
Add the -d option to specify the .Dd date,
and fall back to the mtime before resorting to the current time.
Patch from Michael Forney <mforney at mforney dot org>
with minimal tweaks by me.
While here, fix the date format, "%F" is wrong for mdoc(7).
Change it to "%B %e, %Y" which isn't perfect due to the
spurious blank before single-digit day numbers, but closer.
Modified Files:
--------------
texi2mdoc:
extern.h
main.c
texi2mdoc.1
util.c
Revision Data
-------------
Index: texi2mdoc.1
===================================================================
RCS file: /home/cvs/mdocml/texi2mdoc/texi2mdoc.1,v
retrieving revision 1.15
retrieving revision 1.16
diff -Ltexi2mdoc.1 -Ltexi2mdoc.1 -u -p -r1.15 -r1.16
--- texi2mdoc.1
+++ texi2mdoc.1
@@ -23,6 +23,7 @@
.Sh SYNOPSIS
.Nm texi2mdoc
.Op Fl C Ar dir
+.Op Fl d Ar date
.Op Fl I Ar dirs
.Op Ar file
.Sh DESCRIPTION
@@ -47,6 +48,17 @@ node-level documents placed within
which must exist.
These are created as
.Pa prefix-NNN.7 .
+.It Fl d Ar date
+Set the output document date in the
+.Ic \&Dd
+macro to
+.Ar date ,
+to be specified in the format
+.Dq Ar Month Day , Year .
+If unspecified,
+.Nm
+uses the file modification date
+or the current date when reading from standard input.
.It Fl I Ar dirs
Colon-separated directories to search for
.Li @include
Index: main.c
===================================================================
RCS file: /home/cvs/mdocml/texi2mdoc/main.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -Lmain.c -Lmain.c -u -p -r1.71 -r1.72
--- main.c
+++ main.c
@@ -17,6 +17,9 @@
#if defined(__linux__) || defined(__MINT__)
# define _GNU_SOURCE /* memmem */
#endif
+
+#include <sys/stat.h>
+
#include <assert.h>
#include <ctype.h>
#include <getopt.h>
@@ -26,6 +29,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "extern.h"
@@ -2341,9 +2345,12 @@ int
main(int argc, char *argv[])
{
struct texi texi;
- int c;
+ char date[32];
+ struct stat st;
char *dirpath, *dir, *ccp;
const char *progname, *Idir, *cp;
+ time_t t;
+ int c;
progname = strrchr(argv[0], '/');
if (progname == NULL)
@@ -2357,11 +2364,14 @@ main(int argc, char *argv[])
texi.seenvs = -1;
Idir = NULL;
- while (-1 != (c = getopt(argc, argv, "C:I:")))
+ while (-1 != (c = getopt(argc, argv, "C:d:I:")))
switch (c) {
case ('C'):
texi.chapters = optarg;
break;
+ case ('d'):
+ texi.date = optarg;
+ break;
case ('I'):
Idir = optarg;
break;
@@ -2393,16 +2403,29 @@ main(int argc, char *argv[])
*ccp = '\0';
texi.dirs = parsedirs(&texi, dir, Idir, &texi.dirsz);
free(dirpath);
+ if (NULL == texi.date) {
+ t = stat(argv[0], &st) == 0 ? st.st_mtime : time(NULL);
+ strftime(date, sizeof(date),
+ "%B %e, %Y", localtime(&t));
+ texi.date = date;
+ }
parsefile(&texi, argv[0], 1);
} else {
texi.title = strdup("Unknown Manual");
texi.dirs = parsedirs(&texi, NULL, Idir, &texi.dirsz);
+ if (NULL == texi.date) {
+ t = time(NULL);
+ strftime(date, sizeof(date),
+ "%B %e, %Y", localtime(&t));
+ texi.date = date;
+ }
parsestdin(&texi);
}
texiexit(&texi);
exit(EXIT_SUCCESS);
usage:
- fprintf(stderr, "usage: %s [-Cdir] [-Idirs] [file]\n", progname);
+ fprintf(stderr, "usage: %s [-C dir] [-d date] [-I dirs] [file]\n",
+ progname);
return(EXIT_FAILURE);
}
Index: util.c
===================================================================
RCS file: /home/cvs/mdocml/texi2mdoc/util.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -Lutil.c -Lutil.c -u -p -r1.34 -r1.35
--- util.c
+++ util.c
@@ -25,7 +25,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <time.h>
#include <unistd.h>
#include "extern.h"
@@ -1731,21 +1730,16 @@ texicache(struct texi *p, const char *bu
* We use the title set with @settitle for the `Nd' description
* and the source document filename (the first one as invoked on
* the command line) for the title.
- * The date is set to the current date.
+ * The date is set to the modification time of the input.
*/
void
teximdocopen(struct texi *p, size_t *pos)
{
const char *cp;
- time_t t;
- char date[32];
-
- t = time(NULL);
- strftime(date, sizeof(date), "%F", localtime(&t));
p->seenvs = -1;
teximacroopen(p, "Dd");
- texiputchars(p, date);
+ texiputchars(p, p->date);
teximacroclose(p);
teximacroopen(p, "Dt");
for (cp = p->title; '\0' != *cp; cp++)
Index: extern.h
===================================================================
RCS file: /home/cvs/mdocml/texi2mdoc/extern.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -Lextern.h -Lextern.h -u -p -r1.29 -r1.30
--- extern.h
+++ extern.h
@@ -422,6 +422,7 @@ struct texi {
size_t valstackpos; /* position in valstack */
char *title; /* title of document */
char *subtitle; /* subtitle of document */
+ char *date; /* date of document */
int secoffs; /* see sectioner() */
struct texidex *indexs; /* index entries */
size_t indexsz; /* entries in indexs */
--
To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-11-13 8:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-13 8:45 texi2mdoc: Add the -d option to specify the .Dd date, and fall back to 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).