home *** CD-ROM | disk | FTP | other *** search
/ ftp.ncftp.com / ftp.ncftp.com.zip / ftp.ncftp.com / ncftp / older_versions / ncftp-3.2.2-src.tar.bz2 / ncftp-3.2.2-src.tar / ncftp-3.2.2 / libncftp / c_delete.c < prev    next >
C/C++ Source or Header  |  2005-01-01  |  1KB  |  68 lines

  1. /* c_delete.c
  2.  *
  3.  * Copyright (c) 1996-2005 Mike Gleason, NcFTP Software.
  4.  * All rights reserved.
  5.  *
  6.  */
  7.  
  8. #include "syshdrs.h"
  9. #ifdef PRAGMA_HDRSTOP
  10. #    pragma hdrstop
  11. #endif
  12.  
  13. int
  14. FTPDelete(const FTPCIPtr cip, const char *const pattern, const int recurse, const int doGlob)
  15. {
  16.     FTPLineList fileList;
  17.     FTPLinePtr filePtr;
  18.     char *file;
  19.     int onceResult, batchResult;
  20.  
  21.     if (cip == NULL)
  22.         return (kErrBadParameter);
  23.     if (strcmp(cip->magic, kLibraryMagic))
  24.         return (kErrBadMagic);
  25.  
  26.     batchResult = FTPRemoteGlob(cip, &fileList, pattern, doGlob);
  27.     if (batchResult != kNoErr)
  28.         return (batchResult);
  29.  
  30.     for (batchResult = kNoErr, filePtr = fileList.first;
  31.         filePtr != NULL;
  32.         filePtr = filePtr->next)
  33.     {
  34.         file = filePtr->line;
  35.         if (file == NULL) {
  36.             batchResult = kErrBadLineList;
  37.             cip->errNo = kErrBadLineList;
  38.             break;
  39.         }
  40.         onceResult = FTPCmd(cip, "DELE %s", file);
  41.         if (onceResult < 0) {
  42.             batchResult = onceResult;
  43.             break;
  44.         }
  45.         if (onceResult != 2) {
  46.             if (recurse != kRecursiveYes) {
  47.                 batchResult = kErrDELEFailed;
  48.                 cip->errNo = kErrDELEFailed;
  49.             } else {
  50.                 onceResult = FTPCmd(cip, "RMD %s", file);     
  51.                 if (onceResult < 0) {
  52.                     batchResult = onceResult;
  53.                     break;
  54.                 }
  55.                 if (onceResult != 2) {
  56.                     onceResult = FTPRmdirRecursive(cip, file);
  57.                     if (onceResult < 0) {
  58.                         batchResult = kErrRMDFailed;
  59.                         cip->errNo = kErrRMDFailed;
  60.                     }
  61.                 }
  62.             }
  63.         }
  64.     }
  65.     DisposeLineListContents(&fileList);
  66.     return (batchResult);
  67. }    /* FTPDelete */
  68.