diff --git a/ChangeLog b/ChangeLog index 3b728d8e..b1fbabb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Mar 5 17:41:37 CET 2003 Daniel Veillard + + * nanoftp.c include/libxml/nanoftp.h: adding xmlNanoFTPDele() + from Philipp Dunkel + Wed Mar 5 10:57:09 CET 2003 Daniel Veillard * xmlschemastype.c: made powten array static it should not be exported diff --git a/include/libxml/nanoftp.h b/include/libxml/nanoftp.h index a0ba2cee..f19194db 100644 --- a/include/libxml/nanoftp.h +++ b/include/libxml/nanoftp.h @@ -93,6 +93,8 @@ int xmlNanoFTPCheckResponse (void *ctx); */ int xmlNanoFTPCwd (void *ctx, char *directory); +int xmlNanoFTPDele (void *ctx, + char *file); int xmlNanoFTPGetConnection (void *ctx); int xmlNanoFTPCloseConnection(void *ctx); diff --git a/nanoftp.c b/nanoftp.c index a179deb9..8df6f29d 100644 --- a/nanoftp.c +++ b/nanoftp.c @@ -1231,6 +1231,50 @@ xmlNanoFTPCwd(void *ctx, char *directory) { return(0); } +/** + * xmlNanoFTPDele: + * @ctx: an FTP context + * @file: a file or directory on the server + * + * Tries to delete an item (file or directory) from server + * + * Returns -1 incase of error, 1 if DELE worked, 0 if it failed + */ + +int +xmlNanoFTPDele(void *ctx, char *file) { + xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; + char buf[400]; + int len; + int res; + + /* + * Expected response code for DELE: + * + * DELE + * 250 + * 450, 550 + * 500, 501, 502, 421, 530 + */ + + snprintf(buf, sizeof(buf), "DELE %s\r\n", file); + buf[sizeof(buf) - 1] = 0; + len = strlen(buf); +#ifdef DEBUG_FTP + xmlGenericError(xmlGenericErrorContext, "%s", buf); +#endif + res = send(ctxt->controlFd, buf, len, 0); + if (res < 0) return(res); + res = xmlNanoFTPGetResponse(ctxt); + if (res == 4) { + return(-1); + } + if (res == 2) return(1); + if (res == 5) { + return(0); + } + return(0); +} /** * xmlNanoFTPGetConnection: * @ctx: an FTP context