X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Ffiletime.c;h=f8b3f54740d247699d5bff27e24e995e3faa1a06;hb=a917f24ef7b003dcef54a3db2644cf9cb4bc2db2;hp=2c67835fb69a06df4aff57a1ddc3abfbf9b0f532;hpb=da691fd4bad5e187b307b7fd86bf5fd61e47c3fc;p=util-vserver.git diff --git a/util-vserver/src/filetime.c b/util-vserver/src/filetime.c index 2c67835..f8b3f54 100644 --- a/util-vserver/src/filetime.c +++ b/util-vserver/src/filetime.c @@ -17,42 +17,88 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "util.h" +#include "lib/internal.h" + +#include #include #include #include #include #include +static void +showHelp(char const *cmd) +{ + WRITE_MSG(1, "Usage: "); + WRITE_STR(1, cmd); + WRITE_MSG(1, + " [--] \n" + "\n" + "Shows the relative age of \n" + "\n" + "Please report bugs to " PACKAGE_BUGREPORT "\n"); + exit(0); +} + +static void +showVersion() +{ + WRITE_MSG(1, + "filetime " VERSION " -- shows age of a file\n" + "This program is part of " PACKAGE_STRING "\n\n" + "Copyright (C) 2004 Enrico Scholz\n" + VERSION_COPYRIGHT_DISCLAIMER); + exit(0); +} + int main (int argc, char *argv[]) { - int ret = -1; - if (argc != 2){ - fprintf (stderr - ,"filetime version %s\n" - "filetime file\n" - "\n" - "Prints the age of a file\n" - "(how long since it was created or modified)\n" - ,VERSION); - }else{ - struct stat st; - if (stat(argv[1],&st)==-1){ - fprintf (stderr,"Can't stat file %s (%s)\n",argv[1] - ,strerror(errno)); - }else{ - time_t now = time(NULL); - time_t since = now - st.st_mtime; - int days = since / (24*60*60); - int today = since % (24*60*60); - int hours = today / (60*60); - int minutes = (today % (60*60)) / 60; - if (days > 0){ - printf ("%d days ",days); - } - printf ("%02d:%02d\n",hours,minutes); - ret = 0; - } - } - return ret; + int idx = 1; + struct stat st; + + if (argc>=2) { + if (strcmp(argv[1], "--help") ==0) showHelp(argv[0]); + if (strcmp(argv[1], "--version")==0) showVersion(); + if (strcmp(argv[1], "--") ==0) ++idx; + } + if (argc 0) { + l = utilvserver_fmt_ulong(buf, days); + buf[l++] = ' '; + #define MSG "days, " + memcpy(buf+l, MSG, sizeof(MSG)-1); l += sizeof(MSG)-1; + } + + if (hours<10) buf[l++] = '0'; + l += utilvserver_fmt_ulong(buf+l, hours); + buf[l++] = ':'; + if (minutes<10) buf[l++] = '0'; + l += utilvserver_fmt_ulong(buf+l, minutes); + buf[l++] = '\n'; + + (void)write(1, buf, l); + return EXIT_SUCCESS; + } + + return EXIT_FAILURE; }