forked from OSchip/llvm-project
[llvm-rc] Fix handling of the /X option to match its documentation and rc.exe
This matches how it's documented in the option listing. Differential Revision: https://reviews.llvm.org/D100754
This commit is contained in:
parent
cb1128134a
commit
73cda4d183
|
@ -13,6 +13,16 @@
|
|||
; RUN: llvm-rc /FO %t.nested-include.res /I %p/Inputs/nested -- %p/Inputs/deep-include.rc
|
||||
; RUN: llvm-readobj %t.nested-include.res | FileCheck --check-prefix=FOUND %s
|
||||
|
||||
; The include dir can be specified via the INCLUDE env var too.
|
||||
; RUN: rm -f %t.nested-include.res
|
||||
; RUN: env INCLUDE=%p/Inputs/nested llvm-rc /FO %t.nested-include.res -- %p/Inputs/deep-include.rc
|
||||
; RUN: llvm-readobj %t.nested-include.res | FileCheck --check-prefix=FOUND %s
|
||||
|
||||
; Specifying the /X option should make it ignore the INCLUDE variable.
|
||||
; RUN: rm -f %t.nested-include.res
|
||||
; RUN: not env INCLUDE=%p/Inputs/nested llvm-rc /X /FO %t.nested-include.res -- %p/Inputs/deep-include.rc 2>&1 \
|
||||
; RUN: | FileCheck --check-prefix=MISSING %s
|
||||
|
||||
; Otherwise, it should not find the bitmap.
|
||||
; RUN: rm -f %t.nested-include.res
|
||||
; RUN: not llvm-rc /FO %t.nested-include.res -- %p/Inputs/deep-include.rc 2>&1 \
|
||||
|
|
|
@ -1553,10 +1553,11 @@ ResourceFileWriter::loadFile(StringRef File) const {
|
|||
Path, /*IsText=*/false, /*RequiresNullTerminator=*/false));
|
||||
}
|
||||
|
||||
if (auto Result =
|
||||
llvm::sys::Process::FindInEnvPath("INCLUDE", File, Params.NoInclude))
|
||||
return errorOrToExpected(MemoryBuffer::getFile(
|
||||
*Result, /*IsText=*/false, /*RequiresNullTerminator=*/false));
|
||||
if (!Params.NoInclude) {
|
||||
if (auto Result = llvm::sys::Process::FindInEnvPath("INCLUDE", File))
|
||||
return errorOrToExpected(MemoryBuffer::getFile(
|
||||
*Result, /*IsText=*/false, /*RequiresNullTerminator=*/false));
|
||||
}
|
||||
|
||||
return make_error<StringError>("error : file not found : " + Twine(File),
|
||||
inconvertibleErrorCode());
|
||||
|
|
|
@ -35,7 +35,7 @@ enum CodePage {
|
|||
|
||||
struct WriterParams {
|
||||
std::vector<std::string> Include; // Additional folders to search for files.
|
||||
std::vector<std::string> NoInclude; // Folders to exclude from file search.
|
||||
bool NoInclude; // Ignore the INCLUDE variable.
|
||||
StringRef InputFilePath; // The full path of the input file.
|
||||
int CodePage = CpAcp; // The codepage for interpreting characters.
|
||||
};
|
||||
|
|
|
@ -142,7 +142,7 @@ int main(int Argc, const char **Argv) {
|
|||
llvm::sys::fs::make_absolute(InputFile);
|
||||
Params.InputFilePath = InputFile;
|
||||
Params.Include = InputArgs.getAllArgValues(OPT_includepath);
|
||||
Params.NoInclude = InputArgs.getAllArgValues(OPT_noinclude);
|
||||
Params.NoInclude = InputArgs.hasArg(OPT_noinclude);
|
||||
|
||||
if (InputArgs.hasArg(OPT_codepage)) {
|
||||
if (InputArgs.getLastArgValue(OPT_codepage)
|
||||
|
|
Loading…
Reference in New Issue