]> Nishi Git Mirror - sp.git/commitdiff
パスワード変更機能性の追加
author諏訪子 <suwako@076.moe>
Thu, 1 Feb 2024 08:01:15 +0000 (17:01 +0900)
committer諏訪子 <suwako@076.moe>
Thu, 1 Feb 2024 08:01:15 +0000 (17:01 +0900)
CHANGELOG.md
delpass.c
delpass.h
main.c

index ebde866b15b198680c7bc67d99d81d39565a0d46..ff1942f9350601015838f0aac26b5614f8bd38a3 100644 (file)
@@ -4,6 +4,7 @@
 * パスワードの長さの延長
 * パスワード追加機能性で、パスワードが既に存在するかどうか確認
 * パスワード削除機能性で、パスワードが存在ないかどうか確認
+* パスワード変更機能性の追加
 
 # 1.1.2
 * OpenBSDでのコンパイラーが発生された問題を修正した
index 2b9717b2337517934fc03f63926224d3a2f99569..f64d0bca49e2b29fbaf3ffb19429f8dd4bf715bf 100644 (file)
--- a/delpass.c
+++ b/delpass.c
@@ -4,7 +4,7 @@
 
 #include "delpass.h"
 
-int delpass(char* file) {
+int delpass(char* file, int force) {
   // パスを準備
   char pwfile[512];
   char* homedir = getenv("HOME");
@@ -39,21 +39,25 @@ int delpass(char* file) {
   }
 
   // 削除を確認する
-  printf("パスワード「%s」を本当に削除する事が宜しいでしょうか? (y/N): ", file);
-  int confirm = getchar();
-  if (confirm != 'y' && confirm != 'Y') {
-    printf("削除しませんでした。\n");
-    return -1;
+  if (force == 0) { // パスワードの変更のばあい、確認は不要
+    printf("パスワード「%s」を本当に削除する事が宜しいでしょうか? (y/N): ", file);
+    int confirm = getchar();
+    if (confirm != 'y' && confirm != 'Y') {
+      printf("削除しませんでした。\n");
+      return -1;
+    }
+
+    int ch;
+    while ((ch = getchar()) != '\n' && ch != EOF);
   }
 
-  int ch;
-  while ((ch = getchar()) != '\n' && ch != EOF);
-
   if (unlink(pwfile) == -1) {
     perror("パスワードを削除出来ませんですた。");
     return -1;
   }
 
+  if (force == 1) return 0;
+
   printf("パスワードを削除しました。\n");
-  return -1;
+  return 0;
 }
index 58f4afc8b3cca37c4aa86b8b87076489e55a66e7..90e12de20e683966b2835afea2e16d0162531c93 100644 (file)
--- a/delpass.h
+++ b/delpass.h
@@ -1,6 +1,6 @@
 #ifndef DELPASS_H
 #define DELPASS_H
 
-int delpass(char* file);
+int delpass(char* file, int force);
 
 #endif
diff --git a/main.c b/main.c
index 535bd1f23876381adaf3b583dfa5f1b32bc98fff..42b0bd566e34efd091dcdd429098085209952f9d 100644 (file)
--- a/main.c
+++ b/main.c
@@ -19,15 +19,16 @@ const char* sofname = "sp";
 const char* version = "1.2.0";
 
 void helpme() {
-  printf("076 sp - シンプルなパスワードマネージャー\n");
-  printf("https://076.moe/ | https://gitler.moe/suwako/sp\n\n");
-  printf("使い方:\n");
+  printf("076 %s %s - シンプルなパスワードマネージャー\n", sofname, version);
+  printf("https://076.moe/ | https://gitler.moe/suwako/%s\n\n", sofname);
+  puts  ("使い方:\n");
   printf("%s -i <gpg-id>               :GPGと使ってパスワードストレージを初期設定\n", sofname);
   printf("%s -s <パスワード名>         :パスワードを表示\n", sofname);
   printf("%s -y <パスワード名>         :パスワードを表示せずクリップボードにコピーする\n", sofname);
   printf("%s -l                        :パスワード一覧を表示\n", sofname);
   printf("%s -a <パスワード名>         :パスワードを追加\n", sofname);
   printf("%s -d <パスワード名>         :パスワードを削除\n", sofname);
+  printf("%s -e <パスワード名>         :パスワードを変更\n", sofname);
   printf("%s -g <文字数> [risk|secure] :希望文字数でパスワードをランダムに作成する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname);
   printf("%s -o <パスワード名>\n       :ワンタイムパスワード(TOTP)を表示。存在しなければ、創作する\n", sofname);
   printf("%s -h                        :ヘルプを表示\n", sofname);
@@ -57,7 +58,11 @@ int main (int argc, char* argv[]) {
     listpass(basePath, 0);
   }
   else if (argc == 3 && strcmp(argv[1], "-a") == 0) addpass(argv[2]);
-  else if (argc == 3 && strcmp(argv[1], "-d") == 0) delpass(argv[2]);
+  else if (argc == 3 && strcmp(argv[1], "-d") == 0) delpass(argv[2], 0);
+  else if (argc == 3 && strcmp(argv[1], "-e") == 0) {
+    delpass(argv[2], 1);
+    addpass(argv[2]);
+  }
   else if (strcmp(argv[1], "-g") == 0) {
     if (argc == 3) genpass(atoi(argv[2]), true);
     else if (argc == 4 && strcmp(argv[3], "risk") == 0) genpass(atoi(argv[2]), false);