ShellPkg/Ls: sort output by FileName in non-SFO mode
Sorting the LS output in non-SFO mode by FileName is best demonstrated
with two examples.
(1a) Before:
> FS2:\> dir -r apps
> Directory of: FS2:\apps\
> 01/01/1970 01:00 <DIR> r 0 .
> 12/22/2020 17:53 <DIR> 4,096 X64
> 12/22/2020 17:53 <DIR> 4,096 AARCH64
> 01/01/1970 01:00 <DIR> r 0 ..
> 12/22/2020 17:53 <DIR> 4,096 IA32
> 0 File(s) 0 bytes
> 5 Dir(s)
> Directory of: FS2:\apps\X64\
> 12/22/2020 17:52 18,752 DumpDynPcd.efi
> 12/22/2020 17:52 34,240 SmiHandlerProfileInfo.efi
> 01/01/1970 01:00 <DIR> r 0 .
> 12/22/2020 17:52 11,456 VariableInfo.efi
> 12/22/2020 17:52 26,304 MemoryProfileInfo.efi
> 12/22/2020 17:53 126,656 AcpiViewApp.efi
> 12/22/2020 17:53 38,784 Cpuid.efi
> 01/01/1970 01:00 <DIR> r 0 ..
> 6 File(s) 256,192 bytes
> 2 Dir(s)
> Directory of: FS2:\apps\AARCH64\
> 12/22/2020 17:52 32,768 DumpDynPcd.efi
> 01/01/1970 01:00 <DIR> r 0 .
> 12/22/2020 17:52 20,480 VariableInfo.efi
> 12/22/2020 17:52 40,960 MemoryProfileInfo.efi
> 12/22/2020 17:53 139,264 AcpiViewApp.efi
> 01/01/1970 01:00 <DIR> r 0 ..
> 4 File(s) 233,472 bytes
> 2 Dir(s)
> Directory of: FS2:\apps\IA32\
> 12/22/2020 17:52 17,344 DumpDynPcd.efi
> 12/22/2020 17:52 30,720 SmiHandlerProfileInfo.efi
> 01/01/1970 01:00 <DIR> r 0 .
> 12/22/2020 17:52 10,880 VariableInfo.efi
> 12/22/2020 17:52 24,192 MemoryProfileInfo.efi
> 12/22/2020 17:53 105,536 AcpiViewApp.efi
> 12/22/2020 17:53 36,096 Cpuid.efi
> 01/01/1970 01:00 <DIR> r 0 ..
> 6 File(s) 224,768 bytes
> 2 Dir(s)
(1b) After:
> FS2:\> dir -r apps
> Directory of: FS2:\apps\
> 01/01/1970 01:00 <DIR> r 0 .
> 01/01/1970 01:00 <DIR> r 0 ..
> 12/22/2020 17:53 <DIR> 4,096 AARCH64
> 12/22/2020 17:53 <DIR> 4,096 IA32
> 12/22/2020 17:53 <DIR> 4,096 X64
> 0 File(s) 0 bytes
> 5 Dir(s)
> Directory of: FS2:\apps\X64\
> 01/01/1970 01:00 <DIR> r 0 .
> 01/01/1970 01:00 <DIR> r 0 ..
> 12/22/2020 17:53 126,656 AcpiViewApp.efi
> 12/22/2020 17:53 38,784 Cpuid.efi
> 12/22/2020 17:52 18,752 DumpDynPcd.efi
> 12/22/2020 17:52 26,304 MemoryProfileInfo.efi
> 12/22/2020 17:52 34,240 SmiHandlerProfileInfo.efi
> 12/22/2020 17:52 11,456 VariableInfo.efi
> 6 File(s) 256,192 bytes
> 2 Dir(s)
> Directory of: FS2:\apps\AARCH64\
> 01/01/1970 01:00 <DIR> r 0 .
> 01/01/1970 01:00 <DIR> r 0 ..
> 12/22/2020 17:53 139,264 AcpiViewApp.efi
> 12/22/2020 17:52 32,768 DumpDynPcd.efi
> 12/22/2020 17:52 40,960 MemoryProfileInfo.efi
> 12/22/2020 17:52 20,480 VariableInfo.efi
> 4 File(s) 233,472 bytes
> 2 Dir(s)
> Directory of: FS2:\apps\IA32\
> 01/01/1970 01:00 <DIR> r 0 .
> 01/01/1970 01:00 <DIR> r 0 ..
> 12/22/2020 17:53 105,536 AcpiViewApp.efi
> 12/22/2020 17:53 36,096 Cpuid.efi
> 12/22/2020 17:52 17,344 DumpDynPcd.efi
> 12/22/2020 17:52 24,192 MemoryProfileInfo.efi
> 12/22/2020 17:52 30,720 SmiHandlerProfileInfo.efi
> 12/22/2020 17:52 10,880 VariableInfo.efi
> 6 File(s) 224,768 bytes
> 2 Dir(s)
(2a) Before:
> FS2:\> dir apps\*\*.efi
> Directory of: FS2:\apps\*\
> 12/22/2020 17:52 18,752 DumpDynPcd.efi
> 12/22/2020 17:52 34,240 SmiHandlerProfileInfo.efi
> 12/22/2020 17:52 11,456 VariableInfo.efi
> 12/22/2020 17:52 26,304 MemoryProfileInfo.efi
> 12/22/2020 17:53 126,656 AcpiViewApp.efi
> 12/22/2020 17:53 38,784 Cpuid.efi
> 12/22/2020 17:52 32,768 DumpDynPcd.efi
> 12/22/2020 17:52 20,480 VariableInfo.efi
> 12/22/2020 17:52 40,960 MemoryProfileInfo.efi
> 12/22/2020 17:53 139,264 AcpiViewApp.efi
> 12/22/2020 17:52 17,344 DumpDynPcd.efi
> 12/22/2020 17:52 30,720 SmiHandlerProfileInfo.efi
> 12/22/2020 17:52 10,880 VariableInfo.efi
> 12/22/2020 17:52 24,192 MemoryProfileInfo.efi
> 12/22/2020 17:53 105,536 AcpiViewApp.efi
> 12/22/2020 17:53 36,096 Cpuid.efi
> 16 File(s) 714,432 bytes
> 0 Dir(s)
(2b) After:
> FS2:\> dir apps\*\*.efi
> Directory of: FS2:\apps\*\
> 12/22/2020 17:53 126,656 AcpiViewApp.efi
> 12/22/2020 17:53 139,264 AcpiViewApp.efi
> 12/22/2020 17:53 105,536 AcpiViewApp.efi
> 12/22/2020 17:53 38,784 Cpuid.efi
> 12/22/2020 17:53 36,096 Cpuid.efi
> 12/22/2020 17:52 18,752 DumpDynPcd.efi
> 12/22/2020 17:52 32,768 DumpDynPcd.efi
> 12/22/2020 17:52 17,344 DumpDynPcd.efi
> 12/22/2020 17:52 26,304 MemoryProfileInfo.efi
> 12/22/2020 17:52 40,960 MemoryProfileInfo.efi
> 12/22/2020 17:52 24,192 MemoryProfileInfo.efi
> 12/22/2020 17:52 34,240 SmiHandlerProfileInfo.efi
> 12/22/2020 17:52 30,720 SmiHandlerProfileInfo.efi
> 12/22/2020 17:52 11,456 VariableInfo.efi
> 12/22/2020 17:52 20,480 VariableInfo.efi
> 12/22/2020 17:52 10,880 VariableInfo.efi
> 16 File(s) 714,432 bytes
> 0 Dir(s)
(In example (2), note that the sorting is stable; that is, whatever order
is established between identical FileNames by ShellOpenFileMetaArg(), it
is preserved by ShellSortFileList().)
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3151
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Message-Id: <
20210113085453.10168-8-lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>