@@ 9,16 9,15 @@
#include <pwd.h>
#include <libgen.h>
-void read_zettel(char* filename);
+void read_zettel(char* path, char* filename);
int read_hub(char* hubpath);
void new_zettel(char* hubpath, char* title);
void new_hub(char* hubpath);
void list_hubs(char* zdir);
void user_interface(void);
-int get_path(char* path, char* zettel, char* hub);
int scan_zettel(char* path, char* zettel);
void link_zettel(char* path, char* path2);
-
+int match_id_to_path(char* path, char* id, char* hub);
void
new_zettel(char* hubpath, char* title)
@@ 79,22 78,24 @@ new_hub(char* hubpath)
}
void
-read_zettel(char* filename)
+read_zettel(char* path, char* filename)
{
- FILE* fp = fopen(filename, "r");
+ FILE* fp = fopen(path, "r");
if (fp == NULL) {
- printf("File not found\n");
+ printf("File not found at %s\n", path);
goto end;
}
char buffer[100];
fgets(buffer, 100, fp);
- printf("%s - %s", filename, buffer);
+ filename[4] = '\0'; // Turn filename into id
+ printf("ID: %s -- %s", filename, buffer);
end:
fclose(fp);
}
+//Change to list zettels
int
read_hub(char* hubpath)
{
@@ 110,11 111,11 @@ read_hub(char* hubpath)
while ((de = readdir(dr)) != NULL) {
if (strcmp(de->d_name, ".") != 0 &&
strcmp(de->d_name, "..") != 0) {
- char abs[100];
+ char abs[300];
strcpy(abs, hubpath);
strcat(abs, "/");
strcat(abs, de->d_name);
- read_zettel(abs);
+ read_zettel(abs, de->d_name);
}
}
@@ 166,26 167,33 @@ end:
}
int
-get_path(char* path, char* zettel, char* hub)
+match_id_to_path(char* path, char* id, char* hub)
{
+ int signal = 1;
+ if (strlen(id) != 4)
+ return signal;
+
struct dirent* de;
- int signal = 1;
DIR* dr = opendir(hub);
+
while((de = readdir(dr)) != NULL) {
- if (strcmp(de->d_name, ".") != 0 &&
- strcmp(de->d_name, "..") != 0) {
- char abs[300];
- sprintf(abs, "%s/%s", hub, de->d_name);
- int result = scan_zettel(abs, zettel);
- if (result != 0) {
- strcpy(path, abs);
+ if (strlen(de->d_name) > 4) {
+ int found = 0;
+ for (int i = 0; i < 4; i++) {
+ if (id[i] != de->d_name[i]) {
+ found = 1;
+ break;
+ }
+ }
+ if (found == 0) {
signal = 0;
+ sprintf(path, "%s/%s", hub, de->d_name);
break;
}
}
}
-
+
closedir(dr);
return signal;
}
@@ 252,15 260,15 @@ user_interface(void)
return;
}
printf("----\n");
- printf("Enter a zettel by title:\n");
+ printf("Enter the zettel id:\n");
- char zettel[100];
- fgets(zettel, 100, stdin);
+ char zettel[10];
+ fgets(zettel, 10, stdin);
zettel[strcspn(zettel, "\n")] = '\0';
printf("\n");
char path[50];
- if (get_path(path, zettel, hubpath) != 0) {
+ if (match_id_to_path(path, zettel, hubpath) != 0) {
printf("Unable to find zettel: %s\n", zettel);
return;
}
@@ 350,16 358,16 @@ user_interface(void)
return;
}
printf("----\n");
- printf("Enter a zettel by title:\n");
+ printf("Enter the zettel id:\n");
- char zettel[100];
- fgets(zettel, 100, stdin);
+ char zettel[10];
+ fgets(zettel, 10, stdin);
zettel[strcspn(zettel, "\n")] = '\0';
printf("\n");
char path[50];
- if (get_path(path, zettel, hubpath) != 0) {
- printf("Unable to find zettel: %s\n", zettel);
+ if (match_id_to_path(path, zettel, hubpath) != 0) {
+ printf("Unable to find zettel: %s at %s\n", zettel, path);
return;
}
@@ 385,13 393,13 @@ user_interface(void)
printf("----\n");
printf("Enter a zettel by title:\n");
- char zettel2[100];
- fgets(zettel2, 100, stdin);
+ char zettel2[10];
+ fgets(zettel2, 10, stdin);
zettel2[strcspn(zettel2, "\n")] = '\0';
printf("\n");
char path2[50];
- if (get_path(path2, zettel2, hubpath2) != 0) {
+ if (match_id_to_path(path2, zettel2, hubpath2) != 0) {
printf("Unable to find zettel: %s\n", zettel2);
return;
}