Path: blob/main/sys/contrib/openzfs/tests/zfs-tests/cmd/cp_files.c
48529 views
#include <stdio.h>1#include <stdlib.h>2#include <unistd.h>3#include <sys/types.h>4#include <sys/stat.h>5#include <fcntl.h>6#include <dirent.h>7#include <errno.h>8#include <string.h>910int11main(int argc, char *argv[])12{13int tfd;14DIR *sdir;15struct dirent *dirent;1617if (argc != 3) {18fprintf(stderr, "Usage: %s SRC DST\n", argv[0]);19exit(1);20}2122sdir = opendir(argv[1]);23if (sdir == NULL) {24fprintf(stderr, "Failed to open %s: %s\n",25argv[1], strerror(errno));26exit(2);27}2829tfd = open(argv[2], O_DIRECTORY);30if (tfd < 0) {31fprintf(stderr, "Failed to open %s: %s\n",32argv[2], strerror(errno));33closedir(sdir);34exit(3);35}3637while ((dirent = readdir(sdir)) != NULL) {38if (dirent->d_name[0] == '.' &&39(dirent->d_name[1] == '.' || dirent->d_name[1] == '\0'))40continue;4142int fd = openat(tfd, dirent->d_name, O_CREAT|O_WRONLY, 0666);43if (fd < 0) {44fprintf(stderr, "Failed to create %s/%s: %s\n",45argv[2], dirent->d_name, strerror(errno));46closedir(sdir);47close(tfd);48exit(4);49}50close(fd);51}5253closedir(sdir);54close(tfd);5556return (0);57}585960