Changeset 2093 for trunk/eraser


Ignore:
Timestamp:
5/10/2010 12:06:58 PM (5 years ago)
Author:
lowjoel
Message:

When checking whether a path is a directory, always ensure that the path exists before running GetAttributes?.

Location:
trunk/eraser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser/Eraser.Manager/FileSystem.cs

    r1884 r2093  
    141141                            "replaced with random data.")); 
    142142 
     143                    //Get an item from the list of files, and then check that the item exists. 
    143144                    int index = prng.Next(entries.Count - 1); 
    144                     if ((File.GetAttributes(entries[index]) & FileAttributes.Directory) != 0) 
     145                    shadowFile = entries[index]; 
     146                    if (File.Exists(shadowFile)) 
    145147                    { 
    146                         DirectoryInfo dir = new DirectoryInfo(entries[index]); 
    147                         FileInfo[] files = dir.GetFiles("*", SearchOption.AllDirectories); 
    148                         foreach (FileInfo f in files) 
    149                             entries.Add(f.FullName); 
     148                        if ((File.GetAttributes(shadowFile) & FileAttributes.Directory) != 0) 
     149                        { 
     150                            DirectoryInfo dir = new DirectoryInfo(shadowFile); 
     151                            FileInfo[] files = dir.GetFiles("*", SearchOption.AllDirectories); 
     152                            entries.Capacity += files.Length; 
     153                            foreach (FileInfo f in files) 
     154                                entries.Add(f.FullName); 
     155                        } 
     156                        else 
     157                            shadowFile = entries[index]; 
    150158                    } 
    151159                    else 
    152                         shadowFile = entries[index]; 
     160                        shadowFile = null; 
    153161 
    154162                    entries.RemoveAt(index); 
    155163                } 
    156                 while (shadowFile == null || shadowFile.Length == 0 || !File.Exists(shadowFile)); 
     164                while (string.IsNullOrEmpty(shadowFile)); 
    157165                shadowFileInfo = new FileInfo(shadowFile); 
    158166            } 
  • trunk/eraser/Eraser/Program.cs

    r2064 r2093  
    489489                    foreach (string path in args.PositionalArguments) 
    490490                    { 
     491                        //If the path doesn't exist, skip the file 
     492                        if (!File.Exists(path)) 
     493                            continue; 
     494 
    491495                        FileSystemObjectErasureTarget target = null; 
    492496                        if ((File.GetAttributes(path) & FileAttributes.Directory) != 0) 
  • trunk/eraser/Eraser/SchedulerPanel.cs

    r2059 r2093  
    534534                if (files != null) 
    535535                    foreach (string file in files) 
    536                     {    
     536                    { 
     537                        //If the path doesn't exist, skip the file 
     538                        if (!File.Exists(file)) 
     539                            continue; 
     540 
    537541                        FileSystemObjectErasureTarget target; 
    538542                        if ((File.GetAttributes(file) & FileAttributes.Directory) != 0) 
Note: See TracChangeset for help on using the changeset viewer.