mkdir { yylval.i = DGLCMD_MKDIR; return TYPE_DGLCMD1; }
chdir { yylval.i = DGLCMD_CHDIR; return TYPE_DGLCMD1; }
cp { yylval.i = DGLCMD_CP; return TYPE_DGLCMD2; }
+ifnxcp { yylval.i = DGLCMD_IF_NX_CP; return TYPE_DGLCMD2; }
unlink { yylval.i = DGLCMD_UNLINK; return TYPE_DGLCMD1; }
setenv { yylval.i = DGLCMD_SETENV; return TYPE_DGLCMD2; }
exec { yylval.i = DGLCMD_EXEC; return TYPE_DGLCMD2; }
DGLCMD_NONE = 0,
DGLCMD_MKDIR, /* mkdir foo */
DGLCMD_CHDIR, /* chdir foo */
+ DGLCMD_IF_NX_CP, /* ifnxcp foo bar */
DGLCMD_CP, /* cp foo bar */
DGLCMD_UNLINK, /* unlink foo */
DGLCMD_EXEC, /* exec foo bar */
case DGLCMD_CHDIR:
if (p1) chdir(p1);
break;
+ case DGLCMD_IF_NX_CP:
+ if (p1 && p2) {
+ FILE *tmpfile;
+ tmpfile = fopen(p2, "r");
+ if (tmpfile) break;
+ }
+ /* else fall through to cp */
case DGLCMD_CP:
if (p1 && p2) {
FILE *cannedf, *newfile;
# mkdir "foo" = creates a directory "foo"
# chdir "foo" = changes current work dir to "foo"
# cp "foo" "bar" = copies file "foo" to "bar", overwriting previous "bar"
+# ifnxcp "foo" "bar" = copies file "foo" to "bar", if "bar" doesn't exist
# unlink "foo" = deletes file "foo"
# setenv "foo "bar" = sets environment variable "foo" to "bar"
# exec "foo" "bar" = execute "foo" with "bar" as it's param