void send_file_back(char * filename) { int fd = open(filename, O_RDONLY); if (fd < 0) { perror("open file"); exit(1); } if (!copy_fd_all(1, fd)) exit(1); close(fd); }
int copy_and_return_nonemptiness(int tmpfd) { struct stat st; if (!copy_fd_all(tmpfd, 0)) gui_fatal("receiving file from dispVM"); if (fstat(tmpfd, &st)) gui_fatal("fstat"); close(tmpfd); return st.st_size; }
void copy_file(char *filename) { int fd = open(filename, O_WRONLY | O_CREAT, 0600); if (fd < 0) { perror("open file"); exit(1); } if (!copy_fd_all(fd, 0)) exit(1); close(fd); }
void copy_file_by_name(const char *filename) { int fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600); if (fd < 0) { perror("open file"); exit(1); } /* we now have created a new file, ensure we delete it at the end */ cleanup_filename = filename; atexit(cleanup_file); if (!copy_fd_all(fd, 0)) exit(1); close(fd); }
void send_file(char *fname) { char *base; int fd = open(fname, O_RDONLY); if (fd < 0) gui_fatal("open %s", fname); base = rindex(fname, '/'); if (!base) base = fname; else base++; if (strlen(base) >= DVM_FILENAME_SIZE) base += strlen(base) - DVM_FILENAME_SIZE + 1; if (!write_all(1, base, DVM_FILENAME_SIZE)) gui_fatal("send filename to dispVM"); if (!copy_fd_all(1, fd)) gui_fatal("send file to dispVM"); close(1); }