freebsd-dev/lib/libefivar/FreeBSD-update
Jose Luis Duran 5754f5823b libefivar: Apply uncrustify changes
Apply uncrustify changes to .c/.h files.

Reduce the diffs with EDK2 to aid with future merges.  The
unconventional way we've imported this code makes using a vendor branch
to manage it at the very least tricky. Update FreeBSD-update to reflect
the slight shift in advise.

Reviewed by:	imp
Upstream Bug:	https://bugzilla.tianocore.org/show_bug.cgi?id=3737
Obtained from:	2f88bd3a12
Pull Request:   https://github.com/freebsd/freebsd-src/pull/581
2022-02-27 09:45:34 -07:00

38 lines
1.8 KiB
Plaintext

For the printing and parsing functionality, we use the Tianocore routines
directly.
efivar-dp-format.c is a copy of MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
efivar-dp-parse.c is a copy of MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
These files are first mechnaically processed with
sed -e "s/L'/'/;"'s/L"/"/g;s/%g/%36s/g;s/%a/%s/g;s/^VOID/static VOID/g;s/ *$//g'
for several reasons. We're moving from wide rotuines to narrow routines. The
UTC-2 this code is written for is a bad match for wchar_t which is an int. It's
a much better match for plain narrow characters on FreeBSD. So we pretend that
CHAR16 for these files is really char * (ASCII).
Next, we have have to convert the Unicode printf that this code expects to
FreeBSD's printf. %g means "Print the GUID" and %a means "print the ASCII
string." so we mechanically convert them. Once we've done that we can compare
efivar-dp-*.c to its source to see what's changed. Because we go through this
indirection, I've done that outside of git. To upgrade you have to do these
files by hand. You have to go through and make routines static.
uefi-*.[ch] are internal routines to support this. They've been copied from EDK2
as well, but in a more hap-hazard manner. This was a trade off between ease of
implementation / upgrade vs pulling in too much since less than half of any file
was needed.
efi-osdep.h shims the EDK2 types to FreeBSD's types. It's included by
ProcessorBind.h which EDK2 uses to define the CPU. We keep it separate from
uefi-dplib.h to allow better sharing.
uefi-dplib.h shims the EDK2 routines that are needed to FreeBSD's routines. This
is relatively easy since we map all the UCS-2 routines to simple char *
routines.
RESIST THE URGE TO CLEAN UP THESE FILES. Except when such cleanups help with the
goal of keeping them in sync with EDK2.