@@ -4,6 +4,84 @@ namespace SabreTools.Serialization
44{
55 public static partial class Extensions
66 {
7+ #region File Descriptors
8+
9+ /// <summary>
10+ /// Indicate if a file descriptor represents a compressed file
11+ /// </summary>
12+ /// <param name="fileDescriptor">File descriptor to check</param>
13+ /// <returns>True if the file is flagged as compressed, false otherwise</returns>
14+ public static bool IsCompressed ( this FileDescriptor ? fileDescriptor )
15+ {
16+ // Ignore invalid descriptors
17+ if ( fileDescriptor == null )
18+ return true ;
19+
20+ #if NET20 || NET35
21+ return ( fileDescriptor . Flags & FileFlags . FILE_COMPRESSED ) != 0 ;
22+ #else
23+ return fileDescriptor . Flags . HasFlag ( FileFlags . FILE_COMPRESSED ) ;
24+ #endif
25+ }
26+
27+ /// <summary>
28+ /// Indicate if a file descriptor represents an invalid file
29+ /// </summary>
30+ /// <param name="fileDescriptor">File descriptor to check</param>
31+ /// <returns>True if the file is flagged as invalid, false otherwise</returns>
32+ public static bool IsInvalid ( this FileDescriptor ? fileDescriptor )
33+ {
34+ // Ignore invalid descriptors
35+ if ( fileDescriptor == null )
36+ return true ;
37+
38+ #if NET20 || NET35
39+ return ( fileDescriptor . Flags & FileFlags . FILE_INVALID ) != 0 ;
40+ #else
41+ return fileDescriptor . Flags . HasFlag ( FileFlags . FILE_INVALID ) ;
42+ #endif
43+ }
44+
45+ /// <summary>
46+ /// Indicate if a file descriptor represents an obfuscated file
47+ /// </summary>
48+ /// <param name="fileDescriptor">File descriptor to check</param>
49+ /// <returns>True if the file is flagged as obfuscated, false otherwise</returns>
50+ public static bool IsObfuscated ( this FileDescriptor ? fileDescriptor )
51+ {
52+ // Ignore invalid descriptors
53+ if ( fileDescriptor == null )
54+ return false ;
55+
56+ #if NET20 || NET35
57+ return ( fileDescriptor . Flags & FileFlags . FILE_OBFUSCATED ) != 0 ;
58+ #else
59+ return fileDescriptor . Flags . HasFlag ( FileFlags . FILE_OBFUSCATED ) ;
60+ #endif
61+ }
62+
63+ /// <summary>
64+ /// Indicate if a file descriptor represents a split file
65+ /// </summary>
66+ /// <param name="fileDescriptor">File descriptor to check</param>
67+ /// <returns>True if the file is flagged as split, false otherwise</returns>
68+ public static bool IsSplit ( this FileDescriptor ? fileDescriptor )
69+ {
70+ // Ignore invalid descriptors
71+ if ( fileDescriptor == null )
72+ return false ;
73+
74+ #if NET20 || NET35
75+ return ( fileDescriptor . Flags & FileFlags . FILE_SPLIT ) != 0 ;
76+ #else
77+ return fileDescriptor . Flags . HasFlag ( FileFlags . FILE_SPLIT ) ;
78+ #endif
79+ }
80+
81+ #endregion
82+
83+ #region Version
84+
785 /// <summary>
886 /// Get the major version of an InstallShield Cabinet
987 /// </summary>
@@ -43,5 +121,7 @@ public static int GetMajorVersion(this CommonHeader? commonHeader)
43121
44122 return ( int ) majorVersion ;
45123 }
124+
125+ #endregion
46126 }
47127}
0 commit comments