Ejemplo n.º 1
0
Archivo: psftp.c Proyecto: rdebath/sgt
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);

    }
}
Ejemplo n.º 2
0
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;
}