mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 06:56:08 +00:00

This patch adds an IsText parameter to the following getBufferForFile, getBufferForFileImpl. We introduce a new virtual function openFileForReadBinary which defaults to openFileForRead except in RealFileSystem which uses the OF_None flag instead of OF_Text. The default is set to OF_Text instead of OF_None, this change in value does not affect any other platforms other than z/OS. Setting this parameter correctly is required to open files on z/OS in the correct encoding. The IsText parameter is based on the context of where we open files, for example, in the ASTReader, HeaderMap requires that files always be opened in binary even though they might be tagged as text.
110 lines
2.9 KiB
C
110 lines
2.9 KiB
C
// RUN: rm -rf %t
|
|
// RUN: mkdir -p %t/media && cp %S/Inputs/media/art.txt %t/media/
|
|
// RUN: chtag -r %t/media/art.txt
|
|
// RUN: %clang_cc1 -std=c23 %s -fsyntax-only --embed-dir=%t -verify
|
|
// expected-no-diagnostics
|
|
|
|
// REQUIRES: shell, system-zos
|
|
|
|
const char data[] = {
|
|
#embed <media/art.txt>
|
|
};
|
|
const char data2[] = {
|
|
#embed <media/art.txt>
|
|
, 0
|
|
};
|
|
const char data3[] = {
|
|
#embed <media/art.txt> suffix(, 0)
|
|
};
|
|
const char data4[] = {
|
|
#embed <media/art.txt> suffix(,)
|
|
0
|
|
};
|
|
static_assert(sizeof(data) == 274);
|
|
static_assert(' ' == data[0]);
|
|
static_assert('_' == data[11]);
|
|
static_assert('\n' == data[273]);
|
|
static_assert(sizeof(data2) == 275);
|
|
static_assert(' ' == data2[0]);
|
|
static_assert('_' == data2[11]);
|
|
static_assert('\n' == data2[273]);
|
|
static_assert('\0' == data2[274]);
|
|
static_assert(sizeof(data3) == 275);
|
|
static_assert(' ' == data3[0]);
|
|
static_assert('_' == data3[11]);
|
|
static_assert('\n' == data3[273]);
|
|
static_assert('\0' == data3[274]);
|
|
static_assert(sizeof(data4) == 275);
|
|
static_assert(' ' == data4[0]);
|
|
static_assert('_' == data4[11]);
|
|
static_assert('\n' == data4[273]);
|
|
static_assert('\0' == data4[274]);
|
|
|
|
const signed char data5[] = {
|
|
#embed <media/art.txt>
|
|
};
|
|
const signed char data6[] = {
|
|
#embed <media/art.txt>
|
|
, 0
|
|
};
|
|
const signed char data7[] = {
|
|
#embed <media/art.txt> suffix(, 0)
|
|
};
|
|
const signed char data8[] = {
|
|
#embed <media/art.txt> suffix(,)
|
|
0
|
|
};
|
|
static_assert(sizeof(data5) == 274);
|
|
static_assert(' ' == data5[0]);
|
|
static_assert('_' == data5[11]);
|
|
static_assert('\n' == data5[273]);
|
|
static_assert(sizeof(data6) == 275);
|
|
static_assert(' ' == data6[0]);
|
|
static_assert('_' == data6[11]);
|
|
static_assert('\n' == data6[273]);
|
|
static_assert('\0' == data6[274]);
|
|
static_assert(sizeof(data7) == 275);
|
|
static_assert(' ' == data7[0]);
|
|
static_assert('_' == data7[11]);
|
|
static_assert('\n' == data7[273]);
|
|
static_assert('\0' == data7[274]);
|
|
static_assert(sizeof(data8) == 275);
|
|
static_assert(' ' == data8[0]);
|
|
static_assert('_' == data8[11]);
|
|
static_assert('\n' == data8[273]);
|
|
static_assert('\0' == data8[274]);
|
|
|
|
const unsigned char data9[] = {
|
|
#embed <media/art.txt>
|
|
};
|
|
const unsigned char data10[] = {
|
|
0,
|
|
#embed <media/art.txt>
|
|
};
|
|
const unsigned char data11[] = {
|
|
#embed <media/art.txt> prefix(0,)
|
|
};
|
|
const unsigned char data12[] = {
|
|
0
|
|
#embed <media/art.txt> prefix(,)
|
|
};
|
|
static_assert(sizeof(data9) == 274);
|
|
static_assert(' ' == data9[0]);
|
|
static_assert('_' == data9[11]);
|
|
static_assert('\n' == data9[273]);
|
|
static_assert(sizeof(data10) == 275);
|
|
static_assert(' ' == data10[1]);
|
|
static_assert('_' == data10[12]);
|
|
static_assert('\n' == data10[274]);
|
|
static_assert('\0' == data10[0]);
|
|
static_assert(sizeof(data11) == 275);
|
|
static_assert(' ' == data11[1]);
|
|
static_assert('_' == data11[12]);
|
|
static_assert('\n' == data11[274]);
|
|
static_assert('\0' == data11[0]);
|
|
static_assert(sizeof(data12) == 275);
|
|
static_assert(' ' == data12[1]);
|
|
static_assert('_' == data12[12]);
|
|
static_assert('\n' == data12[274]);
|
|
static_assert('\0' == data12[0]);
|