Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /trunk/ftp_pwd.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 29 - (hide annotations) (download) (as text)
Sat Feb 28 12:48:31 2009 UTC (15 years ago) by hirohitohigashi
File MIME type: text/x-csrc
File size: 2896 byte(s)
changed error messageing system. and added ftp_timeout() function.

1 hirohitohigashi 19 /*
2     liboftp: this is an FTP library to simplify the work to a Developer
3     who want to work with FTP servers (RFC 959).
4    
5     Copyright (c) 2009 hirohito higashi. All rights reserved.
6     This file is distributed under BSD license.
7     */
8    
9    
10     /***** Feature test switches ************************************************/
11     /***** System headers *******************************************************/
12     #include <string.h>
13    
14    
15     /***** Local headers ********************************************************/
16     #include "liboftp.h"
17     #include "sub.h"
18    
19    
20     /***** Constat values *******************************************************/
21     /***** Macros ***************************************************************/
22     /***** Typedefs *************************************************************/
23     /***** Function prototypes **************************************************/
24     /***** Local variables ******************************************************/
25     /***** Global variables *****************************************************/
26     /***** Signal catching functions ********************************************/
27     /***** Local functions ******************************************************/
28     /***** Global functions *****************************************************/
29    
30     /****************************************************************************/
31     /*! PWD������������
32     *
33     *@param ftp LIBOFTP���������������������
34     *@param buf ���������������������������
35     *@param bufsiz ���������������������
36     *@retval int ������������������������������
37     *@note
38     */
39     int ftp_pwd( LIBOFTP *ftp, char *buf, int bufsiz )
40     {
41     char str1[512] = "PWD\r\n";
42 hirohitohigashi 29 int res;
43 hirohitohigashi 19 char *p1, *p2;
44    
45     /*
46     * send PWD command
47     */
48 hirohitohigashi 20 if( ftp_send_command( ftp, str1 ) < 0 ) {
49 hirohitohigashi 29 DEBUGPRINT1( "command sending error. %s\n", str1 );
50     return LIBOFTP_ERROR_OS;
51 hirohitohigashi 19 }
52    
53 hirohitohigashi 29 if( (res = ftp_receive_response( ftp, str1, sizeof(str1) )) != 257 ) { /* 257: "PATHNAME" created. */
54     DEBUGPRINT1( "command response error. %d\n", res );
55     strncpy( ftp->error_message, str1, sizeof(ftp->error_message) - 1 );
56     return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
57 hirohitohigashi 19 }
58    
59     /*
60     * parse response
61     */
62     p1 = strchr( str1, '"' );
63     if( p1 == NULL ) {
64 hirohitohigashi 29 DEBUGPRINT1( "reply string parse error. %s\n", str1 );
65     strncpy( ftp->error_message, "reply string parse error.", sizeof( ftp->error_message ) );
66     return LIBOFTP_ERROR_PROTOCOL;
67 hirohitohigashi 19 }
68    
69     p2 = strchr( p1+1, '"' );
70     if( p2 == NULL ) {
71 hirohitohigashi 29 DEBUGPRINT1( "reply string parse error. %s\n", str1 );
72     strncpy( ftp->error_message, "reply string parse error.", sizeof( ftp->error_message ) );
73     return LIBOFTP_ERROR_PROTOCOL;
74 hirohitohigashi 19 }
75     if( bufsiz < (p2-p1) ) {
76 hirohitohigashi 29 DEBUGPRINT1( "buffer too small.%s", "" );
77     strncpy( ftp->error_message, "buffer too small", sizeof( ftp->error_message ) );
78     return LIBOFTP_ERROR_BUFFER;
79 hirohitohigashi 19 }
80    
81     memcpy( buf, p1+1, p2 - p1 - 1 );
82     buf[ p2 - p1 - 1 ] = 0;
83    
84 hirohitohigashi 29 return LIBOFTP_NOERROR;
85 hirohitohigashi 19 }

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