home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ACTLIB10.ZIP / TOOLS.ZIP / FILEDEL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-14  |  1.6 KB  |  66 lines

  1. /*  Copyright (C) 1993   Marc Stern  (internet: stern@mble.philips.be)  */
  2.  
  3. #include <dos.h>
  4. #include <direct.h>
  5. #include <stdlib.h>
  6. #include <ctype.h>
  7. #include <string.h>
  8. #include "tools.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.   union REGS regs;
  26.   struct SREGS sregs;
  27.   char *ptr, *ptr2;
  28.   char curdir[_MAX_PATH] = " :/";
  29.  
  30.  
  31.   if ( filename[1] == ':' ) Fcb.fcb_drive = toupper( *filename ) - 'A' + 1;
  32.                        else Fcb.fcb_drive = getdisk();
  33.  
  34.   ptr = max( strrchr(filename, '\\'), strrchr(filename, '/') );
  35.  
  36.   if ( ptr ) { int result;
  37.                char tmp;
  38.                *curdir = Fcb.fcb_drive + 'A' - 1;
  39.                getcurdir( Fcb.fcb_drive, curdir + 3 );
  40.                tmp = *++ptr;
  41.                *ptr = '\0';
  42.                result = chdir( filename );
  43.                *ptr = tmp;
  44.                if ( result ) return;
  45.              }
  46.  
  47.   memset( Fcb.fcb_name, ' ', 11 );
  48.   ptr2 = Fcb.fcb_name;
  49.   while ( *ptr && (*ptr != '.') ) *ptr2++ = *ptr++;
  50.   ptr2 = Fcb.fcb_ext;
  51.   if ( *ptr++ )
  52.      while ( *ptr ) *ptr2++ = *ptr++;
  53.  
  54.         /*
  55.         DOS Interrupt 13H
  56.         Input:  DS:DX = pointer to fcb
  57.         */
  58.  
  59.   sregs.ds  = FP_SEG( &Fcb );
  60.   regs.x.dx = FP_OFF( &Fcb );
  61.   regs.h.ah = 0x13;
  62.   intdosx( ®s, ®s, &sregs );
  63.  
  64.   if ( *curdir != ' ' ) chdir( curdir );
  65. }
  66.