** Check respons is valid

Return TypeFunction nameArguments
hzEcodehzFtpClient::SetRemoteDir(const hzString&,)

Declared in file: hzFtpClient.h
Defined in file : hzFtpClient.cpp

Function Logic:

0:START 1:_checkpath rc 2:rc!=E_OK 3:Return rc 4:_hzGlobal_Debug&HZ_DEBUG_CLIENT 5:nTry 6:nTry<2; 7:nTry==1 8:hzTcpClient::Close hzFtpClient::_reconnect rc 9:rc!=E_OK 10:sprintf strlen len 11:(rc=m_ConnControl.Send(m_c_sbuf,len))!=E_OK 12:(rc=_ftprecv(nRecv,*_fn))!=E_OK 13:rc==E_OK 14:m_nRescode==250 15:rc 16:rc 17:rc==E_OK 18:m_ServerDir 19:_hzGlobal_Debug&HZ_DEBUG_CLIENT 20:m_nTries 21:Return E_OK 22:rc==E_NOTFOUND 23:Return rc 24:Err2Txt 25:Return rc

Function body:

hzEcode hzFtpClient::SetRemoteDir (const hzString& dir)
{
   _hzfunc("hzFtpClient::SetRemoteDir") ;
   hzString    tgt ;
   uint32_t    nRecv ;
   uint32_t    len ;
   uint32_t    nTry ;
   hzEcode     rc ;
   /*
   **  ** Check the directory is reasonable
   **      */
   rc = _checkpath(tgt, m_ServerDir, dir) ;
   if (rc != E_OK)
   {
       threadLog("In dir %s, acting on CD %s results in %s\n", *m_ServerDir, *dir, *tgt) ;
       return rc ;
   }
   if (_hzGlobal_Debug & HZ_DEBUG_CLIENT)
       threadLog("Tgt dir is %s\n", *tgt) ;
   /*
   **  ** Send CWD command and receive resposns, reconnect if required.
   **      */
   for (nTry = 0; nTry < 2; nTry++)
   {
       if (nTry == 1)
       {
           m_ConnControl.Close() ;
           rc = _reconnect() ;
           if (rc != E_OK)
               break ;
       }
       /*
       **  ** Send the CWD command, recv response
       **           */
       sprintf(m_c_sbuf, "CWD %s\r\n", *dir) ;
       len = strlen(m_c_sbuf) ;
       if ((rc = m_ConnControl.Send(m_c_sbuf, len)) != E_OK)
       {
           threadLog("Could not send CWD command - Reconnecting ...\n") ;
           continue ;
       }
       if ((rc = _ftprecv(nRecv, *_fn)) != E_OK)
       {
           threadLog("Could not recv CWD response - Reconnecting ...\n") ;
           continue ;
       }
       break ;
   }
   if (rc == E_OK)
   {
       /*
       **  ** Check respons is valid
       **           */
       if (m_nRescode == 250)
           rc = E_OK ;
       else
           rc = E_NOTFOUND ;
   }
   if (rc == E_OK)
   {
       m_ServerDir = tgt ;
       if (_hzGlobal_Debug & HZ_DEBUG_CLIENT)
           threadLog("Remote dir is now %s\n", *m_ServerDir) ;
       m_nTries = 0;
       return E_OK ;
   }
   if (rc == E_NOTFOUND)
   {
       threadLog("Could not CD to %s (%s)\n", *tgt, m_c_rbuf) ;
       return rc ;
   }
   threadLog("Failure report (err=%s)\n", Err2Txt(rc)) ;
   return rc ;
}