home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / cprog / actlib12.zip / TOOLS.ZIP / FILEDEL.C < prev    next >
C/C++ Source or Header  |  1993-02-25  |  2KB  |  67 lines

  1. /*  Copyright (C) 1993   Marc Stern  (internet: stern@mble.philips.be)  */
  2.  
  3. #include "tools.h"
  4. #include <dos.h>
  5. #include <direct.h>
  6. #include <stdlib.h>
  7. #include <ctype.h>
  8. #include <string.h>
  9.  
  10. /*
  11.  * Functions    : filedel
  12.  *
  13.  * Description  : Like 'unlink' but allows wildcards
  14.  *
  15.  * Remarks      : Change to target directory to delete files
  16.  *                and come back to current one.
  17.  *
  18.  * Return       :  none
  19.  *
  20.  */
  21.  
  22. void filedel( const char *filename )
  23.  
  24. { struct fcb Fcb;
  25.   void far *pFcb = &Fcb;
  26.   union REGS regs;
  27.   struct SREGS sregs;
  28.   char *ptr1, *ptr2;
  29.   char curdir[_MAX_PATH] = " :/";
  30.  
  31.  
  32.   if ( filename[1] == ':' ) Fcb.fcb_drive = toupper( *filename ) - 'A' + 1;
  33.                        else Fcb.fcb_drive = getdisk();
  34.  
  35.   ptr1 = max( strrchr(filename, '\\'), strrchr(filename, '/') );
  36.  
  37.   if ( ptr1 ) { int result;
  38.                 char tmp;
  39.                 *curdir = Fcb.fcb_drive + 'A' - 1;
  40.                 getcurdir( Fcb.fcb_drive, curdir + 3 );
  41.                 tmp = *++ptr1;
  42.                 *ptr1 = '\0';
  43.                 result = chdir( filename );
  44.                 *ptr1 = tmp;
  45.                 if ( result ) return;
  46.               }
  47.  
  48.   memset( Fcb.fcb_name, ' ', 11 );
  49.   ptr2 = Fcb.fcb_name;
  50.   while ( *ptr1 && (*ptr1 != '.') ) *ptr2++ = *ptr1++;
  51.   ptr2 = Fcb.fcb_ext;
  52.   if ( *ptr1++ )
  53.      while ( *ptr1 ) *ptr2++ = *ptr1++;
  54.  
  55.         /*
  56.         DOS Interrupt 13H
  57.         Input:  DS:DX = pointer to fcb
  58.         */
  59.  
  60.   sregs.ds  = FP_SEG( pFcb );
  61.   regs.x.dx = FP_OFF( pFcb );
  62.   regs.h.ah = 0x13;
  63.   intdosx( ®s, ®s, &sregs );
  64.  
  65.   if ( *curdir != ' ' ) chdir( curdir );
  66. }
  67.