OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
GrubCfg.c File Reference
#include "LinuxBootInternal.h"
#include <Uefi.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/OcDebugLogLib.h>
#include <Library/OcMiscLib.h>
#include <Library/OcStringLib.h>

Go to the source code of this file.

Macros

#define GRUB_LINE   "in grub.cfg at line"
 
#define VAR_FLAGS_NONE   (0)
 
#define VAR_FLAGS_BRACE   BIT0
 
#define VAR_FLAGS_NUMERIC   BIT1
 
#define SHIFT_TOKEN(offset)
 

Typedefs

typedef enum GRUB_PARSE_STATE_ GRUB_PARSE_STATE
 
typedef enum GRUB_VAR_STATE_ GRUB_VAR_STATE
 

Enumerations

enum  GRUB_PARSE_STATE_ {
  GRUB_LEADING_SPACE , GRUB_COMMENT , GRUB_TOKEN , GRUB_SINGLE_QUOTE ,
  GRUB_DOUBLE_QUOTE
}
 
enum  GRUB_VAR_STATE_ { GRUB_VAR_NONE , GRUB_VAR_START , GRUB_VAR_END , GRUB_VAR_CHAR }
 

Functions

STATIC EFI_STATUS GrubNextToken (CHAR8 *Content, UINTN *Pos, UINTN *Line, CHAR8 **Token, BOOLEAN *IsIndented, BOOLEAN *ContainsVars)
 
STATIC BOOLEAN GrubNextLine (CHAR8 Ch, UINTN *Pos)
 
STATIC EFI_STATUS SetVar (UINTN Line, CHAR8 *Token, BOOLEAN IsIndented, BOOLEAN ContainsVars)
 
EFI_STATUS InternalProcessGrubCfg (IN OUT CHAR8 *Content)
 

Detailed Description

Naive GRUB config parser.

Attemps to respect GRUB escape and line continuation syntax, and then to extract GRUB set commands for some basic processing.

Copyright (c) 2021, Mike Beaton. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause

Definition in file GrubCfg.c.

Macro Definition Documentation

◆ GRUB_LINE

#define GRUB_LINE   "in grub.cfg at line"

Definition at line 41 of file GrubCfg.c.

◆ SHIFT_TOKEN

#define SHIFT_TOKEN ( offset)
Value:
do {\
CopyMem (*Token + (offset), *Token, &Content[*Pos] - *Token); \
*Token += (offset); \
} while (0)
ush Pos
Definition deflate.h:92

Definition at line 50 of file GrubCfg.c.

◆ VAR_FLAGS_BRACE

#define VAR_FLAGS_BRACE   BIT0

Definition at line 47 of file GrubCfg.c.

◆ VAR_FLAGS_NONE

#define VAR_FLAGS_NONE   (0)

Definition at line 46 of file GrubCfg.c.

◆ VAR_FLAGS_NUMERIC

#define VAR_FLAGS_NUMERIC   BIT1

Definition at line 48 of file GrubCfg.c.

Typedef Documentation

◆ GRUB_PARSE_STATE

◆ GRUB_VAR_STATE

Enumeration Type Documentation

◆ GRUB_PARSE_STATE_

Enumerator
GRUB_LEADING_SPACE 
GRUB_COMMENT 
GRUB_TOKEN 
GRUB_SINGLE_QUOTE 
GRUB_DOUBLE_QUOTE 

Definition at line 23 of file GrubCfg.c.

◆ GRUB_VAR_STATE_

Enumerator
GRUB_VAR_NONE 
GRUB_VAR_START 
GRUB_VAR_END 
GRUB_VAR_CHAR 

Definition at line 34 of file GrubCfg.c.

Function Documentation

◆ GrubNextLine()

STATIC BOOLEAN GrubNextLine ( CHAR8 Ch,
UINTN * Pos )

Definition at line 323 of file GrubCfg.c.

◆ GrubNextToken()

STATIC EFI_STATUS GrubNextToken ( CHAR8 * Content,
UINTN * Pos,
UINTN * Line,
CHAR8 ** Token,
BOOLEAN * IsIndented,
BOOLEAN * ContainsVars )

Definition at line 57 of file GrubCfg.c.

◆ InternalProcessGrubCfg()

EFI_STATUS InternalProcessGrubCfg ( IN OUT CHAR8 * Content)

Definition at line 398 of file GrubCfg.c.

◆ SetVar()

STATIC EFI_STATUS SetVar ( UINTN Line,
CHAR8 * Token,
BOOLEAN IsIndented,
BOOLEAN ContainsVars )

Definition at line 345 of file GrubCfg.c.