]> Nishi Git Mirror - sp.git/commitdiff
コピータイムアウトの間にCTRL+Cを押したら、クリップボードから取り消す様に
author諏訪子 <suwako@076.moe>
Wed, 9 Oct 2024 06:31:02 +0000 (15:31 +0900)
committer諏訪子 <suwako@076.moe>
Wed, 9 Oct 2024 06:31:02 +0000 (15:31 +0900)
CHANGELOG.md
src/common.c
src/common.h
src/otppass.c
src/yankpass.c

index a4ef4e635c83161a5d34126d42a611fcc59de04b..f3a67ebe3128e74be6ae5ea1a97f1c0a3dd6505d 100644 (file)
@@ -5,6 +5,7 @@
 * パスワードコピーの期間を設定出来る様に
 * ワンタイムパスワード(OTP)を表示せずにコピー機能性の追加
 * Wayland対応の追加
+* コピータイムアウトの間にCTRL+Cを押したら、クリップボードから取り消す様に
 
 # 1.4.0
 * Haiku対応
index 58c975e6600d611fa643586a0c0047dd89a4f2e8..4253a9d61cfe5d414444b4dcc514d3638bd9372f 100644 (file)
@@ -253,3 +253,21 @@ void freeList(List *list) {
   list->tail = NULL;
   list->size = 0;
 }
+
+void handle_sigint(int sig) {
+  (void)sig;
+
+  if (getenv("WAYLAND_DISPLAY") != NULL) {
+    system("echo -n \"\" | wl-copy");
+  } else {
+    system("echo -n \"\" | xclip -selection clipboard");
+  }
+
+  if (strncmp(getlang(), "en", 2) == 0) {
+    printf("\nClipboard cleared and program aborted.\n");
+  } else {
+    printf("\nクリップボードをクリアし、プログラムが中止されました。\n");
+  }
+
+  exit(0);
+}
index dead7fe8622ffdeededbf66d2cda2d020a5fe5a3..2e06fd5d50818aa29760b0057aa39ba3f01451ee 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef COMMON_H
 #define COMMON_H
 
+#include <signal.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -27,6 +28,7 @@ int mkdir_r(const char *path, mode_t mode);
 int tmpcopy(const char *inpath, const char *outpath);
 void scanDir(const char *dpath, const char *rpath, List *fpaths,
     List *fullpaths, List *dispaths);
+void handle_sigint(int sig);
 
 // C言語のvector
 void initList(List *list);
index 39aaec88f0cfa23dfdad10f62496e14d636461d2..1124fc1c7b2912bf1098beebc465733db04cb97c 100644 (file)
@@ -124,6 +124,11 @@ void otppass(char *file, int isCopy, int copyTimeout) {
     return;
   }
 
+  // CTRL + Cを押す場合
+  if (isCopy) {
+    signal(SIGINT, handle_sigint);
+  }
+
   gpgme_ctx_t ctx;
   gpgme_error_t err;
   gpgme_data_t in, out;
index d79463c0cb935f13b118ec0076558acfad591bb8..c1b54353d9d3367245b4d848809b76e66e9c50bc 100644 (file)
@@ -39,6 +39,9 @@ void yankpass(char *file, int copyTimeout) {
     return;
   }
 
+  // CTRL + Cを押す場合
+  signal(SIGINT, handle_sigint);
+
   // OpenPGPプロトコールを設定
   gpgme_set_protocol(ctx, GPGME_PROTOCOL_OpenPGP);