このコミットが含まれているのは:
守矢諏訪子 2023-11-30 00:27:53 +09:00
コミット f9cf87429d
6個のファイルの変更63行の追加5行の削除

ファイルの表示

@ -3,7 +3,7 @@ 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 delpass.c listpass.c genpass.c
FILES=main.c showpass.c yankpass.c addpass.c delpass.c listpass.c genpass.c initpass.c
CFLAGS=-Wall -Wextra -g
LDFLAGS=-lgpgme

ファイルの表示

@ -1,6 +1,9 @@
#ifndef ADDPASS_H
#define ADDPASS_H
#include <sys/stat.h>
int mkdir_r(const char *path, mode_t mode);
void addpass(char* file);
#endif

50
initpass.c ノーマルファイル
ファイルの表示

@ -0,0 +1,50 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <string.h>
#include <errno.h>
#include "initpass.h"
#include "addpass.h"
void initpass(char* gpgid) {
char* homedir = getenv("HOME");
if (homedir == NULL) {
perror("ホームディレクトリを受取に失敗。");
return;
}
char* basedir = "/.local/share/sp/";
char dirpath[256];
snprintf(dirpath, sizeof(dirpath), "%s%s", homedir, basedir);
if (mkdir_r(dirpath, 0755) != 0 && errno != EEXIST) {
perror("ディレクトリを作成に失敗。");
return;
}
char gpgidpath[512];
snprintf(gpgidpath, sizeof(gpgidpath), "%s/.gpg-id", dirpath);
struct stat statbuf;
if (stat(gpgidpath, &statbuf) == 0) {
fprintf(stderr, ".gpg-idファイルは既に存在します。\n");
return;
}
FILE* gpgidfile = fopen(gpgidpath, "w");
if (gpgidfile == NULL) {
perror(".gpg-idファイルを書き込めません。");
fclose(gpgidfile);
return;
}
if (fputs(gpgid, gpgidfile) == EOF) {
fprintf(stderr, ".gpg-idファイルへの書き込みに失敗しました。\n");
fclose(gpgidfile);
return;
}
fclose(gpgidfile);
printf("初期設定に完了しました。");
}

6
initpass.h ノーマルファイル
ファイルの表示

@ -0,0 +1,6 @@
#ifndef INITPASS_H
#define INITPASS_H
void initpass(char* gpgid);
#endif

6
main.c
ファイルの表示

@ -5,7 +5,7 @@
#include <gpgme.h>
void initpass(char* gpgid);
#include "initpass.h"
#include "showpass.h"
#include "yankpass.h"
#include "listpass.h"
@ -20,7 +20,7 @@ const char* version = "1.0.0";
void helpme() {
printf("使い方:\n");
/* printf("%s -i <gpg-id> GPGと使ってパスワードストレージを初期設定\n", sofname); */
printf("%s -i <gpg-id> GPGと使ってパスワードストレージを初期設定\n", sofname);
printf("%s -s <パスワード名> :パスワードを表示\n", sofname);
printf("%s -y <パスワード名> :パスワードを表示せずクリップボードにコピーする\n", sofname);
printf("%s -l :パスワード一覧を表示\n", sofname);
@ -38,7 +38,7 @@ int main (int argc, char* argv[]) {
return 0;
}
if (argc == 3 && strcmp(argv[1], "-i") == 0) printf("TODO: 初期設定\n");
if (argc == 3 && strcmp(argv[1], "-i") == 0) initpass(argv[2]);
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) {

ファイルの表示

@ -87,7 +87,6 @@ void showpass(char* file) {
buffer[read_bytes] = '\0';
printf("%s", buffer);
}
puts("");
// 掃除
clean_up(ctx, in, out, gpgfile, gpgpath);