Home | History | Annotate | Download | only in Common
      1 /** @file
      2 Header file for helper functions useful for parsing INF files.
      3 
      4 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
      5 This program and the accompanying materials
      6 are licensed and made available under the terms and conditions of the BSD License
      7 which accompanies this distribution.  The full text of the license may be found at
      8 http://opensource.org/licenses/bsd-license.php
      9 
     10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #ifndef _EFI_PARSE_INF_H
     16 #define _EFI_PARSE_INF_H
     17 
     18 #include <stdio.h>
     19 #include <stdlib.h>
     20 #include <Common/UefiBaseTypes.h>
     21 #include <MemoryFile.h>
     22 
     23 #ifdef __cplusplus
     24 extern "C" {
     25 #endif
     26 //
     27 // Functions declarations
     28 //
     29 CHAR8 *
     30 ReadLine (
     31   IN MEMORY_FILE    *InputFile,
     32   IN OUT CHAR8      *InputBuffer,
     33   IN UINTN          MaxLength
     34   )
     35 ;
     36 
     37 /*++
     38 
     39 Routine Description:
     40 
     41   This function reads a line, stripping any comments.
     42   The function reads a string from the input stream argument and stores it in
     43   the input string. ReadLine reads characters from the current file position
     44   to and including the first newline character, to the end of the stream, or
     45   until the number of characters read is equal to MaxLength - 1, whichever
     46   comes first.  The newline character, if read, is replaced with a \0.
     47 
     48 Arguments:
     49 
     50   InputFile     Memory file image.
     51   InputBuffer   Buffer to read into, must be MaxLength size.
     52   MaxLength     The maximum size of the input buffer.
     53 
     54 Returns:
     55 
     56   NULL if error or EOF
     57   InputBuffer otherwise
     58 
     59 --*/
     60 BOOLEAN
     61 FindSection (
     62   IN MEMORY_FILE    *InputFile,
     63   IN CHAR8          *Section
     64   )
     65 ;
     66 
     67 /*++
     68 
     69 Routine Description:
     70 
     71   This function parses a file from the beginning to find a section.
     72   The section string may be anywhere within a line.
     73 
     74 Arguments:
     75 
     76   InputFile     Memory file image.
     77   Section       Section to search for
     78 
     79 Returns:
     80 
     81   FALSE if error or EOF
     82   TRUE if section found
     83 
     84 --*/
     85 EFI_STATUS
     86 FindToken (
     87   IN MEMORY_FILE    *InputFile,
     88   IN CHAR8          *Section,
     89   IN CHAR8          *Token,
     90   IN UINTN          Instance,
     91   OUT CHAR8         *Value
     92   )
     93 ;
     94 
     95 /*++
     96 
     97 Routine Description:
     98 
     99   Finds a token value given the section and token to search for.
    100 
    101 Arguments:
    102 
    103   InputFile Memory file image.
    104   Section   The section to search for, a string within [].
    105   Token     The token to search for, e.g. EFI_PEIM_RECOVERY, followed by an = in the INF file.
    106   Instance  The instance of the token to search for.  Zero is the first instance.
    107   Value     The string that holds the value following the =.  Must be MAX_LONG_FILE_PATH in size.
    108 
    109 Returns:
    110 
    111   EFI_SUCCESS             Value found.
    112   EFI_ABORTED             Format error detected in INF file.
    113   EFI_INVALID_PARAMETER   Input argument was null.
    114   EFI_LOAD_ERROR          Error reading from the file.
    115   EFI_NOT_FOUND           Section/Token/Value not found.
    116 
    117 --*/
    118 EFI_STATUS
    119 StringToGuid (
    120   IN CHAR8        *AsciiGuidBuffer,
    121   OUT EFI_GUID    *GuidBuffer
    122   )
    123 ;
    124 
    125 /*++
    126 
    127 Routine Description:
    128 
    129   Converts a string to an EFI_GUID.  The string must be in the
    130   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx format.
    131 
    132 Arguments:
    133 
    134   GuidBuffer      - pointer to destination Guid
    135   AsciiGuidBuffer - pointer to ascii string
    136 
    137 Returns:
    138 
    139   EFI_ABORTED    Could not convert the string
    140   EFI_SUCCESS    The string was successfully converted
    141 
    142 --*/
    143 EFI_STATUS
    144 AsciiStringToUint64 (
    145   IN CONST CHAR8  *AsciiString,
    146   IN BOOLEAN      IsHex,
    147   OUT UINT64      *ReturnValue
    148   )
    149 ;
    150 
    151 /*++
    152 
    153 Routine Description:
    154 
    155   Converts a null terminated ascii string that represents a number into a
    156   UINT64 value.  A hex number may be preceeded by a 0x, but may not be
    157   succeeded by an h.  A number without 0x or 0X is considered to be base 10
    158   unless the IsHex input is true.
    159 
    160 Arguments:
    161 
    162   AsciiString   The string to convert.
    163   IsHex         Force the string to be treated as a hex number.
    164   ReturnValue   The return value.
    165 
    166 Returns:
    167 
    168   EFI_SUCCESS   Number successfully converted.
    169   EFI_ABORTED   Invalid character encountered.
    170 
    171 --*/
    172 CHAR8 *
    173 ReadLineInStream (
    174   IN FILE       *InputFile,
    175   IN OUT CHAR8  *InputBuffer
    176   )
    177 ;
    178 
    179 /*++
    180 
    181 Routine Description:
    182 
    183   This function reads a line, stripping any comments.
    184 
    185 Arguments:
    186 
    187   InputFile     Stream pointer.
    188   InputBuffer   Buffer to read into, must be MAX_LONG_FILE_PATH size.
    189 
    190 Returns:
    191 
    192   NULL if error or EOF
    193   InputBuffer otherwise
    194 
    195 --*/
    196 BOOLEAN
    197 FindSectionInStream (
    198   IN FILE       *InputFile,
    199   IN CHAR8      *Section
    200   )
    201 ;
    202 
    203 /*++
    204 
    205 Routine Description:
    206 
    207   This function parses a stream file from the beginning to find a section.
    208   The section string may be anywhere within a line.
    209 
    210 Arguments:
    211 
    212   InputFile     Stream pointer.
    213   Section       Section to search for
    214 
    215 Returns:
    216 
    217   FALSE if error or EOF
    218   TRUE if section found
    219 
    220 --*/
    221 
    222 #ifdef __cplusplus
    223 }
    224 #endif
    225 
    226 #endif
    227