From 3976c11d914085d6564e4d75ec00a242d78bdda4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Thu, 1 Feb 2024 17:01:15 +0900 Subject: [PATCH] =?utf8?q?=E3=83=91=E3=82=B9=E3=83=AF=E3=83=BC=E3=83=89?= =?utf8?q?=E5=A4=89=E6=9B=B4=E6=A9=9F=E8=83=BD=E6=80=A7=E3=81=AE=E8=BF=BD?= =?utf8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + delpass.c | 24 ++++++++++++++---------- delpass.h | 2 +- main.c | 13 +++++++++---- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebde866..ff1942f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * パスワードの長さの延長 * パスワード追加機能性で、パスワードが既に存在するかどうか確認 * パスワード削除機能性で、パスワードが存在ないかどうか確認 +* パスワード変更機能性の追加 # 1.1.2 * OpenBSDでのコンパイラーが発生された問題を修正した diff --git a/delpass.c b/delpass.c index 2b9717b..f64d0bc 100644 --- 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; } diff --git a/delpass.h b/delpass.h index 58f4afc..90e12de 100644 --- 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 535bd1f..42b0bd5 100644 --- 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と使ってパスワードストレージを初期設定\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); -- 2.43.0