(tv_hi->tv_usec - tv_lo->tv_usec)/1.0e6);
}
-static void carefully_write(int fd, const void *buf, size_t sz)
-{
- const unsigned char *p = buf;
- ssize_t n;
-
- if (fd < 0) return;
- while (sz) {
- n = write(fd, p, sz);
- if (n < 0) {
- if (errno == EINTR) continue;
- bail_syserr(errno, "failed to write to output file");
- }
- if (!n) bail("unexpected short write to output file");
- p += n; sz -= n;
- }
-}
-
-static void open_file_on_demand(const char *file, FILE **fp_inout,
- const char *what)
-{
- FILE *fp;
-
- if (!*fp_inout) {
- fp = fopen(file, "w");
- if (!fp)
- bail_syserr(errno, "failed to open %s file `%s'", what, file);
- fprintf(fp, "## %s\n\n", what);
- *fp_inout = fp;
- }
-}
-
-static void check_write(FILE *fp, const char *what)
-{
- fflush(fp);
- if (ferror(fp)) bail_syserr(errno, "error writing %s file", what);
-}
-
-static void carefully_fclose(FILE *fp, const char *what)
-{
- if (fp && (ferror(fp) || fclose(fp)))
- bail_syserr(errno, "error writing %s file", what);
-}
-
#define DEFVEC(vtype, etype) \
typedef struct { etype *v; size_t n, sz; } vtype
#define VEC_INIT { 0, 0, 0 }
}
}
+void carefully_write(int fd, const void *buf, size_t sz)
+{
+ const unsigned char *p = buf;
+ ssize_t n;
+
+ if (fd < 0) return;
+ while (sz) {
+ n = write(fd, p, sz);
+ if (n < 0) {
+ if (errno == EINTR) continue;
+ bail_syserr(errno, "failed to write to output file");
+ }
+ if (!n) bail("unexpected short write to output file");
+ p += n; sz -= n;
+ }
+}
+
+void open_file_on_demand(const char *file, FILE **fp_inout, const char *what)
+{
+ FILE *fp;
+
+ if (!*fp_inout) {
+ fp = fopen(file, "w");
+ if (!fp) bail_syserr(errno, "failed to open %s file `%s'", what, file);
+ fprintf(fp, "## %s\n\n", what);
+ *fp_inout = fp;
+ }
+}
+
+void check_write(FILE *fp, const char *what)
+{
+ fflush(fp);
+ if (ferror(fp)) bail_syserr(errno, "error writing %s file", what);
+}
+
+void carefully_fclose(FILE *fp, const char *what)
+{
+ if (fp && (ferror(fp) || fclose(fp)))
+ bail_syserr(errno, "error writing %s file", what);
+}
+
void store_filename(char *buf, ident id)
{
switch (id_kind(id)) {
extern void sit(double t);
+extern void carefully_write(int fd, const void *buf, size_t sz);
+extern void open_file_on_demand(const char *file, FILE **fp_inout,
+ const char *what);
+extern void check_write(FILE *fp, const char *what);
+extern void carefully_fclose(FILE *fp, const char *what);
+
enum { RAW, IFO, VOB, BUP };
typedef uint_least32_t ident;