X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Ftools.c;h=b78702d03a6d1ff26df2a1d412f3bb2965d40b67;hp=dc42ae47ac427fdc46065d0262c7386738aadb54;hb=04b63db616a482d6ed0f51a3ede8001415884bab;hpb=09d5cd70d7e8105a003ed9583eadb077de014f3b diff --git a/tools/tools.c b/tools/tools.c index dc42ae47..b78702d0 100644 --- a/tools/tools.c +++ b/tools/tools.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -38,7 +39,7 @@ char *run_with_timeout(const void *ctx, const char *cmd, int p[2]; struct rbuf in; int status, ms; - struct timespec start; + struct timeabs start; *ok = false; if (pipe(p) != 0) @@ -70,7 +71,7 @@ char *run_with_timeout(const void *ctx, const char *cmd, signal(SIGALRM, killme); itim.it_interval.tv_sec = itim.it_interval.tv_usec = 0; - itim.it_value = timespec_to_timeval(time_from_msec(*timeout_ms)); + itim.it_value = timespec_to_timeval(time_from_msec(*timeout_ms).ts); setitimer(ITIMER_REAL, &itim, NULL); status = system(cmd); @@ -89,7 +90,7 @@ char *run_with_timeout(const void *ctx, const char *cmd, if (waitpid(pid, &status, 0) != pid) err(1, "Failed to wait for child"); - ms = time_to_msec(time_sub(time_now(), start)); + ms = time_to_msec(time_between(time_now(), start)); if (ms > *timeout_ms) *timeout_ms = 0; else @@ -218,7 +219,6 @@ char *temp_file(const void *ctx, const char *extension, const char *srcname) bool move_file(const char *oldname, const char *newname) { char *contents; - size_t size; int fd; bool ret; @@ -233,7 +233,7 @@ bool move_file(const char *oldname, const char *newname) } /* Try copy and delete: not atomic! */ - contents = tal_grab_file(NULL, oldname, &size); + contents = grab_file(NULL, oldname); if (!contents) { if (tools_verbose) printf("read failed: %s\n", strerror(errno)); @@ -248,7 +248,7 @@ bool move_file(const char *oldname, const char *newname) goto free; } - ret = write_all(fd, contents, size); + ret = write_all(fd, contents, tal_count(contents)-1); if (close(fd) != 0) ret = false; @@ -272,23 +272,3 @@ void *do_tal_realloc(void *p, size_t size) tal_resize((char **)&p, size); return p; } - -void *tal_grab_file(const void *ctx, const char *filename, size_t *size) -{ - struct rbuf rbuf; - char *buf = tal_arr(ctx, char, 0); - - if (!rbuf_open(&rbuf, filename, buf, 0)) - return tal_free(buf); - - if (!rbuf_fill_all(&rbuf, do_tal_realloc) && errno) - rbuf.buf = tal_free(rbuf.buf); - else { - rbuf.buf[rbuf.len] = '\0'; - if (size) - *size = rbuf.len; - } - close(rbuf.fd); - - return rbuf.buf; -}