OS2-FTP

 view release on metacpan or  search on metacpan

FTP.xs  view on Meta::CPAN

    if (strEQ(name, "FTPNOXLATETBL"))
	    return FTPNOXLATETBL;
    if (strEQ(name, "FTPPROXYTHIRD"))
	    return FTPPROXYTHIRD;
    if (strEQ(name, "FTPSERVICE"))
	    return FTPSERVICE;
    if (strEQ(name, "FTPSOCKET"))
	    return FTPSOCKET;
    if (strEQ(name, "PINGHOST"))
	    return PINGHOST;
    if (strEQ(name, "PINGPROTO"))
	    return PINGPROTO;
    if (strEQ(name, "PINGRECV"))
	    return PINGRECV;
    if (strEQ(name, "PINGREPLY"))
	    return PINGREPLY;
    if (strEQ(name, "PINGSEND"))
	    return PINGSEND;
    if (strEQ(name, "PINGSOCKET"))
	    return PINGSOCKET;
    errno = EINVAL;
    return 0;
}


MODULE = OS2::FTP	PACKAGE = OS2::FTP


int
constant(name,arg)
    char *	name
    int		arg

OS2_FTP *
new(class,host,userid,passwd,acct=NULL)
    void *	class
    char *	host
    char *	userid
    char *	passwd
    char *	acct
 CODE:
    RETVAL = malloc(sizeof(OS2_FTP));
    if (RETVAL) {
	RETVAL->host   = strdup(host);
	RETVAL->userid = strdup(userid);
	RETVAL->passwd = strdup(passwd);
	RETVAL->acct   = acct ? strdup(acct) : 0;
	RETVAL->errno  = 0;
	++nsessions;
    }
 OUTPUT:
    RETVAL

void
logoff()
 CODE:
    ftplogoff();

void
ping(...)
 PPCODE:
    int r;
    unsigned long addr;
    int pktlen = SvIV(ST(1));
    if (SvPOKp(ST(0))) {
	char *host = SvPV(ST(0), na);
	r = ftpping(host,pktlen,&addr);
	EXTEND(sp, 2);
	PUSHs(sv_2mortal(newSViv(r)));
	if (r >= 0)
	    PUSHs(sv_2mortal(newSVnv((double)addr)));
    } else {
	unsigned long addr = (unsigned long) SvNV(ST(0));
	r = ping(addr, pktlen);
	PUSHs(sv_2mortal(newSViv(r)));
    }

char *
message(errno)
    int		errno
 CODE:
    switch (errno) {
    case FTPSERVICE:    RETVAL = "ftp/tcp: unknown service"; break;
    case FTPHOST:       RETVAL = "unknown host"; break;
    case FTPSOCKET:     RETVAL = "unable to obtain socket"; break;
    case FTPCONNECT:    RETVAL = "unable to connect to server"; break;
    case FTPLOGIN:      RETVAL = "login failed"; break;
    case FTPABORT:      RETVAL = "transfer aborted"; break;
    case FTPLOCALFILE:  RETVAL = "problem openning local file"; break;
    case FTPDATACONN:   RETVAL = "problem initializing data connection"; break;
    case FTPCOMMAND:    RETVAL = "command failed"; break;
    case FTPPROXYTHIRD: RETVAL = "proxy server does not support third party transfers"; break;
    case FTPNOPRIMARY:  RETVAL = "no primary connection for proxy transfer"; break;
    case FTPNOXLATETBL: RETVAL = "no code page translation table was loded"; break;
    case PINGREPLY:     RETVAL = "host does not reply"; break;
    case PINGSOCKET:    RETVAL = "unable to obtain socket"; break;
    case PINGPROTO:     RETVAL = "unknown protcol ICMP"; break;
    case PINGSEND:      RETVAL = "send failed"; break;
    case PINGRECV:      RETVAL = "recv failed"; break;
    case PINGHOST:      RETVAL = "can't resolve the host name"; break;
    default:	  	RETVAL = "";
    }
 OUTPUT:
    RETVAL


MODULE = OS2::FTP	PACKAGE = OS2_FTPPtr


void
ftp_DESTROY(session)
    OS2_FTP *	session
 CODE:
    free(session->host);
    free(session->userid);
    free(session->passwd);
    if (session->acct)
        free(session->acct);
    free(session);
    if (--nsessions == 0)
        ftplogoff();

FTP.xs  view on Meta::CPAN

mkdir(session,dir)
    OS2_FTP *	session
    char *	dir
 CODE:
    RETVAL = ftpmkd(session->host, session->userid, session->passwd, session->acct,
		    dir);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

int
proxy(dst_session,src_session,dst_fn,src_fn,tfrtype=T_BINARY)
    OS2_FTP *	dst_session
    OS2_FTP *	src_session
    char *	dst_fn
    char *	src_fn
    int		tfrtype
 CODE:
    RETVAL = ftpproxy(dst_session->host, dst_session->userid,
		      dst_session->passwd, dst_session->acct,
		      src_session->host, src_session->userid,
		      src_session->passwd, src_session->acct,
		      dst_fn, src_fn, tfrtype);
    if (RETVAL < 0)
	dst_session->errno = ftperrno;
 OUTPUT:
    RETVAL

int
put(session,local,remote=local,tfrtype=T_BINARY)
    OS2_FTP *	session
    char *	local
    char *	remote
    int		tfrtype
 CODE:
    RETVAL = ftpput(session->host, session->userid, session->passwd, session->acct,
		    local, remote, tfrtype);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

int
putunique(session,local,remote=local,tfrtype=T_BINARY)
    OS2_FTP *	session
    char *	local
    char *	remote
    int		tfrtype
 CODE:
    RETVAL = ftpputunique(session->host, session->userid, session->passwd, session->acct,
			  local, remote, tfrtype);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

void
getcwd(session)
    OS2_FTP *	session
 PPCODE:
 {
    char wd[500];
    int r = ftppwd(session->host, session->userid, session->passwd, session->acct,
		   wd, sizeof wd);
    if (r < 0)
	session->errno = ftperrno;
    EXTEND(sp, 2);
    PUSHs(sv_2mortal(newSViv(r)));
    if (r >= 0)
        PUSHs(sv_2mortal(newSVpv(wd, strlen(wd))));
 }

int
quote(session,string)
    OS2_FTP *	session
    char *	string
 CODE:
    RETVAL = ftpquote(session->host, session->userid, session->passwd, session->acct,
		      string);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

int
rename(session,namefrom,nameto)
    OS2_FTP *	session
    char *	namefrom
    char *	nameto
 CODE:
    RETVAL = ftprename(session->host, session->userid, session->passwd, session->acct,
		       namefrom, nameto);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

int
rmdir(session,dir)
    OS2_FTP *	session
    char *	dir
 CODE:
    RETVAL = ftprmd(session->host, session->userid, session->passwd, session->acct,
		    dir);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

int
site(session,string)
    OS2_FTP *	session
    char *	string
 CODE:
    RETVAL = ftpsite(session->host, session->userid, session->passwd, session->acct,
		     string);
    if (RETVAL < 0)
	session->errno = ftperrno;
 OUTPUT:
    RETVAL

void
sys(session)
    OS2_FTP *	session
 PPCODE:
 {
    char buf[2000];
    int r = ftpsys(session->host, session->userid, session->passwd, session->acct,
		   buf, sizeof buf);
    if (r < 0)
	session->errno = ftperrno;
    EXTEND(sp, 2);
    PUSHs(sv_2mortal(newSViv(r)));
    if (r >= 0)
        PUSHs(sv_2mortal(newSVpv(buf, strlen(buf))));
 }



( run in 1.077 second using v1.01-cache-2.11-cpan-5511b514fd6 )