2015-03-19 13:58:28 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
Replace partial format with multipliers.
diff --git a/srtsync.c b/srtsync.c index ec1be4f..d026895 100644 --- a/srtsync.c +++ b/srtsync.c @@ -29,11 +29,26 @@ ts2ms(const char *ts) } uint32_t -partial2ms(const char *partial) +hms2ms(char *hms) { - char buffer[] = "00:00:00,000"; - strcpy(buffer + sizeof(buffer) - strlen(partial) - 1, partial); - return ts2ms(buffer); + char *str = hms; + uint32_t ms = 0; + while (*str) { + unsigned long n = strtoul(str, &str, 10); + switch (*str) { + case 'h': case 'H': + n *= 60; + case 'm': case 'M': + n *= 60; + case 's': case 'S': + n *= 1000; + str++; + default: + break; + } + ms += n; + } + return ms; } void @@ -193,7 +208,7 @@ main(int argc, char *argv[]) if (argc < 2) return 1; subs = load_subs(stdin); - i = search(subs, partial2ms(argv[1]), argv + 2, argc - 2); + i = search(subs, hms2ms(argv[1]), argv + 2, argc - 2); if (i >= 0) print_line(stdout, subs, i); free_subs(&subs);