| 529 | } |
| 530 | |
| 531 | UINTN IndexFromFileName(CONST CHAR16* FileName) |
| 532 | { |
| 533 | // FileName must be as "XXXX-number-..." or "XXXX-number.aml", such as "SSDT-9.aml", or "SSDT-11-SaSsdt.aml" |
| 534 | // But just checking for '-' or '.' following the number. |
| 535 | |
| 536 | // search for '-' |
| 537 | UINTN Result = IGNORE_INDEX; |
| 538 | CONST CHAR16* temp = FileName; |
| 539 | for (; *temp != 0 && *temp != '-'; temp++); |
| 540 | if ('-' == *temp && 4 == temp-FileName) { |
| 541 | ++temp; |
| 542 | if (*temp >= '0' && *temp <= '9') { |
| 543 | Result = 0; |
| 544 | for (; *temp >= '0' && *temp <= '9'; temp++) { |
| 545 | Result *= 10; |
| 546 | Result += *temp - '0'; |
| 547 | } |
| 548 | // a FileName such as "SSDT-4x30s.aml" is not considered as "SSDT-4.aml" |
| 549 | if ('.' != *temp && '-' != *temp) |
| 550 | Result = IGNORE_INDEX; |
| 551 | } |
| 552 | } |
| 553 | return Result; |
| 554 | } |
| 555 | |
| 556 | EFI_STATUS ReplaceOrInsertTable(VOID* TableEntry, UINTN Length, UINTN MatchIndex, INTN Pass) |
| 557 | { |