Changeset 99404 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/FatPkg/EnhancedFatDxe/FileName.c
- Timestamp:
- Apr 14, 2023 3:17:44 PM (23 months ago)
- svn:sync-xref-src-repo-rev:
- 156854
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-145445 /vendor/edk2/current 103735-103757,103769-103776,129194-156846
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/FatPkg/EnhancedFatDxe/FileName.c
r85718 r99404 24 24 BOOLEAN 25 25 FatCheckIs8Dot3Name ( 26 IN CHAR16 27 OUT CHAR8 28 ) 29 { 30 BOOLEAN PossibleShortName;31 CHAR16 *TempName;32 CHAR16 *ExtendName;33 CHAR16 *SeparateDot;34 UINTN MainNameLen;35 UINTN ExtendNameLen;26 IN CHAR16 *FileName, 27 OUT CHAR8 *File8Dot3Name 28 ) 29 { 30 BOOLEAN PossibleShortName; 31 CHAR16 *TempName; 32 CHAR16 *ExtendName; 33 CHAR16 *SeparateDot; 34 UINTN MainNameLen; 35 UINTN ExtendNameLen; 36 36 37 37 PossibleShortName = TRUE; … … 59 59 ExtendNameLen = TempName - ExtendName; 60 60 } 61 61 62 // 62 63 // We scan the filename for the second time … … 64 65 // 65 66 while (--TempName >= FileName) { 66 if (( *TempName == L'.' || *TempName == L' ') && (TempName != SeparateDot)) {67 if (((*TempName == L'.') || (*TempName == L' ')) && (TempName != SeparateDot)) { 67 68 // 68 69 // There exist extra blanks and dots … … 110 111 UINTN 111 112 FatTrimAsciiTrailingBlanks ( 112 IN CHAR8 113 IN UINTN 113 IN CHAR8 *Name, 114 IN UINTN Len 114 115 ) 115 116 { … … 134 135 VOID 135 136 FatNameToStr ( 136 IN CHAR8 137 IN UINTN 138 IN UINTN 139 OUT CHAR16 137 IN CHAR8 *FatName, 138 IN UINTN Len, 139 IN UINTN LowerCase, 140 OUT CHAR16 *Str 140 141 ) 141 142 { … … 167 168 VOID 168 169 FatCreate8Dot3Name ( 169 IN FAT_OFILE *Parent, 170 IN FAT_DIRENT *DirEnt 171 ) 172 { 173 CHAR8 *ShortName; 174 CHAR8 *ShortNameChar; 175 UINTN BaseTagLen; 176 UINTN Index; 177 UINTN Retry; 178 UINT8 Segment; 170 IN FAT_OFILE *Parent, 171 IN FAT_DIRENT *DirEnt 172 ) 173 { 174 CHAR8 *ShortName; 175 CHAR8 *ShortNameChar; 176 UINTN BaseTagLen; 177 UINTN Index; 178 UINTN Retry; 179 UINT8 Segment; 180 179 181 union { 180 UINT32 Crc;182 UINT32 Crc; 181 183 struct HEX_DATA { 182 UINT8 Segment : HASH_VALUE_TAG_LEN;184 UINT8 Segment : HASH_VALUE_TAG_LEN; 183 185 } Hex[HASH_VALUE_TAG_LEN]; 184 186 } HashValue; … … 196 198 BaseTagLen = SPEC_BASE_TAG_LEN; 197 199 } 200 198 201 // 199 202 // We first use the algorithm described by spec. 200 203 // 201 ShortNameChar 202 *ShortNameChar++ 203 *ShortNameChar 204 Retry = 0;204 ShortNameChar = ShortName + BaseTagLen; 205 *ShortNameChar++ = '~'; 206 *ShortNameChar = '1'; 207 Retry = 0; 205 208 while (*FatShortNameHashSearch (Parent->ODir, ShortName) != NULL) { 206 209 *ShortNameChar = (CHAR8)(*ShortNameChar + 1); … … 226 229 } 227 230 228 *ShortNameChar++ 229 *ShortNameChar 231 *ShortNameChar++ = '~'; 232 *ShortNameChar = '1'; 230 233 } 231 234 } … … 246 249 UINT8 247 250 FatCheckNameCase ( 248 IN CHAR16 249 IN UINT8 251 IN CHAR16 *Str, 252 IN UINT8 InCaseFlag 250 253 ) 251 254 { … … 266 269 OutCaseFlag = InCaseFlag; 267 270 } 271 268 272 // 269 273 // Upper case a copy of the string, if it matches the … … 288 292 VOID 289 293 FatSetCaseFlag ( 290 IN FAT_DIRENT 294 IN FAT_DIRENT *DirEnt 291 295 ) 292 296 { … … 343 347 VOID 344 348 FatGetFileNameViaCaseFlag ( 345 IN FAT_DIRENT 346 IN OUT CHAR16 347 IN UINTN 349 IN FAT_DIRENT *DirEnt, 350 IN OUT CHAR16 *FileString, 351 IN UINTN FileStringMax 348 352 ) 349 353 { … … 351 355 CHAR8 *File8Dot3Name; 352 356 CHAR16 TempExt[1 + FAT_EXTEND_NAME_LEN + 1]; 357 353 358 // 354 359 // Store file extension like ".txt" … … 379 384 ) 380 385 { 381 UINTN ShortNameLen; 382 UINT8 Sum; 386 UINTN ShortNameLen; 387 UINT8 Sum; 388 383 389 Sum = 0; 384 390 for (ShortNameLen = FAT_NAME_LEN; ShortNameLen != 0; ShortNameLen--) { … … 403 409 CHAR16 * 404 410 FatGetNextNameComponent ( 405 IN CHAR16 406 OUT CHAR16 411 IN CHAR16 *Path, 412 OUT CHAR16 *Name 407 413 ) 408 414 { … … 410 416 *Name++ = *Path++; 411 417 } 418 412 419 *Name = 0; 413 420 // … … 442 449 CHAR16 *TempNamePointer; 443 450 CHAR16 TempChar; 451 444 452 // 445 453 // Trim Leading blanks … … 453 461 *TempNamePointer++ = *InputFileName++; 454 462 } 463 455 464 // 456 465 // Trim Trailing blanks and dots … … 458 467 while (TempNamePointer > OutputFileName) { 459 468 TempChar = *(TempNamePointer - 1); 460 if ( TempChar != L' ' && TempChar != L'.') {469 if ((TempChar != L' ') && (TempChar != L'.')) { 461 470 break; 462 471 } … … 476 485 return FALSE; 477 486 } 487 478 488 // 479 489 // See if there is any illegal characters within the name 480 490 // 481 491 do { 482 if (*OutputFileName < 0x20 || 483 *OutputFileName == '\"' || 484 *OutputFileName == '*' || 485 *OutputFileName == '/' || 486 *OutputFileName == ':' || 487 *OutputFileName == '<' || 488 *OutputFileName == '>' || 489 *OutputFileName == '?' || 490 *OutputFileName == '\\' || 491 *OutputFileName == '|' 492 ) { 492 if ((*OutputFileName < 0x20) || 493 (*OutputFileName == '\"') || 494 (*OutputFileName == '*') || 495 (*OutputFileName == '/') || 496 (*OutputFileName == ':') || 497 (*OutputFileName == '<') || 498 (*OutputFileName == '>') || 499 (*OutputFileName == '?') || 500 (*OutputFileName == '\\') || 501 (*OutputFileName == '|') 502 ) 503 { 493 504 return FALSE; 494 505 } … … 496 507 OutputFileName++; 497 508 } while (*OutputFileName != 0); 509 498 510 return TRUE; 499 511 }
Note:
See TracChangeset
for help on using the changeset viewer.