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.

Files changed (835) hide show
  1. data/DEVELOPERS.TXT +4 -10
  2. data/NEWS +19 -27
  3. data/Rakefile +20 -19
  4. data/bin/passenger +3 -2
  5. data/bin/passenger-config +35 -5
  6. data/bin/passenger-install-apache2-module +12 -12
  7. data/bin/passenger-install-nginx-module +55 -38
  8. data/bin/passenger-memory-stats +3 -1
  9. data/bin/passenger-status +7 -35
  10. data/build/agents.rb +107 -21
  11. data/build/apache2.rb +11 -46
  12. data/build/basics.rb +61 -9
  13. data/build/common_library.rb +59 -142
  14. data/build/cxx_tests.rb +111 -110
  15. data/build/documentation.rb +33 -0
  16. data/build/misc.rb +30 -12
  17. data/build/nginx.rb +10 -39
  18. data/build/oxt_tests.rb +1 -0
  19. data/build/ruby_extension.rb +1 -5
  20. data/build/test_basics.rb +3 -2
  21. data/dev/copy_boost_headers.rb +2 -1
  22. data/doc/Architectural overview.html +49 -90
  23. data/doc/DebuggingAndStressTesting.txt.md +49 -0
  24. data/doc/Packaging.txt.md +254 -0
  25. data/doc/Security of user switching support.html +35 -66
  26. data/doc/Users guide Apache.html +588 -758
  27. data/doc/Users guide Apache.idmap.txt +253 -136
  28. data/doc/Users guide Apache.txt +154 -109
  29. data/doc/Users guide Nginx.html +544 -660
  30. data/doc/Users guide Nginx.idmap.txt +179 -91
  31. data/doc/Users guide Nginx.txt +192 -118
  32. data/doc/Users guide Standalone.html +65 -48
  33. data/doc/Users guide Standalone.idmap.txt +10 -2
  34. data/doc/Users guide Standalone.txt +4 -0
  35. data/doc/images/glyphicons-halflings-white.png +0 -0
  36. data/doc/images/glyphicons-halflings.png +0 -0
  37. data/doc/images/phusion_banner_small.png +0 -0
  38. data/doc/images/{smart-lv2.png → smart.png} +0 -0
  39. data/doc/images/{smart-lv2.svg → smart.svg} +0 -0
  40. data/doc/templates/bootstrap.min.css +397 -0
  41. data/doc/templates/markdown.html.erb +117 -0
  42. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +2 -1
  43. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +26 -48
  44. data/doc/users_guide_snippets/passenger_spawn_method.txt +18 -30
  45. data/doc/users_guide_snippets/support_information.txt +30 -0
  46. data/ext/apache2/Bucket.cpp +9 -26
  47. data/ext/apache2/Bucket.h +13 -10
  48. data/ext/apache2/Configuration.cpp +70 -58
  49. data/ext/apache2/Configuration.hpp +19 -47
  50. data/ext/apache2/DirectoryMapper.h +7 -7
  51. data/ext/apache2/Hooks.cpp +150 -313
  52. data/ext/boost/algorithm/string/detail/case_conv.hpp +4 -2
  53. data/ext/boost/algorithm/string/detail/find_format.hpp +20 -20
  54. data/ext/boost/algorithm/string/detail/find_format_all.hpp +23 -23
  55. data/ext/boost/algorithm/string/detail/find_format_store.hpp +2 -2
  56. data/ext/boost/algorithm/string/detail/formatter.hpp +25 -0
  57. data/ext/boost/algorithm/string/formatter.hpp +20 -3
  58. data/ext/boost/assert.hpp +85 -4
  59. data/ext/boost/bind/bind.hpp +1 -1
  60. data/ext/boost/concept/detail/backward_compatibility.hpp +1 -1
  61. data/ext/boost/concept_check.hpp +140 -64
  62. data/ext/boost/config.hpp +1 -1
  63. data/ext/boost/config/auto_link.hpp +8 -6
  64. data/ext/boost/config/compiler/borland.hpp +12 -2
  65. data/ext/boost/config/compiler/clang.hpp +89 -30
  66. data/ext/boost/config/compiler/codegear.hpp +3 -2
  67. data/ext/boost/config/compiler/common_edg.hpp +7 -5
  68. data/ext/boost/config/compiler/cray.hpp +61 -0
  69. data/ext/boost/config/compiler/digitalmars.hpp +9 -1
  70. data/ext/boost/config/compiler/gcc.hpp +33 -24
  71. data/ext/boost/config/compiler/gcc_xml.hpp +4 -0
  72. data/ext/boost/config/compiler/hp_acc.hpp +12 -1
  73. data/ext/boost/config/compiler/intel.hpp +78 -4
  74. data/ext/boost/config/compiler/metrowerks.hpp +4 -1
  75. data/ext/boost/config/compiler/mpw.hpp +4 -1
  76. data/ext/boost/config/compiler/nvcc.hpp +8 -66
  77. data/ext/boost/config/compiler/pathscale.hpp +80 -0
  78. data/ext/boost/config/compiler/pgi.hpp +5 -5
  79. data/ext/boost/config/compiler/sunpro_cc.hpp +4 -1
  80. data/ext/boost/config/compiler/vacpp.hpp +37 -13
  81. data/ext/boost/config/compiler/visualc.hpp +24 -11
  82. data/ext/boost/config/platform/bsd.hpp +1 -1
  83. data/ext/boost/config/platform/cray.hpp +18 -0
  84. data/ext/boost/config/platform/cygwin.hpp +10 -0
  85. data/ext/boost/config/platform/linux.hpp +5 -0
  86. data/ext/boost/config/platform/macos.hpp +5 -4
  87. data/ext/boost/config/platform/symbian.hpp +5 -2
  88. data/ext/boost/config/platform/vms.hpp +25 -0
  89. data/ext/boost/config/platform/win32.hpp +7 -1
  90. data/ext/boost/config/select_compiler_config.hpp +8 -25
  91. data/ext/boost/config/select_platform_config.hpp +8 -1
  92. data/ext/boost/config/select_stdlib_config.hpp +9 -1
  93. data/ext/boost/config/stdlib/dinkumware.hpp +6 -9
  94. data/ext/boost/config/stdlib/libcomo.hpp +1 -4
  95. data/ext/boost/config/stdlib/libcpp.hpp +36 -0
  96. data/ext/boost/config/stdlib/libstdcpp3.hpp +37 -11
  97. data/ext/boost/config/stdlib/modena.hpp +1 -4
  98. data/ext/boost/config/stdlib/msl.hpp +1 -4
  99. data/ext/boost/config/stdlib/roguewave.hpp +9 -6
  100. data/ext/boost/config/stdlib/sgi.hpp +12 -4
  101. data/ext/boost/config/stdlib/stlport.hpp +11 -4
  102. data/ext/boost/config/stdlib/vacpp.hpp +11 -4
  103. data/ext/boost/config/suffix.hpp +71 -6
  104. data/ext/boost/config/warning_disable.hpp +1 -1
  105. data/ext/boost/container/container_fwd.hpp +177 -0
  106. data/ext/boost/cstdint.hpp +17 -12
  107. data/ext/boost/current_function.hpp +2 -1
  108. data/ext/boost/date_time/c_time.hpp +17 -1
  109. data/ext/boost/date_time/compiler_config.hpp +13 -15
  110. data/ext/boost/date_time/date_formatting.hpp +7 -1
  111. data/ext/boost/date_time/filetime_functions.hpp +4 -4
  112. data/ext/boost/date_time/gregorian_calendar.ipp +2 -2
  113. data/ext/boost/date_time/strings_from_facet.hpp +3 -3
  114. data/ext/boost/date_time/time_facet.hpp +101 -101
  115. data/ext/boost/detail/endian.hpp +4 -2
  116. data/ext/boost/detail/fenv.hpp +74 -0
  117. data/ext/boost/detail/sp_typeinfo.hpp +6 -0
  118. data/ext/boost/exception/detail/clone_current_exception.hpp +47 -0
  119. data/ext/boost/exception/detail/exception_ptr.hpp +194 -122
  120. data/ext/boost/exception/detail/type_info.hpp +3 -3
  121. data/ext/boost/exception/diagnostic_information.hpp +37 -21
  122. data/ext/boost/exception/exception.hpp +21 -1
  123. data/ext/boost/exception/info.hpp +0 -1
  124. data/ext/boost/function.hpp +2 -2
  125. data/ext/boost/function/function_base.hpp +15 -9
  126. data/ext/boost/function/function_template.hpp +26 -48
  127. data/ext/boost/integer_fwd.hpp +0 -16
  128. data/ext/boost/integer_traits.hpp +2 -2
  129. data/ext/boost/iterator.hpp +1 -1
  130. data/ext/boost/iterator/iterator_adaptor.hpp +1 -7
  131. data/ext/boost/iterator/iterator_facade.hpp +13 -13
  132. data/ext/boost/iterator/transform_iterator.hpp +5 -20
  133. data/ext/boost/lexical_cast.hpp +1655 -673
  134. data/ext/boost/math/policies/policy.hpp +982 -0
  135. data/ext/boost/math/special_functions/detail/fp_traits.hpp +570 -0
  136. data/ext/boost/math/special_functions/detail/round_fwd.hpp +80 -0
  137. data/ext/boost/math/special_functions/fpclassify.hpp +533 -0
  138. data/ext/boost/math/special_functions/math_fwd.hpp +1070 -0
  139. data/ext/boost/math/special_functions/sign.hpp +145 -0
  140. data/ext/boost/math/tools/config.hpp +321 -0
  141. data/ext/boost/math/tools/promotion.hpp +150 -0
  142. data/ext/boost/math/tools/real_cast.hpp +29 -0
  143. data/ext/boost/math/tools/user.hpp +97 -0
  144. data/ext/boost/move/move.hpp +1222 -0
  145. data/ext/boost/mpl/O1_size.hpp +40 -0
  146. data/ext/boost/mpl/O1_size_fwd.hpp +24 -0
  147. data/ext/boost/mpl/advance.hpp +76 -0
  148. data/ext/boost/mpl/advance_fwd.hpp +28 -0
  149. data/ext/boost/mpl/at.hpp +52 -0
  150. data/ext/boost/mpl/at_fwd.hpp +24 -0
  151. data/ext/boost/mpl/aux_/O1_size_impl.hpp +87 -0
  152. data/ext/boost/mpl/aux_/advance_backward.hpp +128 -0
  153. data/ext/boost/mpl/aux_/advance_forward.hpp +127 -0
  154. data/ext/boost/mpl/aux_/arithmetic_op.hpp +92 -0
  155. data/ext/boost/mpl/aux_/at_impl.hpp +45 -0
  156. data/ext/boost/mpl/aux_/begin_end_impl.hpp +101 -0
  157. data/ext/boost/mpl/aux_/clear_impl.hpp +35 -0
  158. data/ext/boost/mpl/aux_/comparison_op.hpp +83 -0
  159. data/ext/boost/mpl/aux_/config/forwarding.hpp +27 -0
  160. data/ext/boost/mpl/aux_/config/typeof.hpp +38 -0
  161. data/ext/boost/mpl/aux_/contains_impl.hpp +61 -0
  162. data/ext/boost/mpl/aux_/find_if_pred.hpp +31 -0
  163. data/ext/boost/mpl/aux_/fold_impl.hpp +43 -0
  164. data/ext/boost/mpl/aux_/has_begin.hpp +23 -0
  165. data/ext/boost/mpl/aux_/has_size.hpp +23 -0
  166. data/ext/boost/mpl/aux_/has_tag.hpp +23 -0
  167. data/ext/boost/mpl/aux_/inserter_algorithm.hpp +159 -0
  168. data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +64 -0
  169. data/ext/boost/mpl/aux_/iter_apply.hpp +47 -0
  170. data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +210 -0
  171. data/ext/boost/mpl/aux_/iter_fold_impl.hpp +42 -0
  172. data/ext/boost/mpl/aux_/lambda_spec.hpp +49 -0
  173. data/ext/boost/mpl/aux_/largest_int.hpp +63 -0
  174. data/ext/boost/mpl/aux_/msvc_eti_base.hpp +77 -0
  175. data/ext/boost/mpl/aux_/msvc_type.hpp +62 -0
  176. data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +77 -0
  177. data/ext/boost/mpl/aux_/numeric_op.hpp +315 -0
  178. data/ext/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp +97 -0
  179. data/ext/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp +97 -0
  180. data/ext/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp +94 -0
  181. data/ext/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp +180 -0
  182. data/ext/boost/mpl/aux_/preprocessed/gcc/greater.hpp +94 -0
  183. data/ext/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp +94 -0
  184. data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp +133 -0
  185. data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp +180 -0
  186. data/ext/boost/mpl/aux_/preprocessed/gcc/less.hpp +94 -0
  187. data/ext/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp +94 -0
  188. data/ext/boost/mpl/aux_/preprocessed/gcc/list.hpp +323 -0
  189. data/ext/boost/mpl/aux_/preprocessed/gcc/minus.hpp +146 -0
  190. data/ext/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp +94 -0
  191. data/ext/boost/mpl/aux_/preprocessed/gcc/plus.hpp +146 -0
  192. data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +231 -0
  193. data/ext/boost/mpl/aux_/preprocessed/gcc/times.hpp +146 -0
  194. data/ext/boost/mpl/aux_/preprocessed/gcc/vector.hpp +323 -0
  195. data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +67 -0
  196. data/ext/boost/mpl/aux_/push_back_impl.hpp +70 -0
  197. data/ext/boost/mpl/aux_/push_front_impl.hpp +71 -0
  198. data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +44 -0
  199. data/ext/boost/mpl/aux_/size_impl.hpp +52 -0
  200. data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +63 -0
  201. data/ext/boost/mpl/back_fwd.hpp +24 -0
  202. data/ext/boost/mpl/back_inserter.hpp +34 -0
  203. data/ext/boost/mpl/begin_end.hpp +57 -0
  204. data/ext/boost/mpl/begin_end_fwd.hpp +27 -0
  205. data/ext/boost/mpl/clear.hpp +39 -0
  206. data/ext/boost/mpl/clear_fwd.hpp +24 -0
  207. data/ext/boost/mpl/comparison.hpp +24 -0
  208. data/ext/boost/mpl/contains.hpp +41 -0
  209. data/ext/boost/mpl/contains_fwd.hpp +25 -0
  210. data/ext/boost/mpl/deref.hpp +41 -0
  211. data/ext/boost/mpl/distance.hpp +78 -0
  212. data/ext/boost/mpl/distance_fwd.hpp +28 -0
  213. data/ext/boost/mpl/empty_fwd.hpp +24 -0
  214. data/ext/boost/mpl/equal_to.hpp +21 -0
  215. data/ext/boost/mpl/find.hpp +38 -0
  216. data/ext/boost/mpl/find_if.hpp +50 -0
  217. data/ext/boost/mpl/fold.hpp +48 -0
  218. data/ext/boost/mpl/front_fwd.hpp +24 -0
  219. data/ext/boost/mpl/front_inserter.hpp +33 -0
  220. data/ext/boost/mpl/greater.hpp +21 -0
  221. data/ext/boost/mpl/greater_equal.hpp +21 -0
  222. data/ext/boost/mpl/inserter.hpp +32 -0
  223. data/ext/boost/mpl/iter_fold.hpp +49 -0
  224. data/ext/boost/mpl/iter_fold_if.hpp +117 -0
  225. data/ext/boost/mpl/iterator_range.hpp +42 -0
  226. data/ext/boost/mpl/iterator_tags.hpp +27 -0
  227. data/ext/boost/mpl/less.hpp +21 -0
  228. data/ext/boost/mpl/less_equal.hpp +21 -0
  229. data/ext/boost/mpl/limits/list.hpp +21 -0
  230. data/ext/boost/mpl/limits/vector.hpp +21 -0
  231. data/ext/boost/mpl/list.hpp +57 -0
  232. data/ext/boost/mpl/list/aux_/O1_size.hpp +33 -0
  233. data/ext/boost/mpl/list/aux_/begin_end.hpp +44 -0
  234. data/ext/boost/mpl/list/aux_/clear.hpp +34 -0
  235. data/ext/boost/mpl/list/aux_/empty.hpp +34 -0
  236. data/ext/boost/mpl/list/aux_/front.hpp +33 -0
  237. data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +35 -0
  238. data/ext/boost/mpl/list/aux_/item.hpp +55 -0
  239. data/ext/boost/mpl/list/aux_/iterator.hpp +76 -0
  240. data/ext/boost/mpl/list/aux_/pop_front.hpp +34 -0
  241. data/ext/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +149 -0
  242. data/ext/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +169 -0
  243. data/ext/boost/mpl/list/aux_/push_back.hpp +36 -0
  244. data/ext/boost/mpl/list/aux_/push_front.hpp +39 -0
  245. data/ext/boost/mpl/list/aux_/size.hpp +33 -0
  246. data/ext/boost/mpl/list/aux_/tag.hpp +24 -0
  247. data/ext/boost/mpl/list/list0.hpp +42 -0
  248. data/ext/boost/mpl/list/list10.hpp +43 -0
  249. data/ext/boost/mpl/list/list20.hpp +43 -0
  250. data/ext/boost/mpl/long.hpp +22 -0
  251. data/ext/boost/mpl/long_fwd.hpp +27 -0
  252. data/ext/boost/mpl/minus.hpp +21 -0
  253. data/ext/boost/mpl/multiplies.hpp +53 -0
  254. data/ext/boost/mpl/negate.hpp +81 -0
  255. data/ext/boost/mpl/not_equal_to.hpp +21 -0
  256. data/ext/boost/mpl/numeric_cast.hpp +41 -0
  257. data/ext/boost/mpl/pair.hpp +70 -0
  258. data/ext/boost/mpl/plus.hpp +21 -0
  259. data/ext/boost/mpl/pop_back_fwd.hpp +24 -0
  260. data/ext/boost/mpl/pop_front_fwd.hpp +24 -0
  261. data/ext/boost/mpl/prior.hpp +19 -0
  262. data/ext/boost/mpl/push_back.hpp +53 -0
  263. data/ext/boost/mpl/push_back_fwd.hpp +24 -0
  264. data/ext/boost/mpl/push_front.hpp +52 -0
  265. data/ext/boost/mpl/push_front_fwd.hpp +24 -0
  266. data/ext/boost/mpl/remove_if.hpp +83 -0
  267. data/ext/boost/mpl/reverse_fold.hpp +50 -0
  268. data/ext/boost/mpl/same_as.hpp +55 -0
  269. data/ext/boost/mpl/sequence_tag.hpp +124 -0
  270. data/ext/boost/mpl/sequence_tag_fwd.hpp +26 -0
  271. data/ext/boost/mpl/size.hpp +42 -0
  272. data/ext/boost/mpl/size_fwd.hpp +24 -0
  273. data/ext/boost/mpl/tag.hpp +52 -0
  274. data/ext/boost/mpl/times.hpp +21 -0
  275. data/ext/boost/mpl/vector.hpp +57 -0
  276. data/ext/boost/mpl/vector/aux_/O1_size.hpp +56 -0
  277. data/ext/boost/mpl/vector/aux_/at.hpp +116 -0
  278. data/ext/boost/mpl/vector/aux_/back.hpp +59 -0
  279. data/ext/boost/mpl/vector/aux_/begin_end.hpp +49 -0
  280. data/ext/boost/mpl/vector/aux_/clear.hpp +55 -0
  281. data/ext/boost/mpl/vector/aux_/empty.hpp +68 -0
  282. data/ext/boost/mpl/vector/aux_/front.hpp +56 -0
  283. data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +55 -0
  284. data/ext/boost/mpl/vector/aux_/item.hpp +103 -0
  285. data/ext/boost/mpl/vector/aux_/iterator.hpp +130 -0
  286. data/ext/boost/mpl/vector/aux_/pop_back.hpp +40 -0
  287. data/ext/boost/mpl/vector/aux_/pop_front.hpp +40 -0
  288. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +829 -0
  289. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +1144 -0
  290. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +139 -0
  291. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +159 -0
  292. data/ext/boost/mpl/vector/aux_/push_back.hpp +40 -0
  293. data/ext/boost/mpl/vector/aux_/push_front.hpp +40 -0
  294. data/ext/boost/mpl/vector/aux_/size.hpp +49 -0
  295. data/ext/boost/mpl/vector/aux_/tag.hpp +32 -0
  296. data/ext/boost/mpl/vector/aux_/vector0.hpp +52 -0
  297. data/ext/boost/mpl/vector/vector0.hpp +34 -0
  298. data/ext/boost/mpl/vector/vector10.hpp +45 -0
  299. data/ext/boost/mpl/vector/vector20.hpp +45 -0
  300. data/ext/boost/none.hpp +1 -1
  301. data/ext/boost/numeric/conversion/bounds.hpp +24 -0
  302. data/ext/boost/numeric/conversion/cast.hpp +61 -0
  303. data/ext/boost/numeric/conversion/conversion_traits.hpp +39 -0
  304. data/ext/boost/numeric/conversion/converter.hpp +68 -0
  305. data/ext/boost/numeric/conversion/converter_policies.hpp +186 -0
  306. data/ext/boost/numeric/conversion/detail/bounds.hpp +58 -0
  307. data/ext/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
  308. data/ext/boost/numeric/conversion/detail/converter.hpp +602 -0
  309. data/ext/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
  310. data/ext/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
  311. data/ext/boost/numeric/conversion/detail/meta.hpp +120 -0
  312. data/ext/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
  313. data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
  314. data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
  315. data/ext/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
  316. data/ext/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
  317. data/ext/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
  318. data/ext/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
  319. data/ext/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
  320. data/ext/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
  321. data/ext/boost/operators.hpp +3 -1
  322. data/ext/boost/optional/optional.hpp +146 -79
  323. data/ext/boost/optional/optional_fwd.hpp +8 -1
  324. data/ext/boost/preprocessor/cat.hpp +2 -2
  325. data/ext/boost/preprocessor/config/config.hpp +39 -4
  326. data/ext/boost/preprocessor/facilities/intercept.hpp +277 -0
  327. data/ext/boost/preprocessor/facilities/overload.hpp +25 -0
  328. data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +3 -3
  329. data/ext/boost/preprocessor/iteration/iterate.hpp +3 -3
  330. data/ext/boost/preprocessor/punctuation/paren.hpp +23 -0
  331. data/ext/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
  332. data/ext/boost/preprocessor/seq/cat.hpp +5 -4
  333. data/ext/boost/preprocessor/seq/size.hpp +0 -1
  334. data/ext/boost/preprocessor/tuple/eat.hpp +83 -34
  335. data/ext/boost/preprocessor/tuple/elem.hpp +161 -355
  336. data/ext/boost/preprocessor/tuple/rem.hpp +110 -48
  337. data/ext/boost/preprocessor/tuple/to_list.hpp +90 -36
  338. data/ext/boost/preprocessor/variadic/elem.hpp +94 -0
  339. data/ext/boost/preprocessor/variadic/size.hpp +30 -0
  340. data/ext/boost/range/begin.hpp +17 -6
  341. data/ext/boost/range/concepts.hpp +37 -2
  342. data/ext/boost/range/detail/safe_bool.hpp +72 -0
  343. data/ext/boost/range/end.hpp +14 -9
  344. data/ext/boost/range/iterator_range_core.hpp +120 -12
  345. data/ext/boost/range/size.hpp +21 -5
  346. data/ext/boost/smart_ptr/detail/shared_count.hpp +88 -0
  347. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -0
  348. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +142 -0
  349. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +9 -0
  350. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +10 -2
  351. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +5 -1
  352. data/ext/boost/smart_ptr/detail/spinlock.hpp +4 -1
  353. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +20 -3
  354. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +4 -0
  355. data/ext/boost/smart_ptr/make_shared.hpp +591 -22
  356. data/ext/boost/smart_ptr/shared_array.hpp +29 -1
  357. data/ext/boost/smart_ptr/shared_ptr.hpp +29 -13
  358. data/ext/boost/smart_ptr/weak_ptr.hpp +24 -12
  359. data/ext/boost/src/pthread/once.cpp +9 -7
  360. data/ext/boost/src/pthread/thread.cpp +32 -28
  361. data/ext/boost/src/pthread/timeconv.inl +4 -5
  362. data/ext/boost/src/tss_null.cpp +5 -1
  363. data/ext/boost/static_assert.hpp +8 -2
  364. data/ext/boost/thread/detail/config.hpp +19 -4
  365. data/ext/boost/thread/detail/move.hpp +11 -5
  366. data/ext/boost/thread/detail/thread.hpp +59 -43
  367. data/ext/boost/thread/exceptions.hpp +9 -9
  368. data/ext/boost/thread/future.hpp +150 -82
  369. data/ext/boost/thread/locks.hpp +101 -60
  370. data/ext/boost/thread/pthread/condition_variable.hpp +79 -32
  371. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +12 -3
  372. data/ext/boost/thread/pthread/mutex.hpp +17 -14
  373. data/ext/boost/thread/pthread/once.hpp +3 -4
  374. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +12 -2
  375. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -19
  376. data/ext/boost/thread/pthread/shared_mutex.hpp +13 -13
  377. data/ext/boost/thread/pthread/thread_data.hpp +40 -12
  378. data/ext/boost/thread/thread_time.hpp +5 -0
  379. data/ext/boost/throw_exception.hpp +1 -1
  380. data/ext/boost/token_functions.hpp +34 -10
  381. data/ext/boost/type_traits/add_rvalue_reference.hpp +66 -0
  382. data/ext/boost/type_traits/alignment_of.hpp +1 -1
  383. data/ext/boost/type_traits/detail/bool_trait_def.hpp +26 -3
  384. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +3 -2
  385. data/ext/boost/type_traits/detail/cv_traits_impl.hpp +1 -1
  386. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +6 -4
  387. data/ext/boost/type_traits/detail/type_trait_def.hpp +8 -2
  388. data/ext/boost/type_traits/function_traits.hpp +1 -1
  389. data/ext/boost/type_traits/has_nothrow_constructor.hpp +53 -0
  390. data/ext/boost/type_traits/has_nothrow_copy.hpp +19 -5
  391. data/ext/boost/type_traits/has_trivial_constructor.hpp +51 -0
  392. data/ext/boost/type_traits/has_trivial_copy.hpp +20 -5
  393. data/ext/boost/type_traits/has_trivial_destructor.hpp +12 -5
  394. data/ext/boost/type_traits/intrinsics.hpp +119 -71
  395. data/ext/boost/type_traits/is_const.hpp +5 -5
  396. data/ext/boost/type_traits/is_convertible.hpp +14 -13
  397. data/ext/boost/type_traits/is_enum.hpp +1 -1
  398. data/ext/boost/type_traits/is_floating_point.hpp +27 -0
  399. data/ext/boost/type_traits/is_function.hpp +3 -3
  400. data/ext/boost/type_traits/is_fundamental.hpp +1 -1
  401. data/ext/boost/type_traits/is_member_function_pointer.hpp +2 -2
  402. data/ext/boost/type_traits/is_member_pointer.hpp +2 -2
  403. data/ext/boost/type_traits/is_pod.hpp +11 -3
  404. data/ext/boost/type_traits/is_pointer.hpp +2 -2
  405. data/ext/boost/type_traits/is_signed.hpp +8 -3
  406. data/ext/boost/type_traits/is_union.hpp +8 -0
  407. data/ext/boost/type_traits/is_unsigned.hpp +9 -4
  408. data/ext/boost/type_traits/is_volatile.hpp +5 -5
  409. data/ext/boost/type_traits/remove_cv.hpp +4 -3
  410. data/ext/boost/type_traits/remove_pointer.hpp +51 -2
  411. data/ext/boost/type_traits/remove_reference.hpp +2 -2
  412. data/ext/boost/type_traits/type_with_alignment.hpp +8 -2
  413. data/ext/boost/utility/declval.hpp +44 -0
  414. data/ext/boost/utility/detail/in_place_factory_prefix.hpp +36 -0
  415. data/ext/boost/utility/detail/in_place_factory_suffix.hpp +23 -0
  416. data/ext/boost/utility/detail/result_of_iterate.hpp +142 -0
  417. data/ext/boost/utility/in_place_factory.hpp +88 -0
  418. data/ext/boost/utility/result_of.hpp +103 -0
  419. data/ext/boost/utility/swap.hpp +55 -0
  420. data/ext/common/AnsiColorConstants.h +36 -0
  421. data/ext/common/ApplicationPool2/Common.h +87 -0
  422. data/ext/common/ApplicationPool2/ComponentInfo.h +53 -0
  423. data/ext/common/ApplicationPool2/Group.h +648 -0
  424. data/ext/common/ApplicationPool2/Implementation.cpp +580 -0
  425. data/ext/common/ApplicationPool2/Options.h +576 -0
  426. data/ext/common/ApplicationPool2/PipeWatcher.h +61 -0
  427. data/ext/common/ApplicationPool2/Pool.h +1181 -0
  428. data/ext/common/ApplicationPool2/Process.h +425 -0
  429. data/ext/common/ApplicationPool2/README.md +96 -0
  430. data/ext/common/ApplicationPool2/Session.h +158 -0
  431. data/ext/common/ApplicationPool2/Socket.h +246 -0
  432. data/ext/common/ApplicationPool2/Spawner.h +2212 -0
  433. data/ext/common/ApplicationPool2/SuperGroup.h +749 -0
  434. data/ext/common/BackgroundEventLoop.cpp +129 -0
  435. data/ext/common/BackgroundEventLoop.h +61 -0
  436. data/ext/common/Constants.h +3 -1
  437. data/ext/common/EventedBufferedInput.h +331 -0
  438. data/ext/common/EventedMessageServer.h +17 -34
  439. data/ext/common/EventedServer.h +2 -2
  440. data/ext/common/Exceptions.h +71 -19
  441. data/ext/common/FileDescriptor.h +8 -6
  442. data/ext/common/HttpConstants.h +167 -0
  443. data/ext/common/IniFile.h +24 -0
  444. data/ext/common/Logging.h +62 -849
  445. data/ext/common/MessageReadersWriters.h +19 -0
  446. data/ext/common/MessageServer.h +11 -14
  447. data/ext/common/MultiLibeio.cpp +198 -0
  448. data/ext/common/MultiLibeio.h +67 -0
  449. data/ext/common/ResourceLocator.h +24 -41
  450. data/ext/common/SafeLibev.h +186 -14
  451. data/ext/common/StaticString.h +23 -3
  452. data/ext/common/UnionStation.h +972 -0
  453. data/ext/common/Utils.cpp +168 -24
  454. data/ext/common/Utils.h +25 -3
  455. data/ext/common/Utils/CachedFileStat.hpp +4 -3
  456. data/ext/common/Utils/FileChangeChecker.h +2 -2
  457. data/ext/common/Utils/HashMap.h +50 -0
  458. data/ext/common/Utils/IOUtils.cpp +229 -68
  459. data/ext/common/Utils/IOUtils.h +134 -3
  460. data/ext/common/Utils/Lock.h +28 -0
  461. data/ext/common/Utils/MemoryBarrier.h +52 -0
  462. data/ext/common/Utils/PriorityQueue.h +54 -0
  463. data/ext/common/Utils/ProcessMetricsCollector.h +9 -11
  464. data/ext/common/Utils/ScopeGuard.h +50 -1
  465. data/ext/common/Utils/SmallVector.h +653 -0
  466. data/ext/common/Utils/StrIntUtils.cpp +26 -2
  467. data/ext/common/Utils/StrIntUtils.h +18 -2
  468. data/ext/common/Utils/StringMap.h +125 -8
  469. data/ext/common/Utils/Template.h +212 -0
  470. data/ext/common/Utils/fib.c +699 -0
  471. data/ext/common/Utils/fib.h +101 -0
  472. data/ext/common/Utils/fibpriv.h +67 -0
  473. data/ext/common/Utils/json-forwards.h +249 -0
  474. data/ext/common/Utils/json.h +1855 -0
  475. data/ext/common/Utils/jsoncpp.cpp +4230 -0
  476. data/ext/common/agents/Base.cpp +1126 -0
  477. data/ext/common/{AgentBase.h → agents/Base.h} +5 -1
  478. data/ext/common/agents/EnvPrinter.c +16 -0
  479. data/ext/common/agents/HelperAgent/AgentOptions.h +81 -0
  480. data/ext/common/{HelperAgent → agents/HelperAgent}/BacktracesServer.h +3 -2
  481. data/ext/common/agents/HelperAgent/FileBackedPipe.h +732 -0
  482. data/ext/common/agents/HelperAgent/Main.cpp +497 -0
  483. data/ext/common/agents/HelperAgent/RequestHandler.cpp +283 -0
  484. data/ext/common/agents/HelperAgent/RequestHandler.h +2139 -0
  485. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +451 -0
  486. data/ext/common/{LoggingAgent → agents/LoggingAgent}/DataStoreId.h +1 -1
  487. data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.cpp +1 -1
  488. data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.h +0 -0
  489. data/ext/common/{LoggingAgent → agents/LoggingAgent}/LoggingServer.h +18 -16
  490. data/ext/common/{LoggingAgent → agents/LoggingAgent}/Main.cpp +15 -13
  491. data/ext/common/{LoggingAgent → agents/LoggingAgent}/RemoteSender.h +6 -6
  492. data/ext/common/agents/SpawnPreparer.cpp +127 -0
  493. data/ext/common/{Watchdog.cpp → agents/Watchdog/Main.cpp} +63 -25
  494. data/ext/libeio/Changes +72 -0
  495. data/ext/{google/COPYING → libeio/LICENSE} +17 -9
  496. data/ext/libeio/Makefile.am +15 -0
  497. data/ext/libeio/Makefile.in +694 -0
  498. data/ext/libeio/aclocal.m4 +9418 -0
  499. data/ext/libeio/autogen.sh +3 -0
  500. data/ext/libeio/config.guess +1501 -0
  501. data/ext/libeio/config.h.in +136 -0
  502. data/ext/libeio/config.sub +1705 -0
  503. data/ext/libeio/configure +14822 -0
  504. data/ext/libeio/configure.ac +22 -0
  505. data/ext/libeio/demo.c +194 -0
  506. data/ext/libeio/ecb.h +457 -0
  507. data/ext/libeio/eio.c +2816 -0
  508. data/ext/libeio/eio.h +411 -0
  509. data/ext/libeio/install-sh +520 -0
  510. data/ext/libeio/libeio.m4 +211 -0
  511. data/ext/libeio/ltmain.sh +9636 -0
  512. data/ext/libeio/missing +376 -0
  513. data/ext/libeio/xthread.h +166 -0
  514. data/ext/libev/Changes +125 -7
  515. data/ext/libev/Makefile.am +5 -3
  516. data/ext/libev/Makefile.in +209 -120
  517. data/ext/libev/aclocal.m4 +6027 -4619
  518. data/ext/libev/autogen.sh +1 -4
  519. data/ext/libev/config.h.in +11 -7
  520. data/ext/libev/configure +7312 -14993
  521. data/ext/libev/configure.ac +12 -5
  522. data/ext/libev/depcomp +630 -0
  523. data/ext/libev/ev++.h +48 -32
  524. data/ext/libev/ev.c +1173 -391
  525. data/ext/libev/ev.h +315 -181
  526. data/ext/libev/ev_epoll.c +66 -15
  527. data/ext/libev/ev_kqueue.c +20 -18
  528. data/ext/libev/ev_poll.c +27 -23
  529. data/ext/libev/ev_port.c +39 -19
  530. data/ext/libev/ev_select.c +23 -17
  531. data/ext/libev/ev_vars.h +25 -8
  532. data/ext/libev/ev_win32.c +6 -6
  533. data/ext/libev/ev_wrap.h +22 -2
  534. data/ext/libev/event.c +18 -17
  535. data/ext/libev/event.h +16 -4
  536. data/ext/libev/libev.m4 +10 -6
  537. data/ext/libev/ltmain.sh +7353 -5811
  538. data/ext/nginx/Configuration.c +74 -42
  539. data/ext/nginx/Configuration.h +3 -5
  540. data/ext/nginx/ContentHandler.c +26 -83
  541. data/ext/nginx/ContentHandler.h +1 -1
  542. data/ext/nginx/config +13 -9
  543. data/ext/nginx/ngx_http_passenger_module.c +3 -7
  544. data/ext/oxt/detail/backtrace_enabled.hpp +5 -102
  545. data/ext/oxt/detail/context.hpp +90 -0
  546. data/ext/oxt/detail/spin_lock_darwin.hpp +4 -0
  547. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +4 -0
  548. data/ext/oxt/detail/spin_lock_pthreads.hpp +14 -0
  549. data/ext/oxt/detail/tracable_exception_enabled.hpp +2 -2
  550. data/ext/oxt/dynamic_thread_group.hpp +27 -1
  551. data/ext/oxt/implementation.cpp +415 -0
  552. data/ext/oxt/{thread.cpp → initialize.hpp} +13 -6
  553. data/ext/oxt/macros.hpp +32 -1
  554. data/ext/oxt/spin_lock.hpp +6 -11
  555. data/ext/oxt/system_calls.cpp +204 -16
  556. data/ext/oxt/system_calls.hpp +85 -45
  557. data/ext/oxt/thread.hpp +13 -117
  558. data/ext/ruby/passenger_native_support.c +82 -237
  559. data/helper-scripts/backtrace-sanitizer.rb +114 -0
  560. data/helper-scripts/classic-rails-loader.rb +135 -0
  561. data/helper-scripts/classic-rails-preloader.rb +161 -0
  562. data/helper-scripts/node-loader.js +314 -0
  563. data/helper-scripts/rack-loader.rb +104 -0
  564. data/helper-scripts/rack-preloader.rb +132 -0
  565. data/helper-scripts/wsgi-loader.py +231 -0
  566. data/helper-scripts/wsgi-preloader.py +1 -0
  567. data/lib/phusion_passenger.rb +159 -61
  568. data/lib/phusion_passenger/abstract_installer.rb +182 -87
  569. data/lib/phusion_passenger/admin_tools/server_instance.rb +25 -19
  570. data/lib/phusion_passenger/analytics_logger.rb +5 -4
  571. data/lib/phusion_passenger/classic_rails/{request_handler.rb → thread_handler_extension.rb} +4 -40
  572. data/lib/phusion_passenger/classic_rails_extensions/init.rb +5 -3
  573. data/lib/phusion_passenger/common_library.rb +441 -0
  574. data/lib/phusion_passenger/console_text_template.rb +4 -16
  575. data/lib/phusion_passenger/constants.rb +1 -8
  576. data/lib/phusion_passenger/debug_logging.rb +5 -2
  577. data/lib/phusion_passenger/dependencies.rb +51 -13
  578. data/lib/phusion_passenger/loader_shared_helpers.rb +318 -0
  579. data/lib/phusion_passenger/message_channel.rb +3 -47
  580. data/lib/phusion_passenger/message_client.rb +2 -2
  581. data/lib/phusion_passenger/native_support.rb +36 -15
  582. data/lib/phusion_passenger/packaging.rb +8 -11
  583. data/lib/phusion_passenger/platform_info.rb +25 -17
  584. data/lib/phusion_passenger/platform_info/apache.rb +10 -7
  585. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +10 -30
  586. data/lib/phusion_passenger/platform_info/compiler.rb +93 -34
  587. data/lib/phusion_passenger/platform_info/ruby.rb +37 -97
  588. data/lib/phusion_passenger/preloader_shared_helpers.rb +121 -0
  589. data/lib/phusion_passenger/public_api.rb +1 -4
  590. data/lib/phusion_passenger/rack/{request_handler.rb → thread_handler_extension.rb} +14 -63
  591. data/lib/phusion_passenger/rails3_extensions/init.rb +9 -8
  592. data/lib/phusion_passenger/request_handler.rb +500 -0
  593. data/lib/phusion_passenger/request_handler/thread_handler.rb +360 -0
  594. data/lib/phusion_passenger/ruby_core_enhancements.rb +142 -0
  595. data/lib/phusion_passenger/standalone/command.rb +36 -15
  596. data/lib/phusion_passenger/standalone/package_runtime_command.rb +16 -8
  597. data/lib/phusion_passenger/standalone/runtime_installer.rb +169 -72
  598. data/lib/phusion_passenger/standalone/start_command.rb +44 -39
  599. data/lib/phusion_passenger/standalone/utils.rb +5 -5
  600. data/lib/phusion_passenger/utils.rb +35 -914
  601. data/lib/phusion_passenger/utils/ansi_colors.rb +59 -0
  602. data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
  603. data/lib/phusion_passenger/utils/robust_interruption.rb +134 -0
  604. data/lib/phusion_passenger/utils/tee_input.rb +174 -0
  605. data/lib/phusion_passenger/utils/tmpio.rb +33 -0
  606. data/lib/phusion_passenger/utils/unseekable_socket.rb +6 -0
  607. data/resources/mime.types +5 -1
  608. data/{lib/phusion_passenger/templates → resources}/standalone_default_root/index.html +0 -0
  609. data/{lib/phusion_passenger → resources}/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
  610. data/{lib/phusion_passenger → resources}/templates/apache2/config_snippets.txt.erb +0 -0
  611. data/{lib/phusion_passenger → resources}/templates/apache2/deployment_example.txt.erb +0 -0
  612. data/{lib/phusion_passenger → resources}/templates/apache2/no_write_permission_to_passenger_root.txt.erb +0 -0
  613. data/{lib/phusion_passenger → resources}/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  614. data/{lib/phusion_passenger → resources}/templates/apache2/run_installer_as_root.txt.erb +0 -0
  615. data/{lib/phusion_passenger → resources}/templates/apache2/welcome.txt.erb +0 -0
  616. data/{lib/phusion_passenger → resources}/templates/error_layout.css +6 -0
  617. data/resources/templates/error_layout.html.template +89 -0
  618. data/resources/templates/general_error.html.template +1 -0
  619. data/resources/templates/general_error_with_html.html.template +1 -0
  620. data/{lib/phusion_passenger → resources}/templates/nginx/ask_for_extra_configure_flags.txt.erb +0 -0
  621. data/{lib/phusion_passenger → resources}/templates/nginx/cannot_write_to_dir.txt.erb +0 -0
  622. data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets.txt.erb +0 -0
  623. data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets_inserted.txt.erb +0 -0
  624. data/{lib/phusion_passenger → resources}/templates/nginx/confirm_extra_configure_flags.txt.erb +0 -0
  625. data/{lib/phusion_passenger → resources}/templates/nginx/deployment_example.txt.erb +0 -0
  626. data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +8 -0
  627. data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_downloaded.txt.erb +0 -0
  628. data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_extracted.txt.erb +0 -0
  629. data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  630. data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
  631. data/{lib/phusion_passenger → resources}/templates/nginx/query_download_and_install.txt.erb +0 -0
  632. data/{lib/phusion_passenger → resources}/templates/nginx/run_installer_as_root.txt.erb +0 -0
  633. data/{lib/phusion_passenger → resources}/templates/nginx/welcome.txt.erb +0 -0
  634. data/{lib/phusion_passenger → resources}/templates/standalone/cannot_write_to_dir.txt.erb +0 -0
  635. data/{lib/phusion_passenger → resources}/templates/standalone/config.erb +26 -5
  636. data/{lib/phusion_passenger → resources}/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
  637. data/{lib/phusion_passenger → resources}/templates/standalone/run_installer_as_root.txt.erb +0 -0
  638. data/{lib/phusion_passenger → resources}/templates/standalone/welcome.txt.erb +0 -0
  639. data/resources/templates/undisclosed_error.html.template +25 -0
  640. data/test/config.json.example +42 -0
  641. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +86 -0
  642. data/test/cxx/ApplicationPool2/OptionsTest.cpp +44 -0
  643. data/test/cxx/ApplicationPool2/PoolTest.cpp +1234 -0
  644. data/test/cxx/ApplicationPool2/ProcessTest.cpp +131 -0
  645. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +229 -0
  646. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +744 -0
  647. data/test/cxx/BufferedIOTest.cpp +7 -7
  648. data/test/cxx/CxxTestMain.cpp +65 -2
  649. data/test/cxx/FileBackedPipeTest.cpp +626 -0
  650. data/test/cxx/FileChangeCheckerTest.cpp +20 -18
  651. data/test/cxx/FilterSupportTest.cpp +5 -5
  652. data/test/cxx/IOUtilsTest.cpp +11 -4
  653. data/test/cxx/MessageReadersWritersTest.cpp +1 -1
  654. data/test/cxx/MessageServerTest.cpp +31 -30
  655. data/test/cxx/RequestHandlerTest.cpp +777 -0
  656. data/test/cxx/ScgiRequestParserTest.cpp +36 -16
  657. data/test/cxx/ServerInstanceDirTest.cpp +1 -1
  658. data/test/cxx/StringMapTest.cpp +61 -0
  659. data/test/cxx/TemplateTest.cpp +118 -0
  660. data/test/cxx/TestSupport.cpp +25 -68
  661. data/test/cxx/TestSupport.h +81 -41
  662. data/test/cxx/{LoggingTest.cpp → UnionStationTest.cpp} +79 -74
  663. data/test/cxx/UtilsTest.cpp +59 -5
  664. data/test/integration_tests/apache2_tests.rb +2 -2
  665. data/test/integration_tests/nginx_tests.rb +1 -1
  666. data/test/integration_tests/spec_helper.rb +7 -5
  667. data/test/oxt/oxt_test_main.cpp +2 -0
  668. data/test/oxt/syscall_interruption_test.cpp +1 -0
  669. data/test/ruby/classic_rails/loader_spec.rb +48 -0
  670. data/test/ruby/classic_rails/preloader_spec.rb +54 -0
  671. data/test/ruby/rack/loader_spec.rb +62 -0
  672. data/test/ruby/rack/preloader_spec.rb +74 -0
  673. data/test/ruby/{abstract_request_handler_spec.rb → request_handler_spec.rb} +31 -68
  674. data/test/ruby/shared/loader_spec.rb +241 -0
  675. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +141 -182
  676. data/test/ruby/shared/ruby_loader_spec.rb +55 -0
  677. data/test/ruby/spec_helper.rb +8 -53
  678. data/test/ruby/utils/file_system_watcher_spec.rb +9 -1
  679. data/test/ruby/utils_spec.rb +10 -683
  680. data/test/stub/rack/config.ru +28 -3
  681. data/test/stub/rack/start.rb +47 -0
  682. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/Rakefile +0 -0
  683. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/application_controller.rb +0 -2
  684. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_1.rb +0 -0
  685. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_2.rb +0 -0
  686. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/foo_controller.rb +0 -0
  687. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/helpers/application_helper.rb +0 -0
  688. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/boot.rb +0 -0
  689. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/database.yml +3 -3
  690. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environment.rb +5 -2
  691. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/development.rb +0 -0
  692. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/production.rb +0 -0
  693. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/staging.rb +0 -0
  694. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/inflections.rb +0 -0
  695. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/mime_types.rb +0 -0
  696. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/routes.rb +1 -0
  697. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/about +0 -0
  698. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/console +0 -0
  699. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/dbconsole +0 -0
  700. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/destroy +0 -0
  701. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/generate +0 -0
  702. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/benchmarker +0 -0
  703. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/profiler +0 -0
  704. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/request +0 -0
  705. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/plugin +0 -0
  706. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/inspector +0 -0
  707. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/reaper +0 -0
  708. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/spawner +0 -0
  709. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/runner +0 -0
  710. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/server +0 -0
  711. data/test/stub/{rails_apps/3.0/empty → rails3.0}/Gemfile +0 -0
  712. data/test/stub/rails3.0/Gemfile.lock +80 -0
  713. data/test/stub/{rails_apps/3.0/empty → rails3.0}/Rakefile +0 -0
  714. data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/controllers/application_controller.rb +0 -0
  715. data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/helpers/application_helper.rb +0 -0
  716. data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/views/layouts/application.html.erb +0 -0
  717. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config.ru +0 -0
  718. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/application.rb +0 -0
  719. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/boot.rb +0 -0
  720. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/database.yml +0 -0
  721. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environment.rb +0 -0
  722. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/development.rb +0 -0
  723. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/production.rb +0 -0
  724. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/test.rb +0 -0
  725. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/backtrace_silencers.rb +0 -0
  726. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/inflections.rb +0 -0
  727. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/mime_types.rb +0 -0
  728. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/passenger.rb +0 -0
  729. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/secret_token.rb +0 -0
  730. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/session_store.rb +0 -0
  731. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/locales/en.yml +0 -0
  732. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/routes.rb +0 -0
  733. data/test/stub/{rails_apps/3.0/empty → rails3.0}/db/seeds.rb +0 -0
  734. data/test/stub/{rails_apps/3.0/empty → rails3.0}/doc/README_FOR_APP +0 -0
  735. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/404.html +0 -0
  736. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/422.html +0 -0
  737. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/500.html +0 -0
  738. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/favicon.ico +0 -0
  739. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/index.html +0 -0
  740. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/robots.txt +0 -0
  741. data/test/stub/{rails_apps/3.0/empty → rails3.0}/script/rails +0 -0
  742. data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/performance/browsing_test.rb +0 -0
  743. data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/test_helper.rb +0 -0
  744. data/test/stub/start_error.pl +24 -0
  745. data/test/stub/wsgi/passenger_wsgi.py +71 -3
  746. data/test/support/apache2_controller.rb +2 -2
  747. data/test/support/placebo-preloader.rb +88 -0
  748. data/test/support/test_helper.rb +1 -14
  749. data/test/tut/tut.h +11 -4
  750. metadata +590 -326
  751. data.tar.gz.asc +0 -12
  752. data/PACKAGING.TXT +0 -25
  753. data/build/config.rb +0 -46
  754. data/ext/apache2/HelperAgent.cpp +0 -364
  755. data/ext/boost/call_traits.hpp +0 -24
  756. data/ext/boost/detail/call_traits.hpp +0 -164
  757. data/ext/common/AbstractSpawnManager.h +0 -110
  758. data/ext/common/AgentBase.cpp +0 -432
  759. data/ext/common/ApplicationPool/Client.h +0 -788
  760. data/ext/common/ApplicationPool/Interface.h +0 -295
  761. data/ext/common/ApplicationPool/Pool.h +0 -1327
  762. data/ext/common/ApplicationPool/Server.h +0 -479
  763. data/ext/common/MessageChannel.h +0 -494
  764. data/ext/common/PoolOptions.h +0 -518
  765. data/ext/common/Process.h +0 -253
  766. data/ext/common/Session.h +0 -436
  767. data/ext/common/SpawnManager.h +0 -611
  768. data/ext/google/ChangeLog +0 -167
  769. data/ext/google/dense_hash_map +0 -310
  770. data/ext/google/dense_hash_set +0 -287
  771. data/ext/google/sparse_hash_map +0 -294
  772. data/ext/google/sparse_hash_set +0 -275
  773. data/ext/google/sparsehash/densehashtable.h +0 -1062
  774. data/ext/google/sparsehash/sparseconfig.h +0 -55
  775. data/ext/google/sparsehash/sparsehashtable.h +0 -1015
  776. data/ext/google/sparsetable +0 -1468
  777. data/ext/google/type_traits.h +0 -250
  778. data/ext/nginx/HelperAgent.cpp +0 -1355
  779. data/ext/nginx/ScgiRequestParser.h +0 -375
  780. data/ext/oxt/backtrace.cpp +0 -185
  781. data/ext/oxt/tracable_exception.cpp +0 -89
  782. data/helper-scripts/passenger-spawn-server +0 -106
  783. data/lib/phusion_passenger/abstract_request_handler.rb +0 -766
  784. data/lib/phusion_passenger/abstract_server.rb +0 -372
  785. data/lib/phusion_passenger/abstract_server_collection.rb +0 -335
  786. data/lib/phusion_passenger/app_process.rb +0 -174
  787. data/lib/phusion_passenger/classic_rails/application_spawner.rb +0 -344
  788. data/lib/phusion_passenger/classic_rails/framework_spawner.rb +0 -311
  789. data/lib/phusion_passenger/exceptions.rb +0 -103
  790. data/lib/phusion_passenger/html_template.rb +0 -107
  791. data/lib/phusion_passenger/rack/application_spawner.rb +0 -231
  792. data/lib/phusion_passenger/spawn_manager.rb +0 -359
  793. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +0 -38
  794. data/lib/phusion_passenger/templates/app_init_error.html.erb +0 -64
  795. data/lib/phusion_passenger/templates/database_error.html.erb +0 -66
  796. data/lib/phusion_passenger/templates/error_layout.html.erb +0 -39
  797. data/lib/phusion_passenger/templates/framework_init_error.html.erb +0 -39
  798. data/lib/phusion_passenger/templates/general_error.html.erb +0 -22
  799. data/lib/phusion_passenger/templates/load_error.html.erb +0 -46
  800. data/lib/phusion_passenger/templates/version_not_found.html.erb +0 -34
  801. data/lib/phusion_passenger/utils/rewindable_input.rb +0 -125
  802. data/lib/phusion_passenger/wsgi/application_spawner.rb +0 -108
  803. data/test/config.yml.example +0 -41
  804. data/test/cxx/ApplicationPool_PoolTest.cpp +0 -33
  805. data/test/cxx/ApplicationPool_PoolTestCases.cpp +0 -1029
  806. data/test/cxx/ApplicationPool_ServerTest.cpp +0 -308
  807. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +0 -80
  808. data/test/cxx/MessageChannelTest.cpp +0 -557
  809. data/test/cxx/PoolOptionsTest.cpp +0 -116
  810. data/test/cxx/SpawnManagerTest.cpp +0 -161
  811. data/test/ruby/abstract_server_collection_spec.rb +0 -247
  812. data/test/ruby/abstract_server_spec.rb +0 -61
  813. data/test/ruby/app_process_spec.rb +0 -43
  814. data/test/ruby/classic_rails/application_spawner_spec.rb +0 -89
  815. data/test/ruby/classic_rails/framework_spawner_spec.rb +0 -92
  816. data/test/ruby/rack/application_spawner_spec.rb +0 -116
  817. data/test/ruby/shared/abstract_server_spec.rb +0 -23
  818. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +0 -38
  819. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +0 -19
  820. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +0 -15
  821. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +0 -27
  822. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +0 -29
  823. data/test/ruby/shared/spawners/reload_all_spec.rb +0 -36
  824. data/test/ruby/shared/spawners/reload_single_spec.rb +0 -52
  825. data/test/ruby/shared/spawners/spawn_server_spec.rb +0 -28
  826. data/test/ruby/shared/spawners/spawner_spec.rb +0 -273
  827. data/test/ruby/shared/utils/pseudo_io_spec.rb +0 -60
  828. data/test/ruby/spawn_manager_spec.rb +0 -134
  829. data/test/ruby/wsgi/application_spawner_spec.rb +0 -50
  830. data/test/stub/message_channel.rb +0 -11
  831. data/test/stub/message_channel_2.rb +0 -12
  832. data/test/stub/message_channel_3.rb +0 -19
  833. data/test/stub/rails_apps/3.0/empty/Gemfile.lock +0 -73
  834. data/test/stub/spawn_server.rb +0 -22
  835. 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 omitted from <iosfwd> if that header is included
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
@@ -137,10 +137,8 @@ namespace boost
137
137
 
138
138
  } // namespace boost
139
139
 
140
- #elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || \
141
- defined(__SOLARIS9__) || defined(__NetBSD__)
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 ULONG_MAX == 0xffffffff
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: 2010-01-10 14:17:23 -0500 (Sun, 10 Jan 2010) $
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: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
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
- #ifdef BOOST_HAS_DECLSPEC // defined in config system
122
- // we need to import/export our code only if the user has specifically
123
- // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
124
- // libraries to be dynamically linked, or BOOST_DATE_TIME_DYN_LINK
125
- // if they want just this one to be dynamically liked:
126
- # if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_DATE_TIME_DYN_LINK)
127
- // export if this is our own source, otherwise import:
128
- # ifdef BOOST_DATE_TIME_SOURCE
129
- # define BOOST_DATE_TIME_DECL __declspec(dllexport)
130
- # else
131
- # define BOOST_DATE_TIME_DECL __declspec(dllimport)
132
- # endif // BOOST_DATE_TIME_SOURCE
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: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
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: 2009-06-06 07:24:09 -0400 (Sat, 06 Jun 2009) $
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(BOOST_NO_GETSYSTEMTIMEASFILETIME)
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: 2010-01-10 14:17:23 -0500 (Sun, 10 Jan 2010) $
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 ((week == 53)) {
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: 2009-02-01 06:29:43 -0500 (Sun, 01 Feb 2009) $
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: 2010-06-09 12:39:31 -0400 (Wed, 09 Jun 2010) $
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 a_ref = 0)
248
- : base_type(default_time_format, period_formatter_type(), special_values_formatter_type(), date_gen_formatter_type(), a_ref),
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* a_format,
254
- period_formatter_type period_formatter = 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 a_ref = 0)
258
- : base_type(a_format,
259
- period_formatter,
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
- a_ref),
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 a_next,
282
- std::ios_base& a_ios,
283
- char_type a_fill,
284
- const time_type& a_time) const
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 (a_time.is_special()) {
287
- return this->do_put_special(a_next, a_ios, a_fill,
288
- a_time.date().as_special());
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 format(this->m_format);
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(format,
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(format,
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 (format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
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(a_time.time_of_day(), false);
305
- char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
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(format,
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 (format.find(posix_zone_string_format) != string_type::npos) {
318
- if(a_time.zone_abbrev().empty()) {
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(format, posix_zone_string_format);
321
+ boost::algorithm::erase_all(local_format, posix_zone_string_format);
322
322
  }
323
323
  else{
324
- boost::algorithm::replace_all(format,
324
+ boost::algorithm::replace_all(local_format,
325
325
  posix_zone_string_format,
326
- a_time.zone_as_posix_string());
326
+ time_arg.zone_as_posix_string());
327
327
  }
328
328
  }
329
- if (format.find(zone_name_format) != string_type::npos) {
330
- if(a_time.zone_name().empty()) {
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(format, ss.str());
339
+ boost::algorithm::erase_all(local_format, ss.str());
340
340
  }
341
341
  else{
342
- boost::algorithm::replace_all(format,
342
+ boost::algorithm::replace_all(local_format,
343
343
  zone_name_format,
344
- a_time.zone_name());
344
+ time_arg.zone_name());
345
345
  }
346
346
  }
347
- if (format.find(zone_abbrev_format) != string_type::npos) {
348
- if(a_time.zone_abbrev(false).empty()) {
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(format, ss.str());
357
+ boost::algorithm::erase_all(local_format, ss.str());
358
358
  }
359
359
  else{
360
- boost::algorithm::replace_all(format,
360
+ boost::algorithm::replace_all(local_format,
361
361
  zone_abbrev_format,
362
- a_time.zone_abbrev(false));
362
+ time_arg.zone_abbrev(false));
363
363
  }
364
364
  }
365
- if (format.find(zone_iso_extended_format) != string_type::npos) {
366
- if(a_time.zone_name(true).empty()) {
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(format, zone_iso_extended_format);
373
+ boost::algorithm::erase_all(local_format, zone_iso_extended_format);
374
374
  }
375
375
  else{
376
- boost::algorithm::replace_all(format,
376
+ boost::algorithm::replace_all(local_format,
377
377
  zone_iso_extended_format,
378
- a_time.zone_name(true));
378
+ time_arg.zone_name(true));
379
379
  }
380
380
  }
381
381
 
382
- if (format.find(zone_iso_format) != string_type::npos) {
383
- if(a_time.zone_abbrev(true).empty()) {
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(format, zone_iso_format);
390
+ boost::algorithm::erase_all(local_format, zone_iso_format);
391
391
  }
392
392
  else{
393
- boost::algorithm::replace_all(format,
393
+ boost::algorithm::replace_all(local_format,
394
394
  zone_iso_format,
395
- a_time.zone_abbrev(true));
395
+ time_arg.zone_abbrev(true));
396
396
  }
397
397
  }
398
- if (format.find(fractional_seconds_format) != string_type::npos) {
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(a_time.time_of_day(), false);
401
+ frac_str = fractional_seconds_as_string(time_arg.time_of_day(), false);
402
402
  }
403
- boost::algorithm::replace_all(format,
403
+ boost::algorithm::replace_all(local_format,
404
404
  fractional_seconds_format,
405
405
  frac_str);
406
406
  }
407
407
 
408
- if (format.find(fractional_seconds_or_none_format) != string_type::npos) {
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(a_time.time_of_day(), true);
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> >(a_ios.getloc()).decimal_point();
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(format,
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(format,
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(a_next, a_ios, a_fill,
428
- to_tm(a_time), format);
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 a_next,
433
- std::ios_base& a_ios,
434
- char_type a_fill,
435
- const time_duration_type& a_time_dur) const
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 (a_time_dur.is_special()) {
438
- return this->do_put_special(a_next, a_ios, a_fill,
439
- a_time_dur.get_rep().as_special());
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 (a_time_dur.is_negative()) {
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(a_time_dur);
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(a_time_dur);
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(a_time_dur, false);
498
- char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
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(a_time_dur, false);
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(a_time_dur, true);
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> >(a_ios.getloc()).decimal_point();
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(a_next, a_ios, a_fill,
537
- to_tm(a_time_dur), format);
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& a_ios,
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, a_ios, fill,p,*this);
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& a_time,
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
- a_time.fractional_seconds();
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& a_time, int width = 2)
569
+ hours_as_string(const time_duration_type& time_arg, int width = 2)
570
570
  {
571
- return integral_as_string(date_time::absolute_value(a_time.hours()), width);
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 a_ref = 0)
735
- : base_type(format, a_ref),
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 a_ref = 0)
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
- a_ref),
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 a_ref = 0)
756
- : base_type(default_time_input_format, a_ref),
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& a_ios,
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
- a_ios,
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& a_ios,
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>(a_ios.getloc())) {
816
+ if(!std::has_facet<num_get>(ios_arg.getloc())) {
817
817
  num_get* ng = new num_get();
818
- std::locale loc = std::locale(a_ios.getloc(), ng);
819
- a_ios.imbue(loc);
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& a_ios,
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, a_ios, t, tz_str, false);
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& a_ios,
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, a_ios, t, tz_str, true);
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& a_ios,
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>(a_ios.getloc())) {
988
+ if(!std::has_facet<num_get>(ios_arg.getloc())) {
989
989
  num_get* ng = new num_get();
990
- std::locale loc = std::locale(a_ios.getloc(), ng);
991
- a_ios.imbue(loc);
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());