struct sftp_packet *sftp_recv(void) { struct sftp_packet *pkt; char x[4]; if (!sftp_recvdata(x, 4)) return NULL; pkt = sftp_recv_prepare(GET_32BIT_MSB_FIRST(x)); if (!sftp_recvdata(pkt->data, pkt->length)) { sftp_pkt_free(pkt); return NULL; } if (!sftp_recv_finish(pkt)) { sftp_pkt_free(pkt); return NULL; } return pkt; }
int wcplg_close_sftp_session() { wcplg_set_last_error_msg(""); if ((back != NULL) && (back->connected(backhandle))) { char ch; back->special(backhandle, TS_EOF); sftp_recvdata(&ch, 1); } // psftp_memory_hole__stopfen(); random_save_seed(); return 1; }
/* * Main program. Parse arguments etc. */ int main(int argc, char *argv[]) { int i; int portnumber = 0; char *userhost, *user; int mode = 0; int modeflags = 0; char *batchfile = NULL; flags = FLAG_STDERR | FLAG_INTERACTIVE; ssh_get_line = &console_get_line; init_winsock(); sk_init(); userhost = user = NULL; for (i = 1; i < argc; i++) { if (argv[i][0] != '-') { if (userhost) usage(); else userhost = dupstr(argv[i]); } else if (strcmp(argv[i], "-v") == 0) { verbose = 1, flags |= FLAG_VERBOSE; } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-?") == 0) { usage(); } else if (strcmp(argv[i], "-l") == 0 && i + 1 < argc) { user = argv[++i]; } else if (strcmp(argv[i], "-P") == 0 && i + 1 < argc) { portnumber = atoi(argv[++i]); } else if (strcmp(argv[i], "-pw") == 0 && i + 1 < argc) { console_password = argv[++i]; } else if (strcmp(argv[i], "-b") == 0 && i + 1 < argc) { mode = 1; batchfile = argv[++i]; } else if (strcmp(argv[i], "-bc") == 0) { modeflags = modeflags | 1; } else if (strcmp(argv[i], "-batch") == 0) { console_batch_mode = TRUE; } else if (strcmp(argv[i], "-be") == 0) { modeflags = modeflags | 2; } else if (strcmp(argv[i], "--") == 0) { i++; break; } else { usage(); } } argc -= i; argv += i; back = NULL; /* * If a user@host string has already been provided, connect to * it now. */ if (userhost) { if (psftp_connect(userhost, user, portnumber)) return 1; do_sftp_init(); } else { printf("psftp: no hostname specified; use \"open host.name\"" " to connect\n"); } do_sftp(mode, modeflags, batchfile); if (back != NULL && back->socket() != NULL) { char ch; back->special(TS_EOF); sftp_recvdata(&ch, 1); } WSACleanup(); random_save_seed(); return 0; }