aboutsummaryrefslogtreecommitdiff
path: root/bb.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2019-06-12 15:11:29 -0700
committerBruce Hill <bruce@bruce-hill.com>2019-06-12 15:11:29 -0700
commit69955d38082d5a5f47306daafeaf8c17171b0675 (patch)
tree81a4cbef510e87023f02a48185d66791e02511be /bb.c
parent85a4be481b2d1cc36fd06afe5594a8f36729875f (diff)
Switched some stuff to use $() instead of `` for better composing,
rearranged things a bit to launch bb fewer times for commands.
Diffstat (limited to 'bb.c')
-rw-r--r--bb.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/bb.c b/bb.c
index 647b3a2..89d9a4a 100644
--- a/bb.c
+++ b/bb.c
@@ -1387,6 +1387,8 @@ int main(int argc, char *argv[])
for (int i = 1; i < argc; i++) {
if (argv[i][0] == '+') {
++cmd_args;
+ char *colon = strchr(argv[i], ':');
+ if (colon && !colon[1]) break;
continue;
}
if (strcmp(argv[i], "--") == 0) {
@@ -1423,7 +1425,15 @@ int main(int argc, char *argv[])
int i;
for (i = 1; i < argc; i++) {
if (argv[i][0] == '+') {
- write(cmdfd, argv[i]+1, strlen(argv[i]+1)+1);
+ char *colon = strchr(argv[i], ':');
+ if (colon && !colon[1]) {
+ for (int j = i+1; j < argc; j++) {
+ write(cmdfd, argv[i]+1, strlen(argv[i]+1));
+ write(cmdfd, argv[j], strlen(argv[j])+1);
+ }
+ } else {
+ write(cmdfd, argv[i]+1, strlen(argv[i]+1)+1);
+ }
continue;
}
if (strcmp(argv[i], "--") == 0) break;