aboutsummaryrefslogtreecommitdiffstats
path: root/timer.c
diff options
context:
space:
mode:
authorEliteTK <tomasz.kramkowski@gmail.com>2014-07-10 22:36:56 +0100
committerEliteTK <tomasz.kramkowski@gmail.com>2014-07-10 22:36:56 +0100
commitb60441758f9832a67f60e51a4ee92d16b166b9fb (patch)
tree7388adc9743181457834cc5eed95e3c452266ab0 /timer.c
parenta26f2837166f7232d13322e013883ed003d46f27 (diff)
parenta8609ccd901b1942e862c14205026d841e640add (diff)
downloadc-stuff-b60441758f9832a67f60e51a4ee92d16b166b9fb.tar.gz
c-stuff-b60441758f9832a67f60e51a4ee92d16b166b9fb.tar.xz
c-stuff-b60441758f9832a67f60e51a4ee92d16b166b9fb.zip
Merge branch 'master' of https://github.com/EliteTK/c-stuff
Conflicts: xcb.c
Diffstat (limited to 'timer.c')
-rw-r--r--timer.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/timer.c b/timer.c
new file mode 100644
index 0000000..5ab51c6
--- /dev/null
+++ b/timer.c
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+unsigned long long int get_seconds(char *);
+
+void usage(char *cmd)
+{
+ printf("Usage:\n"
+ " %s <n>{s,m,h,D,M,Y} ...\n", cmd);
+}
+
+int main(int argc, char **argv)
+{
+ if (argc < 2) {
+ printf("Not enough arguments.\n");
+ usage(argv[0]);
+ exit(1);
+ }
+
+ unsigned long long int total_seconds = 0;
+
+ int i;
+ for (i = 1; i < argc; i++)
+ total_seconds += get_seconds(argv[i]);
+
+ printf("Total time: %llu second(s).\n", total_seconds);
+
+ return 0;
+}
+
+unsigned long long int get_seconds(char *code)
+{
+ int length = strlen(code);
+ if (length < 2) {
+ return 0;
+ }
+
+ int multiplier = 0;
+ char suffix = code[length - 1];
+ switch (suffix) {
+ case 's': multiplier = 1; break; // 1 second
+ case 'm': multiplier = 60; break; // 1 minute
+ case 'h': multiplier = 3600; break; // 1 hour
+ case 'D': multiplier = 86400; break; // 1 day
+ case 'M': multiplier = 2419200; break; // 28 days
+ case 'Y': multiplier = 31536000; break; // 365 days
+ default : return 0;
+ }
+
+ char value[length + 1];
+ strcpy(value, code);
+
+ value[length - 1] = '\0';
+
+ return strtoull(value, NULL, 10) * multiplier;
+}