1 /** @file
2 Header file for helper functions useful to operate file directories by parsing
3 file path.
4 
5 Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution.  The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10 
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 
14 **/
15 
16 #ifndef _EFI_OS_PATH_H
17 #define _EFI_OS_PATH_H
18 
19 #include <Common/UefiBaseTypes.h>
20 
21 //
22 // Functions declarations
23 //
24 
25 CHAR8*
26 OsPathDirName (
27   IN CHAR8    *FilePath
28   )
29 ;
30 /**
31 
32 Routine Description:
33 
34   This function returns the directory path which contains the particular path.
35   Some examples:
36     "a/b/c"  -> "a/b"
37     "a/b/c/" -> "a/b"
38     "a"      -> "."
39     "."      -> ".."
40     "/"      -> NULL
41 
42   This function does not check for the existence of the file.
43 
44   The caller must free the string returned.
45 
46 Arguments:
47 
48   FilePath     Path name of file to get the parent directory for.
49 
50 Returns:
51 
52   NULL if error
53 
54 **/
55 
56 
57 VOID
58 OsPathNormPathInPlace (
59   IN CHAR8    *Path
60   )
61 ;
62 /**
63 
64 Routine Description:
65 
66   This function returns the directory path which contains the particular path.
67   Some examples:
68     "a/b/../c" -> "a/c"
69     "a/b//c"   -> "a/b/c"
70     "a/./b"    -> "a/b"
71 
72   This function does not check for the existence of the file.
73 
74 Arguments:
75 
76   Path     Path name of file to normalize
77 
78 Returns:
79 
80   The string is altered in place.
81 
82 **/
83 
84 
85 CHAR8*
86 OsPathPeerFilePath (
87   IN CHAR8    *OldPath,
88   IN CHAR8    *Peer
89   )
90 ;
91 /**
92 
93 Routine Description:
94 
95   This function replaces the final portion of a path with an alternative
96   'peer' filename.  For example:
97     "a/b/../c", "peer" -> "a/b/../peer"
98     "a/b/", "peer"     -> "a/b/peer"
99     "/a", "peer"       -> "/peer"
100     "a", "peer"        -> "peer"
101 
102   This function does not check for the existence of the file.
103 
104 Arguments:
105 
106   OldPath     Path name of replace the final segment
107   Peer        The new path name to concatinate to become the peer path
108 
109 Returns:
110 
111   A CHAR8* string, which must be freed by the caller
112 
113 **/
114 
115 
116 BOOLEAN
117 OsPathExists (
118   IN CHAR8    *InputFileName
119   )
120 ;
121 /**
122 
123 Routine Description:
124 
125   Checks if a file exists
126 
127 Arguments:
128 
129   InputFileName     The name of the file to check for existence
130 
131 Returns:
132 
133   TRUE              The file exists
134   FALSE             The file does not exist
135 
136 **/
137 
138 
139 #endif
140