Orphaned Response
rs at mirror.UUCP
rs at mirror.UUCP
Sat Jan 11 10:59:00 AEST 1986
The formatted date capability of SystemV seemed kind of useful.
The original program seemed kind of clunky, so I re-wrote it.
I also fixed up some typo's and style errors in the manpage.
Enjoy...
/rich $alz
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by mirror!rs on Fri Jan 10 19:57:16 EST 1986
# Contents: mtime.1 mtime.c
echo x - mtime.1
sed 's/^XX//' > "mtime.1" <<'@//E*O*F mtime.1//'
XX.TH MTIME 1 "HFVR"
XX.SH NAME
XXmtime \- to display modification time of files
XX.SH SYNOPSIS
XXmtime { [+format] file}+
XX.SH DESCRIPTION
XX\fIMtime\fR displays the last modification time of all files
XXmentioned as argument. An argument starting with a ``+'' will be
XXtreated to set the display format. The display format is then used for
XXall files following the display format. The display format is similar
XXto that of the first argument of \fIprintf\fR(3S). All output fields
XXare of fixed size (zero padded if necessary). Each field descriptor
XXis preceded by ``%'' and will be replaced in the output by its
XXcorresponding value. A single ``%'' is encoded by ``%%''. All other characters
XXare copied to the output without change. The string is always terminated
XXwith a newline.
XX.sp
XXField descriptors:
XX.nf
XX \fBn\fR insert a new-line character
XX \fBt\fR insert a tab character
XX \fBm\fR month of year \- 01 to 12
XX \fBd\fR day of month \- 01 to 31
XX \fBy\fR last 2 digits of year \- 00 to 99
XX \fBD\fR date as in mm/dd/yy
XX \fBH\fR hour \- 00 to 23
XX \fBM\fR minute \- 00 to 59
XX \fBS\fR second \- 00 to 59
XX \fBT\fR time as HH:MM:SS
XX \fBj\fR day of year \- 001 to 366
XX \fBw\fR day of week \- Sunday = 0
XX \fBa\fR abbreviated weekday \- Sun to Sat
XX \fBh\fR abbreviated month \- Jan to Dec
XX.fi
XX.sp
XXThe default field descriptor is:
XX.nf
XX +%a %h %d %H:%M:%S 19%y
XX.fi
XX.SH EXAMPLES
XX.nf
XX mtime '+DATE:%m/%d/%y%nTIME: %H:%M:%S' file
XXwould have generated as output:
XX DATE: 08/01/76
XX TIME: 14:45:05
XX.fi
XX.SH USEFUL FOR
XX\fBmtime\fR is usefule for adding the last modification date to
XXprintouts of databases etc.
XX.SH SEE ALSO
XX\fIstat\fP(3), \fIdate\fP(1), \fIprintf\fP(3S)
XX.SH DIAGNOSTICS
XXAn error message is displayed if a file cannot be \fIstat\fP(2)'ed.
@//E*O*F mtime.1//
chmod u=rw,g=rw,o=rw mtime.1
echo x - mtime.c
sed 's/^XX//' > "mtime.c" <<'@//E*O*F mtime.c//'
XX/*
XX** Originally written by jchvr at ihlpg, "HFVR VERSION=Thu Mar 21 13:29:02 1985".
XX** Rewritten by Rich $alz (rs at mirror), 10-Jan-86.
XX** "Do with me what you will."
XX*/
XX#include <stdio.h>
XX#include <sys/types.h>
XX#include <sys/stat.h>
XX#include <time.h>
XXprformat(p, T)
XX register char *p;
XX register struct tm *T;
XX{
XX static char DAY[] = "SunMonTueWedThuFriSat";
XX static char MON[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
XX for (p++; *p; p++)
XX if (*p != '%')
XX printf("%c", *p);
XX else
XX switch (*++p) {
XX default:
XX printf("%c", *p);
XX case '\0':
XX break;
XX case 'n':
XX printf("\n");
XX break;
XX case 't':
XX printf("\t");
XX break;
XX case 'm':
XX printf("%.2d", T->tm_mon + 1);
XX break;
XX case 'd':
XX printf("%.2d", T->tm_mday);
XX break;
XX case 'y':
XX printf("%.2d", T->tm_year);
XX break;
XX case 'D':
XX printf("%.2d/%.2d/%.2d",
XX T->tm_mon + 1, T->tm_mday, T->tm_year);
XX break;
XX case 'H':
XX printf("%.2d", T->tm_hour);
XX break;
XX case 'M':
XX printf("%.2d", T->tm_min);
XX break;
XX case 'S':
XX printf("%.2d", T->tm_sec);
XX break;
XX case 'T':
XX printf("%.2d:%.2d:%.2d", T->tm_hour, T->tm_min, T->tm_sec);
XX break;
XX case 'j':
XX printf("%.3d", T->tm_yday + 1);
XX break;
XX case 'w':
XX printf("%.2d", T->tm_wday);
XX break;
XX case 'a':
XX printf("%3.3s", &DAY[T->tm_wday * 3]);
XX break;
XX case 'h':
XX printf("%3.3s", &MON[T->tm_mon * 3]);
XX }
XX printf("\n");
XX}
XX#ifdef MAIN
XX/* ARGSUSED */
XXmain(argc, argv)
XX int argc;
XX register char *argv[];
XX{
XX extern struct tm *localtime();
XX extern int errno;
XX char *format = "+%a %h %d %H:%M:%S 19%y";
XX char *progname;
XX struct stat filbuf;
XX for (progname = *argv; *++argv; ) {
XX if (**argv == '-') {
XX fprintf(stderr, "Usage: %s { [+output-format] filename }*\n",
XX progname);
XX fprintf(stderr, "To display last modification date of file(s)\n");
XX exit(1);
XX }
XX if (**argv == '+')
XX format = *argv;
XX else if (stat(*argv, &filbuf) < 0)
XX fprintf(stderr, "\007%s: error %d. Cannot work on: %s,\n",
XX progname, errno, *argv);
XX else {
XX printf("%s: ", *argv);
XX prformat(format, localtime(&filbuf.st_mtime));
XX }
XX }
XX exit(0);
XX}
XX#endif TEST
@//E*O*F mtime.c//
chmod u=rw,g=rw,o=rw mtime.c
exit 0
--
Rich $alz {mit-eddie, ihnp4!inmet, wjh12, cca, datacube}!mirror!rs
Mirror Systems 2067 Massachusetts Avenue Cambridge, MA, 02140
Telephone: 6,176,610,777
More information about the Comp.sources.unix
mailing list