improvenment of path handling
This commit is contained in:
12
backend.c
12
backend.c
@ -39,6 +39,7 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
||||
scandir(path, &entry, skip_hidden_files, alphasort);
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long i = 0;
|
||||
for (i = 0; i < *dir_file_count; i++ ) {
|
||||
@ -51,7 +52,16 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
||||
struct stat *file;
|
||||
file = malloc(sizeof(struct stat));
|
||||
memset(file, ' ', sizeof(struct stat));
|
||||
lstat(dir_content[i].file_name, file);
|
||||
|
||||
/* using the full path allows using the same function for all windows */
|
||||
unsigned long path_len = strlen(path);
|
||||
char *full_path = malloc(strlen(path) + strlen(entry[i]->d_name) + 1 + sizeof("/"));
|
||||
memcpy(full_path, path, strlen(path));
|
||||
memcpy(full_path + path_len, "/", sizeof("/"));
|
||||
memcpy(full_path + path_len + sizeof("/") - 1, entry[i]->d_name, strlen(entry[i]->d_name) + 1);
|
||||
|
||||
lstat(full_path, file);
|
||||
free(full_path);
|
||||
|
||||
if (S_ISDIR(file->st_mode)) {
|
||||
dir_content[i].file_type = FILE_TYPE_DIR;
|
||||
|
Reference in New Issue
Block a user