Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/ftp_user.c

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

revision 25 by hirohitohigashi, Sat Feb 28 01:15:41 2009 UTC revision 29 by hirohitohigashi, Sat Feb 28 12:48:31 2009 UTC
# Line 41  Line 41 
41  int ftp_user( LIBOFTP *ftp, const char *user, const char *pass )  int ftp_user( LIBOFTP *ftp, const char *user, const char *pass )
42  {  {
43      char str1[256];      char str1[256];
44      int ret;      int res;
45    
46      /*      /*
47       * send user name.       * send user name.
48       */       */
49      snprintf( str1, sizeof(str1)-1, "USER %s\r\n", user );      snprintf( str1, sizeof(str1)-1, "USER %s\r\n", user );
50      if( ftp_send_command( ftp, str1 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
51          DEBUGPRINT1( "user: user command sending error.%s\n", "" );          DEBUGPRINT1( "user command sending error.%s\n", "" );
52          return -1;          return LIBOFTP_ERROR_OS;
53      }      }
54    
55      ret = ftp_receive_response( ftp, 0, 0 );      res = ftp_receive_response( ftp, ftp->error_message, sizeof(ftp->error_message) );
56      if( ret == 230 ) {                                          /* 230: User logged in, proceed. */      if( res == 230 ) {                                          /* 230: User logged in, proceed. */
57          goto PROCEED;          goto PROCEED;
58      }      }
59      if( ret != 331 ) {                                          /* 331: User name okay, need password. */      if( res != 331 ) {                                          /* 331: User name okay, need password. */
60          DEBUGPRINT1( "user: USER command response error. %d\n", ret );          DEBUGPRINT1( "USER command response error. %d\n", res );
61          return -1;          return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
62      }      }
63    
64      /*      /*
# Line 66  int ftp_user( LIBOFTP *ftp, const char * Line 66  int ftp_user( LIBOFTP *ftp, const char *
66       */       */
67      snprintf( str1, sizeof(str1)-1, "PASS %s\r\n", pass );      snprintf( str1, sizeof(str1)-1, "PASS %s\r\n", pass );
68      if( ftp_send_command( ftp, str1 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
69          DEBUGPRINT1( "user: pass command sending error.%s\n", "" );          DEBUGPRINT1( "pass command sending error.%s\n", "" );
70          return -1;          return LIBOFTP_ERROR_OS;
71      }      }
72            
73      if( ftp_receive_response( ftp, 0, 0 ) != 230 ) {            /* 230: User logged in, proceed. */      res = ftp_receive_response( ftp, ftp->error_message, sizeof(ftp->error_message) );
74          DEBUGPRINT1( "user: user authentication error.%s\n", "" );      if( res != 230 ) {                                          /* 230: User logged in, proceed. */
75          return -2;          DEBUGPRINT1( "user authentication error.%s\n", "" );
76            return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
77      }      }
78    
79  PROCEED:  PROCEED:
# Line 81  PROCEED: Line 82  PROCEED:
82       */       */
83      snprintf( str1, sizeof(str1)-1, "SYST\r\n" );      snprintf( str1, sizeof(str1)-1, "SYST\r\n" );
84      if( ftp_send_command( ftp, str1 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
85          DEBUGPRINT1( "user: SYST command sending error.%s\n", "" );          DEBUGPRINT1( "SYST command sending error.%s\n", "" );
86          return -1;          return LIBOFTP_ERROR_OS;
87      }      }
88    
89      ret = ftp_receive_response( ftp, str1, sizeof(str1) );      res = ftp_receive_response( ftp, str1, sizeof(str1) );
90      if( ret == 215 ) {      if( res == 215 ) {
91          if( strstr( str1, "UNIX" ) != 0 ) {          if( strstr( str1, "UNIX" ) != 0 ) {
92              ftp->system_type = UNIX;              ftp->system_type = UNIX;
93          } else if( strstr( str1, "Windows_NT" ) != 0 ) {          } else if( strstr( str1, "Windows_NT" ) != 0 ) {
94              ftp->system_type = Windows_NT;              ftp->system_type = Windows_NT;
95          }          }
96          DEBUGPRINT1( "user: system type is %d\n", ftp->system_type );          DEBUGPRINT1( "system type is %d\n", ftp->system_type );
97      }      }
98    
99      return 0;      return LIBOFTP_NOERROR;
100  }  }
101            
102    

Legend:
Removed from v.25  
changed lines
  Added in v.29

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