Ticket #9680: no_exception.patch
File no_exception.patch, 23.7 KB (added by , 9 years ago) |
---|
-
date_time/gregorian/gregorian_io.hpp
20 20 #include <boost/date_time/special_values_formatter.hpp> 21 21 #include <boost/date_time/gregorian/gregorian_types.hpp> 22 22 #include <boost/date_time/gregorian/conversion.hpp> // to_tm will be needed in the facets 23 #include "boost/detail/no_exceptions_support.hpp" 23 24 24 25 namespace boost { 25 26 namespace gregorian { … … 76 77 boost::io::ios_flags_saver iflags(is); 77 78 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 78 79 if (strm_sentry) { 79 try{80 BOOST_TRY { 80 81 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 81 82 82 83 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 90 91 f->get(sit, str_end, is, d); 91 92 } 92 93 } 93 catch(...) {94 BOOST_CATCH(...) { 94 95 // mask tells us what exceptions are turned on 95 96 std::ios_base::iostate exception_mask = is.exceptions(); 96 97 // if the user wants exceptions on failbit, we'll rethrow our 97 98 // date_time exception & set the failbit 98 99 if(std::ios_base::failbit & exception_mask) { 99 try { is.setstate(std::ios_base::failbit); } 100 catch(std::ios_base::failure&) {} // ignore this one 101 throw; // rethrow original exception 100 BOOST_TRY { is.setstate(std::ios_base::failbit); } 101 BOOST_CATCH(std::ios_base::failure&) {} // ignore this one 102 BOOST_CATCH_END 103 BOOST_RETHROW; // rethrow original exception 102 104 } 103 105 else { 104 106 // if the user want's to fail quietly, we simply set the failbit … … 106 108 } 107 109 108 110 } 111 BOOST_CATCH_END 109 112 } 110 113 return is; 111 114 } … … 137 140 boost::io::ios_flags_saver iflags(is); 138 141 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 139 142 if (strm_sentry) { 140 try{143 BOOST_TRY { 141 144 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 142 145 143 146 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 151 154 f->get(sit, str_end, is, dd); 152 155 } 153 156 } 154 catch(...) {157 BOOST_CATCH(...) { 155 158 std::ios_base::iostate exception_mask = is.exceptions(); 156 159 if(std::ios_base::failbit & exception_mask) { 157 try { is.setstate(std::ios_base::failbit); } 158 catch(std::ios_base::failure&) {} 159 throw; // rethrow original exception 160 BOOST_TRY { is.setstate(std::ios_base::failbit); } 161 BOOST_CATCH(std::ios_base::failure&) {} 162 BOOST_CATCH_END 163 BOOST_RETHROW; // rethrow original exception 160 164 } 161 165 else { 162 166 is.setstate(std::ios_base::failbit); 163 167 } 164 168 165 169 } 170 BOOST_CATCH_END 166 171 } 167 172 return is; 168 173 } … … 201 206 boost::io::ios_flags_saver iflags(is); 202 207 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 203 208 if (strm_sentry) { 204 try{209 BOOST_TRY { 205 210 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 206 211 207 212 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 215 220 f->get(sit, str_end, is, dp); 216 221 } 217 222 } 218 catch(...) {223 BOOST_CATCH(...) { 219 224 std::ios_base::iostate exception_mask = is.exceptions(); 220 225 if(std::ios_base::failbit & exception_mask) { 221 try { is.setstate(std::ios_base::failbit); } 222 catch(std::ios_base::failure&) {} 223 throw; // rethrow original exception 226 BOOST_TRY { is.setstate(std::ios_base::failbit); } 227 BOOST_CATCH(std::ios_base::failure&) {} 228 BOOST_CATCH_END 229 BOOST_RETHROW; // rethrow original exception 224 230 } 225 231 else { 226 232 is.setstate(std::ios_base::failbit); 227 233 } 228 234 229 235 } 236 BOOST_CATCH_END 230 237 } 231 238 return is; 232 239 } … … 260 267 boost::io::ios_flags_saver iflags(is); 261 268 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 262 269 if (strm_sentry) { 263 try{270 BOOST_TRY { 264 271 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 265 272 266 273 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 274 281 f->get(sit, str_end, is, m); 275 282 } 276 283 } 277 catch(...) {284 BOOST_CATCH(...) { 278 285 std::ios_base::iostate exception_mask = is.exceptions(); 279 286 if(std::ios_base::failbit & exception_mask) { 280 try { is.setstate(std::ios_base::failbit); } 281 catch(std::ios_base::failure&) {} 282 throw; // rethrow original exception 287 BOOST_TRY { is.setstate(std::ios_base::failbit); } 288 BOOST_CATCH(std::ios_base::failure&) {} 289 BOOST_CATCH_END 290 BOOST_RETHROW; // rethrow original exception 283 291 } 284 292 else { 285 293 is.setstate(std::ios_base::failbit); 286 294 } 287 295 288 296 } 297 BOOST_CATCH_END 289 298 } 290 299 return is; 291 300 } … … 317 326 boost::io::ios_flags_saver iflags(is); 318 327 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 319 328 if (strm_sentry) { 320 try{329 BOOST_TRY { 321 330 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 322 331 323 332 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 331 340 f->get(sit, str_end, is, wd); 332 341 } 333 342 } 334 catch(...) {343 BOOST_CATCH(...) { 335 344 std::ios_base::iostate exception_mask = is.exceptions(); 336 345 if(std::ios_base::failbit & exception_mask) { 337 try { is.setstate(std::ios_base::failbit); } 338 catch(std::ios_base::failure&) {} 339 throw; // rethrow original exception 346 BOOST_TRY { is.setstate(std::ios_base::failbit); } 347 BOOST_CATCH(std::ios_base::failure&) {} 348 BOOST_RETHROW; // rethrow original exception 349 BOOST_CATCH_END 340 350 } 341 351 else { 342 352 is.setstate(std::ios_base::failbit); 343 353 } 344 354 345 355 } 356 BOOST_CATCH_END 346 357 } 347 358 return is; 348 359 } … … 358 369 boost::io::ios_flags_saver iflags(is); 359 370 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 360 371 if (strm_sentry) { 361 try{372 BOOST_TRY { 362 373 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 363 374 364 375 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 372 383 f->get(sit, str_end, is, gd); 373 384 } 374 385 } 375 catch(...) {386 BOOST_CATCH(...) { 376 387 std::ios_base::iostate exception_mask = is.exceptions(); 377 388 if(std::ios_base::failbit & exception_mask) { 378 try { is.setstate(std::ios_base::failbit); } 379 catch(std::ios_base::failure&) {} 380 throw; // rethrow original exception 389 BOOST_TRY { is.setstate(std::ios_base::failbit); } 390 BOOST_CATCH(std::ios_base::failure&) {} 391 BOOST_CATCH_END 392 BOOST_RETHROW; // rethrow original exception 381 393 } 382 394 else { 383 395 is.setstate(std::ios_base::failbit); 384 396 } 385 397 386 398 } 399 BOOST_CATCH_END 387 400 } 388 401 return is; 389 402 } … … 399 412 boost::io::ios_flags_saver iflags(is); 400 413 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 401 414 if (strm_sentry) { 402 try{415 BOOST_TRY { 403 416 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 404 417 405 418 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 413 426 f->get(sit, str_end, is, gy); 414 427 } 415 428 } 416 catch(...) {429 BOOST_CATCH(...) { 417 430 std::ios_base::iostate exception_mask = is.exceptions(); 418 431 if(std::ios_base::failbit & exception_mask) { 419 try { is.setstate(std::ios_base::failbit); } 420 catch(std::ios_base::failure&) {} 421 throw; // rethrow original exception 432 BOOST_TRY { is.setstate(std::ios_base::failbit); } 433 BOOST_CATCH(std::ios_base::failure&) {} 434 BOOST_CATCH_END 435 BOOST_RETHROW; // rethrow original exception 422 436 } 423 437 else { 424 438 is.setstate(std::ios_base::failbit); 425 439 } 426 440 427 441 } 442 BOOST_CATCH_END 428 443 } 429 444 return is; 430 445 } … … 457 472 boost::io::ios_flags_saver iflags(is); 458 473 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 459 474 if (strm_sentry) { 460 try{475 BOOST_TRY { 461 476 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 462 477 463 478 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 471 486 f->get(sit, str_end, is, pd); 472 487 } 473 488 } 474 catch(...) {489 BOOST_CATCH(...) { 475 490 std::ios_base::iostate exception_mask = is.exceptions(); 476 491 if(std::ios_base::failbit & exception_mask) { 477 try { is.setstate(std::ios_base::failbit); } 478 catch(std::ios_base::failure&) {} 479 throw; // rethrow original exception 492 BOOST_TRY { is.setstate(std::ios_base::failbit); } 493 BOOST_CATCH(std::ios_base::failure&) {} 494 BOOST_RETHROW; // rethrow original exception 495 BOOST_CATCH_END 480 496 } 481 497 else { 482 498 is.setstate(std::ios_base::failbit); 483 499 } 484 500 485 501 } 502 BOOST_CATCH_END 486 503 } 487 504 return is; 488 505 } … … 514 531 boost::io::ios_flags_saver iflags(is); 515 532 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 516 533 if (strm_sentry) { 517 try{534 BOOST_TRY { 518 535 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 519 536 520 537 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 528 545 f->get(sit, str_end, is, nday); 529 546 } 530 547 } 531 catch(...) {548 BOOST_CATCH(...) { 532 549 std::ios_base::iostate exception_mask = is.exceptions(); 533 550 if(std::ios_base::failbit & exception_mask) { 534 try { is.setstate(std::ios_base::failbit); } 535 catch(std::ios_base::failure&) {} 536 throw; // rethrow original exception 551 BOOST_TRY { is.setstate(std::ios_base::failbit); } 552 BOOST_CATCH(std::ios_base::failure&) {} 553 BOOST_RETHROW; // rethrow original exception 554 BOOST_CATCH_END 537 555 } 538 556 else { 539 557 is.setstate(std::ios_base::failbit); 540 558 } 541 559 542 560 } 561 BOOST_CATCH_END 543 562 } 544 563 return is; 545 564 } … … 572 591 boost::io::ios_flags_saver iflags(is); 573 592 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 574 593 if (strm_sentry) { 575 try{594 BOOST_TRY { 576 595 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 577 596 578 597 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 586 605 f->get(sit, str_end, is, fkd); 587 606 } 588 607 } 589 catch(...) {608 BOOST_CATCH(...) { 590 609 std::ios_base::iostate exception_mask = is.exceptions(); 591 610 if(std::ios_base::failbit & exception_mask) { 592 try { is.setstate(std::ios_base::failbit); } 593 catch(std::ios_base::failure&) {} 594 throw; // rethrow original exception 611 BOOST_TRY { is.setstate(std::ios_base::failbit); } 612 BOOST_CATCH(std::ios_base::failure&) {} 613 BOOST_CATCH_END 614 BOOST_RETHROW; // rethrow original exception 595 615 } 596 616 else { 597 617 is.setstate(std::ios_base::failbit); 598 618 } 599 619 600 620 } 621 BOOST_CATCH_END 601 622 } 602 623 return is; 603 624 } … … 630 651 boost::io::ios_flags_saver iflags(is); 631 652 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 632 653 if (strm_sentry) { 633 try{654 BOOST_TRY { 634 655 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 635 656 636 657 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 644 665 f->get(sit, str_end, is, lkd); 645 666 } 646 667 } 647 catch(...) {668 BOOST_CATCH(...) { 648 669 std::ios_base::iostate exception_mask = is.exceptions(); 649 670 if(std::ios_base::failbit & exception_mask) { 650 try { is.setstate(std::ios_base::failbit); } 651 catch(std::ios_base::failure&) {} 652 throw; // rethrow original exception 671 BOOST_TRY { is.setstate(std::ios_base::failbit); } 672 BOOST_CATCH(std::ios_base::failure&) {} 673 BOOST_CATCH_END 674 BOOST_RETHROW; // rethrow original exception 653 675 } 654 676 else { 655 677 is.setstate(std::ios_base::failbit); 656 678 } 657 679 658 680 } 681 BOOST_CATCH_END 659 682 } 660 683 return is; 661 684 } … … 689 712 boost::io::ios_flags_saver iflags(is); 690 713 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 691 714 if (strm_sentry) { 692 try{715 BOOST_TRY { 693 716 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 694 717 695 718 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 703 726 f->get(sit, str_end, is, fka); 704 727 } 705 728 } 706 catch(...) {729 BOOST_CATCH(...) { 707 730 std::ios_base::iostate exception_mask = is.exceptions(); 708 731 if(std::ios_base::failbit & exception_mask) { 709 try { is.setstate(std::ios_base::failbit); } 710 catch(std::ios_base::failure&) {} 711 throw; // rethrow original exception 732 BOOST_TRY { is.setstate(std::ios_base::failbit); } 733 BOOST_CATCH(std::ios_base::failure&) {} 734 BOOST_CATCH_END 735 BOOST_RETHROW; // rethrow original exception 712 736 } 713 737 else { 714 738 is.setstate(std::ios_base::failbit); 715 739 } 716 740 717 741 } 742 BOOST_CATCH_END 718 743 } 719 744 return is; 720 745 } … … 748 773 boost::io::ios_flags_saver iflags(is); 749 774 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 750 775 if (strm_sentry) { 751 try{776 BOOST_TRY { 752 777 typedef typename date_time::date_input_facet<date, CharT> date_input_facet; 753 778 754 779 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; … … 762 787 f->get(sit, str_end, is, fkb); 763 788 } 764 789 } 765 catch(...) {790 BOOST_CATCH(...) { 766 791 std::ios_base::iostate exception_mask = is.exceptions(); 767 792 if(std::ios_base::failbit & exception_mask) { 768 try { is.setstate(std::ios_base::failbit); } 769 catch(std::ios_base::failure&) {} 770 throw; // rethrow original exception 793 BOOST_TRY { is.setstate(std::ios_base::failbit); } 794 BOOST_CATCH(std::ios_base::failure&) {} 795 BOOST_CATCH_END 796 BOOST_RETHROW; // rethrow original exception 771 797 } 772 798 else { 773 799 is.setstate(std::ios_base::failbit); 774 800 } 775 801 776 802 } 803 BOOST_CATCH_END 777 804 } 778 805 return is; 779 806 } -
date_time/posix_time/posix_time_io.hpp
74 74 boost::io::ios_flags_saver iflags(is); 75 75 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 76 76 if (strm_sentry) { 77 try{77 BOOST_TRY { 78 78 typedef typename date_time::time_input_facet<ptime, CharT> time_input_facet; 79 79 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; 80 80 if(std::has_facet<time_input_facet>(is.getloc())) { … … 87 87 f->get(sit, str_end, is, pt); 88 88 } 89 89 } 90 catch(...) {90 BOOST_CATCH(...) { 91 91 // mask tells us what exceptions are turned on 92 92 std::ios_base::iostate exception_mask = is.exceptions(); 93 93 // if the user wants exceptions on failbit, we'll rethrow our 94 94 // date_time exception & set the failbit 95 95 if(std::ios_base::failbit & exception_mask) { 96 try { is.setstate(std::ios_base::failbit); } 97 catch(std::ios_base::failure&) {} // ignore this one 98 throw; // rethrow original exception 96 BOOST_TRY { is.setstate(std::ios_base::failbit); } 97 BOOST_CATCH(std::ios_base::failure&) {} // ignore this one 98 BOOST_CATCH_END 99 BOOST_RETHROW; // rethrow original exception 99 100 } 100 101 else { 101 102 // if the user want's to fail quietly, we simply set the failbit 102 103 is.setstate(std::ios_base::failbit); 103 104 } 104 105 } 106 BOOST_CATCH_END 105 107 } 106 108 return is; 107 109 } … … 142 144 boost::io::ios_flags_saver iflags(is); 143 145 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 144 146 if (strm_sentry) { 145 try{147 BOOST_TRY { 146 148 typedef typename date_time::time_input_facet<ptime, CharT> time_input_facet; 147 149 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; 148 150 if(std::has_facet<time_input_facet>(is.getloc())) { … … 155 157 f->get(sit, str_end, is, tp); 156 158 } 157 159 } 158 catch(...) {160 BOOST_CATCH(...) { 159 161 std::ios_base::iostate exception_mask = is.exceptions(); 160 162 if(std::ios_base::failbit & exception_mask) { 161 try { is.setstate(std::ios_base::failbit); } 162 catch(std::ios_base::failure&) {} 163 throw; // rethrow original exception 163 BOOST_TRY { is.setstate(std::ios_base::failbit); } 164 BOOST_CATCH(std::ios_base::failure&) {} 165 BOOST_CATCH_END 166 BOOST_RETHROW; // rethrow original exception 164 167 } 165 168 else { 166 169 is.setstate(std::ios_base::failbit); 167 170 } 168 171 } 172 BOOST_CATCH_END 169 173 } 170 174 return is; 171 175 } … … 207 211 boost::io::ios_flags_saver iflags(is); 208 212 typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false); 209 213 if (strm_sentry) { 210 try{214 BOOST_TRY { 211 215 typedef typename date_time::time_input_facet<ptime, CharT> time_input_facet; 212 216 std::istreambuf_iterator<CharT,Traits> sit(is), str_end; 213 217 if(std::has_facet<time_input_facet>(is.getloc())) { … … 220 224 f->get(sit, str_end, is, td); 221 225 } 222 226 } 223 catch(...) {227 BOOST_CATCH(...) { 224 228 std::ios_base::iostate exception_mask = is.exceptions(); 225 229 if(std::ios_base::failbit & exception_mask) { 226 try { is.setstate(std::ios_base::failbit); } 227 catch(std::ios_base::failure&) {} 228 throw; // rethrow original exception 230 BOOST_TRY { is.setstate(std::ios_base::failbit); } 231 BOOST_CATCH(std::ios_base::failure&) {} 232 BOOST_CATCH_END 233 BOOST_RETHROW; // rethrow original exception 229 234 } 230 235 else { 231 236 is.setstate(std::ios_base::failbit); 232 237 } 233 238 } 239 BOOST_CATCH_END 234 240 } 235 241 return is; 236 242 } -
date_time/time_facet.hpp
1005 1005 char_type cs[3] = { '%', *itr }; 1006 1006 string_type s(cs); 1007 1007 match_results mr; 1008 try{1008 BOOST_TRY { 1009 1009 t_year = this->m_parser.parse_year(sitr, stream_end, s, mr); 1010 1010 } 1011 catch(std::out_of_range&) { // base class for bad_year exception1011 BOOST_CATCH(std::out_of_range&) { // base class for bad_year exception 1012 1012 if(this->m_sv_parser.match(sitr, stream_end, mr)) { 1013 1013 t = time_type(static_cast<special_values>(mr.current_match)); 1014 1014 return sitr; 1015 1015 } 1016 1016 else { 1017 throw; // rethrow bad_year1017 BOOST_RETHROW; // rethrow bad_year 1018 1018 } 1019 BOOST_CATCH_END 1019 1020 } 1020 1021 break; 1021 1022 } … … 1026 1027 char_type cs[3] = { '%', *itr }; 1027 1028 string_type s(cs); 1028 1029 match_results mr; 1029 try{1030 BOOST_TRY { 1030 1031 t_month = this->m_parser.parse_month(sitr, stream_end, s, mr); 1031 1032 } 1032 catch(std::out_of_range&) { // base class for bad_month exception1033 BOOST_CATCH(std::out_of_range&) { // base class for bad_month exception 1033 1034 if(this->m_sv_parser.match(sitr, stream_end, mr)) { 1034 1035 t = time_type(static_cast<special_values>(mr.current_match)); 1035 1036 return sitr; 1036 1037 } 1037 1038 else { 1038 throw; // rethrow bad_month1039 BOOST_RETHROW; // rethrow bad_month 1039 1040 } 1040 1041 } 1042 BOOST_CATCH_END 1041 1043 // did m_parser already advance sitr to next char? 1042 1044 if(mr.has_remaining()) { 1043 1045 use_current_char = true; … … 1053 1055 string_type s(cs); 1054 1056 match_results mr; 1055 1057 typename date_type::day_of_week_type wd(0); 1056 try{1058 BOOST_TRY { 1057 1059 wd = this->m_parser.parse_weekday(sitr, stream_end, s, mr); 1058 1060 } 1059 catch(std::out_of_range&) { // base class for bad_weekday exception1061 BOOST_CATCH(std::out_of_range&) { // base class for bad_weekday exception 1060 1062 if(this->m_sv_parser.match(sitr, stream_end, mr)) { 1061 1063 t = time_type(static_cast<special_values>(mr.current_match)); 1062 1064 return sitr; 1063 1065 } 1064 1066 else { 1065 throw; // rethrow bad_weekday1067 BOOST_RETHROW; // rethrow bad_weekday 1066 1068 } 1067 1069 } 1070 BOOST_CATCH_END 1068 1071 // did m_parser already advance sitr to next char? 1069 1072 if(mr.has_remaining()) { 1070 1073 use_current_char = true; … … 1089 1092 } 1090 1093 case 'd': 1091 1094 { 1092 try{1095 BOOST_TRY { 1093 1096 t_day = this->m_parser.parse_day_of_month(sitr, stream_end); 1094 1097 } 1095 catch(std::out_of_range&) { // base class for exception bad_day_of_month1098 BOOST_CATCH(std::out_of_range&) { // base class for exception bad_day_of_month 1096 1099 match_results mr; 1097 1100 if(this->m_sv_parser.match(sitr, stream_end, mr)) { 1098 1101 t = time_type(static_cast<special_values>(mr.current_match)); 1099 1102 return sitr; 1100 1103 } 1101 1104 else { 1102 throw; // rethrow bad_day_of_month1105 BOOST_RETHROW; // rethrow bad_day_of_month 1103 1106 } 1104 1107 } 1108 BOOST_CATCH_END 1105 1109 break; 1106 1110 } 1107 1111 // time flags