blob: 05582da3ca8dcb76694428d315f2fb0d84ed3575 [file] [log] [blame]
Vishal Bhoj82c80712015-12-15 21:13:33 +05301/** @file
2 Main file for NULL named library for level 2 shell command functions.
3
4 these functions are:
5 attrib, cd, cp, date*, time*, rm, reset,
6 load, ls, map, mkdir, mv, parse, set, timezone*
7
8
9 * functions are non-interactive only
10
11
12 Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
13 This program and the accompanying materials
14 are licensed and made available under the terms and conditions of the BSD License
15 which accompanies this distribution. The full text of the license may be found at
16 http://opensource.org/licenses/bsd-license.php
17
18 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
19 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
20
21**/
22
23#ifndef _UEFI_SHELL_LEVEL2_COMMANDS_LIB_H_
24#define _UEFI_SHELL_LEVEL2_COMMANDS_LIB_H_
25
26#include <Uefi.h>
27#include <ShellBase.h>
28
29#include <Guid/ShellLibHiiGuid.h>
30
31#include <Protocol/EfiShell.h>
32#include <Protocol/EfiShellParameters.h>
33#include <Protocol/DevicePath.h>
34#include <Protocol/LoadedImage.h>
35#include <Protocol/UnicodeCollation.h>
36
37#include <Library/BaseLib.h>
38#include <Library/BaseMemoryLib.h>
39#include <Library/DebugLib.h>
40#include <Library/MemoryAllocationLib.h>
41#include <Library/PcdLib.h>
42#include <Library/ShellCommandLib.h>
43#include <Library/ShellLib.h>
44#include <Library/UefiLib.h>
45#include <Library/UefiRuntimeServicesTableLib.h>
46#include <Library/UefiBootServicesTableLib.h>
47#include <Library/HiiLib.h>
48#include <Library/SortLib.h>
49#include <Library/FileHandleLib.h>
50
51extern CONST CHAR16 mFileName[];
52extern EFI_HANDLE gShellLevel2HiiHandle;
53
54/**
55 Function for 'attrib' command.
56
57 @param[in] ImageHandle Handle to the Image (NULL if Internal).
58 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
59**/
60SHELL_STATUS
61EFIAPI
62ShellCommandRunAttrib (
63 IN EFI_HANDLE ImageHandle,
64 IN EFI_SYSTEM_TABLE *SystemTable
65 );
66
67/**
68 Function for 'date' command.
69
70 @param[in] ImageHandle Handle to the Image (NULL if Internal).
71 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
72**/
73SHELL_STATUS
74EFIAPI
75ShellCommandRunDate (
76 IN EFI_HANDLE ImageHandle,
77 IN EFI_SYSTEM_TABLE *SystemTable
78 );
79
80/**
81 Function for 'time' command.
82
83 @param[in] ImageHandle Handle to the Image (NULL if Internal).
84 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
85**/
86SHELL_STATUS
87EFIAPI
88ShellCommandRunTime (
89 IN EFI_HANDLE ImageHandle,
90 IN EFI_SYSTEM_TABLE *SystemTable
91 );
92
93/**
94 Function for 'load' command.
95
96 @param[in] ImageHandle Handle to the Image (NULL if Internal).
97 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
98**/
99SHELL_STATUS
100EFIAPI
101ShellCommandRunLoad (
102 IN EFI_HANDLE ImageHandle,
103 IN EFI_SYSTEM_TABLE *SystemTable
104 );
105
106/**
107 Function for 'ls' command.
108
109 @param[in] ImageHandle Handle to the Image (NULL if Internal).
110 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
111**/
112SHELL_STATUS
113EFIAPI
114ShellCommandRunLs (
115 IN EFI_HANDLE ImageHandle,
116 IN EFI_SYSTEM_TABLE *SystemTable
117 );
118
119/**
120 Function for 'map' command.
121
122 @param[in] ImageHandle Handle to the Image (NULL if Internal).
123 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
124**/
125SHELL_STATUS
126EFIAPI
127ShellCommandRunMap (
128 IN EFI_HANDLE ImageHandle,
129 IN EFI_SYSTEM_TABLE *SystemTable
130 );
131
132/**
133 Function for 'reset' command.
134
135 @param[in] ImageHandle Handle to the Image (NULL if Internal).
136 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
137**/
138SHELL_STATUS
139EFIAPI
140ShellCommandRunReset (
141 IN EFI_HANDLE ImageHandle,
142 IN EFI_SYSTEM_TABLE *SystemTable
143 );
144
145/**
146 Function for 'timezone' command.
147
148 @param[in] ImageHandle Handle to the Image (NULL if Internal).
149 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
150**/
151SHELL_STATUS
152EFIAPI
153ShellCommandRunTimeZone (
154 IN EFI_HANDLE ImageHandle,
155 IN EFI_SYSTEM_TABLE *SystemTable
156 );
157
158/**
159 Function for 'set' command.
160
161 @param[in] ImageHandle Handle to the Image (NULL if Internal).
162 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
163**/
164SHELL_STATUS
165EFIAPI
166ShellCommandRunSet (
167 IN EFI_HANDLE ImageHandle,
168 IN EFI_SYSTEM_TABLE *SystemTable
169 );
170
171/**
172 Function for 'mkdir' command.
173
174 @param[in] ImageHandle Handle to the Image (NULL if Internal).
175 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
176**/
177SHELL_STATUS
178EFIAPI
179ShellCommandRunMkDir (
180 IN EFI_HANDLE ImageHandle,
181 IN EFI_SYSTEM_TABLE *SystemTable
182 );
183
184/**
185 Function for 'cd' command.
186
187 @param[in] ImageHandle Handle to the Image (NULL if Internal).
188 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
189**/
190SHELL_STATUS
191EFIAPI
192ShellCommandRunCd (
193 IN EFI_HANDLE ImageHandle,
194 IN EFI_SYSTEM_TABLE *SystemTable
195 );
196
197/**
198 Function for 'cp' command.
199
200 @param[in] ImageHandle Handle to the Image (NULL if Internal).
201 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
202**/
203SHELL_STATUS
204EFIAPI
205ShellCommandRunCp (
206 IN EFI_HANDLE ImageHandle,
207 IN EFI_SYSTEM_TABLE *SystemTable
208 );
209
210/**
211 Function for 'parse' command.
212
213 @param[in] ImageHandle Handle to the Image (NULL if Internal).
214 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
215**/
216SHELL_STATUS
217EFIAPI
218ShellCommandRunParse (
219 IN EFI_HANDLE ImageHandle,
220 IN EFI_SYSTEM_TABLE *SystemTable
221 );
222
223/**
224 Function for 'rm' command.
225
226 @param[in] ImageHandle Handle to the Image (NULL if Internal).
227 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
228**/
229SHELL_STATUS
230EFIAPI
231ShellCommandRunRm (
232 IN EFI_HANDLE ImageHandle,
233 IN EFI_SYSTEM_TABLE *SystemTable
234 );
235
236/**
237 Function for 'mv' command.
238
239 @param[in] ImageHandle Handle to the Image (NULL if Internal).
240 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
241**/
242SHELL_STATUS
243EFIAPI
244ShellCommandRunMv (
245 IN EFI_HANDLE ImageHandle,
246 IN EFI_SYSTEM_TABLE *SystemTable
247 );
248
249/**
250 returns a fully qualified directory (contains a map drive at the begining)
251 path from a unknown directory path.
252
253 If Path is already fully qualified this will return a duplicat otherwise this
254 will use get the current directory and use that to build the fully qualified
255 version.
256
257 if the return value is not NULL it must be caller freed.
258
259 @param[in] Path The unknown Path Value
260
261 @retval NULL A memory allocation failed
262 @retval NULL a fully qualified path could not be discovered.
263 @retval other pointer to a fuly qualified path.
264**/
265CHAR16*
266EFIAPI
267GetFullyQualifiedPath(
268 IN CONST CHAR16* Path
269 );
270
271/**
272 Function to verify all intermediate directories in the path.
273
274 @param[in] Path The pointer to the path to fix.
275
276 @retval EFI_SUCCESS The operation was successful.
277**/
278EFI_STATUS
279EFIAPI
280VerifyIntermediateDirectories (
281 IN CONST CHAR16 *Path
282 );
283
284/**
285 CaseInsensitive length limited string comparison.
286
287 @param[in] Source Pointer to first string.
288 @param[in] Target Pointer to second string.
289 @param[in] Count Number of characters to compare.
290
291 @retval 0 The strings are the same.
292 @return non-zero if the strings are different.
293**/
294CONST CHAR16*
295EFIAPI
296StrniCmp(
297 IN CONST CHAR16 *Source,
298 IN CONST CHAR16 *Target,
299 IN CONST UINTN Count
300 );
301
302/**
303 Cleans off all the quotes in the string.
304
305 @param[in] OriginalString pointer to the string to be cleaned.
306 @param[out] CleanString The new string with all quotes removed.
307 Memory allocated in the function and free
308 by caller.
309
310 @retval EFI_SUCCESS The operation was successful.
311**/
312EFI_STATUS
313EFIAPI
314ShellLevel2StripQuotes (
315 IN CONST CHAR16 *OriginalString,
316 OUT CHAR16 **CleanString
317 );
318
319/**
320 Function for 'Vol' command.
321
322 @param[in] ImageHandle Handle to the Image (NULL if Internal).
323 @param[in] SystemTable Pointer to the System Table (NULL if Internal).
324**/
325SHELL_STATUS
326EFIAPI
327ShellCommandRunVol (
328 IN EFI_HANDLE ImageHandle,
329 IN EFI_SYSTEM_TABLE *SystemTable
330 );
331
332/**
333 Function to Copy one file to another location
334
335 If the destination exists the user will be prompted and the result put into *resp
336
337 @param[in] Source pointer to source file name
338 @param[in] Dest pointer to destination file name
339 @param[out] Resp pointer to response from question. Pass back on looped calling
340 @param[in] SilentMode whether to run in quiet mode or not
341
342 @retval SHELL_SUCCESS The source file was copied to the destination
343**/
344SHELL_STATUS
345EFIAPI
346CopySingleFile(
347 IN CONST CHAR16 *Source,
348 IN CONST CHAR16 *Dest,
349 OUT VOID **Resp,
350 IN BOOLEAN SilentMode
351 );
352
353/**
354 Delete a node and all nodes under it (including sub directories).
355
356 @param[in] Node The node to start deleting with.
357 @param[in] Quiet TRUE to print no messages.
358
359 @retval SHELL_SUCCESS The operation was successful.
360 @retval SHELL_ACCESS_DENIED A file was read only.
361 @retval SHELL_ABORTED The abort message was received.
362 @retval SHELL_DEVICE_ERROR A device error occured reading this Node.
363**/
364SHELL_STATUS
365EFIAPI
366CascadeDelete(
367 IN EFI_SHELL_FILE_INFO *Node,
368 IN CONST BOOLEAN Quiet
369 );
370
371#endif
372