passenger 3.0.21 → 3.9.1.beta
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- data/DEVELOPERS.TXT +4 -10
- data/NEWS +19 -27
- data/Rakefile +20 -19
- data/bin/passenger +3 -2
- data/bin/passenger-config +35 -5
- data/bin/passenger-install-apache2-module +12 -12
- data/bin/passenger-install-nginx-module +55 -38
- data/bin/passenger-memory-stats +3 -1
- data/bin/passenger-status +7 -35
- data/build/agents.rb +107 -21
- data/build/apache2.rb +11 -46
- data/build/basics.rb +61 -9
- data/build/common_library.rb +59 -142
- data/build/cxx_tests.rb +111 -110
- data/build/documentation.rb +33 -0
- data/build/misc.rb +30 -12
- data/build/nginx.rb +10 -39
- data/build/oxt_tests.rb +1 -0
- data/build/ruby_extension.rb +1 -5
- data/build/test_basics.rb +3 -2
- data/dev/copy_boost_headers.rb +2 -1
- data/doc/Architectural overview.html +49 -90
- data/doc/DebuggingAndStressTesting.txt.md +49 -0
- data/doc/Packaging.txt.md +254 -0
- data/doc/Security of user switching support.html +35 -66
- data/doc/Users guide Apache.html +588 -758
- data/doc/Users guide Apache.idmap.txt +253 -136
- data/doc/Users guide Apache.txt +154 -109
- data/doc/Users guide Nginx.html +544 -660
- data/doc/Users guide Nginx.idmap.txt +179 -91
- data/doc/Users guide Nginx.txt +192 -118
- data/doc/Users guide Standalone.html +65 -48
- data/doc/Users guide Standalone.idmap.txt +10 -2
- data/doc/Users guide Standalone.txt +4 -0
- data/doc/images/glyphicons-halflings-white.png +0 -0
- data/doc/images/glyphicons-halflings.png +0 -0
- data/doc/images/phusion_banner_small.png +0 -0
- data/doc/images/{smart-lv2.png → smart.png} +0 -0
- data/doc/images/{smart-lv2.svg → smart.svg} +0 -0
- data/doc/templates/bootstrap.min.css +397 -0
- data/doc/templates/markdown.html.erb +117 -0
- data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +2 -1
- data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +26 -48
- data/doc/users_guide_snippets/passenger_spawn_method.txt +18 -30
- data/doc/users_guide_snippets/support_information.txt +30 -0
- data/ext/apache2/Bucket.cpp +9 -26
- data/ext/apache2/Bucket.h +13 -10
- data/ext/apache2/Configuration.cpp +70 -58
- data/ext/apache2/Configuration.hpp +19 -47
- data/ext/apache2/DirectoryMapper.h +7 -7
- data/ext/apache2/Hooks.cpp +150 -313
- data/ext/boost/algorithm/string/detail/case_conv.hpp +4 -2
- data/ext/boost/algorithm/string/detail/find_format.hpp +20 -20
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +23 -23
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +2 -2
- data/ext/boost/algorithm/string/detail/formatter.hpp +25 -0
- data/ext/boost/algorithm/string/formatter.hpp +20 -3
- data/ext/boost/assert.hpp +85 -4
- data/ext/boost/bind/bind.hpp +1 -1
- data/ext/boost/concept/detail/backward_compatibility.hpp +1 -1
- data/ext/boost/concept_check.hpp +140 -64
- data/ext/boost/config.hpp +1 -1
- data/ext/boost/config/auto_link.hpp +8 -6
- data/ext/boost/config/compiler/borland.hpp +12 -2
- data/ext/boost/config/compiler/clang.hpp +89 -30
- data/ext/boost/config/compiler/codegear.hpp +3 -2
- data/ext/boost/config/compiler/common_edg.hpp +7 -5
- data/ext/boost/config/compiler/cray.hpp +61 -0
- data/ext/boost/config/compiler/digitalmars.hpp +9 -1
- data/ext/boost/config/compiler/gcc.hpp +33 -24
- data/ext/boost/config/compiler/gcc_xml.hpp +4 -0
- data/ext/boost/config/compiler/hp_acc.hpp +12 -1
- data/ext/boost/config/compiler/intel.hpp +78 -4
- data/ext/boost/config/compiler/metrowerks.hpp +4 -1
- data/ext/boost/config/compiler/mpw.hpp +4 -1
- data/ext/boost/config/compiler/nvcc.hpp +8 -66
- data/ext/boost/config/compiler/pathscale.hpp +80 -0
- data/ext/boost/config/compiler/pgi.hpp +5 -5
- data/ext/boost/config/compiler/sunpro_cc.hpp +4 -1
- data/ext/boost/config/compiler/vacpp.hpp +37 -13
- data/ext/boost/config/compiler/visualc.hpp +24 -11
- data/ext/boost/config/platform/bsd.hpp +1 -1
- data/ext/boost/config/platform/cray.hpp +18 -0
- data/ext/boost/config/platform/cygwin.hpp +10 -0
- data/ext/boost/config/platform/linux.hpp +5 -0
- data/ext/boost/config/platform/macos.hpp +5 -4
- data/ext/boost/config/platform/symbian.hpp +5 -2
- data/ext/boost/config/platform/vms.hpp +25 -0
- data/ext/boost/config/platform/win32.hpp +7 -1
- data/ext/boost/config/select_compiler_config.hpp +8 -25
- data/ext/boost/config/select_platform_config.hpp +8 -1
- data/ext/boost/config/select_stdlib_config.hpp +9 -1
- data/ext/boost/config/stdlib/dinkumware.hpp +6 -9
- data/ext/boost/config/stdlib/libcomo.hpp +1 -4
- data/ext/boost/config/stdlib/libcpp.hpp +36 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +37 -11
- data/ext/boost/config/stdlib/modena.hpp +1 -4
- data/ext/boost/config/stdlib/msl.hpp +1 -4
- data/ext/boost/config/stdlib/roguewave.hpp +9 -6
- data/ext/boost/config/stdlib/sgi.hpp +12 -4
- data/ext/boost/config/stdlib/stlport.hpp +11 -4
- data/ext/boost/config/stdlib/vacpp.hpp +11 -4
- data/ext/boost/config/suffix.hpp +71 -6
- data/ext/boost/config/warning_disable.hpp +1 -1
- data/ext/boost/container/container_fwd.hpp +177 -0
- data/ext/boost/cstdint.hpp +17 -12
- data/ext/boost/current_function.hpp +2 -1
- data/ext/boost/date_time/c_time.hpp +17 -1
- data/ext/boost/date_time/compiler_config.hpp +13 -15
- data/ext/boost/date_time/date_formatting.hpp +7 -1
- data/ext/boost/date_time/filetime_functions.hpp +4 -4
- data/ext/boost/date_time/gregorian_calendar.ipp +2 -2
- data/ext/boost/date_time/strings_from_facet.hpp +3 -3
- data/ext/boost/date_time/time_facet.hpp +101 -101
- data/ext/boost/detail/endian.hpp +4 -2
- data/ext/boost/detail/fenv.hpp +74 -0
- data/ext/boost/detail/sp_typeinfo.hpp +6 -0
- data/ext/boost/exception/detail/clone_current_exception.hpp +47 -0
- data/ext/boost/exception/detail/exception_ptr.hpp +194 -122
- data/ext/boost/exception/detail/type_info.hpp +3 -3
- data/ext/boost/exception/diagnostic_information.hpp +37 -21
- data/ext/boost/exception/exception.hpp +21 -1
- data/ext/boost/exception/info.hpp +0 -1
- data/ext/boost/function.hpp +2 -2
- data/ext/boost/function/function_base.hpp +15 -9
- data/ext/boost/function/function_template.hpp +26 -48
- data/ext/boost/integer_fwd.hpp +0 -16
- data/ext/boost/integer_traits.hpp +2 -2
- data/ext/boost/iterator.hpp +1 -1
- data/ext/boost/iterator/iterator_adaptor.hpp +1 -7
- data/ext/boost/iterator/iterator_facade.hpp +13 -13
- data/ext/boost/iterator/transform_iterator.hpp +5 -20
- data/ext/boost/lexical_cast.hpp +1655 -673
- data/ext/boost/math/policies/policy.hpp +982 -0
- data/ext/boost/math/special_functions/detail/fp_traits.hpp +570 -0
- data/ext/boost/math/special_functions/detail/round_fwd.hpp +80 -0
- data/ext/boost/math/special_functions/fpclassify.hpp +533 -0
- data/ext/boost/math/special_functions/math_fwd.hpp +1070 -0
- data/ext/boost/math/special_functions/sign.hpp +145 -0
- data/ext/boost/math/tools/config.hpp +321 -0
- data/ext/boost/math/tools/promotion.hpp +150 -0
- data/ext/boost/math/tools/real_cast.hpp +29 -0
- data/ext/boost/math/tools/user.hpp +97 -0
- data/ext/boost/move/move.hpp +1222 -0
- data/ext/boost/mpl/O1_size.hpp +40 -0
- data/ext/boost/mpl/O1_size_fwd.hpp +24 -0
- data/ext/boost/mpl/advance.hpp +76 -0
- data/ext/boost/mpl/advance_fwd.hpp +28 -0
- data/ext/boost/mpl/at.hpp +52 -0
- data/ext/boost/mpl/at_fwd.hpp +24 -0
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +87 -0
- data/ext/boost/mpl/aux_/advance_backward.hpp +128 -0
- data/ext/boost/mpl/aux_/advance_forward.hpp +127 -0
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +92 -0
- data/ext/boost/mpl/aux_/at_impl.hpp +45 -0
- data/ext/boost/mpl/aux_/begin_end_impl.hpp +101 -0
- data/ext/boost/mpl/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/aux_/comparison_op.hpp +83 -0
- data/ext/boost/mpl/aux_/config/forwarding.hpp +27 -0
- data/ext/boost/mpl/aux_/config/typeof.hpp +38 -0
- data/ext/boost/mpl/aux_/contains_impl.hpp +61 -0
- data/ext/boost/mpl/aux_/find_if_pred.hpp +31 -0
- data/ext/boost/mpl/aux_/fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/has_begin.hpp +23 -0
- data/ext/boost/mpl/aux_/has_size.hpp +23 -0
- data/ext/boost/mpl/aux_/has_tag.hpp +23 -0
- data/ext/boost/mpl/aux_/inserter_algorithm.hpp +159 -0
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +64 -0
- data/ext/boost/mpl/aux_/iter_apply.hpp +47 -0
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +210 -0
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +42 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +49 -0
- data/ext/boost/mpl/aux_/largest_int.hpp +63 -0
- data/ext/boost/mpl/aux_/msvc_eti_base.hpp +77 -0
- data/ext/boost/mpl/aux_/msvc_type.hpp +62 -0
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +77 -0
- data/ext/boost/mpl/aux_/numeric_op.hpp +315 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +67 -0
- data/ext/boost/mpl/aux_/push_back_impl.hpp +70 -0
- data/ext/boost/mpl/aux_/push_front_impl.hpp +71 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/size_impl.hpp +52 -0
- data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +63 -0
- data/ext/boost/mpl/back_fwd.hpp +24 -0
- data/ext/boost/mpl/back_inserter.hpp +34 -0
- data/ext/boost/mpl/begin_end.hpp +57 -0
- data/ext/boost/mpl/begin_end_fwd.hpp +27 -0
- data/ext/boost/mpl/clear.hpp +39 -0
- data/ext/boost/mpl/clear_fwd.hpp +24 -0
- data/ext/boost/mpl/comparison.hpp +24 -0
- data/ext/boost/mpl/contains.hpp +41 -0
- data/ext/boost/mpl/contains_fwd.hpp +25 -0
- data/ext/boost/mpl/deref.hpp +41 -0
- data/ext/boost/mpl/distance.hpp +78 -0
- data/ext/boost/mpl/distance_fwd.hpp +28 -0
- data/ext/boost/mpl/empty_fwd.hpp +24 -0
- data/ext/boost/mpl/equal_to.hpp +21 -0
- data/ext/boost/mpl/find.hpp +38 -0
- data/ext/boost/mpl/find_if.hpp +50 -0
- data/ext/boost/mpl/fold.hpp +48 -0
- data/ext/boost/mpl/front_fwd.hpp +24 -0
- data/ext/boost/mpl/front_inserter.hpp +33 -0
- data/ext/boost/mpl/greater.hpp +21 -0
- data/ext/boost/mpl/greater_equal.hpp +21 -0
- data/ext/boost/mpl/inserter.hpp +32 -0
- data/ext/boost/mpl/iter_fold.hpp +49 -0
- data/ext/boost/mpl/iter_fold_if.hpp +117 -0
- data/ext/boost/mpl/iterator_range.hpp +42 -0
- data/ext/boost/mpl/iterator_tags.hpp +27 -0
- data/ext/boost/mpl/less.hpp +21 -0
- data/ext/boost/mpl/less_equal.hpp +21 -0
- data/ext/boost/mpl/limits/list.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +21 -0
- data/ext/boost/mpl/list.hpp +57 -0
- data/ext/boost/mpl/list/aux_/O1_size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/begin_end.hpp +44 -0
- data/ext/boost/mpl/list/aux_/clear.hpp +34 -0
- data/ext/boost/mpl/list/aux_/empty.hpp +34 -0
- data/ext/boost/mpl/list/aux_/front.hpp +33 -0
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +35 -0
- data/ext/boost/mpl/list/aux_/item.hpp +55 -0
- data/ext/boost/mpl/list/aux_/iterator.hpp +76 -0
- data/ext/boost/mpl/list/aux_/pop_front.hpp +34 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +149 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +169 -0
- data/ext/boost/mpl/list/aux_/push_back.hpp +36 -0
- data/ext/boost/mpl/list/aux_/push_front.hpp +39 -0
- data/ext/boost/mpl/list/aux_/size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/list/list0.hpp +42 -0
- data/ext/boost/mpl/list/list10.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +43 -0
- data/ext/boost/mpl/long.hpp +22 -0
- data/ext/boost/mpl/long_fwd.hpp +27 -0
- data/ext/boost/mpl/minus.hpp +21 -0
- data/ext/boost/mpl/multiplies.hpp +53 -0
- data/ext/boost/mpl/negate.hpp +81 -0
- data/ext/boost/mpl/not_equal_to.hpp +21 -0
- data/ext/boost/mpl/numeric_cast.hpp +41 -0
- data/ext/boost/mpl/pair.hpp +70 -0
- data/ext/boost/mpl/plus.hpp +21 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +24 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +24 -0
- data/ext/boost/mpl/prior.hpp +19 -0
- data/ext/boost/mpl/push_back.hpp +53 -0
- data/ext/boost/mpl/push_back_fwd.hpp +24 -0
- data/ext/boost/mpl/push_front.hpp +52 -0
- data/ext/boost/mpl/push_front_fwd.hpp +24 -0
- data/ext/boost/mpl/remove_if.hpp +83 -0
- data/ext/boost/mpl/reverse_fold.hpp +50 -0
- data/ext/boost/mpl/same_as.hpp +55 -0
- data/ext/boost/mpl/sequence_tag.hpp +124 -0
- data/ext/boost/mpl/sequence_tag_fwd.hpp +26 -0
- data/ext/boost/mpl/size.hpp +42 -0
- data/ext/boost/mpl/size_fwd.hpp +24 -0
- data/ext/boost/mpl/tag.hpp +52 -0
- data/ext/boost/mpl/times.hpp +21 -0
- data/ext/boost/mpl/vector.hpp +57 -0
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/at.hpp +116 -0
- data/ext/boost/mpl/vector/aux_/back.hpp +59 -0
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/clear.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/empty.hpp +68 -0
- data/ext/boost/mpl/vector/aux_/front.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/item.hpp +103 -0
- data/ext/boost/mpl/vector/aux_/iterator.hpp +130 -0
- data/ext/boost/mpl/vector/aux_/pop_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +829 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +1144 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +139 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +159 -0
- data/ext/boost/mpl/vector/aux_/push_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/push_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/size.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/tag.hpp +32 -0
- data/ext/boost/mpl/vector/aux_/vector0.hpp +52 -0
- data/ext/boost/mpl/vector/vector0.hpp +34 -0
- data/ext/boost/mpl/vector/vector10.hpp +45 -0
- data/ext/boost/mpl/vector/vector20.hpp +45 -0
- data/ext/boost/none.hpp +1 -1
- data/ext/boost/numeric/conversion/bounds.hpp +24 -0
- data/ext/boost/numeric/conversion/cast.hpp +61 -0
- data/ext/boost/numeric/conversion/conversion_traits.hpp +39 -0
- data/ext/boost/numeric/conversion/converter.hpp +68 -0
- data/ext/boost/numeric/conversion/converter_policies.hpp +186 -0
- data/ext/boost/numeric/conversion/detail/bounds.hpp +58 -0
- data/ext/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
- data/ext/boost/numeric/conversion/detail/converter.hpp +602 -0
- data/ext/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
- data/ext/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
- data/ext/boost/numeric/conversion/detail/meta.hpp +120 -0
- data/ext/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
- data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
- data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
- data/ext/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
- data/ext/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
- data/ext/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
- data/ext/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
- data/ext/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
- data/ext/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
- data/ext/boost/operators.hpp +3 -1
- data/ext/boost/optional/optional.hpp +146 -79
- data/ext/boost/optional/optional_fwd.hpp +8 -1
- data/ext/boost/preprocessor/cat.hpp +2 -2
- data/ext/boost/preprocessor/config/config.hpp +39 -4
- data/ext/boost/preprocessor/facilities/intercept.hpp +277 -0
- data/ext/boost/preprocessor/facilities/overload.hpp +25 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +3 -3
- data/ext/boost/preprocessor/iteration/iterate.hpp +3 -3
- data/ext/boost/preprocessor/punctuation/paren.hpp +23 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
- data/ext/boost/preprocessor/seq/cat.hpp +5 -4
- data/ext/boost/preprocessor/seq/size.hpp +0 -1
- data/ext/boost/preprocessor/tuple/eat.hpp +83 -34
- data/ext/boost/preprocessor/tuple/elem.hpp +161 -355
- data/ext/boost/preprocessor/tuple/rem.hpp +110 -48
- data/ext/boost/preprocessor/tuple/to_list.hpp +90 -36
- data/ext/boost/preprocessor/variadic/elem.hpp +94 -0
- data/ext/boost/preprocessor/variadic/size.hpp +30 -0
- data/ext/boost/range/begin.hpp +17 -6
- data/ext/boost/range/concepts.hpp +37 -2
- data/ext/boost/range/detail/safe_bool.hpp +72 -0
- data/ext/boost/range/end.hpp +14 -9
- data/ext/boost/range/iterator_range_core.hpp +120 -12
- data/ext/boost/range/size.hpp +21 -5
- data/ext/boost/smart_ptr/detail/shared_count.hpp +88 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +142 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +9 -0
- data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +10 -2
- data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +5 -1
- data/ext/boost/smart_ptr/detail/spinlock.hpp +4 -1
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +20 -3
- data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +4 -0
- data/ext/boost/smart_ptr/make_shared.hpp +591 -22
- data/ext/boost/smart_ptr/shared_array.hpp +29 -1
- data/ext/boost/smart_ptr/shared_ptr.hpp +29 -13
- data/ext/boost/smart_ptr/weak_ptr.hpp +24 -12
- data/ext/boost/src/pthread/once.cpp +9 -7
- data/ext/boost/src/pthread/thread.cpp +32 -28
- data/ext/boost/src/pthread/timeconv.inl +4 -5
- data/ext/boost/src/tss_null.cpp +5 -1
- data/ext/boost/static_assert.hpp +8 -2
- data/ext/boost/thread/detail/config.hpp +19 -4
- data/ext/boost/thread/detail/move.hpp +11 -5
- data/ext/boost/thread/detail/thread.hpp +59 -43
- data/ext/boost/thread/exceptions.hpp +9 -9
- data/ext/boost/thread/future.hpp +150 -82
- data/ext/boost/thread/locks.hpp +101 -60
- data/ext/boost/thread/pthread/condition_variable.hpp +79 -32
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +12 -3
- data/ext/boost/thread/pthread/mutex.hpp +17 -14
- data/ext/boost/thread/pthread/once.hpp +3 -4
- data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +12 -2
- data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -19
- data/ext/boost/thread/pthread/shared_mutex.hpp +13 -13
- data/ext/boost/thread/pthread/thread_data.hpp +40 -12
- data/ext/boost/thread/thread_time.hpp +5 -0
- data/ext/boost/throw_exception.hpp +1 -1
- data/ext/boost/token_functions.hpp +34 -10
- data/ext/boost/type_traits/add_rvalue_reference.hpp +66 -0
- data/ext/boost/type_traits/alignment_of.hpp +1 -1
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +26 -3
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +3 -2
- data/ext/boost/type_traits/detail/cv_traits_impl.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +6 -4
- data/ext/boost/type_traits/detail/type_trait_def.hpp +8 -2
- data/ext/boost/type_traits/function_traits.hpp +1 -1
- data/ext/boost/type_traits/has_nothrow_constructor.hpp +53 -0
- data/ext/boost/type_traits/has_nothrow_copy.hpp +19 -5
- data/ext/boost/type_traits/has_trivial_constructor.hpp +51 -0
- data/ext/boost/type_traits/has_trivial_copy.hpp +20 -5
- data/ext/boost/type_traits/has_trivial_destructor.hpp +12 -5
- data/ext/boost/type_traits/intrinsics.hpp +119 -71
- data/ext/boost/type_traits/is_const.hpp +5 -5
- data/ext/boost/type_traits/is_convertible.hpp +14 -13
- data/ext/boost/type_traits/is_enum.hpp +1 -1
- data/ext/boost/type_traits/is_floating_point.hpp +27 -0
- data/ext/boost/type_traits/is_function.hpp +3 -3
- data/ext/boost/type_traits/is_fundamental.hpp +1 -1
- data/ext/boost/type_traits/is_member_function_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_member_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_pod.hpp +11 -3
- data/ext/boost/type_traits/is_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_signed.hpp +8 -3
- data/ext/boost/type_traits/is_union.hpp +8 -0
- data/ext/boost/type_traits/is_unsigned.hpp +9 -4
- data/ext/boost/type_traits/is_volatile.hpp +5 -5
- data/ext/boost/type_traits/remove_cv.hpp +4 -3
- data/ext/boost/type_traits/remove_pointer.hpp +51 -2
- data/ext/boost/type_traits/remove_reference.hpp +2 -2
- data/ext/boost/type_traits/type_with_alignment.hpp +8 -2
- data/ext/boost/utility/declval.hpp +44 -0
- data/ext/boost/utility/detail/in_place_factory_prefix.hpp +36 -0
- data/ext/boost/utility/detail/in_place_factory_suffix.hpp +23 -0
- data/ext/boost/utility/detail/result_of_iterate.hpp +142 -0
- data/ext/boost/utility/in_place_factory.hpp +88 -0
- data/ext/boost/utility/result_of.hpp +103 -0
- data/ext/boost/utility/swap.hpp +55 -0
- data/ext/common/AnsiColorConstants.h +36 -0
- data/ext/common/ApplicationPool2/Common.h +87 -0
- data/ext/common/ApplicationPool2/ComponentInfo.h +53 -0
- data/ext/common/ApplicationPool2/Group.h +648 -0
- data/ext/common/ApplicationPool2/Implementation.cpp +580 -0
- data/ext/common/ApplicationPool2/Options.h +576 -0
- data/ext/common/ApplicationPool2/PipeWatcher.h +61 -0
- data/ext/common/ApplicationPool2/Pool.h +1181 -0
- data/ext/common/ApplicationPool2/Process.h +425 -0
- data/ext/common/ApplicationPool2/README.md +96 -0
- data/ext/common/ApplicationPool2/Session.h +158 -0
- data/ext/common/ApplicationPool2/Socket.h +246 -0
- data/ext/common/ApplicationPool2/Spawner.h +2212 -0
- data/ext/common/ApplicationPool2/SuperGroup.h +749 -0
- data/ext/common/BackgroundEventLoop.cpp +129 -0
- data/ext/common/BackgroundEventLoop.h +61 -0
- data/ext/common/Constants.h +3 -1
- data/ext/common/EventedBufferedInput.h +331 -0
- data/ext/common/EventedMessageServer.h +17 -34
- data/ext/common/EventedServer.h +2 -2
- data/ext/common/Exceptions.h +71 -19
- data/ext/common/FileDescriptor.h +8 -6
- data/ext/common/HttpConstants.h +167 -0
- data/ext/common/IniFile.h +24 -0
- data/ext/common/Logging.h +62 -849
- data/ext/common/MessageReadersWriters.h +19 -0
- data/ext/common/MessageServer.h +11 -14
- data/ext/common/MultiLibeio.cpp +198 -0
- data/ext/common/MultiLibeio.h +67 -0
- data/ext/common/ResourceLocator.h +24 -41
- data/ext/common/SafeLibev.h +186 -14
- data/ext/common/StaticString.h +23 -3
- data/ext/common/UnionStation.h +972 -0
- data/ext/common/Utils.cpp +168 -24
- data/ext/common/Utils.h +25 -3
- data/ext/common/Utils/CachedFileStat.hpp +4 -3
- data/ext/common/Utils/FileChangeChecker.h +2 -2
- data/ext/common/Utils/HashMap.h +50 -0
- data/ext/common/Utils/IOUtils.cpp +229 -68
- data/ext/common/Utils/IOUtils.h +134 -3
- data/ext/common/Utils/Lock.h +28 -0
- data/ext/common/Utils/MemoryBarrier.h +52 -0
- data/ext/common/Utils/PriorityQueue.h +54 -0
- data/ext/common/Utils/ProcessMetricsCollector.h +9 -11
- data/ext/common/Utils/ScopeGuard.h +50 -1
- data/ext/common/Utils/SmallVector.h +653 -0
- data/ext/common/Utils/StrIntUtils.cpp +26 -2
- data/ext/common/Utils/StrIntUtils.h +18 -2
- data/ext/common/Utils/StringMap.h +125 -8
- data/ext/common/Utils/Template.h +212 -0
- data/ext/common/Utils/fib.c +699 -0
- data/ext/common/Utils/fib.h +101 -0
- data/ext/common/Utils/fibpriv.h +67 -0
- data/ext/common/Utils/json-forwards.h +249 -0
- data/ext/common/Utils/json.h +1855 -0
- data/ext/common/Utils/jsoncpp.cpp +4230 -0
- data/ext/common/agents/Base.cpp +1126 -0
- data/ext/common/{AgentBase.h → agents/Base.h} +5 -1
- data/ext/common/agents/EnvPrinter.c +16 -0
- data/ext/common/agents/HelperAgent/AgentOptions.h +81 -0
- data/ext/common/{HelperAgent → agents/HelperAgent}/BacktracesServer.h +3 -2
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +732 -0
- data/ext/common/agents/HelperAgent/Main.cpp +497 -0
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +283 -0
- data/ext/common/agents/HelperAgent/RequestHandler.h +2139 -0
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +451 -0
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/DataStoreId.h +1 -1
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.cpp +1 -1
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.h +0 -0
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/LoggingServer.h +18 -16
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/Main.cpp +15 -13
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/RemoteSender.h +6 -6
- data/ext/common/agents/SpawnPreparer.cpp +127 -0
- data/ext/common/{Watchdog.cpp → agents/Watchdog/Main.cpp} +63 -25
- data/ext/libeio/Changes +72 -0
- data/ext/{google/COPYING → libeio/LICENSE} +17 -9
- data/ext/libeio/Makefile.am +15 -0
- data/ext/libeio/Makefile.in +694 -0
- data/ext/libeio/aclocal.m4 +9418 -0
- data/ext/libeio/autogen.sh +3 -0
- data/ext/libeio/config.guess +1501 -0
- data/ext/libeio/config.h.in +136 -0
- data/ext/libeio/config.sub +1705 -0
- data/ext/libeio/configure +14822 -0
- data/ext/libeio/configure.ac +22 -0
- data/ext/libeio/demo.c +194 -0
- data/ext/libeio/ecb.h +457 -0
- data/ext/libeio/eio.c +2816 -0
- data/ext/libeio/eio.h +411 -0
- data/ext/libeio/install-sh +520 -0
- data/ext/libeio/libeio.m4 +211 -0
- data/ext/libeio/ltmain.sh +9636 -0
- data/ext/libeio/missing +376 -0
- data/ext/libeio/xthread.h +166 -0
- data/ext/libev/Changes +125 -7
- data/ext/libev/Makefile.am +5 -3
- data/ext/libev/Makefile.in +209 -120
- data/ext/libev/aclocal.m4 +6027 -4619
- data/ext/libev/autogen.sh +1 -4
- data/ext/libev/config.h.in +11 -7
- data/ext/libev/configure +7312 -14993
- data/ext/libev/configure.ac +12 -5
- data/ext/libev/depcomp +630 -0
- data/ext/libev/ev++.h +48 -32
- data/ext/libev/ev.c +1173 -391
- data/ext/libev/ev.h +315 -181
- data/ext/libev/ev_epoll.c +66 -15
- data/ext/libev/ev_kqueue.c +20 -18
- data/ext/libev/ev_poll.c +27 -23
- data/ext/libev/ev_port.c +39 -19
- data/ext/libev/ev_select.c +23 -17
- data/ext/libev/ev_vars.h +25 -8
- data/ext/libev/ev_win32.c +6 -6
- data/ext/libev/ev_wrap.h +22 -2
- data/ext/libev/event.c +18 -17
- data/ext/libev/event.h +16 -4
- data/ext/libev/libev.m4 +10 -6
- data/ext/libev/ltmain.sh +7353 -5811
- data/ext/nginx/Configuration.c +74 -42
- data/ext/nginx/Configuration.h +3 -5
- data/ext/nginx/ContentHandler.c +26 -83
- data/ext/nginx/ContentHandler.h +1 -1
- data/ext/nginx/config +13 -9
- data/ext/nginx/ngx_http_passenger_module.c +3 -7
- data/ext/oxt/detail/backtrace_enabled.hpp +5 -102
- data/ext/oxt/detail/context.hpp +90 -0
- data/ext/oxt/detail/spin_lock_darwin.hpp +4 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +4 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +14 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +2 -2
- data/ext/oxt/dynamic_thread_group.hpp +27 -1
- data/ext/oxt/implementation.cpp +415 -0
- data/ext/oxt/{thread.cpp → initialize.hpp} +13 -6
- data/ext/oxt/macros.hpp +32 -1
- data/ext/oxt/spin_lock.hpp +6 -11
- data/ext/oxt/system_calls.cpp +204 -16
- data/ext/oxt/system_calls.hpp +85 -45
- data/ext/oxt/thread.hpp +13 -117
- data/ext/ruby/passenger_native_support.c +82 -237
- data/helper-scripts/backtrace-sanitizer.rb +114 -0
- data/helper-scripts/classic-rails-loader.rb +135 -0
- data/helper-scripts/classic-rails-preloader.rb +161 -0
- data/helper-scripts/node-loader.js +314 -0
- data/helper-scripts/rack-loader.rb +104 -0
- data/helper-scripts/rack-preloader.rb +132 -0
- data/helper-scripts/wsgi-loader.py +231 -0
- data/helper-scripts/wsgi-preloader.py +1 -0
- data/lib/phusion_passenger.rb +159 -61
- data/lib/phusion_passenger/abstract_installer.rb +182 -87
- data/lib/phusion_passenger/admin_tools/server_instance.rb +25 -19
- data/lib/phusion_passenger/analytics_logger.rb +5 -4
- data/lib/phusion_passenger/classic_rails/{request_handler.rb → thread_handler_extension.rb} +4 -40
- data/lib/phusion_passenger/classic_rails_extensions/init.rb +5 -3
- data/lib/phusion_passenger/common_library.rb +441 -0
- data/lib/phusion_passenger/console_text_template.rb +4 -16
- data/lib/phusion_passenger/constants.rb +1 -8
- data/lib/phusion_passenger/debug_logging.rb +5 -2
- data/lib/phusion_passenger/dependencies.rb +51 -13
- data/lib/phusion_passenger/loader_shared_helpers.rb +318 -0
- data/lib/phusion_passenger/message_channel.rb +3 -47
- data/lib/phusion_passenger/message_client.rb +2 -2
- data/lib/phusion_passenger/native_support.rb +36 -15
- data/lib/phusion_passenger/packaging.rb +8 -11
- data/lib/phusion_passenger/platform_info.rb +25 -17
- data/lib/phusion_passenger/platform_info/apache.rb +10 -7
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +10 -30
- data/lib/phusion_passenger/platform_info/compiler.rb +93 -34
- data/lib/phusion_passenger/platform_info/ruby.rb +37 -97
- data/lib/phusion_passenger/preloader_shared_helpers.rb +121 -0
- data/lib/phusion_passenger/public_api.rb +1 -4
- data/lib/phusion_passenger/rack/{request_handler.rb → thread_handler_extension.rb} +14 -63
- data/lib/phusion_passenger/rails3_extensions/init.rb +9 -8
- data/lib/phusion_passenger/request_handler.rb +500 -0
- data/lib/phusion_passenger/request_handler/thread_handler.rb +360 -0
- data/lib/phusion_passenger/ruby_core_enhancements.rb +142 -0
- data/lib/phusion_passenger/standalone/command.rb +36 -15
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +16 -8
- data/lib/phusion_passenger/standalone/runtime_installer.rb +169 -72
- data/lib/phusion_passenger/standalone/start_command.rb +44 -39
- data/lib/phusion_passenger/standalone/utils.rb +5 -5
- data/lib/phusion_passenger/utils.rb +35 -914
- data/lib/phusion_passenger/utils/ansi_colors.rb +59 -0
- data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/lib/phusion_passenger/utils/robust_interruption.rb +134 -0
- data/lib/phusion_passenger/utils/tee_input.rb +174 -0
- data/lib/phusion_passenger/utils/tmpio.rb +33 -0
- data/lib/phusion_passenger/utils/unseekable_socket.rb +6 -0
- data/resources/mime.types +5 -1
- data/{lib/phusion_passenger/templates → resources}/standalone_default_root/index.html +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/config_snippets.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/deployment_example.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/no_write_permission_to_passenger_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/welcome.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/error_layout.css +6 -0
- data/resources/templates/error_layout.html.template +89 -0
- data/resources/templates/general_error.html.template +1 -0
- data/resources/templates/general_error_with_html.html.template +1 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/ask_for_extra_configure_flags.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/cannot_write_to_dir.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets_inserted.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/confirm_extra_configure_flags.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/deployment_example.txt.erb +0 -0
- data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +8 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_downloaded.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_extracted.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/query_download_and_install.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/welcome.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/cannot_write_to_dir.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/config.erb +26 -5
- data/{lib/phusion_passenger → resources}/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/welcome.txt.erb +0 -0
- data/resources/templates/undisclosed_error.html.template +25 -0
- data/test/config.json.example +42 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +86 -0
- data/test/cxx/ApplicationPool2/OptionsTest.cpp +44 -0
- data/test/cxx/ApplicationPool2/PoolTest.cpp +1234 -0
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +131 -0
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +229 -0
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +744 -0
- data/test/cxx/BufferedIOTest.cpp +7 -7
- data/test/cxx/CxxTestMain.cpp +65 -2
- data/test/cxx/FileBackedPipeTest.cpp +626 -0
- data/test/cxx/FileChangeCheckerTest.cpp +20 -18
- data/test/cxx/FilterSupportTest.cpp +5 -5
- data/test/cxx/IOUtilsTest.cpp +11 -4
- data/test/cxx/MessageReadersWritersTest.cpp +1 -1
- data/test/cxx/MessageServerTest.cpp +31 -30
- data/test/cxx/RequestHandlerTest.cpp +777 -0
- data/test/cxx/ScgiRequestParserTest.cpp +36 -16
- data/test/cxx/ServerInstanceDirTest.cpp +1 -1
- data/test/cxx/StringMapTest.cpp +61 -0
- data/test/cxx/TemplateTest.cpp +118 -0
- data/test/cxx/TestSupport.cpp +25 -68
- data/test/cxx/TestSupport.h +81 -41
- data/test/cxx/{LoggingTest.cpp → UnionStationTest.cpp} +79 -74
- data/test/cxx/UtilsTest.cpp +59 -5
- data/test/integration_tests/apache2_tests.rb +2 -2
- data/test/integration_tests/nginx_tests.rb +1 -1
- data/test/integration_tests/spec_helper.rb +7 -5
- data/test/oxt/oxt_test_main.cpp +2 -0
- data/test/oxt/syscall_interruption_test.cpp +1 -0
- data/test/ruby/classic_rails/loader_spec.rb +48 -0
- data/test/ruby/classic_rails/preloader_spec.rb +54 -0
- data/test/ruby/rack/loader_spec.rb +62 -0
- data/test/ruby/rack/preloader_spec.rb +74 -0
- data/test/ruby/{abstract_request_handler_spec.rb → request_handler_spec.rb} +31 -68
- data/test/ruby/shared/loader_spec.rb +241 -0
- data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +141 -182
- data/test/ruby/shared/ruby_loader_spec.rb +55 -0
- data/test/ruby/spec_helper.rb +8 -53
- data/test/ruby/utils/file_system_watcher_spec.rb +9 -1
- data/test/ruby/utils_spec.rb +10 -683
- data/test/stub/rack/config.ru +28 -3
- data/test/stub/rack/start.rb +47 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/Rakefile +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/application_controller.rb +0 -2
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_1.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_2.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/foo_controller.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/helpers/application_helper.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/boot.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/database.yml +3 -3
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environment.rb +5 -2
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/development.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/production.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/staging.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/inflections.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/mime_types.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/routes.rb +1 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/about +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/console +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/dbconsole +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/destroy +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/generate +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/benchmarker +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/profiler +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/request +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/plugin +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/inspector +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/reaper +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/spawner +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/runner +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/server +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/Gemfile +0 -0
- data/test/stub/rails3.0/Gemfile.lock +80 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/Rakefile +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/controllers/application_controller.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/helpers/application_helper.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/views/layouts/application.html.erb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config.ru +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/application.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/boot.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/database.yml +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environment.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/development.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/production.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/test.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/backtrace_silencers.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/inflections.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/mime_types.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/passenger.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/secret_token.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/session_store.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/locales/en.yml +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/routes.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/db/seeds.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/doc/README_FOR_APP +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/404.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/422.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/500.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/favicon.ico +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/index.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/robots.txt +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/script/rails +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/performance/browsing_test.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/test_helper.rb +0 -0
- data/test/stub/start_error.pl +24 -0
- data/test/stub/wsgi/passenger_wsgi.py +71 -3
- data/test/support/apache2_controller.rb +2 -2
- data/test/support/placebo-preloader.rb +88 -0
- data/test/support/test_helper.rb +1 -14
- data/test/tut/tut.h +11 -4
- metadata +590 -326
- data.tar.gz.asc +0 -12
- data/PACKAGING.TXT +0 -25
- data/build/config.rb +0 -46
- data/ext/apache2/HelperAgent.cpp +0 -364
- data/ext/boost/call_traits.hpp +0 -24
- data/ext/boost/detail/call_traits.hpp +0 -164
- data/ext/common/AbstractSpawnManager.h +0 -110
- data/ext/common/AgentBase.cpp +0 -432
- data/ext/common/ApplicationPool/Client.h +0 -788
- data/ext/common/ApplicationPool/Interface.h +0 -295
- data/ext/common/ApplicationPool/Pool.h +0 -1327
- data/ext/common/ApplicationPool/Server.h +0 -479
- data/ext/common/MessageChannel.h +0 -494
- data/ext/common/PoolOptions.h +0 -518
- data/ext/common/Process.h +0 -253
- data/ext/common/Session.h +0 -436
- data/ext/common/SpawnManager.h +0 -611
- data/ext/google/ChangeLog +0 -167
- data/ext/google/dense_hash_map +0 -310
- data/ext/google/dense_hash_set +0 -287
- data/ext/google/sparse_hash_map +0 -294
- data/ext/google/sparse_hash_set +0 -275
- data/ext/google/sparsehash/densehashtable.h +0 -1062
- data/ext/google/sparsehash/sparseconfig.h +0 -55
- data/ext/google/sparsehash/sparsehashtable.h +0 -1015
- data/ext/google/sparsetable +0 -1468
- data/ext/google/type_traits.h +0 -250
- data/ext/nginx/HelperAgent.cpp +0 -1355
- data/ext/nginx/ScgiRequestParser.h +0 -375
- data/ext/oxt/backtrace.cpp +0 -185
- data/ext/oxt/tracable_exception.cpp +0 -89
- data/helper-scripts/passenger-spawn-server +0 -106
- data/lib/phusion_passenger/abstract_request_handler.rb +0 -766
- data/lib/phusion_passenger/abstract_server.rb +0 -372
- data/lib/phusion_passenger/abstract_server_collection.rb +0 -335
- data/lib/phusion_passenger/app_process.rb +0 -174
- data/lib/phusion_passenger/classic_rails/application_spawner.rb +0 -344
- data/lib/phusion_passenger/classic_rails/framework_spawner.rb +0 -311
- data/lib/phusion_passenger/exceptions.rb +0 -103
- data/lib/phusion_passenger/html_template.rb +0 -107
- data/lib/phusion_passenger/rack/application_spawner.rb +0 -231
- data/lib/phusion_passenger/spawn_manager.rb +0 -359
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +0 -38
- data/lib/phusion_passenger/templates/app_init_error.html.erb +0 -64
- data/lib/phusion_passenger/templates/database_error.html.erb +0 -66
- data/lib/phusion_passenger/templates/error_layout.html.erb +0 -39
- data/lib/phusion_passenger/templates/framework_init_error.html.erb +0 -39
- data/lib/phusion_passenger/templates/general_error.html.erb +0 -22
- data/lib/phusion_passenger/templates/load_error.html.erb +0 -46
- data/lib/phusion_passenger/templates/version_not_found.html.erb +0 -34
- data/lib/phusion_passenger/utils/rewindable_input.rb +0 -125
- data/lib/phusion_passenger/wsgi/application_spawner.rb +0 -108
- data/test/config.yml.example +0 -41
- data/test/cxx/ApplicationPool_PoolTest.cpp +0 -33
- data/test/cxx/ApplicationPool_PoolTestCases.cpp +0 -1029
- data/test/cxx/ApplicationPool_ServerTest.cpp +0 -308
- data/test/cxx/ApplicationPool_Server_PoolTest.cpp +0 -80
- data/test/cxx/MessageChannelTest.cpp +0 -557
- data/test/cxx/PoolOptionsTest.cpp +0 -116
- data/test/cxx/SpawnManagerTest.cpp +0 -161
- data/test/ruby/abstract_server_collection_spec.rb +0 -247
- data/test/ruby/abstract_server_spec.rb +0 -61
- data/test/ruby/app_process_spec.rb +0 -43
- data/test/ruby/classic_rails/application_spawner_spec.rb +0 -89
- data/test/ruby/classic_rails/framework_spawner_spec.rb +0 -92
- data/test/ruby/rack/application_spawner_spec.rb +0 -116
- data/test/ruby/shared/abstract_server_spec.rb +0 -23
- data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +0 -38
- data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +0 -19
- data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +0 -15
- data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +0 -27
- data/test/ruby/shared/spawners/preloading_spawner_spec.rb +0 -29
- data/test/ruby/shared/spawners/reload_all_spec.rb +0 -36
- data/test/ruby/shared/spawners/reload_single_spec.rb +0 -52
- data/test/ruby/shared/spawners/spawn_server_spec.rb +0 -28
- data/test/ruby/shared/spawners/spawner_spec.rb +0 -273
- data/test/ruby/shared/utils/pseudo_io_spec.rb +0 -60
- data/test/ruby/spawn_manager_spec.rb +0 -134
- data/test/ruby/wsgi/application_spawner_spec.rb +0 -50
- data/test/stub/message_channel.rb +0 -11
- data/test/stub/message_channel_2.rb +0 -12
- data/test/stub/message_channel_3.rb +0 -19
- data/test/stub/rails_apps/3.0/empty/Gemfile.lock +0 -73
- data/test/stub/spawn_server.rb +0 -22
- metadata.gz.asc +0 -12
@@ -23,7 +23,7 @@
|
|
23
23
|
// Note that THIS HEADER MUST NOT INCLUDE ANY OTHER HEADERS:
|
24
24
|
// not even std library ones! Doing so may turn the warning
|
25
25
|
// off too late to be of any use. For example the VC++ C4996
|
26
|
-
// warning can be
|
26
|
+
// warning can be emitted from <iosfwd> if that header is included
|
27
27
|
// before or by this one :-(
|
28
28
|
//
|
29
29
|
|
@@ -0,0 +1,177 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
|
11
|
+
#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
|
12
|
+
#define BOOST_CONTAINER_CONTAINER_FWD_HPP
|
13
|
+
|
14
|
+
#if (defined _MSC_VER) && (_MSC_VER >= 1200)
|
15
|
+
# pragma once
|
16
|
+
#endif
|
17
|
+
|
18
|
+
//////////////////////////////////////////////////////////////////////////////
|
19
|
+
// Standard predeclarations
|
20
|
+
//////////////////////////////////////////////////////////////////////////////
|
21
|
+
|
22
|
+
/// @cond
|
23
|
+
|
24
|
+
namespace boost{
|
25
|
+
namespace intrusive{
|
26
|
+
//Create namespace to avoid compilation errors
|
27
|
+
}}
|
28
|
+
|
29
|
+
namespace boost{ namespace container{ namespace container_detail{
|
30
|
+
|
31
|
+
namespace bi = boost::intrusive;
|
32
|
+
|
33
|
+
}}}
|
34
|
+
|
35
|
+
#include <utility>
|
36
|
+
#include <memory>
|
37
|
+
#include <functional>
|
38
|
+
#include <iosfwd>
|
39
|
+
#include <string>
|
40
|
+
|
41
|
+
/// @endcond
|
42
|
+
|
43
|
+
//////////////////////////////////////////////////////////////////////////////
|
44
|
+
// Containers
|
45
|
+
//////////////////////////////////////////////////////////////////////////////
|
46
|
+
|
47
|
+
namespace boost {
|
48
|
+
namespace container {
|
49
|
+
|
50
|
+
//vector class
|
51
|
+
template <class T
|
52
|
+
,class A = std::allocator<T> >
|
53
|
+
class vector;
|
54
|
+
|
55
|
+
//vector class
|
56
|
+
template <class T
|
57
|
+
,class A = std::allocator<T> >
|
58
|
+
class stable_vector;
|
59
|
+
|
60
|
+
//vector class
|
61
|
+
template <class T
|
62
|
+
,class A = std::allocator<T> >
|
63
|
+
class deque;
|
64
|
+
|
65
|
+
//list class
|
66
|
+
template <class T
|
67
|
+
,class A = std::allocator<T> >
|
68
|
+
class list;
|
69
|
+
|
70
|
+
//slist class
|
71
|
+
template <class T
|
72
|
+
,class A = std::allocator<T> >
|
73
|
+
class slist;
|
74
|
+
|
75
|
+
//set class
|
76
|
+
template <class T
|
77
|
+
,class Pred = std::less<T>
|
78
|
+
,class A = std::allocator<T> >
|
79
|
+
class set;
|
80
|
+
|
81
|
+
//multiset class
|
82
|
+
template <class T
|
83
|
+
,class Pred = std::less<T>
|
84
|
+
,class A = std::allocator<T> >
|
85
|
+
class multiset;
|
86
|
+
|
87
|
+
//map class
|
88
|
+
template <class Key
|
89
|
+
,class T
|
90
|
+
,class Pred = std::less<Key>
|
91
|
+
,class A = std::allocator<std::pair<const Key, T> > >
|
92
|
+
class map;
|
93
|
+
|
94
|
+
//multimap class
|
95
|
+
template <class Key
|
96
|
+
,class T
|
97
|
+
,class Pred = std::less<Key>
|
98
|
+
,class A = std::allocator<std::pair<const Key, T> > >
|
99
|
+
class multimap;
|
100
|
+
|
101
|
+
//flat_set class
|
102
|
+
template <class T
|
103
|
+
,class Pred = std::less<T>
|
104
|
+
,class A = std::allocator<T> >
|
105
|
+
class flat_set;
|
106
|
+
|
107
|
+
//flat_multiset class
|
108
|
+
template <class T
|
109
|
+
,class Pred = std::less<T>
|
110
|
+
,class A = std::allocator<T> >
|
111
|
+
class flat_multiset;
|
112
|
+
|
113
|
+
//flat_map class
|
114
|
+
template <class Key
|
115
|
+
,class T
|
116
|
+
,class Pred = std::less<Key>
|
117
|
+
,class A = std::allocator<std::pair<Key, T> > >
|
118
|
+
class flat_map;
|
119
|
+
|
120
|
+
//flat_multimap class
|
121
|
+
template <class Key
|
122
|
+
,class T
|
123
|
+
,class Pred = std::less<Key>
|
124
|
+
,class A = std::allocator<std::pair<Key, T> > >
|
125
|
+
class flat_multimap;
|
126
|
+
|
127
|
+
//basic_string class
|
128
|
+
template <class CharT
|
129
|
+
,class Traits = std::char_traits<CharT>
|
130
|
+
,class A = std::allocator<CharT> >
|
131
|
+
class basic_string;
|
132
|
+
|
133
|
+
//! Type used to tag that the input range is
|
134
|
+
//! guaranteed to be ordered
|
135
|
+
struct ordered_range_impl_t {};
|
136
|
+
|
137
|
+
//! Type used to tag that the input range is
|
138
|
+
//! guaranteed to be ordered and unique
|
139
|
+
struct ordered_unique_range_impl_t{};
|
140
|
+
|
141
|
+
/// @cond
|
142
|
+
|
143
|
+
typedef ordered_range_impl_t * ordered_range_t;
|
144
|
+
typedef ordered_unique_range_impl_t *ordered_unique_range_t;
|
145
|
+
|
146
|
+
/// @endcond
|
147
|
+
|
148
|
+
//! Value used to tag that the input range is
|
149
|
+
//! guaranteed to be ordered
|
150
|
+
static const ordered_range_t ordered_range = 0;
|
151
|
+
|
152
|
+
//! Value used to tag that the input range is
|
153
|
+
//! guaranteed to be ordered and unique
|
154
|
+
static const ordered_unique_range_t ordered_unique_range = 0;
|
155
|
+
|
156
|
+
/// @cond
|
157
|
+
|
158
|
+
namespace detail_really_deep_namespace {
|
159
|
+
|
160
|
+
//Otherwise, gcc issues a warning of previously defined
|
161
|
+
//anonymous_instance and unique_instance
|
162
|
+
struct dummy
|
163
|
+
{
|
164
|
+
dummy()
|
165
|
+
{
|
166
|
+
(void)ordered_range;
|
167
|
+
(void)ordered_unique_range;
|
168
|
+
}
|
169
|
+
};
|
170
|
+
|
171
|
+
} //detail_really_deep_namespace {
|
172
|
+
|
173
|
+
/// @endcond
|
174
|
+
|
175
|
+
}} //namespace boost { namespace container {
|
176
|
+
|
177
|
+
#endif //#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
|
data/ext/boost/cstdint.hpp
CHANGED
@@ -137,10 +137,8 @@ namespace boost
|
|
137
137
|
|
138
138
|
} // namespace boost
|
139
139
|
|
140
|
-
#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) ||
|
141
|
-
|
142
|
-
// FreeBSD, Tru64 and Solaris 9 have an <inttypes.h> that contains much of
|
143
|
-
// what we need.
|
140
|
+
#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS) || defined(__SOLARIS9__) || defined(__NetBSD__)
|
141
|
+
// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
|
144
142
|
# include <inttypes.h>
|
145
143
|
|
146
144
|
namespace boost {
|
@@ -258,20 +256,27 @@ namespace boost
|
|
258
256
|
|
259
257
|
// 32-bit types -----------------------------------------------------------//
|
260
258
|
|
261
|
-
# if
|
262
|
-
typedef long int32_t;
|
263
|
-
typedef long int_least32_t;
|
264
|
-
typedef long int_fast32_t;
|
265
|
-
typedef unsigned long uint32_t;
|
266
|
-
typedef unsigned long uint_least32_t;
|
267
|
-
typedef unsigned long uint_fast32_t;
|
268
|
-
# elif UINT_MAX == 0xffffffff
|
259
|
+
# if UINT_MAX == 0xffffffff
|
269
260
|
typedef int int32_t;
|
270
261
|
typedef int int_least32_t;
|
271
262
|
typedef int int_fast32_t;
|
272
263
|
typedef unsigned int uint32_t;
|
273
264
|
typedef unsigned int uint_least32_t;
|
274
265
|
typedef unsigned int uint_fast32_t;
|
266
|
+
# elif (USHRT_MAX == 0xffffffff)
|
267
|
+
typedef short int32_t;
|
268
|
+
typedef short int_least32_t;
|
269
|
+
typedef short int_fast32_t;
|
270
|
+
typedef unsigned short uint32_t;
|
271
|
+
typedef unsigned short uint_least32_t;
|
272
|
+
typedef unsigned short uint_fast32_t;
|
273
|
+
# elif ULONG_MAX == 0xffffffff
|
274
|
+
typedef long int32_t;
|
275
|
+
typedef long int_least32_t;
|
276
|
+
typedef long int_fast32_t;
|
277
|
+
typedef unsigned long uint32_t;
|
278
|
+
typedef unsigned long uint_least32_t;
|
279
|
+
typedef unsigned long uint_fast32_t;
|
275
280
|
# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
|
276
281
|
// Integers are 64 bits on the MTA / XMT
|
277
282
|
typedef __int32 int32_t;
|
@@ -28,7 +28,7 @@ namespace detail
|
|
28
28
|
inline void current_function_helper()
|
29
29
|
{
|
30
30
|
|
31
|
-
#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600))
|
31
|
+
#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)
|
32
32
|
|
33
33
|
# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
|
34
34
|
|
@@ -65,3 +65,4 @@ inline void current_function_helper()
|
|
65
65
|
} // namespace boost
|
66
66
|
|
67
67
|
#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
68
|
+
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* Boost Software License, Version 1.0. (See accompanying
|
7
7
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
8
8
|
* Author: Jeff Garland, Bart Garst
|
9
|
-
* $Date:
|
9
|
+
* $Date: 2012-01-30 21:30:03 -0500 (Mon, 30 Jan 2012) $
|
10
10
|
*/
|
11
11
|
|
12
12
|
|
@@ -57,7 +57,15 @@ namespace date_time {
|
|
57
57
|
static std::tm* localtime(const std::time_t* t, std::tm* result)
|
58
58
|
{
|
59
59
|
// localtime_r() not in namespace std???
|
60
|
+
#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64
|
61
|
+
std::tm tmp;
|
62
|
+
if(!localtime_r(t,&tmp))
|
63
|
+
result = 0;
|
64
|
+
else
|
65
|
+
*result = tmp;
|
66
|
+
#else
|
60
67
|
result = localtime_r(t, result);
|
68
|
+
#endif
|
61
69
|
if (!result)
|
62
70
|
boost::throw_exception(std::runtime_error("could not convert calendar time to local time"));
|
63
71
|
return result;
|
@@ -67,7 +75,15 @@ namespace date_time {
|
|
67
75
|
static std::tm* gmtime(const std::time_t* t, std::tm* result)
|
68
76
|
{
|
69
77
|
// gmtime_r() not in namespace std???
|
78
|
+
#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64
|
79
|
+
std::tm tmp;
|
80
|
+
if(!gmtime_r(t,&tmp))
|
81
|
+
result = 0;
|
82
|
+
else
|
83
|
+
*result = tmp;
|
84
|
+
#else
|
70
85
|
result = gmtime_r(t, result);
|
86
|
+
#endif
|
71
87
|
if (!result)
|
72
88
|
boost::throw_exception(std::runtime_error("could not convert calendar time to UTC time"));
|
73
89
|
return result;
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* Subject to the Boost Software License, Version 1.0. (See accompanying
|
6
6
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
7
7
|
* Author: Jeff Garland, Bart Garst
|
8
|
-
* $Date:
|
8
|
+
* $Date: 2011-07-26 13:40:21 -0400 (Tue, 26 Jul 2011) $
|
9
9
|
*/
|
10
10
|
|
11
11
|
#include <cstdlib>
|
@@ -118,20 +118,18 @@ namespace std {
|
|
118
118
|
*
|
119
119
|
*/
|
120
120
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
#
|
129
|
-
#
|
130
|
-
#
|
131
|
-
#
|
132
|
-
#
|
133
|
-
# endif // DYN_LINK
|
134
|
-
#endif // BOOST_HAS_DECLSPEC
|
121
|
+
// we need to import/export our code only if the user has specifically
|
122
|
+
// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
|
123
|
+
// libraries to be dynamically linked, or BOOST_DATE_TIME_DYN_LINK
|
124
|
+
// if they want just this one to be dynamically liked:
|
125
|
+
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_DATE_TIME_DYN_LINK)
|
126
|
+
// export if this is our own source, otherwise import:
|
127
|
+
# ifdef BOOST_DATE_TIME_SOURCE
|
128
|
+
# define BOOST_DATE_TIME_DECL BOOST_SYMBOL_EXPORT
|
129
|
+
# else
|
130
|
+
# define BOOST_DATE_TIME_DECL BOOST_SYMBOL_IMPORT
|
131
|
+
# endif // BOOST_DATE_TIME_SOURCE
|
132
|
+
#endif // DYN_LINK
|
135
133
|
//
|
136
134
|
// if BOOST_WHATEVER_DECL isn't defined yet define it now:
|
137
135
|
#ifndef BOOST_DATE_TIME_DECL
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* Boost Software License, Version 1.0. (See accompanying
|
7
7
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
8
8
|
* Author: Jeff Garland, Bart Garst
|
9
|
-
* $Date:
|
9
|
+
* $Date: 2012-01-30 21:30:03 -0500 (Mon, 30 Jan 2012) $
|
10
10
|
*/
|
11
11
|
|
12
12
|
#include "boost/date_time/iso_format.hpp"
|
@@ -79,7 +79,13 @@ namespace date_time {
|
|
79
79
|
{
|
80
80
|
typedef typename ymd_type::month_type month_type;
|
81
81
|
std::basic_ostringstream<charT> ss;
|
82
|
+
|
83
|
+
// Temporarily switch to classic locale to prevent possible formatting
|
84
|
+
// of year with comma or other character (for example 2,008).
|
85
|
+
ss.imbue(std::locale::classic());
|
82
86
|
ss << ymd.year;
|
87
|
+
ss.imbue(std::locale());
|
88
|
+
|
83
89
|
if (format_type::has_date_sep_chars()) {
|
84
90
|
ss << format_type::month_sep_char();
|
85
91
|
}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* Boost Software License, Version 1.0. (See accompanying
|
7
7
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
8
8
|
* Author: Jeff Garland, Bart Garst
|
9
|
-
* $Date:
|
9
|
+
* $Date: 2012-01-30 21:30:03 -0500 (Mon, 30 Jan 2012) $
|
10
10
|
*/
|
11
11
|
|
12
12
|
/*! @file filetime_functions.hpp
|
@@ -73,12 +73,12 @@ namespace winapi {
|
|
73
73
|
file_time ft_utc;
|
74
74
|
GetSystemTimeAsFileTime(&ft_utc);
|
75
75
|
FileTimeToLocalFileTime(&ft_utc, &ft);
|
76
|
-
#elif defined(
|
76
|
+
#elif defined(BOOST_HAS_GETSYSTEMTIMEASFILETIME)
|
77
|
+
GetSystemTimeAsFileTime(&ft);
|
78
|
+
#else
|
77
79
|
system_time st;
|
78
80
|
GetSystemTime(&st);
|
79
81
|
SystemTimeToFileTime(&st, &ft);
|
80
|
-
#else
|
81
|
-
GetSystemTimeAsFileTime(&ft);
|
82
82
|
#endif
|
83
83
|
}
|
84
84
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* Boost Software License, Version 1.0. (See accompanying
|
4
4
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
5
5
|
* Author: Jeff Garland, Bart Garst
|
6
|
-
* $Date:
|
6
|
+
* $Date: 2012-01-30 21:30:03 -0500 (Mon, 30 Jan 2012) $
|
7
7
|
*/
|
8
8
|
|
9
9
|
#ifndef NO_BOOST_DATE_TIME_INLINE
|
@@ -47,7 +47,7 @@ namespace date_time {
|
|
47
47
|
return week;
|
48
48
|
}
|
49
49
|
|
50
|
-
if (
|
50
|
+
if (week == 53) {
|
51
51
|
if((day==6) ||(day == 5 && is_leap_year(ymd.year))) {
|
52
52
|
return week; //under these circumstances week == 53.
|
53
53
|
} else {
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* Boost Software License, Version 1.0. (See accompanying
|
7
7
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
8
8
|
* Author: Jeff Garland
|
9
|
-
* $Date:
|
9
|
+
* $Date: 2012-01-30 21:30:03 -0500 (Mon, 30 Jan 2012) $
|
10
10
|
*/
|
11
11
|
|
12
12
|
#include <sstream>
|
@@ -50,8 +50,8 @@ gather_month_strings(const std::locale& locale, bool short_strings=true)
|
|
50
50
|
//grab the needed strings by using the locale to
|
51
51
|
//output each month
|
52
52
|
const charT* p_outfmt = outfmt.c_str(), *p_outfmt_end = p_outfmt + outfmt.size();
|
53
|
+
tm tm_value = {};
|
53
54
|
for (int m=0; m < 12; m++) {
|
54
|
-
tm tm_value;
|
55
55
|
tm_value.tm_mon = m;
|
56
56
|
stringstream_type ss;
|
57
57
|
ostream_iter_type oitr(ss);
|
@@ -103,8 +103,8 @@ gather_weekday_strings(const std::locale& locale, bool short_strings=true)
|
|
103
103
|
//grab the needed strings by using the locale to
|
104
104
|
//output each month / weekday
|
105
105
|
const charT* p_outfmt = outfmt.c_str(), *p_outfmt_end = p_outfmt + outfmt.size();
|
106
|
+
tm tm_value = {};
|
106
107
|
for (int i=0; i < 7; i++) {
|
107
|
-
tm tm_value;
|
108
108
|
tm_value.tm_wday = i;
|
109
109
|
stringstream_type ss;
|
110
110
|
ostream_iter_type oitr(ss);
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* Boost Software License, Version 1.0. (See accompanying
|
8
8
|
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
9
9
|
* Author: Martin Andrian, Jeff Garland, Bart Garst
|
10
|
-
* $Date:
|
10
|
+
* $Date: 2012-01-30 21:30:03 -0500 (Mon, 30 Jan 2012) $
|
11
11
|
*/
|
12
12
|
|
13
13
|
#include <cctype>
|
@@ -244,22 +244,22 @@ namespace date_time {
|
|
244
244
|
#endif
|
245
245
|
|
246
246
|
//! sets default formats for ptime, local_date_time, and time_duration
|
247
|
-
explicit time_facet(::size_t
|
248
|
-
: base_type(default_time_format, period_formatter_type(), special_values_formatter_type(), date_gen_formatter_type(),
|
247
|
+
explicit time_facet(::size_t ref_arg = 0)
|
248
|
+
: base_type(default_time_format, period_formatter_type(), special_values_formatter_type(), date_gen_formatter_type(), ref_arg),
|
249
249
|
m_time_duration_format(string_type(duration_sign_negative_only) + default_time_duration_format)
|
250
250
|
{}
|
251
251
|
|
252
252
|
//! Construct the facet with an explicitly specified format
|
253
|
-
explicit time_facet(const char_type*
|
254
|
-
period_formatter_type
|
253
|
+
explicit time_facet(const char_type* format_arg,
|
254
|
+
period_formatter_type period_formatter_arg = period_formatter_type(),
|
255
255
|
const special_values_formatter_type& special_value_formatter = special_values_formatter_type(),
|
256
256
|
date_gen_formatter_type dg_formatter = date_gen_formatter_type(),
|
257
|
-
::size_t
|
258
|
-
: base_type(
|
259
|
-
|
257
|
+
::size_t ref_arg = 0)
|
258
|
+
: base_type(format_arg,
|
259
|
+
period_formatter_arg,
|
260
260
|
special_value_formatter,
|
261
261
|
dg_formatter,
|
262
|
-
|
262
|
+
ref_arg),
|
263
263
|
m_time_duration_format(string_type(duration_sign_negative_only) + default_time_duration_format)
|
264
264
|
{}
|
265
265
|
|
@@ -278,56 +278,56 @@ namespace date_time {
|
|
278
278
|
this->m_format = iso_time_format_extended_specifier;
|
279
279
|
}
|
280
280
|
|
281
|
-
OutItrT put(OutItrT
|
282
|
-
std::ios_base&
|
283
|
-
char_type
|
284
|
-
const time_type&
|
281
|
+
OutItrT put(OutItrT next_arg,
|
282
|
+
std::ios_base& ios_arg,
|
283
|
+
char_type fill_arg,
|
284
|
+
const time_type& time_arg) const
|
285
285
|
{
|
286
|
-
if (
|
287
|
-
return this->do_put_special(
|
288
|
-
|
286
|
+
if (time_arg.is_special()) {
|
287
|
+
return this->do_put_special(next_arg, ios_arg, fill_arg,
|
288
|
+
time_arg.date().as_special());
|
289
289
|
}
|
290
|
-
string_type
|
290
|
+
string_type local_format(this->m_format);
|
291
291
|
|
292
292
|
// %T and %R have to be replaced here since they are not standard
|
293
|
-
boost::algorithm::replace_all(
|
293
|
+
boost::algorithm::replace_all(local_format,
|
294
294
|
boost::as_literal(formats_type::full_24_hour_time_format),
|
295
295
|
boost::as_literal(formats_type::full_24_hour_time_expanded_format));
|
296
|
-
boost::algorithm::replace_all(
|
296
|
+
boost::algorithm::replace_all(local_format,
|
297
297
|
boost::as_literal(formats_type::short_24_hour_time_format),
|
298
298
|
boost::as_literal(formats_type::short_24_hour_time_expanded_format));
|
299
299
|
|
300
300
|
string_type frac_str;
|
301
|
-
if (
|
301
|
+
if (local_format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
|
302
302
|
// replace %s with %S.nnn
|
303
303
|
frac_str =
|
304
|
-
fractional_seconds_as_string(
|
305
|
-
char_type sep = std::use_facet<std::numpunct<char_type> >(
|
304
|
+
fractional_seconds_as_string(time_arg.time_of_day(), false);
|
305
|
+
char_type sep = std::use_facet<std::numpunct<char_type> >(ios_arg.getloc()).decimal_point();
|
306
306
|
|
307
307
|
string_type replace_string(seconds_format);
|
308
308
|
replace_string += sep;
|
309
309
|
replace_string += frac_str;
|
310
|
-
boost::algorithm::replace_all(
|
310
|
+
boost::algorithm::replace_all(local_format,
|
311
311
|
seconds_with_fractional_seconds_format,
|
312
312
|
replace_string);
|
313
313
|
}
|
314
314
|
/* NOTE: replacing posix_zone_string_format must be done BEFORE
|
315
315
|
* zone_name_format: "%ZP" & "%Z", if Z is checked first it will
|
316
316
|
* incorrectly replace a zone_name where a posix_string should go */
|
317
|
-
if (
|
318
|
-
if(
|
317
|
+
if (local_format.find(posix_zone_string_format) != string_type::npos) {
|
318
|
+
if(time_arg.zone_abbrev().empty()) {
|
319
319
|
// if zone_abbrev() returns an empty string, we want to
|
320
320
|
// erase posix_zone_string_format from format
|
321
|
-
boost::algorithm::erase_all(
|
321
|
+
boost::algorithm::erase_all(local_format, posix_zone_string_format);
|
322
322
|
}
|
323
323
|
else{
|
324
|
-
boost::algorithm::replace_all(
|
324
|
+
boost::algorithm::replace_all(local_format,
|
325
325
|
posix_zone_string_format,
|
326
|
-
|
326
|
+
time_arg.zone_as_posix_string());
|
327
327
|
}
|
328
328
|
}
|
329
|
-
if (
|
330
|
-
if(
|
329
|
+
if (local_format.find(zone_name_format) != string_type::npos) {
|
330
|
+
if(time_arg.zone_name().empty()) {
|
331
331
|
/* TODO: this'll probably create problems if a user places
|
332
332
|
* the zone_*_format flag in the format with a ptime. This
|
333
333
|
* code removes the flag from the default formats */
|
@@ -336,16 +336,16 @@ namespace date_time {
|
|
336
336
|
// erase zone_name_format & one preceeding space
|
337
337
|
std::basic_ostringstream<char_type> ss;
|
338
338
|
ss << ' ' << zone_name_format;
|
339
|
-
boost::algorithm::erase_all(
|
339
|
+
boost::algorithm::erase_all(local_format, ss.str());
|
340
340
|
}
|
341
341
|
else{
|
342
|
-
boost::algorithm::replace_all(
|
342
|
+
boost::algorithm::replace_all(local_format,
|
343
343
|
zone_name_format,
|
344
|
-
|
344
|
+
time_arg.zone_name());
|
345
345
|
}
|
346
346
|
}
|
347
|
-
if (
|
348
|
-
if(
|
347
|
+
if (local_format.find(zone_abbrev_format) != string_type::npos) {
|
348
|
+
if(time_arg.zone_abbrev(false).empty()) {
|
349
349
|
/* TODO: this'll probably create problems if a user places
|
350
350
|
* the zone_*_format flag in the format with a ptime. This
|
351
351
|
* code removes the flag from the default formats */
|
@@ -354,93 +354,93 @@ namespace date_time {
|
|
354
354
|
// erase zone_abbrev_format & one preceeding space
|
355
355
|
std::basic_ostringstream<char_type> ss;
|
356
356
|
ss << ' ' << zone_abbrev_format;
|
357
|
-
boost::algorithm::erase_all(
|
357
|
+
boost::algorithm::erase_all(local_format, ss.str());
|
358
358
|
}
|
359
359
|
else{
|
360
|
-
boost::algorithm::replace_all(
|
360
|
+
boost::algorithm::replace_all(local_format,
|
361
361
|
zone_abbrev_format,
|
362
|
-
|
362
|
+
time_arg.zone_abbrev(false));
|
363
363
|
}
|
364
364
|
}
|
365
|
-
if (
|
366
|
-
if(
|
365
|
+
if (local_format.find(zone_iso_extended_format) != string_type::npos) {
|
366
|
+
if(time_arg.zone_name(true).empty()) {
|
367
367
|
/* TODO: this'll probably create problems if a user places
|
368
368
|
* the zone_*_format flag in the format with a ptime. This
|
369
369
|
* code removes the flag from the default formats */
|
370
370
|
|
371
371
|
// if zone_name() returns an empty string, we want to
|
372
372
|
// erase zone_iso_extended_format from format
|
373
|
-
boost::algorithm::erase_all(
|
373
|
+
boost::algorithm::erase_all(local_format, zone_iso_extended_format);
|
374
374
|
}
|
375
375
|
else{
|
376
|
-
boost::algorithm::replace_all(
|
376
|
+
boost::algorithm::replace_all(local_format,
|
377
377
|
zone_iso_extended_format,
|
378
|
-
|
378
|
+
time_arg.zone_name(true));
|
379
379
|
}
|
380
380
|
}
|
381
381
|
|
382
|
-
if (
|
383
|
-
if(
|
382
|
+
if (local_format.find(zone_iso_format) != string_type::npos) {
|
383
|
+
if(time_arg.zone_abbrev(true).empty()) {
|
384
384
|
/* TODO: this'll probably create problems if a user places
|
385
385
|
* the zone_*_format flag in the format with a ptime. This
|
386
386
|
* code removes the flag from the default formats */
|
387
387
|
|
388
388
|
// if zone_abbrev() returns an empty string, we want to
|
389
389
|
// erase zone_iso_format from format
|
390
|
-
boost::algorithm::erase_all(
|
390
|
+
boost::algorithm::erase_all(local_format, zone_iso_format);
|
391
391
|
}
|
392
392
|
else{
|
393
|
-
boost::algorithm::replace_all(
|
393
|
+
boost::algorithm::replace_all(local_format,
|
394
394
|
zone_iso_format,
|
395
|
-
|
395
|
+
time_arg.zone_abbrev(true));
|
396
396
|
}
|
397
397
|
}
|
398
|
-
if (
|
398
|
+
if (local_format.find(fractional_seconds_format) != string_type::npos) {
|
399
399
|
// replace %f with nnnnnnn
|
400
400
|
if (frac_str.empty()) {
|
401
|
-
frac_str = fractional_seconds_as_string(
|
401
|
+
frac_str = fractional_seconds_as_string(time_arg.time_of_day(), false);
|
402
402
|
}
|
403
|
-
boost::algorithm::replace_all(
|
403
|
+
boost::algorithm::replace_all(local_format,
|
404
404
|
fractional_seconds_format,
|
405
405
|
frac_str);
|
406
406
|
}
|
407
407
|
|
408
|
-
if (
|
408
|
+
if (local_format.find(fractional_seconds_or_none_format) != string_type::npos) {
|
409
409
|
// replace %F with nnnnnnn or nothing if fs == 0
|
410
410
|
frac_str =
|
411
|
-
fractional_seconds_as_string(
|
411
|
+
fractional_seconds_as_string(time_arg.time_of_day(), true);
|
412
412
|
if (frac_str.size()) {
|
413
|
-
char_type sep = std::use_facet<std::numpunct<char_type> >(
|
413
|
+
char_type sep = std::use_facet<std::numpunct<char_type> >(ios_arg.getloc()).decimal_point();
|
414
414
|
string_type replace_string;
|
415
415
|
replace_string += sep;
|
416
416
|
replace_string += frac_str;
|
417
|
-
boost::algorithm::replace_all(
|
417
|
+
boost::algorithm::replace_all(local_format,
|
418
418
|
fractional_seconds_or_none_format,
|
419
419
|
replace_string);
|
420
420
|
}
|
421
421
|
else {
|
422
|
-
boost::algorithm::erase_all(
|
422
|
+
boost::algorithm::erase_all(local_format,
|
423
423
|
fractional_seconds_or_none_format);
|
424
424
|
}
|
425
425
|
}
|
426
426
|
|
427
|
-
return this->do_put_tm(
|
428
|
-
to_tm(
|
427
|
+
return this->do_put_tm(next_arg, ios_arg, fill_arg,
|
428
|
+
to_tm(time_arg), local_format);
|
429
429
|
}
|
430
430
|
|
431
431
|
//! put function for time_duration
|
432
|
-
OutItrT put(OutItrT
|
433
|
-
std::ios_base&
|
434
|
-
char_type
|
435
|
-
const time_duration_type&
|
432
|
+
OutItrT put(OutItrT next_arg,
|
433
|
+
std::ios_base& ios_arg,
|
434
|
+
char_type fill_arg,
|
435
|
+
const time_duration_type& time_dur_arg) const
|
436
436
|
{
|
437
|
-
if (
|
438
|
-
return this->do_put_special(
|
439
|
-
|
437
|
+
if (time_dur_arg.is_special()) {
|
438
|
+
return this->do_put_special(next_arg, ios_arg, fill_arg,
|
439
|
+
time_dur_arg.get_rep().as_special());
|
440
440
|
}
|
441
441
|
|
442
442
|
string_type format(m_time_duration_format);
|
443
|
-
if (
|
443
|
+
if (time_dur_arg.is_negative()) {
|
444
444
|
// replace %- with minus sign. Should we use the numpunct facet?
|
445
445
|
boost::algorithm::replace_all(format,
|
446
446
|
duration_sign_negative_only,
|
@@ -477,7 +477,7 @@ namespace date_time {
|
|
477
477
|
*/
|
478
478
|
string_type hours_str;
|
479
479
|
if (format.find(unrestricted_hours_format) != string_type::npos) {
|
480
|
-
hours_str = hours_as_string(
|
480
|
+
hours_str = hours_as_string(time_dur_arg);
|
481
481
|
boost::algorithm::replace_all(format, unrestricted_hours_format, hours_str);
|
482
482
|
}
|
483
483
|
// We still have to process restricted hours format specifier. In order to
|
@@ -485,7 +485,7 @@ namespace date_time {
|
|
485
485
|
// restrict the stringified hours length to 2 characters.
|
486
486
|
if (format.find(hours_format) != string_type::npos) {
|
487
487
|
if (hours_str.empty())
|
488
|
-
hours_str = hours_as_string(
|
488
|
+
hours_str = hours_as_string(time_dur_arg);
|
489
489
|
BOOST_ASSERT(hours_str.length() <= 2);
|
490
490
|
boost::algorithm::replace_all(format, hours_format, hours_str);
|
491
491
|
}
|
@@ -494,8 +494,8 @@ namespace date_time {
|
|
494
494
|
if (format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
|
495
495
|
// replace %s with %S.nnn
|
496
496
|
frac_str =
|
497
|
-
fractional_seconds_as_string(
|
498
|
-
char_type sep = std::use_facet<std::numpunct<char_type> >(
|
497
|
+
fractional_seconds_as_string(time_dur_arg, false);
|
498
|
+
char_type sep = std::use_facet<std::numpunct<char_type> >(ios_arg.getloc()).decimal_point();
|
499
499
|
|
500
500
|
string_type replace_string(seconds_format);
|
501
501
|
replace_string += sep;
|
@@ -507,7 +507,7 @@ namespace date_time {
|
|
507
507
|
if (format.find(fractional_seconds_format) != string_type::npos) {
|
508
508
|
// replace %f with nnnnnnn
|
509
509
|
if (!frac_str.size()) {
|
510
|
-
frac_str = fractional_seconds_as_string(
|
510
|
+
frac_str = fractional_seconds_as_string(time_dur_arg, false);
|
511
511
|
}
|
512
512
|
boost::algorithm::replace_all(format,
|
513
513
|
fractional_seconds_format,
|
@@ -517,9 +517,9 @@ namespace date_time {
|
|
517
517
|
if (format.find(fractional_seconds_or_none_format) != string_type::npos) {
|
518
518
|
// replace %F with nnnnnnn or nothing if fs == 0
|
519
519
|
frac_str =
|
520
|
-
fractional_seconds_as_string(
|
520
|
+
fractional_seconds_as_string(time_dur_arg, true);
|
521
521
|
if (frac_str.size()) {
|
522
|
-
char_type sep = std::use_facet<std::numpunct<char_type> >(
|
522
|
+
char_type sep = std::use_facet<std::numpunct<char_type> >(ios_arg.getloc()).decimal_point();
|
523
523
|
string_type replace_string;
|
524
524
|
replace_string += sep;
|
525
525
|
replace_string += frac_str;
|
@@ -533,14 +533,14 @@ namespace date_time {
|
|
533
533
|
}
|
534
534
|
}
|
535
535
|
|
536
|
-
return this->do_put_tm(
|
537
|
-
to_tm(
|
536
|
+
return this->do_put_tm(next_arg, ios_arg, fill_arg,
|
537
|
+
to_tm(time_dur_arg), format);
|
538
538
|
}
|
539
539
|
|
540
|
-
OutItrT put(OutItrT next, std::ios_base&
|
540
|
+
OutItrT put(OutItrT next, std::ios_base& ios_arg,
|
541
541
|
char_type fill, const period_type& p) const
|
542
542
|
{
|
543
|
-
return this->m_period_formatter.put_period(next,
|
543
|
+
return this->m_period_formatter.put_period(next, ios_arg, fill,p,*this);
|
544
544
|
}
|
545
545
|
|
546
546
|
|
@@ -548,11 +548,11 @@ namespace date_time {
|
|
548
548
|
|
549
549
|
static
|
550
550
|
string_type
|
551
|
-
fractional_seconds_as_string(const time_duration_type&
|
551
|
+
fractional_seconds_as_string(const time_duration_type& time_arg,
|
552
552
|
bool null_when_zero)
|
553
553
|
{
|
554
554
|
typename time_duration_type::fractional_seconds_type frac_sec =
|
555
|
-
|
555
|
+
time_arg.fractional_seconds();
|
556
556
|
|
557
557
|
if (null_when_zero && (frac_sec == 0)) {
|
558
558
|
return string_type();
|
@@ -566,9 +566,9 @@ namespace date_time {
|
|
566
566
|
|
567
567
|
static
|
568
568
|
string_type
|
569
|
-
hours_as_string(const time_duration_type&
|
569
|
+
hours_as_string(const time_duration_type& time_arg, int width = 2)
|
570
570
|
{
|
571
|
-
return integral_as_string(date_time::absolute_value(
|
571
|
+
return integral_as_string(date_time::absolute_value(time_arg.hours()), width);
|
572
572
|
}
|
573
573
|
|
574
574
|
template< typename IntT >
|
@@ -731,8 +731,8 @@ namespace date_time {
|
|
731
731
|
static std::locale::id id;
|
732
732
|
|
733
733
|
//! Constructor that takes a format string for a ptime
|
734
|
-
explicit time_input_facet(const string_type& format, ::size_t
|
735
|
-
: base_type(format,
|
734
|
+
explicit time_input_facet(const string_type& format, ::size_t ref_arg = 0)
|
735
|
+
: base_type(format, ref_arg),
|
736
736
|
m_time_duration_format(default_time_duration_format)
|
737
737
|
{ }
|
738
738
|
|
@@ -741,19 +741,19 @@ namespace date_time {
|
|
741
741
|
const special_values_parser_type& sv_parser,
|
742
742
|
const period_parser_type& per_parser,
|
743
743
|
const date_gen_parser_type& date_gen_parser,
|
744
|
-
::size_t
|
744
|
+
::size_t ref_arg = 0)
|
745
745
|
: base_type(format,
|
746
746
|
date_parser,
|
747
747
|
sv_parser,
|
748
748
|
per_parser,
|
749
749
|
date_gen_parser,
|
750
|
-
|
750
|
+
ref_arg),
|
751
751
|
m_time_duration_format(default_time_duration_format)
|
752
752
|
{}
|
753
753
|
|
754
754
|
//! sets default formats for ptime, local_date_time, and time_duration
|
755
|
-
explicit time_input_facet(::size_t
|
756
|
-
: base_type(default_time_input_format,
|
755
|
+
explicit time_input_facet(::size_t ref_arg = 0)
|
756
|
+
: base_type(default_time_input_format, ref_arg),
|
757
757
|
m_time_duration_format(default_time_duration_format)
|
758
758
|
{ }
|
759
759
|
|
@@ -772,12 +772,12 @@ namespace date_time {
|
|
772
772
|
|
773
773
|
InItrT get(InItrT& sitr,
|
774
774
|
InItrT& stream_end,
|
775
|
-
std::ios_base&
|
775
|
+
std::ios_base& ios_arg,
|
776
776
|
period_type& p) const
|
777
777
|
{
|
778
778
|
p = this->m_period_parser.get_period(sitr,
|
779
779
|
stream_end,
|
780
|
-
|
780
|
+
ios_arg,
|
781
781
|
p,
|
782
782
|
time_duration_type::unit(),
|
783
783
|
*this);
|
@@ -789,7 +789,7 @@ namespace date_time {
|
|
789
789
|
|
790
790
|
InItrT get(InItrT& sitr,
|
791
791
|
InItrT& stream_end,
|
792
|
-
std::ios_base&
|
792
|
+
std::ios_base& ios_arg,
|
793
793
|
time_duration_type& td) const
|
794
794
|
{
|
795
795
|
// skip leading whitespace
|
@@ -813,10 +813,10 @@ namespace date_time {
|
|
813
813
|
typename time_duration_type::fractional_seconds_type frac(0);
|
814
814
|
|
815
815
|
typedef std::num_get<CharT, InItrT> num_get;
|
816
|
-
if(!std::has_facet<num_get>(
|
816
|
+
if(!std::has_facet<num_get>(ios_arg.getloc())) {
|
817
817
|
num_get* ng = new num_get();
|
818
|
-
std::locale loc = std::locale(
|
819
|
-
|
818
|
+
std::locale loc = std::locale(ios_arg.getloc(), ng);
|
819
|
+
ios_arg.imbue(loc);
|
820
820
|
}
|
821
821
|
|
822
822
|
const_itr itr(m_time_duration_format.begin());
|
@@ -928,27 +928,27 @@ namespace date_time {
|
|
928
928
|
//! Parses a time object from the input stream
|
929
929
|
InItrT get(InItrT& sitr,
|
930
930
|
InItrT& stream_end,
|
931
|
-
std::ios_base&
|
931
|
+
std::ios_base& ios_arg,
|
932
932
|
time_type& t) const
|
933
933
|
{
|
934
934
|
string_type tz_str;
|
935
|
-
return get(sitr, stream_end,
|
935
|
+
return get(sitr, stream_end, ios_arg, t, tz_str, false);
|
936
936
|
}
|
937
937
|
//! Expects a time_zone in the input stream
|
938
938
|
InItrT get_local_time(InItrT& sitr,
|
939
939
|
InItrT& stream_end,
|
940
|
-
std::ios_base&
|
940
|
+
std::ios_base& ios_arg,
|
941
941
|
time_type& t,
|
942
942
|
string_type& tz_str) const
|
943
943
|
{
|
944
|
-
return get(sitr, stream_end,
|
944
|
+
return get(sitr, stream_end, ios_arg, t, tz_str, true);
|
945
945
|
}
|
946
946
|
|
947
947
|
protected:
|
948
948
|
|
949
949
|
InItrT get(InItrT& sitr,
|
950
950
|
InItrT& stream_end,
|
951
|
-
std::ios_base&
|
951
|
+
std::ios_base& ios_arg,
|
952
952
|
time_type& t,
|
953
953
|
string_type& tz_str,
|
954
954
|
bool time_is_local) const
|
@@ -985,10 +985,10 @@ namespace date_time {
|
|
985
985
|
day_type t_day(1);
|
986
986
|
|
987
987
|
typedef std::num_get<CharT, InItrT> num_get;
|
988
|
-
if(!std::has_facet<num_get>(
|
988
|
+
if(!std::has_facet<num_get>(ios_arg.getloc())) {
|
989
989
|
num_get* ng = new num_get();
|
990
|
-
std::locale loc = std::locale(
|
991
|
-
|
990
|
+
std::locale loc = std::locale(ios_arg.getloc(), ng);
|
991
|
+
ios_arg.imbue(loc);
|
992
992
|
}
|
993
993
|
|
994
994
|
const_itr itr(this->m_format.begin());
|