// /**
//
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
// Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
// This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution. The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// Module Name:
//
// UefiShellLevel2CommandsLib.uni
//
// Abstract:
//
// String definitions for UEFI Shell 2.0 level 2 commands
//
//
// **/

/=#

#langdef   en-US "english"

#string STR_GEN_NO_MEM            #language en-US "%H%s%N: Memory is not available.\r\n"
#string STR_GEN_TOO_MANY          #language en-US "%H%s%N: Too many arguments.\r\n"
#string STR_GEN_TOO_FEW           #language en-US "%H%s%N: Too few arguments.\r\n"
#string STR_GEN_PARAM_INV         #language en-US "%H%s%N: Invalid argument - '%H%s%N'\r\n"
#string STR_GEN_PROBLEM           #language en-US "%H%s%N: Unknown flag - '%H%s%N'\r\n"
#string STR_GEN_PROBLEM_VAL       #language en-US "%H%s%N: Bad value - '%H%s%N' for flag - '%H%s%N'\r\n"
#string STR_GEN_ATTRIBUTE         #language en-US "%H%s%N: Invalid argument - '%H-a%s%N'\r\n"
#string STR_GEN_NO_VALUE          #language en-US "%H%s%N: Missing argument for flag - '%H%s%N'\r\n"
#string STR_GEN_ERR_AD            #language en-US "%H%s%N: Access denied.\r\n"
#string STR_GEN_ERR_FILE          #language en-US "%H%s%N: File '%H%s%N' error - %r\r\n"
#string STR_GEN_ERR_UK            #language en-US "%H%s%N: Status: %r\r\n"
#string STR_GEN_PARAM_CON         #language en-US "%H%s%N: Parameters conflict.\r\n"
#string STR_GEN_PARAM_CONFLICT    #language en-US "%H%s%N: Flags conflict with - '%H%s%N' and '%H%s%N'\r\n"
#string STR_GEN_FILE_OPEN_FAIL    #language en-US "%H%s%N: Cannot open file - '%H%s%N'\r\n"
#string STR_GEN_FILE_CLOSE_FAIL   #language en-US "%H%s%N: Cannot close file - '%H%s%N'\r\n"
#string STR_GEN_FILE_AD           #language en-US "%H%s%N: File access error - '%H%s%N'\r\n"
#string STR_GEN_FILE_NF           #language en-US "%H%s%N: File not found - '%H%s%N'\r\n"
#string STR_GEN_CRLF              #language en-US "\r\n"
#string STR_GEN_NO_CWD            #language en-US "%H%s%N: Current directory not specified.\r\n"
#string STR_GEN_NO_FILES          #language en-US "%H%s%N: No matching files were found.\r\n"
#string STR_GEN_DIR_NF            #language en-US "%H%s%N: Directory not found - '%H%s%N'\r\n"
#string STR_GEN_RES_OK            #language en-US "- [ok]\r\n"
#string STR_GEN_NOT_DIR           #language en-US "%H%s%N: '%H%s%N' is not a directory.\r\n"
#string STR_GEN_NOT_FILE          #language en-US "%H%s%N: '%H%s%N' is not a file.\r\n"
#string STR_GEN_SFO_HEADER        #language en-US "ShellCommand,"%s"\r\n"
#string STR_GEN_MARG_ERROR        #language en-US "%H%s%N: The destination '%H%s%N' is ambiguous.\r\n"
#string STR_GEN_FILE_ERROR        #language en-US "%H%s%N: The destination is an existing file '%H%s%N'.\r\n"
#string STR_GEN_UEFI_FUNC_ERROR   #language en-US "%H%s%N: UEFI function '%H%s%N' returned an incorrect value for: %s (%x).\r\n"
#string STR_GEN_UEFI_FUNC_WARN    #language en-US "%H%s%N: UEFI function '%H%s%N' returned: %r\r\n"
#string STR_GEN_DEST_EXIST_OVR    #language en-US "Destination file already exists.  Overwrite? %BY%Nes, %BN%No, %BA%Nll, %BC%Nancel "
#string STR_GEN_CPY_FAIL          #language en-US "%H%s%N: Copy failure: insufficient capacity on destination media.\r\n"
#string STR_GEN_CPY_READ_ERROR    #language en-US "%H%s%N: reading '%B%s%N': IO Error \r\n"
#string STR_GEN_CPY_WRITE_ERROR   #language en-US "%H%s%N: writing '%B%s%N': IO Error \r\n"
#string STR_GEN_OUT_MEM           #language en-US "%H%s%N: Memory allocation was not successful.\r\n"

#string STR_SET_DISP              #language en-US "%V%8s %N= %H%s%N\r\n"
#string STR_SET_NF                #language en-US "%H%s%N: Environment Variable '%H%s%N' not defined.\r\n"
#string STR_SET_ND                #language en-US "%H%s%N: Environment Variable '%H%s%N' could not be deleted.\r\n"
#string STR_SET_ERROR_SET         #language en-US "%H%s%N: Unable to set %H%s%N\r\n"

#string STR_CD_PRINT              #language en-US "%s\r\n"
#string STR_CD_NF                 #language en-US "%H%s%N: No mapping found.\r\n"

#string STR_MAP_NF                #language en-US "%H%s%N: Cannot find mapped device - '%H%s%N'\r\n"
#string STR_MAP_NOF               #language en-US "%H%s%N: No mappable target found - '%H%s%N'\r\n"
#string STR_MAP_SFO_MAPPINGS      #language en-US "Mappings,"%s","%s","%s"\r\n"
#string STR_MAP_HEADER            #language en-US "%EMapping table%N\r\n"
#string STR_MAP_ENTRY             #language en-US "%E%10s%N %HAlias(s):%N%s\r\n          %s\r\n"
#string STR_MAP_ENTRY_VERBOSE     #language en-US "         Handle:      [%H%02x%N]\r\n"
                                                  "         Media Type:  %s\r\n"
                                                  "         Removable:   %s\r\n"
                                                  "         Current Dir: %s\r\n"

#string STR_ATTRIB_OUTPUT_LINE    #language en-US "Attrib: %1c%1c%1c%1c%1c %s\r\n"

#string STR_MAP_MEDIA_FLOPPY      #language en-US "Floppy"
#string STR_MAP_MEDIA_UNKNOWN     #language en-US "Unknown"
#string STR_MAP_MEDIA_HARDDISK    #language en-US "HardDisk"
#string STR_MAP_MEDIA_CDROM       #language en-US "CD-Rom"

#string STR_MKDIR_ALREADY         #language en-US "Directory '%B%s%N' already exists.\r\n"
#string STR_MKDIR_CREATEFAIL      #language en-US "Directory '%B%s%N' unable to create.\r\n"

#string STR_DATE_FORMAT           #language en-US "%02d/%02d/%04d\r\n"
#string STR_DATE_SFO_FORMAT       #language en-US "Date,"%02d","%02d","%04d"\r\n"

#string STR_TIME_FORMAT           #language en-US "%02d:%02d:%02d (UTC%1s%02d:%02d)"
#string STR_TIME_FORMAT_LOCAL     #language en-US "%02d:%02d:%02d (LOCAL)"
#string STR_TIME_DST0             #language en-US " DST: Not Affected\r\n"
#string STR_TIME_DST1             #language en-US " DST: Affected\r\n"
#string STR_TIME_DST2             #language en-US " DST: Adjusted\r\n"
#string STR_TIME_DST3             #language en-US " DST: Affected and Adjusted\r\n"

#string STR_TIMEZONE_M12          #language en-US "UTC-12:00, International Date Line West\r\n"
#string STR_TIMEZONE_M11          #language en-US "UTC-11:00, Midway Island, Samoa\r\n"
#string STR_TIMEZONE_M10          #language en-US "UTC-10:00, Hawaii\r\n"
#string STR_TIMEZONE_M9           #language en-US "UTC-09:00, Alaska\r\n"
#string STR_TIMEZONE_M8           #language en-US "UTC-08:00, Pacific Time(US & Canada), Tijuana, Portland\r\n"
#string STR_TIMEZONE_M7           #language en-US "UTC-07:00, Arizona, Chihuahua, La Paz, Mazatlan, Mountain Time (US & Canada)\r\n"
#string STR_TIMEZONE_M6           #language en-US "UTC-06:00, Central America, Central Time(US & Canada)\r\n"
#string STR_TIMEZONE_M5           #language en-US "UTC-05:00, Bogota, Lima, Quito, Eastern Time(US & Canada)\r\n"
#string STR_TIMEZONE_M430         #language en-US "UTC-04:30, Caracas\r\n"
#string STR_TIMEZONE_M4           #language en-US "UTC-04:00, Atlantic Time(Canada), Caracas, Santiago\r\n"
#string STR_TIMEZONE_M330         #language en-US "UTC-03:30, Newfoundland\r\n"
#string STR_TIMEZONE_M3           #language en-US "UTC-03:00, Brasilia, Buenos Aires, Georgetown, Greenland\r\n"
#string STR_TIMEZONE_M2           #language en-US "UTC-02:00, Mid-Atlantic\r\n"
#string STR_TIMEZONE_M1           #language en-US "UTC-01:00, Azores, Cape Verde Is.\r\n"
#string STR_TIMEZONE_0            #language en-US "UTC      , Greenwich Mean Time, Casablanca, Monrovia, Dublin, London\r\n"
#string STR_TIMEZONE_P1           #language en-US "UTC+01:00, Amsterdam, Berlin, Bern, Rome, Paris, West Central Africa\r\n"
#string STR_TIMEZONE_P2           #language en-US "UTC+02:00, Athens, Istanbul, Bucharest, Cairo, Jerusalem\r\n"
#string STR_TIMEZONE_P3           #language en-US "UTC+03:00, Baghdad, Kuwait, Riyadh, Moscow, Nairobi\r\n"
#string STR_TIMEZONE_P330         #language en-US "UTC+03:30, Tehran\r\n"
#string STR_TIMEZONE_P4           #language en-US "UTC+04:00, Abu Dhabi, Muscat, Baku, Tbilisi, Yerevan\r\n"
#string STR_TIMEZONE_P430         #language en-US "UTC+04:30, Kabul\r\n"
#string STR_TIMEZONE_P5           #language en-US "UTC+05:00, Ekaterinburg, Islamabad, Karachi, Tashkent\r\n"
#string STR_TIMEZONE_P530         #language en-US "UTC+05:30, Chennai, Kolkata, Mumbai, New Delhi\r\n"
#string STR_TIMEZONE_P545         #language en-US "UTC+05:45, Kathmandu\r\n"
#string STR_TIMEZONE_P6           #language en-US "UTC+06:00, Almaty, Novosibirsk, Astana, Dhaka, Sri Jayawardenepura\r\n"
#string STR_TIMEZONE_P630         #language en-US "UTC+06:30, Rangoon\r\n"
#string STR_TIMEZONE_P7           #language en-US "UTC+07:00, Bangkok, Hanio, Jakarta, Krasnoyarsk\r\n"
#string STR_TIMEZONE_P8           #language en-US "UTC+08:00, Beijing, Chongqing, Hong Kong, Urumqi, Taipei, Perth\r\n"
#string STR_TIMEZONE_P9           #language en-US "UTC+09:00, Osaka, Sapporo, Tokyo, Seoul, Yakutsk\r\n"
#string STR_TIMEZONE_P930         #language en-US "UTC+09:30, Adelaide, Darwin\r\n"
#string STR_TIMEZONE_P10          #language en-US "UTC+10:00, Canberra, Melbourne, Sydney, Guam, Hobart, Vladivostok\r\n"
#string STR_TIMEZONE_P11          #language en-US "UTC+11:00, Magadan, Solomon Is., New Caledonia\r\n"
#string STR_TIMEZONE_P12          #language en-US "UTC+12:00, Auckland, Wellington, Fiji, Kamchatka, Marshall Is.\r\n"
#string STR_TIMEZONE_P13          #language en-US "UTC+13:00, Nuku'alofa\r\n"
#string STR_TIMEZONE_P14          #language en-US "UTC+14:00, Line Islands\r\n"
#string STR_TIMEZONE_LOCAL        #language en-US "LOCAL    , Local Time\r\n"
#string STR_TIMEZONE_SIMPLE       #language en-US "UTC%1s%02d:%02d\r\n"
#string STR_TIMEZONE_SIMPLE_LOCAL #language en-US "LOCAL\r\n"
#string STR_TIMEZONE_NI           #language en-US "No additional information known."

#string STR_LOAD_NOT_IMAGE        #language en-US "Image '%s' is not an image.\r\n"
#string STR_LOAD_NOT_DRIVER       #language en-US "Image '%s' is not a driver.\r\n"
#string STR_LOAD_LOADED           #language en-US "Image '%s' loaded at %x - %r\r\n"
#string STR_LOAD_ERROR            #language en-US "Image '%s' error in StartImage: %r\r\n"

#string STR_LS_LINE_START_ALL     #language en-US "%t %5s %1c % ,L11d  "
#string STR_LS_LINE_END_FILE      #language en-US "%s\r\n"
#string STR_LS_LINE_END_EXE       #language en-US "%V%s%N\r\n"
#string STR_LS_LINE_END_DIR       #language en-US "%B%s%N\r\n"
#string STR_LS_FOOTER_LINE        #language en-US "% ,L11d File(s) % ,L11d bytes\r\n% ,L11d Dir(s)\r\n"
#string STR_LS_HEADER_LINE1       #language en-US "Directory of: %H%s%N\r\n"
#string STR_LS_FILE_NOT_FOUND     #language en-US "%H%s%N: File Not Found - '%H%s%N'\r\n"
#string STR_LS_SFO_VOLINFO        #language en-US "VolumeInfo,"%s","%Ld","%5s","%Ld","%Ld"\r\n"
#string STR_LS_SFO_FILEINFO       #language en-US "FileInfo,"%s","%Ld","%Ld","%s%s%s%s%s","%02d:%02d:%02d","%02d.%02d.%04d","%02d:%02d:%02d","%02d.%02d.%04d","%02d:%02d:%02d","%02d.%02d.%04d"\r\n"

#string STR_VOL_VOLINFO           #language en-US "Volume %s (%s)\r\n"
                                                  "%Ld bytes total disk space\r\n"
                                                  "%Ld bytes available on disk\r\n"
                                                  "%d bytes in each allocation unit\r\n"

#string STR_RM_LOG_DELETE_CONF    #language en-US "Remove Subtree '%B%s%N' [y/n]?"
#string STR_RM_LOG_DELETE         #language en-US "Deleting '%B%s%N'\r\n"
#string STR_RM_LOG_DELETE_ERR     #language en-US "Delete error: %r\r\n"
#string STR_RM_LOG_DELETE_ERR2    #language en-US "Delete error.  Couldn't open file: %r\r\n"
#string STR_RM_LOG_DELETE_ERR3    #language en-US "Delete error.  Invalid target '%B%s%N'\r\n"
#string STR_RM_LOG_DELETE_COMP    #language en-US "Delete successful.\r\n"
#string STR_RM_LOG_DETELE_RO      #language en-US "%H%s%N: '%H%s%N' is read-only\r\n"

#string STR_MV_OUTPUT             #language en-US "Moving %s -> %s\r\n"
#string STR_MV_INV_SUB            #language en-US "Cannot move a directory into itself or its subdirectory.\r\n"
#string STR_MV_INV_RO             #language en-US "Cannot move to or from a read-only file or directory '%B%s%N'\r\n"
#string STR_MV_INV_CWD            #language en-US "Cannot move current working directory or its subdirectory.\r\n"

#string STR_CP_OUTPUT             #language en-US "Copying %s -> %s\r\n"
#string STR_CP_ERROR              #language en-US "%H%s%N: Could not copy - '%H%s%N'\r\n"
#string STR_CP_DIR_REQ            #language en-US "%H%s%N: Copying a directory requires -r.\r\n"
#string STR_CP_DIR_WNF            #language en-US "%H%s%N: The specified path does not exist - '%H%s%N'\r\n"
#string STR_CP_SD_SAME            #language en-US "%H%s%N: The source and destination are the same.\r\n"
#string STR_CP_SD_PARENT          #language en-US "%H%s%N: The destination is a parent of the source.\r\n"
#string STR_CP_DEST_ERROR         #language en-US "%H%s%N: The destination is read-only.\r\n"
#string STR_CP_DEST_OPEN_FAIL     #language en-US "%H%s%N: The destination file '%B%s%N' failed to open with create.\r\n"
#string STR_CP_DEST_DIR_FAIL      #language en-US "%H%s%N: The destination directory '%B%s%N' could not be created.\r\n"
#string STR_CP_SRC_OPEN_FAIL     #language en-US "%H%s%N: The source file '%B%s%N' failed to open with read.\r\n"

#string STR_GET_HELP_ATTRIB       #language en-US ""
".TH attrib 0 "Displays or modifies the attributes of files or directories."\r\n"
".SH NAME\r\n"
"Displays or modifies the attributes of files or directories.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"ATTRIB [+a|-a] [+s|-s] [+h|-h] [+r|-r] [file...] [directory...]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  +a|-a     - Sets or clears the 'archive' attribute.\r\n"
"  +s|-s     - Sets or clears the 'system' attribute.\r\n"
"  +h|-h     - Sets or clears the 'hidden' attribute.\r\n"
"  +r|-r     - Sets or clears the 'read-only' attribute.\r\n"
"  file      - Specifies the file name (wild cards are permitted).\r\n"
"  directory - Specifies the directory name (wildcards are permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. Four attribute types are supported in the UEFI file system:\r\n"
"     - Archive [A]\r\n"
"     - System [S]\r\n"
"     - Hidden [H]\r\n"
"     - Read only [R]\r\n"
"  2. If a file (in general meaning) is a directory, then it is also shown\r\n"
"     to have the attribute [D].\r\n"
"  3. If any file in the file list that is specified \r\n"
"     does not exist, attrib will continue processing the remaining files\r\n"
"     while reporting the error.\r\n"
"  4. If no attributes parameters are specified, the current attributes of\r\n"
"     the specified files or directories are displayed.\r\n"
"  5. If no files or directories are specified, the command applies to\r\n"
"     all files and sub-directories within the current directory.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the attributes of a directory:\r\n"
"    fs0:\> attrib fs0:\ \r\n"
" \r\n"
"  * To display the attributes of all files and sub-directories in the current\r\n"
"    directory:\r\n"
"    fs0:\> attrib *\r\n"
" \r\n"
"  * To add the system attribute to all files with extension '.efi':\r\n"
"    fs0:\> attrib +s *.efi\r\n"
" \r\n"
"  * To remove the read-only attribute from all files with extension '.inf':\r\n"
"    fs0:\> attrib -r *.inf\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_NOT_FOUND           The requested file was not found.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_WRITE_PROTECTED     The media that the action was to take place on is\r\n"
"                            write-protected.\r\n"

#string STR_GET_HELP_CD           #language en-US ""
".TH cd 0 "Displays or changes the current directory."\r\n"
".SH NAME\r\n"
"Displays or changes the current directory.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"CD [path]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  path - Specifies the relative or absolute directory path.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command changes the current working directory that is used by the\r\n"
"     UEFI Shell environment. If a file system mapping is specified, then the\r\n"
"     current working directory is changed for that device. Otherwise, the\r\n"
"     current working directory is changed for the current device.\r\n"
"  2. If path is not present, then the current working directory (including\r\n"
"     file system mapping) is displayed to standard out.\r\n"
"  3. The table below describes the conventions that are used to refer to the\r\n"
"     directory, its parent, and the root directory in the UEFI Shell\r\n"
"     environment.\r\n"
"     Convention  Description\r\n"
"      '.'        Refers to the current directory.\r\n"
"      '..'       Refers to the directory's parent.\r\n"
"      '\\\'        Refers to the root of the current file system.\r\n"
"  4. The current working directory is maintained in the environment\r\n"
"     variable %cwd%.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To change the current file system to the mapped fs0 file system:\r\n"
"    Shell> fs0:\r\n"
" \r\n"
"  * To change the current directory to subdirectory 'efi':\r\n"
"    fs0:\> cd efi\r\n"
" \r\n"
"  * To change the current directory to the parent directory (fs0:\):\r\n"
"    fs0:\efi\> cd ..\r\n"
" \r\n"
"  * To change the current directory to 'fs0:\efi\Tools':\r\n"
"    fs0:\> cd efi\Tools\r\n"
" \r\n"
"  * To change the current directory to the root of the current fs (fs0):\r\n"
"    fs0:\efi\Tools\> cd \ \r\n"
" \r\n"
"  * To move between volumes and maintain the current path, and then copy\r\n"
"    all of files in fs0:\efi\Tools into the fs1:\Tmp directory:\r\n"
"    fs0:\> cd \efi\Tools\r\n"
"    fs0:\efi\Tools\> fs1:\r\n"
"    fs1:\> cd Tmp\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_CP           #language en-US ""
".TH cp 0 "Copies files or directories."\r\n"
".SH NAME\r\n"
"Copies one or more files or directories to another location.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"CP [-r] [-q] src [src...] [dst]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -r  - Makes a recursive copy.\r\n"
"  -q  - Makes a quiet copy (without a prompt).\r\n"
"  src - Specifies a source file/directory name (wildcards are permitted).\r\n"
"  dst - Specifies a destination file/directory name (wildcards are not permitted). \r\n"
"        If more than one directory is specified, the last directory is\r\n"
"        assumed to be the destination.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. '-r' must be specified if src is a directory. If '-r' is specified,\r\n"
"     the source directory is recursively copied to the destination.\r\n"
"     'src' itself is copied.\r\n"
"  2. If a destination is not specified, the current working directory is\r\n"
"     assumed to be the destination.\r\n"
"  3. 'CP -r src1 src2 dst' copies all files and subdirectories in 'src1' and\r\n"
"     'src2' to the destination 'dst'. 'src1' and 'src2' themselves are also\r\n"
"     copied. The 'dst' parameter is interpreted as a directory.\r\n"
"  4. Copying a directory or file to itself is not allowed.\r\n"
"  5. If an error occurs, this command exits immediately and the remaining files or\r\n"
"     directories are not copied.\r\n"
"  6. When 'cp' is executed with a script file, it always performs quiet\r\n"
"     copying, regardless of whether the '-q' option is specified.\r\n"
"  7. If you are copying multiple files, the destination must be an existing\r\n"
"     directory.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the contents of the current directory:\r\n"
"    fs0:\> ls\r\n"
" \r\n"
"  * To copy a file in the same directory and change the file name:\r\n"
"    fs0:\> cp temp.txt readme.txt\r\n"
" \r\n"
"  * To copy multiple files to another directory:\r\n"
"    fs0:\> cp temp.txt isaBus.efi \Test\r\n"
" \r\n"
"  * To copy multiple directories recursively to another directory:\r\n"
"    fs0:\> cp -r test1 test2 boot \Test\r\n"
" \r\n"
"  * To see the results of the above operations:\r\n"
"    fs0:\> ls \Test\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly \r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_OUT_OF_RESOURCES    There was insufficient space to save the \r\n"
"                            requested file at the destination.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security \r\n"
"                            violation.\r\n"
"  SHELL_WRITE_PROTECTED     An attempt was made to create a file on media that\r\n"
"                            was write-protected.\r\n"

#string STR_GET_HELP_MAP          #language en-US ""
".TH map 0 "Displays or defines file system mappings"\r\n"
".SH NAME\r\n"
"Displays or defines file system mappings.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"MAP [-d <sname>]\r\n"
"MAP [[-r][-v][-c][-f][-u][-t <type[,type...]>][sname]]\r\n"
"MAP [sname handle | mapping]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -d      - Deletes a file system mapping.\r\n"
"  -r      - Resets file system mappings to default values.\r\n"
"  -u      - Adds file system mappings for newly-installed devices and\r\n"
"            removes mappings for uninstalled devices. This does not change\r\n"
"            the mappings of existing devices and preserves user-defined mappings.\r\n"
"  -v      - Displays verbose information about all file system mappings.\r\n"
"  -c      - Displays the consistent mappings.\r\n"
"  -f      - Displays the normal mappings (not the consistent mappings).\r\n"
"  -t      - Displays the device mappings, filtered according to the device type.\r\n"
"            Supported types are:\r\n"
"              fp - Floppy\r\n"
"              hd - Hard Disk\r\n"
"              cd - CD-ROM\r\n"
"            Types can be combined by putting a comma between two types. Spaces\r\n"
"            are not allowed between types.\r\n"
"  -sfo    - Displays information in Standard-Format Output.\r\n"
"  sname   - Specifies a mapping name.\r\n"
"  handle  - Specifies the number of a handle. Use the same value that is\r\n"
"            displayed by the 'dh' command.\r\n"
"  mapping - Specifies a new mapping name to assign to a device.\r\n"
"            This value must end with a ':'.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command creates a mapping between a user-defined name and a device.\r\n"
"     The most common use of this command is to create a mapped name for\r\n"
"     devices that support a file system protocol. After these mappings are\r\n"
"     created, the names can be used with all the file manipulation commands.\r\n"
"  2. The UEFI Shell environment creates default mappings for all of the\r\n"
"     devices that support a recognized file system.\r\n"
"  3. This command can be used to create additional mappings, or \r\n"
"     when used with the -d option, to delete an existing mapping. If it is\r\n"
"     used without any parameters, all of the current mappings are listed.\r\n"
"     If the -v option is used, the mappings are shown with additional\r\n"
"     information about each device.\r\n"
"  4. The -r option is used to reset all the default mappings in a system,\r\n"
"     which is useful if the system configuration has changed since the\r\n"
"     last boot.\r\n"
"  5. The -u option adds mappings for newly-installed devices and removes\r\n"
"     mappings for uninstalled devices without changing the mappings of\r\n"
"     existing devices. User-defined mappings are also preserved. A mapping\r\n"
"     history is saved, which preserves the original mapping name for\r\n"
"     a device with a specific device path. The current directory is also\r\n"
"     preserved if the current device is not changed.\r\n"
"  6. Each device in the system has a consistent mapping. If the hardware\r\n"
"     configuration has not changed, the device's consistent mappings do not\r\n"
"     change. If two or more machines have the same hardware configurations,\r\n"
"     the device's consistent mapping remains the same. Use the -c option to\r\n"
"     list all the consistent mappings in the system.\r\n"
"  7. The mapping value must consist of digits and characters. Other\r\n"
"     characters are illegal.\r\n"
"  8. This command support wildcards. You can use the wildcards to delete\r\n"
"     or show the mapping. However, when you assign the mapping, wildcards\r\n"
"     are forbidden.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display verbose mapping table information:\r\n"
"    Shell> map -v\r\n"
" \r\n"
"  * To assign a different name to fs0:\r\n"
"    Shell> map floppy fs0:\r\n"
" \r\n"
"  * To operate with the mapped name:\r\n"
"    Shell> floppy:\r\n"
" \r\n"
"  * To delete a mapped name:\r\n"
"    Shell> map -d floppy:\r\n"
" \r\n"
"  * To display all the mapped names starting with 'f': \r\n"
"    Shell> map f* \r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_MKDIR        #language en-US ""
".TH mkdir 0 "Creates directories."\r\n"
".SH NAME\r\n"
"Creates one or more new directories.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"MKDIR dir [dir...]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  dir - Specifies the name of a directory or directories to create.\r\n"
"        (Wildcards are not allowed)\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. Mkdir can create one or more new directories.\r\n"
"  2. If dir includes nested directories, then parent directories will be\r\n"
"     created before child directories.\r\n"
"  3. If the directory already exists, mkdir will exit with an error.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To create a new directory:\r\n"
"    fs0:\> mkdir rafter\r\n"
" \r\n"
"  * To create multiple directories:\r\n"
"    fs0:\> mkdir temp1 temp2\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly \r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_OUT_OF_RESOURCES    There was insufficient space on the destination \r\n"
"                            to create the requested directory.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security \r\n"
"                            violation.\r\n"
"  SHELL_WRITE_PROTECTED     An attempt was made to create a directory when the\r\n"
"                            target media was write-protected.\r\n"

#string STR_GET_HELP_MV           #language en-US ""
".TH mv 0 "Moves files."\r\n"
".SH NAME\r\n"
"Moves one or more files to a destination within or between file systems.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"MV src [src...] [dst]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  src - Specifies a source file/directory name (wildcards are permitted).\r\n"
"  dst - Specifies a destination file/directory name (wildcards are permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command moves one or more files to a destination within or between\r\n"
"     file systems.\r\n"
"  2. If the destination is an existing directory, the sources are moved\r\n"
"     into that directory. You cannot move the sources to a non-existing\r\n"
"     directory.\r\n"
"  3. If a destination is not specified, the current directory is assumed to be\r\n"
"     the destination. If there is more than one argument on the command line,\r\n"
"     the last one is assumed to be the destination.\r\n"
"  4. Attempting to move a read-only file/directory results in an error.\r\n"
"     Moving a directory that contains read-only files is allowed.\r\n"
"  5. You cannot move a directory into itself or its subdirectories.\r\n"
"  6. You cannot move a directory if the current working directory is itself or\r\n"
"     its subdirectories.\r\n"
"  7. If an error occurs, the remaining files or directories are still be\r\n"
"     moved.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To rename a file:\r\n"
"    fs0:\> mv IsaBus.efi Bus.efi\r\n"
" \r\n"
"  * To move a directory to the current directory:\r\n"
"    fs0:\> mkdir Test1\Temp\r\n"
"    fs0:\> mv Test1\Temp\r\n"
" \r\n"
"  * To rename a directory:\r\n"
"    fs0:\> mv efi efi1.1\r\n"
" \r\n"
"  * To move multiple directories at a time:\r\n"
"    fs0:\> mv Test1 Test2 Test\r\n"
" \r\n"
"  * To attempt moving a read-only directory, which results in a failure:\r\n"
"    fs0:\Test> attrib +r Temp1\r\n"
"    DA  R fs0:\Test\Temp1\r\n"
"    fs0:\Test> mv Temp1 Temp2\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_NOT_FOUND           The source file was not able to be found.\r\n"
"  SHELL_OUT_OF_RESOURCES    There was insufficient free space to move the\r\n"
"                            requested file to its destination.\r\n"
"  SHELL_WRITE_PROTECTED     An attempt was made to create a file on media that\r\n"
"                            was write-protected.\r\n"

#string STR_GET_HELP_PARSE        #language en-US ""
".TH parse 0 "Parses standard format output files."\r\n"
".SH NAME\r\n"
"Retrieves a value from a standard format output file.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"PARSE filename tablename column [-i <Instance>] [-s <Instance>]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  filename      - Specifies a source file name.\r\n"
"  tablename     - Specifies the name of the table to be parsed.\r\n"
"  column        - Specifies the one-based column index to use to determine which value\r\n"
"                  from a particular record to parse.\r\n"
"  -i <Instance> - Specifies an instance number to use to start parsing the ShellCommand table,\r\n"
"                  and then the specified tablename. If not specified, all instances are returned.\r\n"
"  -s <Instance> - Specifies an instance number to use to start parsing the ShellCommand\r\n"
"                  table. If not present, then 1 is assumed.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command enables you to parse data from a file that has been output\r\n"
"     using the -sfo parameter.\r\n"
"  2. Since the standard formatted output has a well known means of parsing,\r\n"
"     this command is intended to provide an easy way of enabling\r\n"
"     scripts to consume retrieved data from such constructed output files, and\r\n"
"     use it in the logic of scripts written for the UEFI shell.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * The following data is contained in a temporary file (temp.txt):\r\n"
"    ShellCommand,"ls"\r\n"
"    VolumeInfo,"MikesVolume","400000000","FALSE","32000000","16000000"\r\n"
"    FileInfo,"FS0:\efi\\boot\winloader.efi","45670","45900","arsh","08:30:12","01.08.2013","00:00:00","01.08.2013","08:30:12","01.08.2013"\r\n"
"    FileInfo,"FS0:\efi\\boot\mikesfile.txt","1250","1280","a","08:30:12","01.08.2013","00:00:00","01.08.2013","08:30:12","01.08.2013"\r\n"
"    FileInfo,"FS0:\efi\\boot\\readme.txt","795","900","a","08:30:12","01.08.2013","00:00:00","01.08.2013","08:30:12","01.08.2013"\r\n"
" \r\n"
"  * To display VolumeInfo column 2 in temp.txt:\r\n"
"    fs0:\> parse temp.txt VolumeInfo 2\r\n"
"    MikesVolume\r\n"
" \r\n"
"  * To display FileInfo column 3 in temp.txt, starting with instance 3:\r\n"
"    fs0:\> parse temp.txt FileInfo 3 -i 3\r\n"
"    795\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_NOT_FOUND           The source file was not able to be found.\r\n"

#string STR_GET_HELP_RESET        #language en-US ""
".TH reset 0 "Reset the system."\r\n"
".SH NAME\r\n"
"Resets the system.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"RESET [-w [string]]\r\n"
"RESET [-s [string]]\r\n"
"RESET [-c [string]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -s     - Performs a shutdown.\r\n"
"  -w     - Performs a warm boot.\r\n"
"  -c     - Performs a cold boot.\r\n"
"  string - Describes a reason for the reset.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command resets the system.\r\n"
"  2. The default is to perform a cold reset unless the -w parameter is\r\n"
"     specified.\r\n"
"  3. If a reset string is specified, it is passed into the Reset() \r\n"
"     function, and the system records the reason for the system reset.\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed in parameters was incorrectly \r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_RM           #language en-US ""
".TH rm 0 "Deletes one or more files or directories."\r\n"
".SH NAME\r\n"
"Deletes one or more files or directories.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"RM [-q] file/directory [file/directory ...]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -q        - Specifies quiet mode. Does not prompt for a confirmation.\r\n"
"  file      - Specifies a file name (wildcards are permitted).\r\n"
"  directory - Specifies a directory name (wildcards are permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command deletes one or more files or directories.\r\n"
"  2. If the target is a directory, it deletes the directory, including all\r\n"
"     its subdirectories.\r\n"
"  3. Redirecting a file whose parent directory (or the file\r\n"
"     itself) is being deleted is not allowed.\r\n"
"  4. Removing a read-only file/directory results in a failure.\r\n"
"  5. Removing a directory containing read-only file(s) results in\r\n"
"     a failure. If an error occurs, the command exits immediately and stops\r\n"
"     removing files/directories.\r\n"
"  6. You cannot remove a directory when the current directory is itself or its\r\n"
"     subdirectory. If a file contains wildcards, you are not prompted for\r\n"
"     confirmation.\r\n"
"  7. The root directory cannot be removed.\r\n"
"  8. The current directory or its ancestor directories cannot be removed.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To remove multiple directories at a time:\r\n"
"    fs0:\> rm Test\Temp1 Temp2\r\n"
" \r\n"
"  * To remove multiple directories with wildcards:\r\n"
"    fs0:\> rm Test\Temp*\r\n"
" \r\n"
"  * To attempt removing a directory that contains a read-only file,\r\n"
"    which results in a failure:\r\n"
"    fs0:\> attrib +r Test\Temp1\readme.txt\r\n"
"    A R fs0:\Test\Temp1\readme.txt\r\n"
"    fs0:\> rm Test\Temp1\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_NOT_FOUND           The source file was not able to be found.\r\n"
"  SHELL_WRITE_PROTECTED     The target was write protected.\r\n"

#string STR_GET_HELP_SET          #language en-US ""
".TH set 0 "Displays or modifies UEFI Shell environment variables."\r\n"
".SH NAME\r\n"
"Displays or modifies UEFI Shell environment variables.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"SET [-v] [sname [value]]\r\n"
"SET [-d <sname>]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -d    - Deletes the environment variable.\r\n"
"  -v    - Displays or modifies a volatile variable.\r\n"
"  sname - Specifies an environment variable name.\r\n"
"  value - Specifies an environment variable value.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command is used to maintain the UEFI Shell environment variables.\r\n"
"     This command can do the following:\r\n"
"       - Display environment variables.\r\n"
"       - Create new environment variables.\r\n"
"       - Change the value of existing environment variables.\r\n"
"       - Delete environment variables.\r\n"
"  2. This command sets an environment variable to a specified \r\n"
"     value. You can use it to create a new environment\r\n"
"     variable or to modify an existing environment variable.\r\n"
"  3. If used without any parameters, all the environment variables\r\n"
"     are displayed.\r\n"
"  4. If used with the -d option, the environment variable that\r\n"
"     is specified by sname is deleted.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To add an environment variable:\r\n"
"    Shell> set DiagnosticPath fs0:\efi\diag;fs1:\efi\diag\r\n"
" \r\n"
"  * To display environment variables:\r\n"
"    Shell> set\r\n"
" \r\n"
"  * To delete an environment variable:\r\n"
"    Shell> set -d diagnosticpath\r\n"
" \r\n"
"  * To change an environment variable:\r\n"
"    fs0:\> set src efi\r\n"
"    fs0:\> set src efi1.1\r\n"
" \r\n"
"  * To append an environment variable:\r\n"
"    Shell> set path %path%;fs0:\efi\Tools;fs0:\efi\boot;fs0:\\r\n"
" \r\n"
"  * To set a volatile variable that will disappear at the next boot:\r\n"
"    Shell> set -v EFI_SOURCE c:\project\EFI1.1\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_OUT_OF_RESOURCES    A request to set a variable in a non-volatile \r\n"
"                            fashion could not be completed. The resulting \r\n"
"                            non-volatile request has been converted into a \r\n"
"                            volatile request.\r\n"

#string STR_GET_HELP_DATE         #language en-US ""
".TH date 0 "Displays and sets the current date for the system."\r\n"
".SH NAME\r\n"
"Displays and sets the current date for the system.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DATE [mm/dd/[yy]yy][-sfo]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -sfo    - Displays information in Standard-Format Output.\r\n"
"  mm      - Specifies the month of the date to be set. (1-12)\r\n"
"  dd      - Specifies the day of the date to be set (1-31)\r\n"
"  yy/yyyy - Specifies the year of the date to be set. If only two digits,\r\n"
"            then enter 9x = 199x. Otherwise enter 20xx.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays and/or sets the current date for the system.\r\n"
"     If no parameters are used, it shows the current date. If a valid month,\r\n"
"     day, and year are specified, the system's date is updated.\r\n"
"     The following rules apply:\r\n"
"       - Except for numeric characters and /, all other characters in the\r\n"
"         argument are invalid.\r\n"
"       - The Shell reports an error if the number is in the wrong\r\n"
"         month/date/year range.\r\n"
"       - A space before or after the numeric character is not allowed. Inserting\r\n"
"         a space into the number is invalid.\r\n"
"       - Repeated zeros are allowed before the number. For example:\r\n"
"           Shell > date 0000008/000004/000097\r\n"
"           Shell > date\r\n"
"           08/04/2097\r\n"
"           Shell >\r\n"
"       - The year range must be greater than or equal to 1998.\r\n"
"       - Two numeric characters indicate the year. Numbers below 98 are\r\n"
"         regarded as 20xx, and numbers equal to or above 98 are regarded as\r\n"
"         19xx. 00 means 2000. For example:\r\n"
"           Shell > date 8/4/97\r\n"
"           Shell > date\r\n"
"           08/04/2097\r\n"
"           Shell >\r\n"
"           Shell > date 8/4/98\r\n"
"           Shell > date\r\n"
"           08/04/1998\r\n"
"           Shell >\r\n"
"  2. The range of valid years is from 1998-2099.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the current date in the system:\r\n"
"    fs0:\> date\r\n"
" \r\n"
"  * To set the date with long year format:\r\n"
"    fs0:\> date 01/01/2050\r\n"
" \r\n"
"  * To set the date with short year format:\r\n"
"    fs0:\> date 06/18/01\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_DEVICE_ERROR        There was a hardware error preventing the\r\n"
"                            completion of this command.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_TIME         #language en-US ""
".TH time 0 "Displays or sets the time for the system."\r\n"
".SH NAME\r\n"
"Displays or sets the current time for the system.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"TIME [hh:mm[:ss]] [-tz tz] [-d dl]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -d  - Sets or displays a daylight savings time value.\r\n"
"  -tz - Specifies a time zone adjustment, measured in minutes offset from UTC. Valid values\r\n"
"        are between -1440 and 1440 or 2047. If not present or set to 2047,\r\n"
"        time is interpreted as local time.\r\n"
"  hh  - Specifies a new hour (0-23) (required).\r\n"
"  mm  - Specifies a new minute (0-59) (required).\r\n"
"  ss  - Specifies a new second (0-59). If not specified, zero is used.\r\n"
"  dl  - Specifies a daylight saving time value to set.\r\n"
"          0 : Time is not affected.\r\n"
"          1 : Time is affected, and has not been adjusted for daylight\r\n"
"              savings.\r\n"
"          3 : Time is affected, and has been adjusted for daylight savings.\r\n"
"        All other values are invalid. If no value follows -d, the\r\n"
"        current daylight savings time is displayed.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays or sets the current time for the system.\r\n"
"     If no parameters are used, it shows the current time. If valid hours, \r\n"
"     minutes, and seconds are provided, the system time is\r\n"
"     updated. Note the following rules:\r\n"
"       - Except for numeric characters and the : character, all other\r\n"
"         characters in the argument are invalid.\r\n"
"       - The Shell reports an error if the number is in the wrong \r\n"
"         hour/minute/second range.\r\n"
"       - Spaces before or after the numeric character and spaces inserted into\r\n"
"         the number are not allowed.\r\n"
"       - Repeated zeros are allowed before the number. For example:\r\n"
"           Shell> time 00000017:000004:0000\r\n"
"           Shell> time\r\n"
"           17:04:00 (UTC+08:00)\r\n"
"  2. The seconds parameter is optional. If none is specified, it is\r\n"
"     set to zero.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display current system time:\r\n"
"    fs0:\> time\r\n"
" \r\n"
"  * To set the system time:\r\n"
"    fs0:\> time 9:51:30\r\n"
" \r\n"
"  * To display the system time, including daylight savings time:\r\n"
"    fs0:\> time -d\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_DEVICE_ERROR        There was a hardware error preventing the\r\n"
"                            completion of this command\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_TIMEZONE     #language en-US ""
".TH timezone 0 "Displays or sets time zone information."\r\n"
".SH NAME\r\n"
"Displays or sets time zone information.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"TIMEZONE [-s hh:mm | -l] [-b] [-f]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -s - Sets the time zone associated with hh:mm offset from UTC.\r\n"
"  -l - Displays a list of all time zones.\r\n"
"  -b - Displays one screen at a time.\r\n"
"  -f - Displays full information for the specified time zone.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays and sets the current time zone for the system.\r\n"
"  2. If no parameters are used, it shows the current time zone.\r\n"
"  3. If a valid hh:mm parameter is provided, the time zone\r\n"
"     information is updated.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display all available time zones:\r\n"
"    Shell> timezone -l\r\n"
" \r\n"
"  * To set the time zone:\r\n"
"    Shell> timezone -s -7:00\r\n"
" \r\n"
"  * To display detailed information for the current time zone:\r\n"
"    Shell> timezone -f\r\n"

#string STR_GET_HELP_LS           #language en-US ""
".TH ls 0 "Lists the contents of a directory or file information."\r\n"
".SH NAME\r\n"
"Lists the contents of a directory or file information.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"LS [-r] [-a[attrib]][-sfo][file]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -r     - Displays recursively (including subdirectories).\r\n"
"  -a     - Displays files with a specified attribute. If \r\n"
"           attribute is not specified, all files are listed. If -a is not\r\n"
"           specified, all non-system and non-hidden files are listed.\r\n"
"  -sfo   - Displays information in Standard-Format Output.\r\n"
"  attrib - Specifies a file attribute list value:\r\n"
"             a - Archive\r\n"
"             s - System\r\n"
"             h - Hidden\r\n"
"             r - Read-only\r\n"
"             d - Directory\r\n"
"  file   - Specifies a name of a file or directory (wildcards are permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command lists directory contents or file information. If no file\r\n"
"     name or directory name is specified, the current working directory\r\n"
"     is assumed.\r\n"
"  2. The contents of a directory are listed if all of the following are true:\r\n"
"       - If option -r is not specified.\r\n"
"       - If no wildcard characters are specified in the file parameter.\r\n"
"       - If the file specified represents an existing directory.\r\n"
"  3. In all other cases, the command functions as follows:\r\n"
"       - All files/directories that match the specified name are displayed.\r\n"
"       - The -r flag determines whether a recursive search is performed.\r\n"
"       - The option flag -a[attrib] only displays those\r\n"
"         files with the attributes that are specified.\r\n"
"       - If more than one attribute is specified, only the files that have all\r\n"
"         those attributes are listed.\r\n"
"       - If -a is followed by nothing, then all files/directories are\r\n"
"         displayed, regardless of their attributes.\r\n"
"       - If -a itself is not specified, then all files except system and\r\n"
"         hidden files are displayed.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To hide files by adding the hidden or system attribute to them:\r\n"
"    fs0:\> attrib +s +h *.efi\r\n"
" \r\n"
"  * To display all, except the files/directories with 'h' or 's' attribute:\r\n"
"    fs0:\> ls\r\n"
" \r\n"
"  * To display files with all attributes in the current directory:\r\n"
"    fs0:\> ls -a\r\n"
" \r\n"
"  * To display files with read-only attributes in the current directory:\r\n"
"    fs0:\> ls -ar\r\n"
" \r\n"
"  * To display the files with attribute of 's':\r\n"
"    fs0:\> ls -as isabus.efi\r\n"
" \r\n"
"  * To display all in fs0:\efi directory recursively:\r\n"
"    fs0:\> ls -r -a efi\r\n"
" \r\n"
"  * To display files with a specified type in the current directory: \r\n"
"    recursively:\r\n"
"    fs0:\> ls -r -a *.efi -b\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_NOT_FOUND           The requested file or directory was not found.\r\n"

#string STR_GET_HELP_LOAD         #language en-US ""
".TH load 0 "Loads a UEFI driver into memory."\r\n"
".SH NAME\r\n"
"Loads a UEFI driver into memory.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"LOAD [-nc] file [file...]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -nc  - Loads the driver, but does not connect the driver.\r\n"
"  File - Specifies a file that contains the image of the UEFI driver (wildcards are\r\n"
"         permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command loads a driver into memory. It can load multiple files at\r\n"
"     one time. The file name supports wildcards.\r\n"
"  2. If the -nc flag is not specified, this command attempts to connect the\r\n"
"     driver to a proper device. It might also cause previously loaded drivers\r\n"
"     to be connected to their corresponding devices.\r\n"
"  3. Use the 'UNLOAD' command to unload a driver.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To load a driver:\r\n"
"    fs0:\> load Isabus.efi\r\n"
" \r\n"
"  * To load multiple drivers:\r\n"
"    fs0:\> load Isabus.efi IsaSerial.efi\r\n"
" \r\n"
"  * To load multiple drivers using file name wildcards:\r\n"
"    fs0:\> load Isa*.efi\r\n"
" \r\n"
"  * To load a driver without connecting it to a device:\r\n"
"    fs0:\> load -nc IsaBus.efi\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed-in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_NOT_FOUND            The requested file was not found.\r\n"

#string STR_GET_HELP_VOL         #language en-US ""
".TH vol 0 "Displays or modifies information about a disk volume."\r\n"
".SH NAME\r\n"
"Displays or modifies information about a disk volume.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"VOL [fs] [-n <VolumeLabel>]\r\n"
"VOL [fs] [-d]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -n          - Displays or modifies a new volume label.\r\n"
"  -d          - Displays or modifies an empty volume label.\r\n"
"  fs          - Specifies the name of the file system.\r\n"
"  VolumeLabel - Specifies a volume label.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. The following characters cannot be used in a volume label:\r\n"
"     % ^ * + = [ ] | : ; \" < > ? / . \r\n"
"  2. No spaces are allowed in a volume label.\r\n"
"  3. This command displays the volume information for the specified file\r\n"
"     system. If fs is not specified, the current file system is used.\r\n"
"  4. If -n is specified, the volume label for fs is set to\r\n"
"     VolumeLabel.\r\n"
"  5. The maximum length for volume label is 11 characters.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the volume of the current file system:\r\n"
"    fs0:\> vol\r\n"
" \r\n"
"  * To change the label of fs0:\r\n"
"    Shell> vol fs0 -n help_test\r\n"
" \r\n"
"  * To delete the volume label of fs0:\r\n"
"    fs0:\> vol fs0 -d\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed-in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_NOT_FOUND            The target file-system was not found.\r\n"

