Changed exit codes of dialogue to change the semantics of closing dialogue window with (x) button.

This commit is contained in:
fedir 2025-05-22 19:01:16 +02:00
parent 7dac50e4d9
commit 49f4612c6e
Signed by: fedir
GPG Key ID: C959EE85F0C9362C
3 changed files with 14 additions and 11 deletions

View File

@ -7,9 +7,10 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#define YES 0 #define YES 1
#define NO 1 #define NO 0
#define PERM 2 #define PERM 2
#define TEMP 0
int exit_code = 0; int exit_code = 0;
gboolean is_permanent = false; gboolean is_permanent = false;
@ -20,7 +21,7 @@ static void positive_response(GtkWindow *window) {
fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer)); fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer));
exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox))) exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox)))
? YES | PERM ? YES | PERM
: YES; : YES | TEMP;
gtk_window_close(window); gtk_window_close(window);
} }
@ -28,7 +29,7 @@ static void negative_response(GtkWindow *window) {
fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer)); fprintf(stdout, "%s", gtk_entry_buffer_get_text(entry_buffer));
exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox))) exit_code = (gtk_check_button_get_active(GTK_CHECK_BUTTON(checkbox)))
? NO | PERM ? NO | PERM
: NO; : NO | TEMP;
gtk_window_close(window); gtk_window_close(window);
} }

View File

@ -26,9 +26,10 @@
#include <sys/un.h> #include <sys/un.h>
#include <unistd.h> #include <unistd.h>
#define DIALOGUE_YES 0 #define DIALOGUE_YES 1
#define DIALOGUE_NO 1 #define DIALOGUE_NO 0
#define DIALOGUE_PERM 2 #define DIALOGUE_PERM 2
#define DIALOGUE_TEMP 0
pthread_mutex_t access_check_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t access_check_mutex = PTHREAD_MUTEX_INITIALIZER;
@ -146,7 +147,7 @@ struct dialogue_response ask_access(const char *filename,
if (dialogue_exit_code == (DIALOGUE_YES | DIALOGUE_PERM)) { if (dialogue_exit_code == (DIALOGUE_YES | DIALOGUE_PERM)) {
response.decision = ALLOW; response.decision = ALLOW;
} else if (dialogue_exit_code == DIALOGUE_YES) { } else if (dialogue_exit_code == DIALOGUE_YES | DIALOGUE_TEMP) {
response.decision = ALLOW_TEMP; response.decision = ALLOW_TEMP;
} else if (dialogue_exit_code == (DIALOGUE_NO | DIALOGUE_PERM)) { } else if (dialogue_exit_code == (DIALOGUE_NO | DIALOGUE_PERM)) {
response.decision = DENY; response.decision = DENY;

View File

@ -2,9 +2,10 @@
# fake-icfs_dialogue: script that mocks the behavior of icfs_dialogue based on the ./.fake-icfs_dialogue-response file # fake-icfs_dialogue: script that mocks the behavior of icfs_dialogue based on the ./.fake-icfs_dialogue-response file
ICFS_DIALOGUE_YES=0 ICFS_DIALOGUE_YES=1
ICFS_DIALOGUE_NO=1 ICFS_DIALOGUE_NO=0
ICFS_DIALOGUE_PERM=2 ICFS_DIALOGUE_PERM=2
ICFS_DIALOGUE_TEMP=0
if [[ $1 == "--set-fake-response" ]]; then if [[ $1 == "--set-fake-response" ]]; then
#someone knows we are fake :) #someone knows we are fake :)
@ -27,9 +28,9 @@ else
fi fi
if [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes" ]]; then if [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes" ]]; then
exit "$ICFS_DIALOGUE_YES" exit "$((ICFS_DIALOGUE_YES | ICFS_DIALOGUE_TEMP))"
elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no" ]]; then elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no" ]]; then
exit "$ICFS_DIALOGUE_NO" exit "$((ICFS_DIALOGUE_NO | ICFS_DIALOGUE_TEMP))"
elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes_perm" ]]; then elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "yes_perm" ]]; then
exit "$((ICFS_DIALOGUE_YES | ICFS_DIALOGUE_PERM))" exit "$((ICFS_DIALOGUE_YES | ICFS_DIALOGUE_PERM))"
elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no_perm" ]]; then elif [[ $FAKE_ICFS_DIALOGUE_RESPONSE == "no_perm" ]]; then