version 1.235, 2023/09/08 05:56:13 |
version 1.236, 2023/09/10 23:12:32 |
|
|
char **remote_pathp; |
char **remote_pathp; |
}; |
}; |
|
|
int remote_glob(struct sftp_conn *, const char *, int, |
int sftp_glob(struct sftp_conn *, const char *, int, |
int (*)(const char *, int), glob_t *); /* proto for sftp-glob.c */ |
int (*)(const char *, int), glob_t *); /* proto for sftp-glob.c */ |
|
|
/* Separators for interactive commands */ |
/* Separators for interactive commands */ |
|
|
memset(&g, 0, sizeof(g)); |
memset(&g, 0, sizeof(g)); |
|
|
debug3("Looking up %s", abs_src); |
debug3("Looking up %s", abs_src); |
if ((r = remote_glob(conn, abs_src, GLOB_MARK, NULL, &g)) != 0) { |
if ((r = sftp_glob(conn, abs_src, GLOB_MARK, NULL, &g)) != 0) { |
if (r == GLOB_NOSPACE) { |
if (r == GLOB_NOSPACE) { |
error("Too many matches for \"%s\".", abs_src); |
error("Too many matches for \"%s\".", abs_src); |
} else { |
} else { |
|
|
|
|
memset(&g, 0, sizeof(g)); |
memset(&g, 0, sizeof(g)); |
|
|
if ((r = remote_glob(conn, path, |
if ((r = sftp_glob(conn, path, |
GLOB_MARK|GLOB_NOCHECK|GLOB_BRACE|GLOB_KEEPSTAT|GLOB_NOSORT, |
GLOB_MARK|GLOB_NOCHECK|GLOB_BRACE|GLOB_KEEPSTAT|GLOB_NOSORT, |
NULL, &g)) != 0 || |
NULL, &g)) != 0 || |
(g.gl_pathc && !g.gl_matchc)) { |
(g.gl_pathc && !g.gl_matchc)) { |
|
|
break; |
break; |
case I_RM: |
case I_RM: |
path1 = make_absolute_pwd_glob(path1, *pwd); |
path1 = make_absolute_pwd_glob(path1, *pwd); |
remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g); |
sftp_glob(conn, path1, GLOB_NOCHECK, NULL, &g); |
for (i = 0; g.gl_pathv[i] && !interrupted; i++) { |
for (i = 0; g.gl_pathv[i] && !interrupted; i++) { |
if (!quiet) |
if (!quiet) |
mprintf("Removing %s\n", g.gl_pathv[i]); |
mprintf("Removing %s\n", g.gl_pathv[i]); |
|
|
attrib_clear(&a); |
attrib_clear(&a); |
a.flags |= SSH2_FILEXFER_ATTR_PERMISSIONS; |
a.flags |= SSH2_FILEXFER_ATTR_PERMISSIONS; |
a.perm = n_arg; |
a.perm = n_arg; |
remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g); |
sftp_glob(conn, path1, GLOB_NOCHECK, NULL, &g); |
for (i = 0; g.gl_pathv[i] && !interrupted; i++) { |
for (i = 0; g.gl_pathv[i] && !interrupted; i++) { |
if (!quiet) |
if (!quiet) |
mprintf("Changing mode on %s\n", |
mprintf("Changing mode on %s\n", |
|
|
case I_CHOWN: |
case I_CHOWN: |
case I_CHGRP: |
case I_CHGRP: |
path1 = make_absolute_pwd_glob(path1, *pwd); |
path1 = make_absolute_pwd_glob(path1, *pwd); |
remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g); |
sftp_glob(conn, path1, GLOB_NOCHECK, NULL, &g); |
for (i = 0; g.gl_pathv[i] && !interrupted; i++) { |
for (i = 0; g.gl_pathv[i] && !interrupted; i++) { |
if ((hflag ? sftp_lstat : sftp_stat)(conn, |
if ((hflag ? sftp_lstat : sftp_stat)(conn, |
g.gl_pathv[i], 0, &aa) != 0) { |
g.gl_pathv[i], 0, &aa) != 0) { |
|
|
memset(&g, 0, sizeof(g)); |
memset(&g, 0, sizeof(g)); |
if (remote != LOCAL) { |
if (remote != LOCAL) { |
tmp = make_absolute_pwd_glob(tmp, remote_path); |
tmp = make_absolute_pwd_glob(tmp, remote_path); |
remote_glob(conn, tmp, GLOB_DOOFFS|GLOB_MARK, NULL, &g); |
sftp_glob(conn, tmp, GLOB_DOOFFS|GLOB_MARK, NULL, &g); |
} else |
} else |
(void)glob(tmp, GLOB_DOOFFS|GLOB_MARK, NULL, &g); |
(void)glob(tmp, GLOB_DOOFFS|GLOB_MARK, NULL, &g); |
|
|