From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 723115bb for ; Tue, 13 Nov 2018 03:45:59 -0500 (EST) Date: Tue, 13 Nov 2018 03:45:59 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: texi2mdoc: Add the -d option to specify the .Dd date, and fall back to X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-Id: <381d0eedd42da8ba@fantadrom.bsd.lv> 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 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 + #include #include #include @@ -26,6 +29,7 @@ #include #include #include +#include #include #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 #include #include -#include #include #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