@@ -53,8 +53,8 @@ read_file_result read_file_result::failure(const std::string &error) {
53
53
}
54
54
55
55
namespace {
56
- void read_file_buffered (platform_file_ref file, int buffer_size ,
57
- read_file_result *out) {
56
+ void read_file_buffered (platform_file_ref file, const char *path ,
57
+ int buffer_size, read_file_result *out) {
58
58
// TODO(strager): Use byte_buffer to avoid copying the file content every
59
59
// iteration.
60
60
for (;;) {
@@ -72,7 +72,8 @@ void read_file_buffered(platform_file_ref file, int buffer_size,
72
72
file_read_result read_result =
73
73
file.read (&out->content .data ()[size_before], buffer_size);
74
74
if (!read_result.at_end_of_file && read_result.error_message .has_value ()) {
75
- out->error = " failed to read from file: " + *read_result.error_message ;
75
+ out->error = std::string (" failed to read from " ) + path + " : " +
76
+ *read_result.error_message ;
76
77
return ;
77
78
}
78
79
std::optional<int > new_size =
@@ -87,7 +88,8 @@ void read_file_buffered(platform_file_ref file, int buffer_size,
87
88
}
88
89
89
90
read_file_result read_file_with_expected_size (platform_file_ref file,
90
- int file_size, int buffer_size) {
91
+ const char *path, int file_size,
92
+ int buffer_size) {
91
93
read_file_result result;
92
94
93
95
std::optional<int > size_to_read = checked_add (file_size, 1 );
@@ -100,7 +102,8 @@ read_file_result read_file_with_expected_size(platform_file_ref file,
100
102
file_read_result read_result =
101
103
file.read (result.content .data (), *size_to_read);
102
104
if (!read_result.at_end_of_file && read_result.error_message .has_value ()) {
103
- result.error = " failed to read from file: " + *read_result.error_message ;
105
+ result.error = std::string (" failed to read from " ) + path + " : " +
106
+ *read_result.error_message ;
104
107
return result;
105
108
}
106
109
if (read_result.bytes_read == file_size) {
@@ -110,8 +113,8 @@ read_file_result read_file_with_expected_size(platform_file_ref file,
110
113
file.read (result.content .data () + file_size, 1 );
111
114
if (!extra_read_result.at_end_of_file &&
112
115
extra_read_result.error_message .has_value ()) {
113
- result.error =
114
- " failed to read from file: " + *extra_read_result.error_message ;
116
+ result.error = std::string ( " failed to read from " ) + path + " : " +
117
+ *extra_read_result.error_message ;
115
118
return result;
116
119
}
117
120
result.content .resize (read_result.bytes_read +
@@ -121,13 +124,13 @@ read_file_result read_file_with_expected_size(platform_file_ref file,
121
124
return result;
122
125
} else {
123
126
// We didn't read the entire file the first time. Keep reading.
124
- read_file_buffered (file, buffer_size, &result);
127
+ read_file_buffered (file, path, buffer_size, &result);
125
128
return result;
126
129
}
127
130
} else {
128
131
result.content .resize (read_result.bytes_read );
129
132
// We did not read the entire file. There is more data to read.
130
- read_file_buffered (file, buffer_size, &result);
133
+ read_file_buffered (file, path, buffer_size, &result);
131
134
return result;
132
135
}
133
136
}
@@ -149,7 +152,8 @@ read_file_result read_file(const char *path, windows_handle_file_ref file) {
149
152
std::string (" file too large to read into memory: " ) + path);
150
153
}
151
154
return read_file_with_expected_size (
152
- /* file=*/ file, /* file_size=*/ narrow_cast<int >(file_size.QuadPart ),
155
+ /* file=*/ file, /* path=*/ path,
156
+ /* file_size=*/ narrow_cast<int >(file_size.QuadPart ),
153
157
/* buffer_size=*/ buffer_size);
154
158
}
155
159
#endif
@@ -182,7 +186,7 @@ read_file_result read_file(const char *path, posix_fd_file_ref file) {
182
186
std::string (" file too large to read into memory: " ) + path);
183
187
}
184
188
return read_file_with_expected_size (
185
- /* file=*/ file, /* file_size=*/ narrow_cast<int >(file_size),
189
+ /* file=*/ file, /* path= */ path, /* file_size=*/ narrow_cast<int >(file_size),
186
190
/* buffer_size=*/ reasonable_buffer_size (s));
187
191
}
188
192
#endif
0 commit comments