BaseTools:remove the redundant directories for '-f' with absolute path.

when the absolute path is given to '-f', it would create some redundant
empty directories.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18675 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Yonghong Zhu 2015-10-27 03:29:50 +00:00 committed by yzhu52
parent 7254d13470
commit 7919244076
1 changed files with 15 additions and 10 deletions

View File

@ -2,7 +2,7 @@
Split a file into two pieces at the request offset. Split a file into two pieces at the request offset.
Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved.<BR> Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available This program and the accompanying materials are licensed and made available
under the terms and conditions of the BSD License which accompanies this under the terms and conditions of the BSD License which accompanies this
distribution. The full text of the license may be found at distribution. The full text of the license may be found at
@ -58,7 +58,7 @@ Returns:
--*/ --*/
{ {
printf ("%s Version %d.%d %s\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION, __BUILD_VERSION); printf ("%s Version %d.%d %s\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION, __BUILD_VERSION);
printf ("Copyright (c) 1999-2014 Intel Corporation. All rights reserved.\n"); printf ("Copyright (c) 1999-2015 Intel Corporation. All rights reserved.\n");
printf ("\n SplitFile creates two Binary files either in the same directory as the current working\n"); printf ("\n SplitFile creates two Binary files either in the same directory as the current working\n");
printf (" directory or in the specified directory.\n"); printf (" directory or in the specified directory.\n");
} }
@ -176,20 +176,25 @@ CreateDir (
{ {
CHAR8* temp = *FullFileName; CHAR8* temp = *FullFileName;
CHAR8* start = temp; CHAR8* start = temp;
CHAR8 tempchar;
UINT64 index = 0; UINT64 index = 0;
for (;index < strlen(temp); ++index) { for (;index < strlen(temp); ++index) {
if (temp[index] == '\\' || temp[index] == '/') { if (temp[index] == '\\' || temp[index] == '/') {
temp[index] = 0; if (temp[index + 1] != '\0') {
if (chdir(start)) { tempchar = temp[index + 1];
if (mkdir(start, S_IRWXU | S_IRWXG | S_IRWXO) != 0) { temp[index + 1] = 0;
return EFI_ABORTED; if (chdir(start)) {
if (mkdir(start, S_IRWXU | S_IRWXG | S_IRWXO) != 0) {
return EFI_ABORTED;
}
chdir(start);
} }
chdir(start); start = temp + index + 1;
temp[index] = '/';
temp[index + 1] = tempchar;
}
} }
start = temp + index + 1;
temp[index] = '/';
}
} }
return EFI_SUCCESS; return EFI_SUCCESS;