X-Git-Url: https://code.delx.au/refind/blobdiff_plain/0189958c722bdd4e7f323d59f81e25579bb0aad2..6720031b85a48ad6f6a651efb6bb5030c41b610d:/refind/lib.h diff --git a/refind/lib.h b/refind/lib.h index b0f555d..12f85ef 100644 --- a/refind/lib.h +++ b/refind/lib.h @@ -34,7 +34,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* - * Modifications copyright (c) 2012 Roderick W. Smith + * Modifications copyright (c) 2012-2015 Roderick W. Smith * * Modifications distributed under the terms of the GNU General Public * License (GPL) version 3 (GPLv3), a copy of which must be distributed @@ -48,6 +48,7 @@ #ifdef __MAKEWITH_GNUEFI #include "efi.h" #include "efilib.h" +#define EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH #else #include "../include/tiano_includes.h" #endif @@ -72,26 +73,39 @@ typedef struct { #define DISK_KIND_INTERNAL (0) #define DISK_KIND_EXTERNAL (1) #define DISK_KIND_OPTICAL (2) +#define DISK_KIND_NET (3) #define VOL_UNREADABLE 999 #define IS_EXTENDED_PART_TYPE(type) ((type) == 0x05 || (type) == 0x0f || (type) == 0x85) +// GPT attributes of interest to us for Freedesktop.org Discoverable +// Partitions Specification.... +#define GPT_READ_ONLY 0x1000000000000000 +#define GPT_NO_AUTOMOUNT 0x8000000000000000 + +// Partition names to be ignored when setting volume name +#define IGNORE_PARTITION_NAMES L"Microsoft basic data,Linux filesystem,Apple HFS/HFS+" + +extern EFI_GUID gFreedesktopRootGuid; + EFI_STATUS InitRefitLib(IN EFI_HANDLE ImageHandle); VOID UninitRefitLib(VOID); EFI_STATUS ReinitRefitLib(VOID); +EFI_STATUS EfivarGetRaw(EFI_GUID *vendor, CHAR16 *name, CHAR8 **buffer, UINTN *size); +EFI_STATUS EfivarSetRaw(EFI_GUID *vendor, CHAR16 *name, CHAR8 *buf, UINTN size, BOOLEAN persistent); + VOID CleanUpPathNameSlashes(IN OUT CHAR16 *PathName); VOID CreateList(OUT VOID ***ListPtr, OUT UINTN *ElementCount, IN UINTN InitialElementCount); VOID AddListElement(IN OUT VOID ***ListPtr, IN OUT UINTN *ElementCount, IN VOID *NewElement); VOID FreeList(IN OUT VOID ***ListPtr, IN OUT UINTN *ElementCount); -VOID ExtractLegacyLoaderPaths(EFI_DEVICE_PATH **PathList, UINTN MaxPaths, EFI_DEVICE_PATH **HardcodedPathList); - +VOID SetVolumeBadgeIcon(REFIT_VOLUME *Volume); VOID ScanVolumes(VOID); +VOID SetVolumeIcons(VOID); BOOLEAN FileExists(IN EFI_FILE *BaseDir, IN CHAR16 *RelativePath); -BOOLEAN DirectoryExists(IN EFI_FILE *BaseDir, IN CHAR16 *RelativePath); EFI_STATUS DirNextEntry(IN EFI_FILE *Directory, IN OUT EFI_FILE_INFO **DirEntry, IN UINTN FilterMode); @@ -105,24 +119,20 @@ CHAR16 * StripEfiExtension(CHAR16 *FileName); INTN FindMem(IN VOID *Buffer, IN UINTN BufferLength, IN VOID *SearchString, IN UINTN SearchStringLength); VOID ReinitVolumes(VOID); -BOOLEAN StriSubCmp(IN CHAR16 *TargetStr, IN CHAR16 *BigStr); -VOID MergeStrings(IN OUT CHAR16 **First, IN CHAR16 *Second, CHAR16 AddChar); CHAR16 *FindExtension(IN CHAR16 *Path); CHAR16 *FindLastDirName(IN CHAR16 *Path); CHAR16 *FindPath(IN CHAR16* FullPath); VOID FindVolumeAndFilename(IN EFI_DEVICE_PATH *loadpath, OUT REFIT_VOLUME **DeviceVolume, OUT CHAR16 **loader); BOOLEAN SplitVolumeAndFilename(IN OUT CHAR16 **Path, OUT CHAR16 **VolName); -CHAR16 *FindNumbers(IN CHAR16 *InString); -CHAR16 *FindCommaDelimited(IN CHAR16 *InString, IN UINTN Index); -INTN FindSubString(IN CHAR16 *SmallString, IN CHAR16 *BigString); VOID SplitPathName(CHAR16 *InPath, CHAR16 **VolName, CHAR16 **Path, CHAR16 **Filename); -BOOLEAN IsIn(IN CHAR16 *Filename, IN CHAR16 *List); BOOLEAN FilenameIn(IN REFIT_VOLUME *Volume, IN CHAR16 *Directory, IN CHAR16 *Filename, IN CHAR16 *List); BOOLEAN VolumeNumberToName(REFIT_VOLUME *Volume, CHAR16 **VolName); VOID MyFreePool(IN OUT VOID *Pointer); BOOLEAN EjectMedia(VOID); -CHAR16 * GuidAsString(EFI_GUID *GuidData); +BOOLEAN GuidsAreEqual(EFI_GUID *Guid1, EFI_GUID *Guid2); + +VOID EraseUint32List(UINT32_LIST **TheList); #endif \ No newline at end of file