]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Include/Library/ShellLib.h
updating headers from code review.
[mirror_edk2.git] / ShellPkg / Include / Library / ShellLib.h
index 6211343f1690f5aa0e5a0d0e00fd83f61cd3243e..eab8271ae9f0ee7bd27d1434acff80cd09e45897 100644 (file)
@@ -69,7 +69,7 @@ ShellSetFileInfo (
   This function opens a file with the open mode according to the file path. The \r
   Attributes is valid only for EFI_FILE_MODE_CREATE.\r
 \r
-  @param  FilePath                 on input the device path to the file.  On output \r
+  @param  FilePath                 On input the device path to the file.  On output \r
                           the remaining device path.\r
   @param  DeviceHandle         pointer to the system device handle.\r
   @param  FileHandle             pointer to the file handle.\r
@@ -148,12 +148,12 @@ ShellOpenFileByName(
   otherwise, the Filehandle is NULL. If the directory already existed, this \r
   function opens the existing directory.\r
 \r
-  @param  DirectoryName         pointer to Directory name\r
-  @param  FileHandle                   pointer to the file handle.\r
+  @param  DirectoryName         Pointer to Directory name.\r
+  @param  FileHandle                   Pointer to the file handle.\r
 \r
   @retval EFI_SUCCESS                  The information was set.\r
   @retval EFI_INVALID_PARAMETER        One of the parameters has an invalid value.\r
-  @retval EFI_UNSUPPORTED      Could not open the file path.   \r
+  @retval EFI_UNSUPPORTED            Could not open the file path.     \r
   @retval EFI_NOT_FOUND                The specified file could not be found on the \r
                                 device or the file system could not be found \r
                                 on the device.\r
@@ -191,18 +191,16 @@ ShellCreateDirectory(
   are no more directory entries, the read returns a zero-length buffer. \r
   EFI_FILE_INFO is the structure returned as the directory entry.\r
 \r
-  @param FileHandle             the opened file handle\r
-  \r
-  @param ReadSize               on input the size of buffer in bytes.  on return \r
+  @param FileHandle             The opened file handle.\r
+  @param ReadSize               On input the size of buffer in bytes.  On return \r
                                 the number of bytes written.\r
+  @param Buffer                 The buffer to put read data into.\r
 \r
-  @param Buffer                 the buffer to put read data into.\r
-\r
- @retval EFI_SUCCESS             Data was read.\r
- @retval EFI_NO_MEDIA            The device has no media.\r
- @retval EFI_DEVICE_ERROR            The device reported an error.\r
- @retval EFI_VOLUME_CORRUPTED    The file system structures are corrupted.\r
- @retval EFI_BUFFER_TO_SMALL     Buffer is too small. ReadSize contains required \r
+  @retval EFI_SUCCESS            Data was read.\r
+  @retval EFI_NO_MEDIA         The device has no media.\r
+  @retval EFI_DEVICE_ERROR         The device reported an error.\r
+  @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.\r
+  @retval EFI_BUFFER_TO_SMALL    Buffer is too small. ReadSize contains required \r
                                 size.\r
 \r
 **/\r
@@ -224,21 +222,21 @@ ShellReadFile(
   The file is automatically grown to hold the data if required. Direct writes to \r
   opened directories are not supported.\r
 \r
-  @param FileHandle             The opened file for writing\r
+  @param FileHandle             The opened file for writing.\r
 \r
-  @param BufferSize             on input the number of bytes in Buffer.  On output\r
+  @param BufferSize             On input the number of bytes in Buffer.  On output\r
                                 the number of bytes written.\r
 \r
-  @param Buffer                 the buffer containing data to write is stored.\r
+  @param Buffer                 The buffer containing data to write is stored.\r
 \r
@retval EFI_SUCCESS           Data was written.\r
@retval EFI_UNSUPPORTED           Writes to an open directory are not supported.\r
@retval EFI_NO_MEDIA          The device has no media.\r
@retval EFI_DEVICE_ERROR          The device reported an error.\r
@retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted.\r
@retval EFI_WRITE_PROTECTED   The device is write-protected.\r
@retval EFI_ACCESS_DENIED       The file was open for read only.\r
@retval EFI_VOLUME_FULL           The volume is full.\r
 @retval EFI_SUCCESS            Data was written.\r
 @retval EFI_UNSUPPORTED            Writes to an open directory are not supported.\r
 @retval EFI_NO_MEDIA         The device has no media.\r
 @retval EFI_DEVICE_ERROR         The device reported an error.\r
 @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.\r
 @retval EFI_WRITE_PROTECTED    The device is write-protected.\r
 @retval EFI_ACCESS_DENIED        The file was open for read only.\r
 @retval EFI_VOLUME_FULL            The volume is full.\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -255,10 +253,10 @@ ShellWriteFile(
   flushed to the device, and the file is closed. In all cases the handle is \r
   closed.\r
 \r
-@param FileHandle               the file handle to close.\r
+  @param FileHandle               The file handle to close.\r
 \r
-@retval EFI_SUCCESS             the file handle was closed sucessfully.\r
-@retval INVALID_PARAMETER              One of the parameters has an invalid value.\r
+  @retval EFI_SUCCESS             The file handle was closed sucessfully.\r
+  @retval INVALID_PARAMETER            One of the parameters has an invalid value.\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -273,12 +271,12 @@ ShellCloseFile (
   If the file cannot be deleted, the warning code EFI_WARN_DELETE_FAILURE is \r
   returned, but the handle is still closed.\r
 \r
-  @param FileHandle             the file handle to delete\r
+  @param FileHandle                 The file handle to delete.\r
 \r
-  @retval EFI_SUCCESS           the file was closed sucessfully\r
-  @retval EFI_WARN_DELETE_FAILURE the handle was closed, but the file was not \r
-                                deleted\r
-  @retval INVALID_PARAMETER            One of the parameters has an invalid value.\r
+  @retval EFI_SUCCESS               The file was closed sucessfully.\r
+  @retval EFI_WARN_DELETE_FAILURE   The handle was closed, but the file was not \r
+                                    deleted.\r
+  @retval INVALID_PARAMETER                One of the parameters has an invalid value.\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -414,11 +412,11 @@ ShellFindNextFile(
   This function extracts the file size info from the FileHandle's EFI_FILE_INFO \r
   data.\r
 \r
-  @param FileHandle             file handle from which size is retrieved\r
-  @param Size                   pointer to size\r
+  @param FileHandle             The file handle from which size is retrieved.\r
+  @param Size                   Pointer to size.\r
 \r
-  @retval EFI_SUCCESS           operation was completed sucessfully\r
-  @retval EFI_DEVICE_ERROR      cannot access the file\r
+  @retval EFI_SUCCESS           The operation was completed sucessfully.\r
+  @retval EFI_DEVICE_ERROR      cannot access the file.\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -442,15 +440,15 @@ ShellGetExecutionBreakFlag(
   );\r
 \r
 /**\r
-  return the value of an environment variable\r
+  Return the value of an environment variable.\r
 \r
-  this function gets the value of the environment variable set by the \r
-  ShellSetEnvironmentVariable function\r
+  This function gets the value of the environment variable set by the \r
+  ShellSetEnvironmentVariable function.\r
 \r
   @param EnvKey                 The key name of the environment variable.\r
 \r
   @retval NULL                  the named environment variable does not exist.\r
-  @return != NULL               pointer to the value of the environment variable\r
+  @return != NULL               pointer to the value of the environment variable.\r
 **/\r
 CONST CHAR16*\r
 EFIAPI\r
@@ -461,13 +459,13 @@ ShellGetEnvironmentVariable (
 /**\r
   set the value of an environment variable\r
 \r
-This function changes the current value of the specified environment variable. If the\r
-environment variable exists and the Value is an empty string, then the environment\r
-variable is deleted. If the environment variable exists and the Value is not an empty\r
-string, then the value of the environment variable is changed. If the environment\r
-variable does not exist and the Value is an empty string, there is no action. If the\r
-environment variable does not exist and the Value is a non-empty string, then the\r
-environment variable is created and assigned the specified value.\r
+  This function changes the current value of the specified environment variable. If the\r
+  environment variable exists and the Value is an empty string, then the environment\r
+  variable is deleted. If the environment variable exists and the Value is not an empty\r
+  string, then the value of the environment variable is changed. If the environment\r
+  variable does not exist and the Value is an empty string, there is no action. If the\r
+  environment variable does not exist and the Value is a non-empty string, then the\r
+  environment variable is created and assigned the specified value.\r
 \r
   This is not supported pre-UEFI Shell 2.0.\r
 \r
@@ -487,19 +485,19 @@ ShellSetEnvironmentVariable (
   );\r
 \r
 /**\r
-  cause the shell to parse and execute a command line.\r
+  Cause the shell to parse and execute a command line.\r
 \r
   This function creates a nested instance of the shell and executes the specified\r
-command (CommandLine) with the specified environment (Environment). Upon return,\r
-the status code returned by the specified command is placed in StatusCode.\r
-If Environment is NULL, then the current environment is used and all changes made\r
-by the commands executed will be reflected in the current environment. If the\r
-Environment is non-NULL, then the changes made will be discarded.\r
-The CommandLine is executed from the current working directory on the current\r
-device.\r
+  command (CommandLine) with the specified environment (Environment). Upon return,\r
+  the status code returned by the specified command is placed in StatusCode.\r
+  If Environment is NULL, then the current environment is used and all changes made\r
+  by the commands executed will be reflected in the current environment. If the\r
+  Environment is non-NULL, then the changes made will be discarded.\r
+  The CommandLine is executed from the current working directory on the current\r
+  device.\r
 \r
-EnvironmentVariables and Status are only supported for UEFI Shell 2.0.\r
-Output is only supported for pre-UEFI Shell 2.0\r
+  EnvironmentVariables and Status are only supported for UEFI Shell 2.0.\r
+  Output is only supported for pre-UEFI Shell 2.0\r
 \r
   @param ImageHandle            Parent image that is starting the operation\r
   @param CommandLine            pointer to null terminated command line.\r
@@ -543,9 +541,9 @@ ShellGetCurrentDir (
   );\r
 \r
 /**\r
-  sets (enabled or disabled) the page break mode\r
+  Sets (enabled or disabled) the page break mode.\r
 \r
-  when page break mode is enabled the screen will stop scrolling \r
+  When page break mode is enabled the screen will stop scrolling \r
   and wait for operator input before scrolling a subsequent screen.\r
 \r
   @param CurrentState           TRUE to enable and FALSE to disable\r
@@ -563,21 +561,19 @@ ShellSetPageBreakMode (
   file has a SHELL_FILE_ARG structure to record the file information. These \r
   structures are placed on the list ListHead. Users can get the SHELL_FILE_ARG \r
   structures from ListHead to access each file. This function supports wildcards\r
-  and will process '?' and '*' as such.  the list must be freed with a call to \r
+  and will process '?' and '*' as such.  The list must be freed with a call to \r
   ShellCloseFileMetaArg().\r
 \r
   If you are NOT appending to an existing list *ListHead must be NULL.  If \r
   *ListHead is NULL then it must be callee freed.\r
 \r
-  @param Arg                    pointer to path string\r
-  @param OpenMode               mode to open files with\r
-  @param ListHead               head of linked list of results\r
+  @param Arg                    Pointer to path string.\r
+  @param OpenMode               Mode to open files with.\r
+  @param ListHead               Head of linked list of results.\r
 \r
-  @retval EFI_SUCCESS           the operation was sucessful and the list head \r
-                                contains the list of opened files\r
-  #retval EFI_UNSUPPORTED       a previous ShellOpenFileMetaArg must be closed first.\r
-                                *ListHead is set to NULL.\r
-  @return != EFI_SUCCESS        the operation failed\r
+  @retval EFI_SUCCESS           The operation was sucessful and the list head \r
+                                contains the list of opened files.\r
+  @return != EFI_SUCCESS        The operation failed.\r
 \r
   @sa InternalShellConvertFileListType\r
 **/\r
@@ -603,11 +599,31 @@ ShellCloseFileMetaArg (
   IN OUT EFI_SHELL_FILE_INFO    **ListHead\r
   );\r
 \r
+/**\r
+  Find a file by searching the CWD and then the path.\r
+\r
+  if FileName is NULL then ASSERT.\r
+\r
+  if the return value is not NULL then the memory must be caller freed.\r
+\r
+  @param FileName               Filename string.\r
+\r
+  @retval NULL                  the file was not found\r
+  @return !NULL                 the path to the file.\r
+**/\r
+CHAR16 *\r
+EFIAPI\r
+ShellFindFilePath (\r
+  IN CONST CHAR16 *FileName\r
+  );\r
+\r
 typedef enum {\r
-  TypeFlag  = 0,\r
-  TypeValue,\r
-  TypePosition,\r
-  TypeStart,\r
+  TypeFlag  = 0,    /// a flag that is present or not present only. (IE "-a")\r
+  TypeValue,        /// a flag that has some data following it with a space (IE "-a 1")\r
+  TypePosition,     /// some data that did not follow a parameter (IE "filename.txt")\r
+  TypeStart,        /// a flag that has variable value appended to the end (IE "-ad", "-afd", "-adf", etc...\r
+  TypeDoubleValue,  /// a flag that has 2 space seperated value data following it. (IE "-a 1 2")\r
+  TypeMaxValue,     /// a flag followed by all the command line data before the next flag.\r
   TypeMax,\r
 } ParamType;\r
 \r
@@ -626,11 +642,11 @@ extern SHELL_PARAM_ITEM EmptyParamList[];
   \r
   If no initialization is required, then return RETURN_SUCCESS.\r
   \r
-  @param CheckList              pointer to list of parameters to check\r
-  @param CheckPackage           Package of checked values\r
-  @param ProblemParam           optional pointer to pointer to unicode string for \r
+  @param CheckList              Pointer to list of parameters to check.\r
+  @param CheckPackage           Package of checked values.\r
+  @param ProblemParam           Pptional pointer to pointer to unicode string for \r
                                 the paramater that caused failure.\r
-  @param AutoPageBreak          will automatically set PageBreakEnabled\r
+  @param AutoPageBreak          Will automatically set PageBreakEnabled.\r
 \r
   @retval EFI_SUCCESS           The operation completed sucessfully.\r
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed\r
@@ -638,10 +654,10 @@ extern SHELL_PARAM_ITEM EmptyParamList[];
   @retval EFI_VOLUME_CORRUPTED  the command line was corrupt.  an argument was \r
                                 duplicated.  the duplicated command line argument \r
                                 was returned in ProblemParam if provided.\r
-  @retval EFI_DEVICE_ERROR      the commands contained 2 opposing arguments.  one\r
+  @retval EFI_DEVICE_ERROR      The commands contained 2 opposing arguments.  one\r
                                 of the command line arguments was returned in \r
                                 ProblemParam if provided.\r
-  @retval EFI_NOT_FOUND         a argument required a value that was missing.  \r
+  @retval EFI_NOT_FOUND         A argument required a value that was missing.  \r
                                 the invalid command line argument was returned in\r
                                 ProblemParam if provided.\r
 **/\r
@@ -767,6 +783,7 @@ ShellCommandLineGetCount(
 EFI_STATUS\r
 EFIAPI\r
 ShellInitialize (\r
+  VOID\r
   );\r
 \r
 /**\r
@@ -861,5 +878,59 @@ ShellIsDirectory(
   IN CONST CHAR16 *DirName\r
   );\r
 \r
+/**\r
+  Function to determine whether a string is decimal or hex representation of a number \r
+  and return the number converted from the string.\r
+\r
+  @param[in] String   String representation of a number\r
+\r
+  @retval all         the number\r
+**/\r
+UINTN\r
+EFIAPI\r
+ShellStrToUintn(\r
+  IN CONST CHAR16 *String\r
+  );\r
+\r
+/**\r
+  Safely append with automatic string resizing given length of Destination and \r
+  desired length of copy from Source.\r
+\r
+  append the first D characters of Source to the end of Destination, where D is \r
+  the lesser of Count and the StrLen() of Source. If appending those D characters \r
+  will fit within Destination (whose Size is given as CurrentSize) and \r
+  still leave room for a null terminator, then those characters are appended, \r
+  starting at the original terminating null of Destination, and a new terminating \r
+  null is appended.\r
+\r
+  If appending D characters onto Destination will result in a overflow of the size\r
+  given in CurrentSize the string will be grown such that the copy can be performed\r
+  and CurrentSize will be updated to the new size.\r
+\r
+  If Source is NULL, there is nothing to append, just return the current buffer in \r
+  Destination.\r
+\r
+  if Destination is NULL, then ASSERT()\r
+  if Destination's current length (including NULL terminator) is already more then \r
+  CurrentSize, then ASSERT()\r
+\r
+  @param[in,out] Destination   The String to append onto\r
+  @param[in,out] CurrentSize   on call the number of bytes in Destination.  On \r
+                                return possibly the new size (still in bytes).  if NULL\r
+                                then allocate whatever is needed.\r
+  @param[in]      Source        The String to append from\r
+  @param[in]      Count         Maximum number of characters to append.  if 0 then \r
+                                all are appended.\r
+\r
+  @return Destination           return the resultant string.\r
+**/\r
+CHAR16* \r
+EFIAPI\r
+StrnCatGrow (\r
+  IN OUT CHAR16           **Destination,\r
+  IN OUT UINTN            *CurrentSize,\r
+  IN     CONST CHAR16     *Source,\r
+  IN     UINTN            Count\r
+  );\r
 \r
 #endif // __SHELL_LIB__\r