diff options
Diffstat (limited to 'service/src/main.c')
| -rw-r--r-- | service/src/main.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/service/src/main.c b/service/src/main.c index e880ba3..de2bd48 100644 --- a/service/src/main.c +++ b/service/src/main.c @@ -190,8 +190,6 @@ search_cmd(const char *arg) if (!(d = opendir(resultdir))) return; - printf("%s %s\n", resultdir, hash); - dirstart = telldir(d); for (i = 0; (de = readdir(d));) { name = de->d_name; @@ -266,8 +264,11 @@ cleanup: void list_cmd(const char *arg) { - DIR *d; struct dirent *de; + struct parseinfo info; + char *path; + FILE *f; + DIR *d; if (!loggedin) { fprintf(stderr, "Not logged in!\n"); @@ -278,7 +279,16 @@ list_cmd(const char *arg) while ((de = readdir(d))) { if (*de->d_name == '.' && !strchr(".", de->d_name[1])) { - printf("%s\n", de->d_name); + printf(">> %s\n", de->d_name); + path = aprintf("%s/%s/info", resultdir, de->d_name); + if ((f = fopen(path, "r"))) { + if (load_info(&info, f) != OK) + fprintf(stderr, "Failed to read saved file info!\n"); + else + print_info(&info); + fclose(f); + } + free(path); } } } @@ -288,6 +298,7 @@ auth_cmd(const char *arg) { const char *hash; char *ndir; + int ret; if (loggedin) { fprintf(stderr, "Already logged in!\n"); @@ -296,13 +307,16 @@ auth_cmd(const char *arg) hash = mhash(arg ? arg : ask("Enter a password: "), -1); ndir = aprintf("%s/.%s", resultdir, hash); - if (mkdir(ndir, S_IRWXU | S_IRWXG | S_IRWXO) && errno != EEXIST) { + ret = mkdir(ndir, S_IRWXU | S_IRWXG | S_IRWXO); + if (!ret) { + printf("Success!\n"); + } else if (ret && errno == EEXIST) { + printf("Success!\nWelcome back!\n"); + } else { fprintf(stderr, "Auth failed!\n"); return; } - printf("Success!\n"); - free(resultdir); resultdir = ndir; loggedin = 1; |
