- if (S_ISREG(mode)) {
- int fd;
- mode = (mode & 0100) ? 0777 : 0666;
- fd = create_regular_file(path, mode);
- if (fd < 0)
- die("unable to create file %s (%s)", path, strerror(errno));
- if (write(fd, buf, size) != size)
- die("unable to write file %s", path);
- close(fd);
- add_index_file(path, mode, buf, size);
- return;
- }
- if (S_ISLNK(mode)) {
- if (size && buf[size-1] == '\n')
- size--;
- buf[size] = 0;
- if (create_symlink(buf, path) < 0)
- die("unable to write symlink %s", path);
- add_index_file(path, mode, buf, size);
- return;
- }
- die("unable to write file mode %o", mode);
+ create_one_file(path, mode, buf, size);
+ add_index_file(path, mode, buf, size);