]> Nishi Git Mirror - sp.git/commitdiff
パスワード削除機能性で、パスワードが存在ないかどうか確認
author諏訪子 <suwako@076.moe>
Thu, 1 Feb 2024 07:50:03 +0000 (16:50 +0900)
committer諏訪子 <suwako@076.moe>
Thu, 1 Feb 2024 07:50:03 +0000 (16:50 +0900)
CHANGELOG.md
delpass.c

index aa4087303ae61d340de8cc0f0e6f1a07e8c14d18..ebde866b15b198680c7bc67d99d81d39565a0d46 100644 (file)
@@ -3,6 +3,7 @@
 * makeを実行したら、バイナリがもっと小さくなる
 * パスワードの長さの延長
 * パスワード追加機能性で、パスワードが既に存在するかどうか確認
+* パスワード削除機能性で、パスワードが存在ないかどうか確認
 
 # 1.1.2
 * OpenBSDでのコンパイラーが発生された問題を修正した
index 73e5509b7573b7afba8793f7fe8fcba1f1e666d8..2b9717b2337517934fc03f63926224d3a2f99569 100644 (file)
--- 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");