削除の機能性
このコミットが含まれているのは:
コミット
a4b3777169
21
README.md
21
README.md
@ -2,6 +2,27 @@
|
||||
シンプルなパスワードマネージャー
|
||||
|
||||
## インストールする方法
|
||||
### CRUX
|
||||
```sh
|
||||
doas prt-get depinst gpgme gnupg pinentry
|
||||
```
|
||||
|
||||
### Artix
|
||||
```sh
|
||||
doas pacman -S base-devel gpgme gnupg pinentry
|
||||
```
|
||||
|
||||
### OpenBSD
|
||||
```sh
|
||||
doas pkg_add gmake gpgme gnupg pinentry
|
||||
```
|
||||
|
||||
### FreeBSD
|
||||
```sh
|
||||
doas pkg install gmake gpgme gnupg pinentry
|
||||
```
|
||||
|
||||
### 全部
|
||||
```sh
|
||||
mkdir -p ~/.local/share/sp
|
||||
gpg --generate-key
|
||||
|
24
delpass.c
24
delpass.c
@ -4,23 +4,39 @@
|
||||
|
||||
#include "delpass.h"
|
||||
|
||||
void delpass(char* file) {
|
||||
int delpass(char* file) {
|
||||
// パスを準備
|
||||
char pwfile[512];
|
||||
char* homedir = getenv("HOME");
|
||||
if (homedir == NULL) {
|
||||
perror("ホームディレクトリを受取に失敗。");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
char* basedir = "/.local/share/sp/";
|
||||
char* ext = ".gpg";
|
||||
snprintf(pwfile, sizeof(pwfile), "%s%s%s%s", homedir, basedir, file, ext);
|
||||
int needed = snprintf(pwfile, sizeof(pwfile), "%s%s%s%s", homedir, basedir, file, ext);
|
||||
if (needed >= (int)sizeof(pwfile)) {
|
||||
fprintf(stderr, "エラー:パスが長すぎる。\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 削除を確認する
|
||||
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);
|
||||
|
||||
if (unlink(pwfile) == -1) {
|
||||
perror("パスワードを削除出来ませんですた。");
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("パスワードを削除しました。\n");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
#ifndef DELPASS_H
|
||||
#define DELPASS_H
|
||||
|
||||
void delpass(char* file);
|
||||
int delpass(char* file);
|
||||
|
||||
#endif
|
||||
|
17
main.c
17
main.c
@ -1,5 +1,6 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <gpgme.h>
|
||||
@ -22,7 +23,7 @@ void helpme() {
|
||||
//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 -l :パスワード一覧を表示\n", sofname);
|
||||
printf("%s -a <パスワード名> :パスワードを追加\n", sofname);
|
||||
printf("%s -d <パスワード名> :パスワードを削除\n", sofname);
|
||||
//printf("%s -g <文字数> [risk|secure] <パスワード名> :希望文字数でパスワードをランダムに作成する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname);
|
||||
@ -40,7 +41,19 @@ int main (int argc, char* argv[]) {
|
||||
if (argc == 3 && strcmp(argv[1], "-i") == 0) printf("TODO: 初期設定\n");
|
||||
else if (argc == 3 && strcmp(argv[1], "-s") == 0) showpass(argv[2]);
|
||||
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 == 2 && strcmp(argv[1], "-l") == 0) {
|
||||
char basePath[512];
|
||||
char* homedir = getenv("HOME");
|
||||
if (homedir == NULL) {
|
||||
perror("ホームディレクトリを受取に失敗。");
|
||||
return -1;
|
||||
}
|
||||
|
||||
char* basedir = "/.local/share/sp/";
|
||||
snprintf(basePath, sizeof(basePath), "%s%s", homedir, basedir);
|
||||
|
||||
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 == 4 || argc == 5) && strcmp(argv[1], "-g") == 0) printf("TODO: パスワードを創作\n");
|
||||
|
読み込み中…
新しいイシューから参照
ユーザーをブロックする