// /**
//
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
// Copyright (c) 2009 - 2015, 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"

