4 static void vwarning(const char *msg,va_list ap) {
5 int err=vfprintf(stderr,msg,ap);
10 void warning(const char *msg,...) {
17 void fatal(const char *msg,...) {
25 uint64_t transfer(int from_fd,const char *from_fn,int to_fd,const char *to_fn) {
27 uint8_t buffer[0x10000];
28 size_t buffer_filled(0);
30 if (buffer_filled==0) {
31 ssize_t got(read(from_fd,buffer+buffer_filled,sizeof(buffer)-buffer_filled));
33 fatal("Error reading %s: %m",from_fn);
37 assert(buffer_filled<=sizeof(buffer));
39 size_t buffer_written(0);
40 while (buffer_written<buffer_filled) {
41 ssize_t got(write(to_fd,buffer+buffer_written,buffer_filled-buffer_written));
43 fatal("Error writing %s: %m",to_fn);
46 assert(buffer_written<=buffer_filled);