X-Git-Url: http://git.onelab.eu/?p=util-vserver.git;a=blobdiff_plain;f=src%2Ffiletime.c;fp=src%2Ffiletime.c;h=39d9b03e98aaa9179826b3473cd5d96239e18473;hp=59531d1ac6ea3c60f9b04d4861afe805e3999029;hb=8cf13bb177d92c93eb73dc8939777150536c2d00;hpb=6bf3f95de36c804c97716b2d0bdf10680c559044 diff --git a/src/filetime.c b/src/filetime.c index 59531d1..39d9b03 100644 --- a/src/filetime.c +++ b/src/filetime.c @@ -1,4 +1,4 @@ -// $Id: filetime.c,v 1.1 2003/09/29 22:01:57 ensc Exp $ +// $Id: filetime.c,v 1.4 2005/03/24 12:44:17 ensc Exp $ // Copyright (C) 2003 Enrico Scholz // based on filetime.cc by Jacques Gelinas @@ -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'; + + Vwrite(1, buf, l); + return EXIT_SUCCESS; + } + + return EXIT_FAILURE; }