aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHarry Jeffery <harry@exec64.co.uk>2017-11-30 22:42:03 +0000
committerHarry Jeffery <harry@exec64.co.uk>2017-11-30 22:42:53 +0000
commit6af2d4ec1530d1ada1c56442ac1ee13cff451282 (patch)
tree306b9ad21816155a6b72f211eb4b73fcfcfaec0b /src
parent687038403c4106b4c70091a42de45363608b5e02 (diff)
downloadimv-6af2d4ec1530d1ada1c56442ac1ee13cff451282.tar.gz
Add an open command
Diffstat (limited to 'src')
-rw-r--r--src/imv.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/imv.c b/src/imv.c
index e892469..f664081 100644
--- a/src/imv.c
+++ b/src/imv.c
@@ -101,6 +101,7 @@ void command_pan(struct list *args, const char *argstr, void *data);
void command_select_rel(struct list *args, const char *argstr, void *data);
void command_select_abs(struct list *args, const char *argstr, void *data);
void command_zoom(struct list *args, const char *argstr, void *data);
+void command_open(struct list *args, const char *argstr, void *data);
void command_close(struct list *args, const char *argstr, void *data);
void command_fullscreen(struct list *args, const char *argstr, void *data);
void command_overlay(struct list *args, const char *argstr, void *data);
@@ -190,6 +191,7 @@ struct imv *imv_create(void)
imv_command_register(imv->commands, "select_rel", &command_select_rel);
imv_command_register(imv->commands, "select_abs", &command_select_abs);
imv_command_register(imv->commands, "zoom", &command_zoom);
+ imv_command_register(imv->commands, "open", &command_open);
imv_command_register(imv->commands, "close", &command_close);
imv_command_register(imv->commands, "fullscreen", &command_fullscreen);
imv_command_register(imv->commands, "overlay", &command_overlay);
@@ -1118,6 +1120,31 @@ void command_zoom(struct list *args, const char *argstr, void *data)
}
}
+void command_open(struct list *args, const char *argstr, void *data)
+{
+ (void)argstr;
+ struct imv *imv = data;
+ bool recursive = imv->recursive_load;
+
+ update_env_vars(imv);
+ for (size_t i = 1; i < args->len; ++i) {
+
+ /* allow -r arg to specify recursive */
+ if (i == 1 && !strcmp(args->items[i], "-r")) {
+ recursive = true;
+ continue;
+ }
+
+ wordexp_t word;
+ if(wordexp(args->items[i], &word, 0) == 0) {
+ for(size_t j = 0; j < word.we_wordc; ++j) {
+ imv_navigator_add(imv->navigator, word.we_wordv[j], recursive);
+ }
+ wordfree(&word);
+ }
+ }
+}
+
void command_close(struct list *args, const char *argstr, void *data)
{
(void)args;