[svn] Add support for OS/400 ftp server.

This commit is contained in:
hniksic 2003-09-18 06:46:17 -07:00
parent fb67dd6201
commit e71b2799d2
4 changed files with 20 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2003-09-17 Aurelien Marchand <artaxerxes@users.sf.net>
* ftp.h: Added OS400 system in enum
* ftp-basic.c: recognize OS400 systems
* ftp.c: don't prepend the CWD if talking to OS400, since it
breaks the change in library
2003-09-18 Hrvoje Niksic <hniksic@xemacs.org>
* retr.c (get_contents): Pass the correct argument to ssl_iread.

View File

@ -768,6 +768,8 @@ ftp_syst (struct rbuf *rbuf, enum stype *server_type)
*server_type = ST_WINNT;
else if (!strcasecmp (request, "MACOS"))
*server_type = ST_MACOS;
else if (!strcasecmp (request, "OS/400"))
*server_type = ST_OS400;
else
*server_type = ST_OTHER;

View File

@ -397,11 +397,19 @@ Error in server response, closing control connection.\n"));
A relative directory is one that does not begin with '/'
and, on non-Unix OS'es, one that doesn't begin with
"<letter>:". */
"[a-z]:".
This is not done for OS400, which doesn't use
"/"-delimited directories, nor does it support directory
hierarchies. "CWD foo" followed by "CWD bar" leaves us
in "bar", not in "foo/bar", as would be customary
elsewhere. */
if (target[0] != '/'
&& !(con->rs != ST_UNIX
&& ISALPHA (target[0]) && target[1] == ':'))
&& ISALPHA (target[0])
&& target[1] == ':')
&& con->rs != ST_OS400)
{
int idlen = strlen (con->id);
char *ntarget, *p;

View File

@ -42,6 +42,7 @@ enum stype
ST_VMS,
ST_WINNT,
ST_MACOS,
ST_OS400,
ST_OTHER
};