Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/ftp_pwd.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 30 - (show annotations) (download) (as text)
Sat Feb 28 13:03:02 2009 UTC (15 years ago) by hirohitohigashi
File MIME type: text/x-csrc
File size: 2884 byte(s)
revised comments.

1 /*
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 int res;
43 char *p1, *p2;
44
45 /*
46 * send PWD command
47 */
48 if( ftp_send_command( ftp, str1 ) < 0 ) {
49 DEBUGPRINT1( "command sending error. %s\n", str1 );
50 return LIBOFTP_ERROR_OS;
51 }
52
53 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 }
58
59 /*
60 * parse response
61 */
62 p1 = strchr( str1, '"' );
63 if( p1 == NULL ) {
64 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 }
68
69 p2 = strchr( p1+1, '"' );
70 if( p2 == NULL ) {
71 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 }
75 if( bufsiz < (p2-p1) ) {
76 DEBUGPRINT1( "buffer too small.%s", "" );
77 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 );
82 buf[ p2 - p1 - 1 ] = 0;
83
84 return LIBOFTP_NOERROR;
85 }

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