Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/ftp_pwd.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 20 by hirohitohigashi, Fri Feb 27 11:30:10 2009 UTC revision 30 by hirohitohigashi, Sat Feb 28 13:03:02 2009 UTC
# Line 33  Line 33 
33   *@param        ftp     LIBOFTPへのポインタ。   *@param        ftp     LIBOFTPへのポインタ。
34   *@param        buf     結果代入先バッファ   *@param        buf     結果代入先バッファ
35   *@param        bufsiz  バッファサイズ   *@param        bufsiz  バッファサイズ
36   *@retval       int     マイナス値ならエラー   *@retval       int     エラーコード
37   *@note   *@note
38   */   */
39  int ftp_pwd( LIBOFTP *ftp, char *buf, int bufsiz )  int ftp_pwd( LIBOFTP *ftp, char *buf, int bufsiz )
40  {  {
41      char str1[512] = "PWD\r\n";      char str1[512] = "PWD\r\n";
42      int ret;      int res;
43      char *p1, *p2;      char *p1, *p2;
44    
45      /*      /*
46       * send PWD command       * send PWD command
47       */       */
48      if( ftp_send_command( ftp, str1 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
49          DEBUGPRINT1( "pwd: command sending error. %s\n", str1 );          DEBUGPRINT1( "command sending error. %s\n", str1 );
50          return -1;          return LIBOFTP_ERROR_OS;
51      }      }
52    
53      if( (ret = ftp_receive_response( ftp, str1, sizeof(str1) )) != 257 ) {      /* 257: "PATHNAME" created. */      if( (res = ftp_receive_response( ftp, str1, sizeof(str1) )) != 257 ) {      /* 257: "PATHNAME" created. */
54          DEBUGPRINT1( "pwd: command response error. %d\n", ret );          DEBUGPRINT1( "command response error. %d\n", res );
55          return -2;          strncpy( ftp->error_message, str1, sizeof(ftp->error_message) - 1 );
56            return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
57      }      }
58    
59      /*      /*
# Line 60  int ftp_pwd( LIBOFTP *ftp, char *buf, in Line 61  int ftp_pwd( LIBOFTP *ftp, char *buf, in
61       */       */
62      p1 = strchr( str1, '"' );      p1 = strchr( str1, '"' );
63      if( p1 == NULL ) {      if( p1 == NULL ) {
64          DEBUGPRINT1( "pwd: reply string parse error. %s\n", str1 );          DEBUGPRINT1( "reply string parse error. %s\n", str1 );
65          return -2;          strncpy( ftp->error_message, "reply string parse error.", sizeof( ftp->error_message ) );
66            return LIBOFTP_ERROR_PROTOCOL;
67      }      }
68    
69      p2 = strchr( p1+1, '"' );      p2 = strchr( p1+1, '"' );
70      if( p2 == NULL ) {      if( p2 == NULL ) {
71          DEBUGPRINT1( "pwd: reply string parse error. %s\n", str1 );          DEBUGPRINT1( "reply string parse error. %s\n", str1 );
72          return -2;          strncpy( ftp->error_message, "reply string parse error.", sizeof( ftp->error_message ) );
73            return LIBOFTP_ERROR_PROTOCOL;
74      }      }
75      if( bufsiz < (p2-p1) ) {      if( bufsiz < (p2-p1) ) {
76          DEBUGPRINT1( "pwd: buffer too small.%s", "" );          DEBUGPRINT1( "buffer too small.%s", "" );
77          return -3;          strncpy( ftp->error_message, "buffer too small", sizeof( ftp->error_message ) );
78            return LIBOFTP_ERROR_BUFFER;
79      }      }
80    
81      memcpy( buf, p1+1, p2 - p1 - 1 );      memcpy( buf, p1+1, p2 - p1 - 1 );
82      buf[ p2 - p1 - 1 ] = 0;      buf[ p2 - p1 - 1 ] = 0;
83    
84      return 0;      return LIBOFTP_NOERROR;
85  }  }

Legend:
Removed from v.20  
changed lines
  Added in v.30

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26