aboutsummaryrefslogtreecommitdiff
path: root/bb.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2019-06-15 14:14:05 -0700
committerBruce Hill <bruce@bruce-hill.com>2019-06-15 14:14:05 -0700
commitb91dbdd3d076752478ca68a2d7b8c36c2a5a3549 (patch)
treedeb2c478a73933a2e9f14c1d139003379dcf8caf /bb.c
parent45a08afbbd4e3bc6b8ab3dfa4735a182f559624f (diff)
Added $BBDOTFILES, and updated bindings to use it properly. Removed the
`+select:*` and `+deselect:*` in favor of just using shell commands for those functions.
Diffstat (limited to 'bb.c')
-rw-r--r--bb.c36
1 files changed, 12 insertions, 24 deletions
diff --git a/bb.c b/bb.c
index 2e9847d..ee0bbf1 100644
--- a/bb.c
+++ b/bb.c
@@ -286,6 +286,7 @@ int run_script(bb_t *bb, const char *cmd)
args[i] = NULL;
setenv("BBSELECTED", bb->firstselected ? "1" : "", 1);
+ setenv("BBDOTFILES", bb->show_dotfiles ? "1" : "", 1);
setenv("BBCURSOR", bb->nfiles ? bb->files[bb->cursor]->fullname : "", 1);
execvp("sh", args);
@@ -1025,24 +1026,19 @@ bb_result_t process_cmd(bb_t *bb, const char *cmd)
case 'e': { // +deselect:
if (!value && !bb->nfiles) return BB_INVALID;
if (!value) value = bb->files[bb->cursor]->fullname;
- if (strcmp(value, "*") == 0) {
- clear_selection(bb);
+ entry_t *e = load_entry(bb, value);
+ if (e) {
+ deselect_entry(bb, e);
return BB_OK;
- } else {
- entry_t *e = load_entry(bb, value);
- if (e) {
+ }
+ // Filename may no longer exist:
+ for (e = bb->firstselected; e; e = e->selected.next) {
+ if (strcmp(e->fullname, value) == 0) {
deselect_entry(bb, e);
- return BB_OK;
+ break;
}
- // Filename may no longer exist:
- for (e = bb->firstselected; e; e = e->selected.next) {
- if (strcmp(e->fullname, value) == 0) {
- deselect_entry(bb, e);
- break;
- }
- }
- return BB_OK;
}
+ return BB_OK;
}
case 'o': { // +dotfiles:
set_bool(bb->show_dotfiles);
@@ -1153,16 +1149,8 @@ bb_result_t process_cmd(bb_t *bb, const char *cmd)
case '\0': case 'e': // +select:
if (!value && !bb->nfiles) return BB_INVALID;
if (!value) value = bb->files[bb->cursor]->fullname;
- if (strcmp(value, "*") == 0) {
- for (int i = 0; i < bb->nfiles; i++) {
- if (strcmp(bb->files[i]->name, ".")
- && strcmp(bb->files[i]->name, ".."))
- select_entry(bb, bb->files[i]);
- }
- } else {
- entry_t *e = load_entry(bb, value);
- if (e) select_entry(bb, e);
- }
+ entry_t *e = load_entry(bb, value);
+ if (e) select_entry(bb, e);
return BB_OK;
case 'o': // +sort: