]> Nishi Git Mirror - sp.git/commitdiff
パスワード削除の機能性
author諏訪子 <suwako@076.moe>
Wed, 29 Nov 2023 13:16:09 +0000 (22:16 +0900)
committer諏訪子 <suwako@076.moe>
Wed, 29 Nov 2023 13:16:09 +0000 (22:16 +0900)
CHANGELOG.md [new file with mode: 0644]
LICENSE.txt [new file with mode: 0644]
Makefile
README.md [new file with mode: 0644]
delpass.c [new file with mode: 0644]
delpass.h [new file with mode: 0644]
main.c

diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644 (file)
index 0000000..0a0d870
--- /dev/null
@@ -0,0 +1,2 @@
+# 1.0.0
+* 最初リリース
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644 (file)
index 0000000..e69de29
index 18171515e7af416698208b98cb8c2988ec256856..95f4ea67bd63eafe47e81b3d18d37cc64f4b29eb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
 NAME=sp
-VERSION=0.0.1
+VERSION=1.0.0
 # Linux、Haiku、かIllumos = /usr、FreeBSDかOpenBSD = /usr/local、NetBSD = /usr/pkg
 PREFIX=/usr
 CC=cc
-FILES=main.c showpass.c yankpass.c addpass.c
+FILES=main.c showpass.c yankpass.c addpass.c delpass.c
 CFLAGS=-Wall -Wextra -g
 LDFLAGS=-lgpgme
 
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..efebab6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,25 @@
+# sp
+シンプルなパスワードマネージャー
+
+## インストールする方法
+```sh
+mkdir -p ~/.local/share/sp
+gpg --generate-key
+gpg -k | less
+```
+鍵をコピーして下さい。
+```sh
+echo "(コピーした鍵)" >> ~/.local/share/sp/.gpg-id
+```
+
+### Linux
+```sh
+make
+doas make install
+```
+
+### FreeBSDかOpenBSD
+```sh
+gmake
+doas gmake install PREFIX=/usr/local
+```
diff --git a/delpass.c b/delpass.c
new file mode 100644 (file)
index 0000000..406bbbc
--- /dev/null
+++ b/delpass.c
@@ -0,0 +1,26 @@
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "delpass.h"
+
+void delpass(char* file) {
+  // パスを準備
+  char pwfile[512];
+  char* homedir = getenv("HOME");
+  if (homedir == NULL) {
+    perror("ホームディレクトリを受取に失敗。");
+    return;
+  }
+
+  char* basedir = "/.local/share/sp/";
+  char* ext = ".gpg";
+  snprintf(pwfile, sizeof(pwfile), "%s%s%s%s", homedir, basedir, file, ext);
+
+  if (unlink(pwfile) == -1) {
+    perror("パスワードを削除出来ませんですた。");
+  }
+
+  printf("パスワードを削除しました。\n");
+  return;
+}
diff --git a/delpass.h b/delpass.h
new file mode 100644 (file)
index 0000000..db43a4e
--- /dev/null
+++ b/delpass.h
@@ -0,0 +1,6 @@
+#ifndef DELPASS_H
+#define DELPASS_H
+
+void delpass(char* file);
+
+#endif
diff --git a/main.c b/main.c
index 4c50fc3efcf525bb32948678b9dda4048f70ce2d..2a24e4312d7b0ffbbc8b48c304da7ad30ffc4acd 100644 (file)
--- a/main.c
+++ b/main.c
@@ -7,15 +7,15 @@
 void initpass(char* gpgid);
 #include "showpass.h"
 #include "yankpass.h"
-void listpass(char* dir);
+void listpass();
 #include "addpass.h"
-void delpass(char* file);
+#include "delpass.h"
 void genpass(char* file, int count, bool issecure);
 void otppass(char* file);
 void helpme();
 
 const char* sofname = "sp";
-const char* version = "0.0.1";
+const char* version = "1.0.0";
 
 void helpme() {
   printf("使い方:\n");
@@ -24,7 +24,7 @@ void helpme() {
   printf("%s -y <パスワード名>                        :パスワードを表示せずクリップボードにコピーする\n", sofname);
   //printf("%s -l                                       :パスワード一覧を表示\n", sofname);
   printf("%s -a <パスワード名>                        :パスワードを追加\n", sofname);
-  //printf("%s -d <パスワード名>                        :パスワードを削除\n", sofname);
+  printf("%s -d <パスワード名>                        :パスワードを削除\n", sofname);
   //printf("%s -g <文字数> [risk|secure] <パスワード名> :希望文字数でパスワードをランダムに作成する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname);
   //printf("%s -o <パスワード名>\n                      :ワンタイムパスワード(TOTP)を表示。存在しなければ、創作する", sofname);
   printf("%s -h                                       :ヘルプを表示\n", sofname);
@@ -42,7 +42,7 @@ int main (int argc, char* argv[]) {
   else if (argc == 3 && strcmp(argv[1], "-y") == 0) yankpass(argv[2]);
   else if (argc == 2 && strcmp(argv[1], "-l") == 0) printf("TODO: 一覧\n");
   else if (argc == 3 && strcmp(argv[1], "-a") == 0) addpass(argv[2]);
-  else if (argc == 3 && strcmp(argv[1], "-d") == 0) printf("TODO: 削除\n");
+  else if (argc == 3 && strcmp(argv[1], "-d") == 0) delpass(argv[2]);
   else if ((argc == 4 || argc == 5) && strcmp(argv[1], "-g") == 0) printf("TODO: パスワードを創作\n");
   else if (argc == 3 && strcmp(argv[1], "-o") == 0) printf("TODO: otp\n");
   else if (argc == 2 && strcmp(argv[1], "-v") == 0) printf("%s-%s\n", sofname, version);