You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
2.8 KiB
C
146 lines
2.8 KiB
C
2 years ago
|
#include "fileman.h"
|
||
|
|
||
|
|
||
|
static int global_arr_size = FILE_ARR_SIZE;
|
||
|
|
||
|
//int global_arr_size = 5;
|
||
|
|
||
|
int findFileCount(char* directory) {
|
||
|
int fileCount=0;
|
||
|
DIR* d;
|
||
|
struct dirent* dir;
|
||
|
d = opendir(directory);
|
||
|
|
||
|
if (d) {
|
||
|
while ((dir = readdir(d)) != NULL) {
|
||
|
// mvwprintw(win,startRow,startCol,"%s",dir->d_name);
|
||
|
if ((strcmp(dir->d_name,".") != 0) && (strcmp(dir->d_name,"..") != 0)) {
|
||
|
fileCount++;
|
||
|
}
|
||
|
//startRow++;
|
||
|
}
|
||
|
closedir(d);
|
||
|
}
|
||
|
return fileCount;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void addFiles(char* directory, char** list,int start,int end) {
|
||
|
// for (int i=0;i<FILE_ARR_SIZE;i++) {
|
||
|
|
||
|
for (int i=0;i<global_arr_size;i++) {
|
||
|
*(list+i) = '\0';
|
||
|
}
|
||
|
|
||
|
DIR* d2;
|
||
|
|
||
|
|
||
|
|
||
|
// int fileNum = findFileCount(directory);
|
||
|
|
||
|
// int lengthOfArr = FILE_SIZE * sizeof(char *);
|
||
|
|
||
|
// list = realloc(list,lengthOfArr);
|
||
|
|
||
|
// int lengthOfArr = 2000;
|
||
|
|
||
|
// if (lengthOfArr < 200) {
|
||
|
// printf("%d\n",lengthOfArr);
|
||
|
// abort();
|
||
|
// }
|
||
|
|
||
|
struct dirent* dir2;
|
||
|
int count=0;
|
||
|
// printw("bruh");
|
||
|
d2 = opendir(directory);
|
||
|
if (d2) {
|
||
|
for (int i=0;i<start;i++) {
|
||
|
dir2 = readdir(d2);
|
||
|
}
|
||
|
|
||
|
while ((dir2 = readdir(d2)) != NULL && count<end) {
|
||
|
if ((strcmp(dir2->d_name,".") != 0) && (strcmp(dir2->d_name,"..") != 0)) {
|
||
|
// list[count] = dir2->d_name;
|
||
|
*(count+list) = dir2->d_name;
|
||
|
count++;
|
||
|
}
|
||
|
|
||
|
if (count >= global_arr_size) {
|
||
|
global_arr_size += FILE_ARR_SIZE;
|
||
|
list = realloc(list,(sizeof(char *) * global_arr_size));
|
||
|
// abort();
|
||
|
// printf("%d\n",lengthOfArr);
|
||
|
// abort();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
closedir(d2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/*void removeDirFromPath (char** ptrPath) {
|
||
|
int slashLoc = 0;
|
||
|
int counter = 0;
|
||
|
for (int i=strlen(*ptrPath)-1;i>=0;i--) {
|
||
|
if (counter==1)
|
||
|
slashLoc = i;
|
||
|
if (*ptrPath[i] == '/')
|
||
|
counter++;
|
||
|
}
|
||
|
for (int i=slashLoc+1;i<strlen(*ptrPath);i++){
|
||
|
if (*ptrPath[i] != '\0')
|
||
|
*ptrPath[i] = '\0';
|
||
|
|
||
|
}
|
||
|
}*/
|
||
|
|
||
|
|
||
|
void removeDirFromPath (char* ptrPath) {
|
||
|
int slashLoc = 0;
|
||
|
int counter ;
|
||
|
if (isFile(ptrPath)) {
|
||
|
counter=1;
|
||
|
} else {
|
||
|
counter = 0;
|
||
|
}
|
||
|
|
||
|
for (int i=strlen(ptrPath)-1;i>=0;i--) {
|
||
|
if (counter==1 && *(ptrPath+i) == '/')
|
||
|
slashLoc = i;
|
||
|
if (*(ptrPath+i) == '/')
|
||
|
counter++;
|
||
|
}
|
||
|
for (int i=slashLoc+1;i<strlen(ptrPath);i++){
|
||
|
if (*(ptrPath+i) != '\0')
|
||
|
*(ptrPath+i) = '\0';
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void addSlash(char* ptrPath) {
|
||
|
for (int i=strlen(ptrPath)-1;i>=0;i--) {
|
||
|
if ((*(ptrPath+i) != '\0') && (*(ptrPath+i) != '/')) {
|
||
|
*(ptrPath+i+1) = '/';
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
bool isFile(char *ptrDir) {
|
||
|
if (!(fileExists(ptrDir))) {
|
||
|
return true;
|
||
|
}
|
||
|
struct stat pathstat;
|
||
|
stat(ptrDir,&pathstat);
|
||
|
return S_ISREG(pathstat.st_mode);
|
||
|
}
|
||
|
|
||
|
bool fileExists(char *ptrDir) {
|
||
|
return access(ptrDir,F_OK) == 0;
|
||
|
}
|