summaryrefslogtreecommitdiff
path: root/entry.c
diff options
context:
space:
mode:
Diffstat (limited to 'entry.c')
-rw-r--r--entry.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/entry.c b/entry.c
new file mode 100644
index 0000000..d5f1425
--- /dev/null
+++ b/entry.c
@@ -0,0 +1,88 @@
+#include <assert.h>
+#include <dirent.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "entry.h"
+#include "group.h"
+#define BUF_LEN 1024
+
+typedef struct entry{
+ char name[BUF_LEN];
+ char path[BUF_LEN];
+ struct entry *next;
+} ENTRY;
+
+ENTRY *create_entry(char *new_path, char *new_group);
+ENTRY *entry_add_last(ENTRY *tail, ENTRY *add);
+ENTRY **get_entries(ENTRY *head, int count);
+char *get_ename(ENTRY *e);
+char *get_epath(ENTRY *e);
+
+ENTRY *create_entry(char *new_path, char *new_group){
+ ENTRY *new;
+ char full_path[BUF_LEN] = "";
+
+ if(new_group != NULL) strcat(full_path, new_group);
+ strcat(full_path, new_path);
+
+ //check if file exists
+ if(access(full_path, F_OK) == -1){
+ printf("Error: Invalid File Name \"%s\"\n", full_path);
+ return NULL;
+ }
+
+ new = malloc(sizeof(ENTRY));
+
+ strcpy(new->name, new_path);
+ strcpy(new->path, full_path);
+ new->next = NULL;
+
+ return new;
+}
+
+ENTRY *entry_add_last(ENTRY *tail, ENTRY *add){
+ assert(add != NULL);
+
+ if(tail == NULL) tail = add;
+ else{
+ tail->next = add;
+ tail = add;
+ }
+
+ return tail;
+}
+
+ENTRY **get_entries(ENTRY *head, int count){
+ ENTRY **arr = malloc(sizeof(ENTRY *) * count);
+ ENTRY *trav = head;
+ int i;
+
+ for(i = 0; i < count; i++){
+ arr[i] = trav;
+ trav = trav->next;
+ }
+
+ return arr;
+}
+
+char *get_ename(ENTRY *e){
+ assert(e != NULL);
+ return e->name;
+}
+char *get_epath(ENTRY *e){
+ assert(e != NULL);
+ return e->name;
+ return e->path;
+}
+
+void entry_debug(ENTRY *trav){
+
+ while(trav != NULL){
+ printf("%s, \n", trav->name);
+ trav = trav->next;
+ }
+
+ return;
+}