mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-25 01:02:24 +00:00
When PSFTP exits in batch mode due to a command failure, set exit status != 0.
There are possibly other circumstances when PSFTP should also return failure, but that one seems particularly obvious.
This commit is contained in:
parent
31ff9e0f96
commit
95501a148c
18
psftp.c
18
psftp.c
@ -2388,7 +2388,7 @@ void do_sftp_cleanup()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_sftp(int mode, int modeflags, char *batchfile)
|
int do_sftp(int mode, int modeflags, char *batchfile)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int ret;
|
int ret;
|
||||||
@ -2421,8 +2421,9 @@ void do_sftp(int mode, int modeflags, char *batchfile)
|
|||||||
fp = fopen(batchfile, "r");
|
fp = fopen(batchfile, "r");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
printf("Fatal: unable to open %s\n", batchfile);
|
printf("Fatal: unable to open %s\n", batchfile);
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
ret = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
struct sftp_command *cmd;
|
struct sftp_command *cmd;
|
||||||
cmd = sftp_getcmd(fp, mode, modeflags);
|
cmd = sftp_getcmd(fp, mode, modeflags);
|
||||||
@ -2437,8 +2438,13 @@ void do_sftp(int mode, int modeflags, char *batchfile)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
/*
|
||||||
|
* In batch mode, and if exit on command failure is enabled,
|
||||||
|
* any command failure causes the whole of PSFTP to fail.
|
||||||
|
*/
|
||||||
|
if (ret == 0 && !(modeflags & 2)) return 2;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -2894,7 +2900,7 @@ const int share_can_be_upstream = FALSE;
|
|||||||
*/
|
*/
|
||||||
int psftp_main(int argc, char *argv[])
|
int psftp_main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int i;
|
int i, ret;
|
||||||
int portnumber = 0;
|
int portnumber = 0;
|
||||||
char *userhost, *user;
|
char *userhost, *user;
|
||||||
int mode = 0;
|
int mode = 0;
|
||||||
@ -2990,7 +2996,7 @@ int psftp_main(int argc, char *argv[])
|
|||||||
" to connect\n");
|
" to connect\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
do_sftp(mode, modeflags, batchfile);
|
ret = do_sftp(mode, modeflags, batchfile);
|
||||||
|
|
||||||
if (back != NULL && back->connected(backhandle)) {
|
if (back != NULL && back->connected(backhandle)) {
|
||||||
char ch;
|
char ch;
|
||||||
@ -3004,5 +3010,5 @@ int psftp_main(int argc, char *argv[])
|
|||||||
console_provide_logctx(NULL);
|
console_provide_logctx(NULL);
|
||||||
sk_cleanup();
|
sk_cleanup();
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user