diff options
-rw-r--r-- | src/constants.h | 35 | ||||
-rw-r--r-- | src/implementation.c | 5 | ||||
-rw-r--r-- | src/implementation.h | 5 | ||||
-rw-r--r-- | src/main.c | 101 |
4 files changed, 56 insertions, 90 deletions
diff --git a/src/constants.h b/src/constants.h new file mode 100644 index 0000000..5eb4153 --- /dev/null +++ b/src/constants.h @@ -0,0 +1,35 @@ +#ifndef LPASS_CONSTANTS_H +#define LPASS_CONSTANTS_H + +#define VERSION "1.0c" +#define DATE_RELEASE "14 January, 2021" + +#define LOCKPASS_DIR ".lock-password/" +#define GPGKEY_FILE ".gpg-key" + +#define errprint(RET, ...) \ + do { \ + fprintf(stderr, "Error: " __VA_ARGS__); \ + return RET; \ + } while(0) + +#define usageprint(...) \ + do { \ + fprintf(stdout, "Usage: lpass " __VA_ARGS__); \ + return 1; \ + } while(0) + +#ifdef DEBUG + #define dbgprint(...) fprintf(stderr, "Debug: " __VA_ARGS__) +#else + #define dbgprint(...) +#endif + +enum { + maxlen_texteditor = 16, + minlen_pass = 1, + maxlen_pass = 128, + stdlen_pass = 14 +}; + +#endif /* LPASS_CONSTANTS_H */ diff --git a/src/implementation.c b/src/implementation.c index f71b0a1..48dacac 100644 --- a/src/implementation.c +++ b/src/implementation.c @@ -8,16 +8,15 @@ #include <errno.h> #include <sys/stat.h> +#include "implementation.h" +#include "constants.h" #include "xstd.h" #include "easydir.h" -#include "implementation.h" #include "r-gpgme.h" /* define in implementation.h */ // GPG_PUBLICKEY_MAXLENGTH NNNN -// == global var == -extern char *gPath_pass; // example: programming/github.com/joursoir.gpg void copy_outside(char *password) { diff --git a/src/implementation.h b/src/implementation.h index 15fc56d..f0343f2 100644 --- a/src/implementation.h +++ b/src/implementation.h @@ -3,11 +3,6 @@ #define GPG_PUBLICKEY_MAXLENGTH 1024 -#define errprint(RET, ...) \ - do { \ - fprintf(stderr, "Error: " __VA_ARGS__); \ - return RET; \ - } while(0) void copy_outside(char *password); int check_sneaky_paths(const char *path); @@ -16,39 +16,13 @@ #include <errno.h> #include <sys/stat.h> +#include "constants.h" #include "easydir.h" #include "xstd.h" #include "implementation.h" #include "exec-cmd.h" #include "tree.h" -enum constants { - maxlen_texteditor = 16, - minlen_pass = 1, - maxlen_pass = 128, - stdlen_pass = 14 -}; - -#define VERSION "1.0c" -#define DATE_RELEASE "14 January, 2021" -#define STANDARD_TEXTEDITOR "vim" -#define MAXLEN_TEXTEDITOR 16 -#define LOCKPASS_DIR ".lock-password/" -#define GPGKEY_FILE ".gpg-key" - -#define TEXTEDITOR_FILE ".text-editor" - -#define usageprint(...) \ - do { \ - fprintf(stdout, "Usage: lpass " __VA_ARGS__); \ - return 1; \ - } while(0) -#ifdef DEBUG - #define dbgprint(...) fprintf(stderr, "Debug: " __VA_ARGS__) -#else - #define dbgprint(...) -#endif - struct cmd_struct { const char *cmd; int (*func)(int, char **); @@ -66,20 +40,6 @@ static struct cmd_struct commands[] = { { NULL, NULL } }; -// == global var == -char *gPath_pass = NULL; // example: programming/github.com/joursoir.gpg - -static void globalSplitPath(char *source) -{ - int len_path = strlen(source) + strlen(".gpg") + 1; - - gPath_pass = malloc(sizeof(char) * len_path); // path without working dir - strcpy(gPath_pass, source); - strcat(gPath_pass, ".gpg"); - - dbgprint("g_pass: %s\n", gPath_pass); -} - int cmd_init(int argc, char *argv[]) { const char description[] = "init gpg-key\n"; @@ -188,46 +148,25 @@ int cmd_insert(int argc, char *argv[]) int cmd_edit(int argc, char *argv[]) { - const char description[] = "edit [-t=text-editor] passname\n"; - const struct option long_options[] = { - {"text-editor", required_argument, NULL, 't'}, - {NULL, 0, NULL, 0} - }; + usageprint("Temporarily unavailable :(\n"); +/* + const char description[] = "edit passname\n"; int result; - while((result = getopt_long(argc, argv, "t:", long_options, NULL)) != -1) { - switch(result) { - case 't': - { - // create file, copy name text editor there - FILE *f_texteditor = fopen(TEXTEDITOR_FILE, "w"); - if(!f_texteditor) - errprint(1, "fopen() failed"); - fputs(optarg, f_texteditor); - fclose(f_texteditor); - printf("You changed text editor to %s\n", optarg); - break; - } - default: usageprint("%s", description); - } - } - - if(optind < argc) optind++; // for skip "edit" - char *path_to_password = argv[optind]; - if(argv[optind] == NULL) + char *path = argv[2]; + if(!path) usageprint("%s", description); - dbgprint("passname: %s\n", argv[optind]); + dbgprint("passname: %s\n", path); - result = check_sneaky_paths(path_to_password); + result = check_sneaky_paths(path); if(result) errprint(1, "You have used forbidden paths\n"); - globalSplitPath(path_to_password); - result = file_exist(gPath_pass); - if(result != F_ISFILE) { - if(result == F_ISDIR) errprint(1, "It is a directory\n"); + result = file_exist(path); + if(result == F_NOEXIST) errprint(1, "No such file exists\n"); - } + else if(result == F_ISDIR) + errprint(1, "It is a directory\n"); // configure text editor file char text_editor[MAXLEN_TEXTEDITOR]; @@ -251,28 +190,29 @@ int cmd_edit(int argc, char *argv[]) // decryption char *public_gpgkey = get_pubkey(); - char *decrypt_arg[] = {"gpg", "-d", "--quiet", "-r", public_gpgkey, "-o", path_to_password, gPath_pass, NULL}; + char *decrypt_arg[] = {"gpg", "-d", "--quiet", "-r", public_gpgkey, "-o", path, gPath_pass, NULL}; easyFork("gpg", decrypt_arg); // start vim/etc for edit passowrd - char *editor_arg[] = {text_editor, path_to_password, NULL}; + char *editor_arg[] = {text_editor, path, NULL}; easyFork(text_editor, editor_arg); // delete '\n' and paste good pass char password[maxlen_pass]; - fileCropLineFeed(path_to_password, password, maxlen_pass); + fileCropLineFeed(path, password, maxlen_pass); - FILE *file = fopen(path_to_password, "w"); + FILE *file = fopen(path, "w"); if(file == NULL) callError(108); fputs(password, file); fclose(file); // encryption - char *encrypt_arg[] = {"gpg", "--quiet", "--yes", "-r", public_gpgkey, "-e", path_to_password, NULL}; + char *encrypt_arg[] = {"gpg", "--quiet", "--yes", "-r", public_gpgkey, "-e", path, NULL}; easyFork("gpg", encrypt_arg); - remove(path_to_password); + remove(path); free(public_gpgkey); +*/ return 0; } @@ -560,9 +500,6 @@ int main(int argc, char *argv[]) ret = ptr->func(argc, argv); else ret = cmd_showtree(argc, argv); - - if(gPath_pass != NULL) - free(gPath_pass); return ret; }
\ No newline at end of file |