9 int mkdir_p(char *path, mode_t mode)
18 if (stat(path, &st) == 0)
23 while ((d = strchr(d, '/'))) {
25 err = stat(path, &st) && mkdir(path, mode);
32 return (stat(path, &st) && mkdir(path, mode)) ? -1 : 0;
35 int copyfile(const char *from, const char *to)
45 fromfd = open(from, O_RDONLY);
49 tofd = creat(to, 0755);
53 addr = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fromfd, 0);
54 if (addr == MAP_FAILED)
57 if (write(tofd, addr, st.st_size) == st.st_size)
60 munmap(addr, st.st_size);