diff --git a/CHANGELOG.md b/CHANGELOG.md index aa40873..ebde866 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * makeを実行したら、バイナリがもっと小さくなる * パスワードの長さの延長 * パスワード追加機能性で、パスワードが既に存在するかどうか確認 +* パスワード削除機能性で、パスワードが存在ないかどうか確認 # 1.1.2 * OpenBSDでのコンパイラーが発生された問題を修正した diff --git a/delpass.c b/delpass.c index 73e5509..2b9717b 100644 --- a/delpass.c +++ b/delpass.c @@ -15,6 +15,23 @@ int delpass(char* file) { char* basedir = "/.local/share/sp/"; char* ext = ".gpg"; + + int alllen = snprintf(NULL, 0, "%s%s%s%s", homedir, basedir, file, ext) + 1; + char* gpgpathchk = malloc(alllen); + if (gpgpathchk == NULL) { + perror("メモリを割当に失敗。"); + return -1; + } + + // ファイルが既に存在するかどうか確認 + snprintf(gpgpathchk, alllen, "%s%s%s%s", homedir, basedir, file, ext); + if (access(gpgpathchk, F_OK) != 0) { + fprintf(stderr, "パスワードが存在しません。\n"); + free(gpgpathchk); + return -1; + } + free(gpgpathchk); + int needed = snprintf(pwfile, sizeof(pwfile), "%s%s%s%s", homedir, basedir, file, ext); if (needed >= (int)sizeof(pwfile)) { fprintf(stderr, "エラー:パスが長すぎる。\n");