-rw-r--r-- | lib/sitecing_enflesher.ll | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/lib/sitecing_enflesher.ll b/lib/sitecing_enflesher.ll index bb667be..f833af2 100644 --- a/lib/sitecing_enflesher.ll +++ b/lib/sitecing_enflesher.ll | |||
@@ -211,50 +211,49 @@ void sitecing_enflesher::outs_close() { | |||
211 | }else{ | 211 | }else{ |
212 | if(stat(fn_s.c_str(),&st_s)) | 212 | if(stat(fn_s.c_str(),&st_s)) |
213 | throw preprocessor_error(CODEPOINT,"failed to stat() supposedly created file"); | 213 | throw preprocessor_error(CODEPOINT,"failed to stat() supposedly created file"); |
214 | if(st_s.st_size!=st_d.st_size) { | 214 | if(st_s.st_size!=st_d.st_size) { |
215 | overwrite = true; | 215 | overwrite = true; |
216 | }else{ | 216 | }else{ |
217 | ifstream i_s(fn_s.c_str(),ios::in); | 217 | ifstream i_s(fn_s.c_str(),ios::in); |
218 | if(!i_s) | 218 | if(!i_s) |
219 | throw preprocessor_error(CODEPOINT,"failed to open supposedly created file"); | 219 | throw preprocessor_error(CODEPOINT,"failed to open supposedly created file"); |
220 | ifstream i_d(fn_d.c_str(),ios::in); | 220 | ifstream i_d(fn_d.c_str(),ios::in); |
221 | if(!i_d) | 221 | if(!i_d) |
222 | throw preprocessor_error(CODEPOINT,"failed to open the old preprocessed source"); | 222 | throw preprocessor_error(CODEPOINT,"failed to open the old preprocessed source"); |
223 | off_t remaining = st_s.st_size; | 223 | off_t remaining = st_s.st_size; |
224 | char t1[2048]; | 224 | char t1[2048]; |
225 | char t2[sizeof(t1)]; | 225 | char t2[sizeof(t1)]; |
226 | while(remaining) { | 226 | while(remaining) { |
227 | int rb = remaining; | 227 | int rb = remaining; |
228 | if(rb>sizeof(t1)) | 228 | if(rb>sizeof(t1)) |
229 | rb = sizeof(t1); | 229 | rb = sizeof(t1); |
230 | if(i_s.read(t1,rb).gcount()!=rb) | 230 | if(i_s.read(t1,rb).gcount()!=rb) |
231 | throw preprocessor_error(CODEPOINT,"error reading just created file"); | 231 | throw preprocessor_error(CODEPOINT,"error reading just created file"); |
232 | if(i_d.read(t2,rb).gcount()!=rb) | 232 | if(i_d.read(t2,rb).gcount()!=rb) |
233 | throw preprocessor_error(CODEPOINT,"error reading the old preprocessed source"); | 233 | throw preprocessor_error(CODEPOINT,"error reading the old preprocessed source"); |
234 | if(memcmp(t1,t2,rb)) { | 234 | if(memcmp(t1,t2,rb)) { |
235 | overwrite = true; | 235 | overwrite = true; |
236 | break; | 236 | break; |
237 | } | 237 | } |
238 | remaining -= rb; | 238 | remaining -= rb; |
239 | } | 239 | } |
240 | } | 240 | } |
241 | } | 241 | } |
242 | if(overwrite) { | 242 | if(overwrite) { |
243 | cerr << "renaming '" << fn_s << "'" << endl; | ||
244 | if(rename(fn_s.c_str(),fn_d.c_str())) | 243 | if(rename(fn_s.c_str(),fn_d.c_str())) |
245 | throw preprocessor_error(CODEPOINT,"failed to rename() generated output"); | 244 | throw preprocessor_error(CODEPOINT,"failed to rename() generated output"); |
246 | } | 245 | } |
247 | } | 246 | } |
248 | outs_filename.erase(); | 247 | outs_filename.erase(); |
249 | } | 248 | } |
250 | 249 | ||
251 | void sitecing_enflesher::outs_open(const string& nfile) { | 250 | void sitecing_enflesher::outs_open(const string& nfile) { |
252 | outs_close(); | 251 | outs_close(); |
253 | outs_filename = nfile; | 252 | outs_filename = nfile; |
254 | outs.open((nfile+".new").c_str(),ios::trunc); | 253 | outs.open((nfile+".new").c_str(),ios::trunc); |
255 | if(!outs.good()) | 254 | if(!outs.good()) |
256 | throw preprocessor_error(CODEPOINT,"failed to write preprocessor output"); | 255 | throw preprocessor_error(CODEPOINT,"failed to write preprocessor output"); |
257 | } | 256 | } |
258 | /* | 257 | /* |
259 | * vim:set ft=lex: | 258 | * vim:set ft=lex: |
260 | */ | 259 | */ |