void do_sftp(int mode, int modeflags, char *batchfile) { FILE *fp; int ret; /* * Batch mode? */ if (mode == 0) { /* ------------------------------------------------------------------ * Now we're ready to do Real Stuff. */ while (1) { struct sftp_command *cmd; cmd = sftp_getcmd(stdin, 0, 0); if (!cmd) break; if (cmd->obey(cmd) < 0) break; } } else { fp = fopen(batchfile, "r"); if (!fp) { printf("Fatal: unable to open %s\n", batchfile); return; } while (1) { struct sftp_command *cmd; cmd = sftp_getcmd(fp, mode, modeflags); if (!cmd) break; ret = cmd->obey(cmd); if (ret < 0) break; if (ret == 0) { if (!(modeflags & 2)) break; } } fclose(fp); } }
int wcplg_do_sftp(char *_cmd, char *_server_output) { FILE *fp; int ret = 0, i2 = 0, i3 = 0; char batchfile[MAX_PATH]; char *_cmd_ln = NULL; struct sftp_command *cmd; server_output = _server_output; _cmd_ln = (char *) malloc(strlen(_cmd) + 2); wcplg_set_last_error_msg(""); strcpy(_cmd_ln, _cmd); strcat(_cmd_ln, "\n"); get_tmp_file_name(batchfile); fp = fopen(batchfile, "w"); if (!fp) { printf("Fatal: unable to open %s\n", batchfile); return 2; } fwrite(_cmd_ln, sizeof(char), strlen(_cmd_ln), fp); fclose(fp); free(_cmd_ln); fp = fopen(batchfile, "r"); if (!fp) { printf("Fatal: unable to open %s\n", batchfile); return 2; } //sftp_getcmd() Speicherloch!!! FIXME cmd = sftp_getcmd(fp, 1, 1); // löschen fclose(fp); remove(batchfile); //cmd->words= eventl. noch zusammenbasteln if (cmd) { ret = cmd->obey(cmd); } return ret; }