ccc/file.c

79 lines
1.4 KiB
C
Raw Normal View History

#include <string.h>
#include "util.h"
2024-03-10 11:54:08 +01:00
/* files in a link list data structure */
typedef struct file {
2024-03-09 20:46:15 +01:00
char *name;
2024-03-10 11:54:08 +01:00
/* put some more useful stat here */
struct file *next;
} file;
file *files = NULL;
/*
* get length of files linked list
*/
long files_len()
{
file *current = files;
int count = 0;
2024-03-10 11:54:08 +01:00
while (current != NULL) {
count++;
current = current->next;
}
return count;
}
long add_file(char *filename)
{
file *current = files;
file *new_file = memalloc(sizeof(file));
char *buf = strdup(filename);
2024-03-10 11:54:08 +01:00
if (!buf) {
perror("ccc");
}
2024-03-09 20:46:15 +01:00
new_file->name = buf;
new_file->next = NULL;
2024-03-10 11:54:08 +01:00
if (current == NULL) {
files = new_file;
return 0;
}
long index = 1;
2024-03-10 11:54:08 +01:00
while (current->next != NULL) {
current = current->next;
index++;
}
current->next = new_file;
return index;
}
file *get_file(long index)
{
file *current = files;
2024-03-10 11:54:08 +01:00
if (index == 0) {
return current;
}
2024-03-10 11:54:08 +01:00
if (index > files_len()) {
return NULL;
}
2024-03-10 11:54:08 +01:00
for (long i = 0; i < index; i++) {
current = current->next;
}
return current;
}
char *get_filename(long index)
{
file *file = get_file(index);
2024-03-10 11:54:08 +01:00
if (file != NULL) {
2024-03-09 20:46:15 +01:00
char *name = strdup(file->name);
2024-03-10 11:54:08 +01:00
if (!name) {
2024-03-09 20:46:15 +01:00
perror("ccc");
}
return name;
2024-03-10 11:54:08 +01:00
} else {
return NULL;
}
}