diff options
Diffstat (limited to 'fs/ntfs/layout.h')
-rw-r--r-- | fs/ntfs/layout.h | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/fs/ntfs/layout.h b/fs/ntfs/layout.h index 5c248d404f05..f5678d5d7919 100644 --- a/fs/ntfs/layout.h +++ b/fs/ntfs/layout.h | |||
@@ -1021,10 +1021,17 @@ enum { | |||
1021 | FILE_NAME_POSIX = 0x00, | 1021 | FILE_NAME_POSIX = 0x00, |
1022 | /* This is the largest namespace. It is case sensitive and allows all | 1022 | /* This is the largest namespace. It is case sensitive and allows all |
1023 | Unicode characters except for: '\0' and '/'. Beware that in | 1023 | Unicode characters except for: '\0' and '/'. Beware that in |
1024 | WinNT/2k files which eg have the same name except for their case | 1024 | WinNT/2k/2003 by default files which eg have the same name except |
1025 | will not be distinguished by the standard utilities and thus a "del | 1025 | for their case will not be distinguished by the standard utilities |
1026 | filename" will delete both "filename" and "fileName" without | 1026 | and thus a "del filename" will delete both "filename" and "fileName" |
1027 | warning. */ | 1027 | without warning. However if for example Services For Unix (SFU) are |
1028 | installed and the case sensitive option was enabled at installation | ||
1029 | time, then you can create/access/delete such files. | ||
1030 | Note that even SFU places restrictions on the filenames beyond the | ||
1031 | '\0' and '/' and in particular the following set of characters is | ||
1032 | not allowed: '"', '/', '<', '>', '\'. All other characters, | ||
1033 | including the ones no allowed in WIN32 namespace are allowed. | ||
1034 | Tested with SFU 3.5 (this is now free) running on Windows XP. */ | ||
1028 | FILE_NAME_WIN32 = 0x01, | 1035 | FILE_NAME_WIN32 = 0x01, |
1029 | /* The standard WinNT/2k NTFS long filenames. Case insensitive. All | 1036 | /* The standard WinNT/2k NTFS long filenames. Case insensitive. All |
1030 | Unicode chars except: '\0', '"', '*', '/', ':', '<', '>', '?', '\', | 1037 | Unicode chars except: '\0', '"', '*', '/', ':', '<', '>', '?', '\', |
@@ -2367,7 +2374,9 @@ typedef struct { | |||
2367 | * Extended attribute flags (8-bit). | 2374 | * Extended attribute flags (8-bit). |
2368 | */ | 2375 | */ |
2369 | enum { | 2376 | enum { |
2370 | NEED_EA = 0x80 | 2377 | NEED_EA = 0x80 /* If set the file to which the EA belongs |
2378 | cannot be interpreted without understanding | ||
2379 | the associates extended attributes. */ | ||
2371 | } __attribute__ ((__packed__)); | 2380 | } __attribute__ ((__packed__)); |
2372 | 2381 | ||
2373 | typedef u8 EA_FLAGS; | 2382 | typedef u8 EA_FLAGS; |
@@ -2375,20 +2384,20 @@ typedef u8 EA_FLAGS; | |||
2375 | /* | 2384 | /* |
2376 | * Attribute: Extended attribute (EA) (0xe0). | 2385 | * Attribute: Extended attribute (EA) (0xe0). |
2377 | * | 2386 | * |
2378 | * NOTE: Always non-resident. (Is this true?) | 2387 | * NOTE: Can be resident or non-resident. |
2379 | * | 2388 | * |
2380 | * Like the attribute list and the index buffer list, the EA attribute value is | 2389 | * Like the attribute list and the index buffer list, the EA attribute value is |
2381 | * a sequence of EA_ATTR variable length records. | 2390 | * a sequence of EA_ATTR variable length records. |
2382 | * | ||
2383 | * FIXME: It appears weird that the EA name is not unicode. Is it true? | ||
2384 | */ | 2391 | */ |
2385 | typedef struct { | 2392 | typedef struct { |
2386 | le32 next_entry_offset; /* Offset to the next EA_ATTR. */ | 2393 | le32 next_entry_offset; /* Offset to the next EA_ATTR. */ |
2387 | EA_FLAGS flags; /* Flags describing the EA. */ | 2394 | EA_FLAGS flags; /* Flags describing the EA. */ |
2388 | u8 ea_name_length; /* Length of the name of the EA in bytes. */ | 2395 | u8 ea_name_length; /* Length of the name of the EA in bytes |
2396 | excluding the '\0' byte terminator. */ | ||
2389 | le16 ea_value_length; /* Byte size of the EA's value. */ | 2397 | le16 ea_value_length; /* Byte size of the EA's value. */ |
2390 | u8 ea_name[0]; /* Name of the EA. */ | 2398 | u8 ea_name[0]; /* Name of the EA. Note this is ASCII, not |
2391 | u8 ea_value[0]; /* The value of the EA. Immediately follows | 2399 | Unicode and it is zero terminated. */ |
2400 | u8 ea_value[0]; /* The value of the EA. Immediately follows | ||
2392 | the name. */ | 2401 | the name. */ |
2393 | } __attribute__ ((__packed__)) EA_ATTR; | 2402 | } __attribute__ ((__packed__)) EA_ATTR; |
2394 | 2403 | ||