From 4d2941caf32dfb946aee54c467c1319c7a89804a Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Wed, 10 May 2023 18:09:54 +0200 Subject: [PATCH] [RB] Add (unfinished regex test) --- Examples/test_script_mode_delim.sh | 1 + source/modes/dmenu.c | 4 ++-- source/modes/recursivebrowser.c | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Examples/test_script_mode_delim.sh b/Examples/test_script_mode_delim.sh index ff3bfff8..5f6db6c5 100755 --- a/Examples/test_script_mode_delim.sh +++ b/Examples/test_script_mode_delim.sh @@ -11,6 +11,7 @@ if [[ $ROFI_RETV = 0 ]] then echo -en "\x00delim\x1f\\x1\n" fi +echo -en "\x00message\x1fmy line1\nmyline2\nmy line3\x1" echo -en "\x00prompt\x1fChange prompt\x1" for a in {1..10} do diff --git a/source/modes/dmenu.c b/source/modes/dmenu.c index b005cfb0..31b7c2dc 100644 --- a/source/modes/dmenu.c +++ b/source/modes/dmenu.c @@ -257,8 +257,6 @@ static gpointer read_input_thread(gpointer userdata) { ssize_t nread = 0; ssize_t len = 0; char *line = NULL; - // Create the message passing queue to the UI thread. - pd->async_queue = g_async_queue_new(); Block *block = NULL; GTimer *tim = g_timer_new(); @@ -616,6 +614,8 @@ static int dmenu_mode_init(Mode *sw) { } pd->wake_source = g_unix_fd_add(pd->pipefd2[0], G_IO_IN, dmenu_async_read_proc, pd); + // Create the message passing queue to the UI thread. + pd->async_queue = g_async_queue_new(); pd->reading_thread = g_thread_new("dmenu-read", (GThreadFunc)read_input_thread, pd); pd->loading = TRUE; diff --git a/source/modes/recursivebrowser.c b/source/modes/recursivebrowser.c index a8b49450..53326d21 100644 --- a/source/modes/recursivebrowser.c +++ b/source/modes/recursivebrowser.c @@ -110,6 +110,7 @@ typedef struct { guint end_thread; gboolean loading; int pipefd2[2]; + GRegex *filter_regex; } FileBrowserModePrivateData; /** @@ -253,7 +254,9 @@ static void scan_dir(FileBrowserModePrivateData *pd, GFile *path) { if (g_strcmp0(rd->d_name, ".") == 0) { continue; } - if (rd->d_name[0] == '.') { + if (pd->filter_regex && + g_regex_match(pd->filter_regex, rd->d_name, 0, NULL)) { + printf("skip: %s\n", rd->d_name); continue; } switch (rd->d_type) { @@ -377,6 +380,7 @@ static int recursive_browser_mode_init(Mode *sw) { if (pipe(pd->pipefd2) == -1) { g_error("Failed to create pipe"); } + pd->filter_regex = g_regex_new("^(\\..*)", G_REGEX_OPTIMIZE, 0, NULL); pd->wake_source = g_unix_fd_add(pd->pipefd2[0], G_IO_IN, recursive_browser_async_read_proc, pd);