Untitled
unknown
plain_text
8 months ago
1.5 kB
4
Indexable
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include <dirent.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#include <sys/stat.h>
#define ARRAY_SIZE(x) sizeof(x) / sizeof(x[0])
void string_init(char (*filepath), char (*cwd), size_t size){
memset(filepath, '\0', size);
strcpy(filepath, cwd);
}
void ls(char *cwd, size_t size){
assert(getcwd(cwd, size) != NULL);
DIR *dir = opendir(cwd);
if(!dir){
perror("opendir");
return;
}
struct dirent *entry = NULL;
struct stat filestat;
char filepath[INT8_MAX];
int i = 0;
while(cwd[i] != '\0'){
filepath[i] = cwd[i];
i++;
}
while ((entry = readdir(dir)) != NULL) {
if(strcmp(entry->d_name, "..") && strcmp(entry->d_name, ".")){
strcat(filepath, "/");
strcat(filepath, entry->d_name);
}
else if (!strcmp(entry->d_name, ".")){
strcpy(filepath, cwd);
}
else{
char *last_slash = strrchr(filepath, '/');
if (last_slash) {
*last_slash = '\0';
}
}
// printf("file name: %s\n", entry->d_name);
// printf("file path: %s\n", filepath);
printf("%s\n", entry->d_name);
lstat(filepath, &filestat);
string_init(filepath, cwd, ARRAY_SIZE(filepath));
}
closedir(dir);
}
int main(int argc, char const *argv[])
{
char cwd[INT8_MAX];
ls(cwd, ARRAY_SIZE(cwd));
return 0;
}Editor is loading...
Leave a Comment