=================================================================== RCS file: /cvs/texi2mdoc/main.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -p -r1.71 -r1.72 --- texi2mdoc/main.c 2015/03/19 09:53:35 1.71 +++ texi2mdoc/main.c 2018/11/13 08:45:29 1.72 @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.71 2015/03/19 09:53:35 schwarze Exp $ */ +/* $Id: main.c,v 1.72 2018/11/13 08:45:29 schwarze Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -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); }