diff options
Diffstat (limited to 'BaseTools/Source/Python/Common')
-rw-r--r-- | BaseTools/Source/Python/Common/BuildToolError.py | 2 | ||||
-rw-r--r-- | BaseTools/Source/Python/Common/Misc.py | 14 |
2 files changed, 13 insertions, 3 deletions
diff --git a/BaseTools/Source/Python/Common/BuildToolError.py b/BaseTools/Source/Python/Common/BuildToolError.py index b5dc3712e0..4d4e07bd70 100644 --- a/BaseTools/Source/Python/Common/BuildToolError.py +++ b/BaseTools/Source/Python/Common/BuildToolError.py @@ -68,6 +68,8 @@ IO_UNKNOWN_ERROR = 0x6FFF COMMAND_FAILURE = 0x7000 +PERMISSION_FAILURE = 0x8000 + CODE_ERROR = 0xC0DE AUTOGEN_ERROR = 0xF000 diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index 7498d9e1ee..0540636988 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -252,7 +252,15 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True): except: EdkLogger.error(None, FILE_OPEN_FAILURE, ExtraData=File) - CreateDirectory(os.path.dirname(File)) + DirName = os.path.dirname(File) + if not CreateDirectory(DirName): + EdkLogger.error(None, FILE_CREATE_FAILURE, "Could not create directory %s" % DirName) + else: + if DirName == '': + DirName = os.getcwd() + if not os.access(DirName, os.W_OK): + EdkLogger.error(None, PERMISSION_FAILURE, "Do not have write permission on directory %s" % DirName) + try: if GlobalData.gIsWindows: try: @@ -267,8 +275,8 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True): Fd = open(File, "wb") Fd.write(Content) Fd.close() - except: - EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData=File) + except IOError, X: + EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData='IOError %s'%X) return True |