Diff below fixes p7zip (clang 6.0). OK?
Index: patches/patch-CPP_Windows_ErrorMsg_cpp =================================================================== RCS file: patches/patch-CPP_Windows_ErrorMsg_cpp diff -N patches/patch-CPP_Windows_ErrorMsg_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-CPP_Windows_ErrorMsg_cpp 7 Apr 2018 13:11:53 -0000 @@ -0,0 +1,30 @@ +$OpenBSD$ + +Index: CPP/Windows/ErrorMsg.cpp +--- CPP/Windows/ErrorMsg.cpp.orig ++++ CPP/Windows/ErrorMsg.cpp +@@ -14,15 +14,15 @@ UString MyFormatMessage(DWORD errorCode) + AString msg; + + switch(errorCode) { +- case ERROR_NO_MORE_FILES : txt = "No more files"; break ; +- case E_NOTIMPL : txt = "E_NOTIMPL"; break ; +- case E_NOINTERFACE : txt = "E_NOINTERFACE"; break ; +- case E_ABORT : txt = "E_ABORT"; break ; +- case E_FAIL : txt = "E_FAIL"; break ; +- case STG_E_INVALIDFUNCTION : txt = "STG_E_INVALIDFUNCTION"; break ; +- case E_OUTOFMEMORY : txt = "E_OUTOFMEMORY"; break ; +- case E_INVALIDARG : txt = "E_INVALIDARG"; break ; +- case ERROR_DIRECTORY : txt = "Error Directory"; break ; ++ case (DWORD)(ERROR_NO_MORE_FILES) : txt = "No more files"; break ; ++ case (DWORD)(E_NOTIMPL) : txt = "E_NOTIMPL"; break ; ++ case (DWORD)(E_NOINTERFACE) : txt = "E_NOINTERFACE"; break ; ++ case (DWORD)(E_ABORT) : txt = "E_ABORT"; break ; ++ case (DWORD)(E_FAIL) : txt = "E_FAIL"; break ; ++ case (DWORD)(STG_E_INVALIDFUNCTION) : txt = "STG_E_INVALIDFUNCTION"; break ; ++ case (DWORD)(E_OUTOFMEMORY) : txt = "E_OUTOFMEMORY"; break ; ++ case (DWORD)(E_INVALIDARG) : txt = "E_INVALIDARG"; break ; ++ case (DWORD)(ERROR_DIRECTORY) : txt = "Error Directory"; break ; + default: + txt = strerror(errorCode); + }