- mouring@cvs.openbsd.org 2003/05/15 03:39:07
[sftp-int.c] Make put/get (globed and nonglobed) code more consistant. OK djm@
This commit is contained in:
parent
ed12a26f0d
commit
4962ed6ab4
|
@ -28,6 +28,9 @@
|
||||||
- djm@cvs.openbsd.org 2003/05/15 03:10:52
|
- djm@cvs.openbsd.org 2003/05/15 03:10:52
|
||||||
[ssh-keygen.c]
|
[ssh-keygen.c]
|
||||||
avoid warning; ok jakob@
|
avoid warning; ok jakob@
|
||||||
|
- mouring@cvs.openbsd.org 2003/05/15 03:39:07
|
||||||
|
[sftp-int.c]
|
||||||
|
Make put/get (globed and nonglobed) code more consistant. OK djm@
|
||||||
- (djm) Always parse UsePAM
|
- (djm) Always parse UsePAM
|
||||||
- (djm) Configure glue for DNS support (code doesn't work in portable yet)
|
- (djm) Configure glue for DNS support (code doesn't work in portable yet)
|
||||||
- (djm) Import getrrsetbyname() function from OpenBSD libc (for DNS support)
|
- (djm) Import getrrsetbyname() function from OpenBSD libc (for DNS support)
|
||||||
|
@ -1508,4 +1511,4 @@
|
||||||
save auth method before monitor_reset_key_state(); bugzilla bug #284;
|
save auth method before monitor_reset_key_state(); bugzilla bug #284;
|
||||||
ok provos@
|
ok provos@
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.2712 2003/05/15 03:37:43 djm Exp $
|
$Id: ChangeLog,v 1.2713 2003/05/15 03:48:59 djm Exp $
|
||||||
|
|
90
sftp-int.c
90
sftp-int.c
|
@ -25,7 +25,7 @@
|
||||||
/* XXX: recursive operations */
|
/* XXX: recursive operations */
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: sftp-int.c,v 1.58 2003/04/14 21:31:27 mouring Exp $");
|
RCSID("$OpenBSD: sftp-int.c,v 1.59 2003/05/15 03:39:07 mouring Exp $");
|
||||||
|
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
|
@ -425,29 +425,8 @@ process_get(struct sftp_conn *conn, char *src, char *dst, char *pwd, int pflag)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only one match, dst may be file, directory or unspecified */
|
/* If multiple matches, dst must be a directory or unspecified */
|
||||||
if (g.gl_pathv[0] && g.gl_matchc == 1) {
|
if (g.gl_matchc > 1 && dst && !is_dir(dst)) {
|
||||||
if (dst) {
|
|
||||||
/* If directory specified, append filename */
|
|
||||||
if (is_dir(dst)) {
|
|
||||||
if (infer_path(g.gl_pathv[0], &tmp)) {
|
|
||||||
err = 1;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
abs_dst = path_append(dst, tmp);
|
|
||||||
xfree(tmp);
|
|
||||||
} else
|
|
||||||
abs_dst = xstrdup(dst);
|
|
||||||
} else if (infer_path(g.gl_pathv[0], &abs_dst)) {
|
|
||||||
err = -1;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
err = do_download(conn, g.gl_pathv[0], abs_dst, pflag);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Multiple matches, dst may be directory or unspecified */
|
|
||||||
if (dst && !is_dir(dst)) {
|
|
||||||
error("Multiple files match, but \"%s\" is not a directory",
|
error("Multiple files match, but \"%s\" is not a directory",
|
||||||
dst);
|
dst);
|
||||||
err = -1;
|
err = -1;
|
||||||
|
@ -459,7 +438,19 @@ process_get(struct sftp_conn *conn, char *src, char *dst, char *pwd, int pflag)
|
||||||
err = -1;
|
err = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (dst) {
|
|
||||||
|
if (g.gl_matchc == 1 && dst) {
|
||||||
|
/* If directory specified, append filename */
|
||||||
|
if (is_dir(dst)) {
|
||||||
|
if (infer_path(g.gl_pathv[0], &tmp)) {
|
||||||
|
err = 1;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
abs_dst = path_append(dst, tmp);
|
||||||
|
xfree(tmp);
|
||||||
|
} else
|
||||||
|
abs_dst = xstrdup(dst);
|
||||||
|
} else if (dst) {
|
||||||
abs_dst = path_append(dst, tmp);
|
abs_dst = path_append(dst, tmp);
|
||||||
xfree(tmp);
|
xfree(tmp);
|
||||||
} else
|
} else
|
||||||
|
@ -503,38 +494,8 @@ process_put(struct sftp_conn *conn, char *src, char *dst, char *pwd, int pflag)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only one match, dst may be file, directory or unspecified */
|
/* If multiple matches, dst may be directory or unspecified */
|
||||||
if (g.gl_pathv[0] && g.gl_matchc == 1) {
|
if (g.gl_matchc > 1 && tmp_dst && !remote_is_dir(conn, tmp_dst)) {
|
||||||
if (!is_reg(g.gl_pathv[0])) {
|
|
||||||
error("Can't upload %s: not a regular file",
|
|
||||||
g.gl_pathv[0]);
|
|
||||||
err = 1;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
if (tmp_dst) {
|
|
||||||
/* If directory specified, append filename */
|
|
||||||
if (remote_is_dir(conn, tmp_dst)) {
|
|
||||||
if (infer_path(g.gl_pathv[0], &tmp)) {
|
|
||||||
err = 1;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
abs_dst = path_append(tmp_dst, tmp);
|
|
||||||
xfree(tmp);
|
|
||||||
} else
|
|
||||||
abs_dst = xstrdup(tmp_dst);
|
|
||||||
} else {
|
|
||||||
if (infer_path(g.gl_pathv[0], &abs_dst)) {
|
|
||||||
err = -1;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
abs_dst = make_absolute(abs_dst, pwd);
|
|
||||||
}
|
|
||||||
err = do_upload(conn, g.gl_pathv[0], abs_dst, pflag);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Multiple matches, dst may be directory or unspecified */
|
|
||||||
if (tmp_dst && !remote_is_dir(conn, tmp_dst)) {
|
|
||||||
error("Multiple files match, but \"%s\" is not a directory",
|
error("Multiple files match, but \"%s\" is not a directory",
|
||||||
tmp_dst);
|
tmp_dst);
|
||||||
err = -1;
|
err = -1;
|
||||||
|
@ -551,7 +512,20 @@ process_put(struct sftp_conn *conn, char *src, char *dst, char *pwd, int pflag)
|
||||||
err = -1;
|
err = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (tmp_dst) {
|
|
||||||
|
if (g.gl_matchc == 1 && tmp_dst) {
|
||||||
|
/* If directory specified, append filename */
|
||||||
|
if (remote_is_dir(conn, tmp_dst)) {
|
||||||
|
if (infer_path(g.gl_pathv[0], &tmp)) {
|
||||||
|
err = 1;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
abs_dst = path_append(tmp_dst, tmp);
|
||||||
|
xfree(tmp);
|
||||||
|
} else
|
||||||
|
abs_dst = xstrdup(tmp_dst);
|
||||||
|
|
||||||
|
} else if (tmp_dst) {
|
||||||
abs_dst = path_append(tmp_dst, tmp);
|
abs_dst = path_append(tmp_dst, tmp);
|
||||||
xfree(tmp);
|
xfree(tmp);
|
||||||
} else
|
} else
|
||||||
|
|
Loading…
Reference in New Issue