diff options
author | John Ankarstrom <john@ankarstrom.se> | 2021-07-06 22:30:38 +0200 |
---|---|---|
committer | John Ankarstrom <john@ankarstrom.se> | 2021-07-06 22:30:38 +0200 |
commit | 90bb66e1f1cee7d63ac0d011e06662920431c718 (patch) | |
tree | d996fa9d2d385294968c4fcc6c6f4febdadb699e | |
parent | 8e0ab5d255876e48282d62443976d3d611089b15 (diff) | |
download | build-90bb66e1f1cee7d63ac0d011e06662920431c718.tar.gz |
Execute commands in the same shell process
-rw-r--r-- | build.1 | 14 | ||||
-rw-r--r-- | build.c | 5 |
2 files changed, 16 insertions, 3 deletions
@@ -44,6 +44,16 @@ Build information is encoded in two ways: .Pp There can be multiple command lines, but only one dependency line. +.Pp +Unlike +.Xr make 1 , +.Nm +executes all command lines, +joined by newlines, +in the same shell process. +This means that you can keep state across multiple commands. +Note that all commands are executed +regardless of the exit status of previous commands. . .Sh EXAMPLES .Pp @@ -52,8 +62,8 @@ Assuming that the file starts with the following text, .Bd -literal -offset indent \&.\\" This document is built with the following shell commands: -\&.\\" $ refer -p refs doc.t | troff -ms | dpost > doc.ps -\&.\\" $ ps2pdf doc.ps > doc.pdf +\&.\\" $ refer -p refs doc.t | troff -ms | dpost > doc.ps && +\&.\\" $ ps2pdf doc.ps > doc.pdf && \&.\\" $ rm doc.ps \&. \&.\\" It depends on the following files: @@ -155,10 +155,13 @@ uptodate: build: /* run commands */ + buf[0] = 0; for (j = 0; j < icmd; j++) { fprintf(stderr, "%s: %s\n", argv[i], cmd[j]); - system(cmd[j]); + strncat(buf, cmd[j], sizeof(buf)-1); + strncat(buf, "\n", sizeof(buf)-1); } + system(buf); done: fclose(fp); |