aboutsummaryrefslogtreecommitdiffstats
path: root/timer.c
diff options
context:
space:
mode:
authorEliteTK <tomasz.kramkowski@gmail.com>2014-09-06 18:33:33 +0100
committerEliteTK <tomasz.kramkowski@gmail.com>2014-09-06 18:33:33 +0100
commit0a23128c376540cd139dde19a1f09ae40617e670 (patch)
tree02b07925f74eb6fddf0b8e7a94fbaad4fc028422 /timer.c
parentb60441758f9832a67f60e51a4ee92d16b166b9fb (diff)
downloadc-stuff-0a23128c376540cd139dde19a1f09ae40617e670.tar.gz
c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.tar.xz
c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.zip
Latest 'stuff'
Diffstat (limited to 'timer.c')
-rw-r--r--timer.c81
1 files changed, 45 insertions, 36 deletions
diff --git a/timer.c b/timer.c
index 5ab51c6..153bcb8 100644
--- a/timer.c
+++ b/timer.c
@@ -7,52 +7,61 @@ unsigned long long int get_seconds(char *);
void usage(char *cmd)
{
- printf("Usage:\n"
- " %s <n>{s,m,h,D,M,Y} ...\n", 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);
- }
+ if (argc < 2) {
+ printf("Not enough arguments.\n");
+ usage(argv[0]);
+ exit(1);
+ }
- unsigned long long int total_seconds = 0;
+ unsigned long long int total_seconds = 0;
- int i;
- for (i = 1; i < argc; i++)
- total_seconds += get_seconds(argv[i]);
+ int i;
+ for (i = 1; i < argc; i++)
+ total_seconds += get_seconds(argv[i]);
- printf("Total time: %llu second(s).\n", total_seconds);
+ printf("Total time: %llu second(s).\nStarted at: %d\n", total_seconds, time(NULL));
- return 0;
+ sleep(total_seconds);
+
+ printf("Ended at: %d\n", time(NULL));
+
+ while (1) {
+ printf("Ring!\a\n");
+ sleep(1);
+ }
+
+ 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;
+ 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 = 2629746; break; // 30.4368 days
+ case 'Y': multiplier = 31556940; break; // 365.242 days
+ default : return 0;
+ }
+
+ char value[length + 1];
+ strcpy(value, code);
+
+ value[length - 1] = '\0';
+
+ return strtoull(value, NULL, 10) * multiplier;
}