diff options
| author | Paul Buetow <paul@buetow.org> | 2026-07-14 09:08:10 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-07-14 09:08:10 +0300 |
| commit | 95858bc4a819c118cf76dd38d6da0365ead997a9 (patch) | |
| tree | 739544e2314c3e0bab65fb9c75e2c17e89069017 /src/opener.h | |
| parent | 12be1b9ae52829292d13cc2fcc6ff7571d050d62 (diff) | |
operate: mover, opener, runner, clipboard modules + tests (ut0)
M8 (partial): plain-C operate modules + unit tests.
- src/mover.{c,h}: move files to configured dests (g_file_move + stem
collision suffix -1/-2), one-level undo (move back), acts on marks-or-current.
- src/opener.{c,h}: %f expand + detached GSubprocess launch (non-blocking).
- src/runner.{c,h}: /bin/sh -c with single-quoted %f/%d (injection guard),
async wait_check, rescan on completion.
- src/clipboard.{c,h}: image/png via GdkContentProvider + uri-list.
- meson: new sources added to libggae.
- tests: unit test_mover (move/undo/collision), test_opener (true/false/weird
filenames), test_runner (true/false/injection guard). 19/19 green, ASan clean.
- Fixed: g_str_replace (not in GLib 2.88) → manual _str_replace; GdkContentProvider
API (new_typed/new_for_value); mover collision stem-suffix; runner /bin/sh -c
argv (single arg, not shell-parsed); test GFile leaks.
Diffstat (limited to 'src/opener.h')
| -rw-r--r-- | src/opener.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/opener.h b/src/opener.h new file mode 100644 index 0000000..60d6c03 --- /dev/null +++ b/src/opener.h @@ -0,0 +1,28 @@ +#ifndef GGAZE_OPENER_H +#define GGAZE_OPENER_H + +#include <gio/gio.h> +#include <glib.h> + +G_BEGIN_DECLS + +typedef struct { + char *c_name; + char *c_command; /* may contain %f */ +} OpenerProg; + +typedef struct Opener Opener; + +Opener *opener_new(void); +void opener_delete(Opener *p_o); +void opener_set_progs(Opener *p_o, const GPtrArray *p_progs); +const GPtrArray *opener_get_progs(Opener *p_o); + +/* Launch the program with %f expanded to the file's path. Detached. Returns + * TRUE if the process was started. */ +gboolean opener_launch(Opener *p_o, GFile *p_file, const OpenerProg *p_prog, + GError **p_err); + +G_END_DECLS + +#endif
\ No newline at end of file |
