home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cenvi23.zip / DEL.CMM < prev    next >
Text File  |  1996-01-08  |  3KB  |  116 lines

  1. /*
  2.  * del.cmm
  3.  *
  4.  * CEnvi shell command 'del'. Deletes one or more specified files.
  5.  */
  6.  
  7. #include "Netware.lib"
  8.  
  9. usage()
  10. {
  11.   printf("Use the DEL command to delete one or more files.\n");
  12.   printf("Syntax:\n");
  13.   printf("  DEL [drive:][path]filename [/P][/N]\n");
  14.   printf("where:\n");
  15.   printf("  drive:/path/filename   Specifies file(s) to delete. Global file\n");
  16.   printf("                         name characters * and ? can be used in the\n");
  17.   printf("                         file name specified.\n");
  18.   printf("  /P                     Prompts for confirmation before deleting\n");
  19.   printf("                         each file.\n");
  20.   printf("  /N                     Prevents the message \"Are you sure (Y/N)?\"\n");
  21.   printf("                         from being displayed as files are deleted.\n");
  22.   exit(EXIT_FAILURE);
  23. }
  24.  
  25. /* ---------------------------------------------------------------------- */
  26.  
  27. dir[0] = "";
  28. it = 1;
  29. prompt = FALSE;
  30. are_you_sure = TRUE;
  31.  
  32. parse_command_line(argc,argv)
  33. {
  34.   for( i=1;i<argc;i++ )
  35.     {
  36.       if( argv[i][0]=='-' || argv[i][0]=='/' )
  37.     {
  38.       switch( toupper(argv[i][1]) )
  39.         {
  40.         default: usage();
  41.         case 'P': prompt = TRUE; break;
  42.         case 'N': are_you_sure = FALSE; break;
  43.         }
  44.     } else {
  45.           if( it )
  46.             {
  47.               dir[0] = argv[i]; it = 0;
  48.             } else {
  49.               dir[GetArraySpan(dir)+1] = argv[i];
  50.             }
  51.     }
  52.     }
  53. }
  54.  
  55. /* ---------------------------------------------------------------------- */
  56.  
  57. main(argc,argv)
  58. {
  59. // First thing to do is parse the command line.
  60.   num_files = 0;
  61.  
  62.   parse_command_line(argc,argv);
  63.  
  64.   if( it ) Usage();
  65.  
  66.   for( i=0;i<=GetArraySpan(dir);i++ )
  67.     {
  68.       to_kill = Directory(dir[i]);
  69.       if( to_kill==NULL ) continue;
  70.  
  71.       if( GetArraySpan(to_kill)==0 && to_kill[0].attrib & _A_SUBDIR )
  72.         {
  73.           if( defined(_NWNLM_) )
  74.             strcat(dir[i],"/*.*");
  75.           else
  76.             strcat(dir[i],"\\*.*");
  77.           i--;
  78.           continue;
  79.         }
  80.  
  81.       if( are_you_sure && strstr(dir[i],"*.*") )
  82.         {
  83.           printf("Delete \"%s\"; Are you sure? (Y/N) ",dir[i]);
  84.           ch = getch();
  85.           printf("%c\n",ch);
  86.           if( toupper(ch)!='Y' ) exit(EXIT_FAILURE);
  87.         }
  88.       for( i=0;i<=GetArraySpan(to_kill);i++ )
  89.         {
  90.           if( to_kill[i].attrib & _A_SUBDIR )
  91.             {
  92.               printf("[Warning] Directory \"%s\" ignored; use DELTREE to delete directories.\n",to_kill[i].name);
  93.               continue;
  94.             }
  95.  
  96.           if( prompt )
  97.             {
  98.               printf("Delete file \"%s\"? (Y/N) ",to_kill[i].name);
  99.               ch = getch();
  100.               printf("%c\n",ch);
  101.               if( toupper(ch)!='Y' ) continue;
  102.             }
  103.           if( remove(to_kill[i].name) )
  104.             printf("Unable to delete file \"%s\".\n",to_kill[i].name);
  105.           else
  106.             num_files ++;
  107.         }
  108.     }
  109.   if( num_files )
  110.     {
  111.       printf("        %d file(s) deleted\n",num_files);
  112.     } else {
  113.       printf("        no files deleted\n");
  114.     }
  115. }
  116.