create.c
unknown
plain_text
2 years ago
1.5 kB
6
Indexable
1 #include "create.h"
2 #include "header.h"
3 #include "write.h"
4 int create_archive(char *tarfile){
5 int tar_fd;
6
7 /* Open tar_file with read write user permissions */
8 tar_fd = open(tarfile, O_RDWR | O_CREAT | O_TRUNC, S_IRWXU);
9
10 if(tar_fd == -1){
11 perror("open");
12 exit(EXIT_FAILURE);
13 }
14
15 return tar_fd;
16 }
17
18 void archive_file(int fd, char *parent_path, char *file_name){
19 struct stat file_sb;
20 struct passwd *file_pwd;
21 struct group *file_group;
22 struct dirent *dir_entry;
23 DIR *directory;
24 char *full_path;
25 header *header;
26 /* Stat current file and exit if it failed */
27 if(lstat(file_name, &file_sb) == -1){
28 perror("lstat");
29 exit(EXIT_FAILURE);
30 }
31
32 /* Get user password and group fro user name and group name */
33 file_group = getgrgid(file_sb.st_gid);
34
35 if(file_group == NULL){
36 perror("get group name");
37 exit(EXIT_FAILURE);
38 }
39
40 file_pwd = getpwuid(file_sb.st_uid);
41
42 if(file_pwd == NULL){
43 perror("get user name");
44 exit(EXIT_FAILURE);
45 }
46
47 /* Create full path up to this point */
48 full_path = create_full_path(parent_path, file_name, file_sb.st_mode);
49 header = create_header(file_sb, full_path);
50 write_header(fd, header);
"create.c" 145L, 3989CEditor is loading...
Leave a Comment