From cc40af334e619bb549038238507407866f774f8f Mon Sep 17 00:00:00 2001 From: hongbotian Date: Mon, 30 Nov 2015 01:35:09 -0500 Subject: [PATCH] upload apache JIRA: BOTTLENECK-10 Change-Id: I67eae31de6dc824097dfa56ab454ba36fdd23a2c Signed-off-by: hongbotian --- rubbos/app/apache2/bin/ab | Bin 0 -> 104358 bytes rubbos/app/apache2/bin/apachectl | 103 + rubbos/app/apache2/bin/apr-config | 249 + rubbos/app/apache2/bin/apu-config | 205 + rubbos/app/apache2/bin/apxs | 778 ++ rubbos/app/apache2/bin/checkgid | Bin 0 -> 13697 bytes rubbos/app/apache2/bin/dbmmanage | 312 + rubbos/app/apache2/bin/envvars | 24 + rubbos/app/apache2/bin/envvars-std | 24 + rubbos/app/apache2/bin/htdbm | Bin 0 -> 44199 bytes rubbos/app/apache2/bin/htdigest | Bin 0 -> 30574 bytes rubbos/app/apache2/bin/htpasswd | Bin 0 -> 38642 bytes rubbos/app/apache2/bin/httpd | Bin 0 -> 2192464 bytes rubbos/app/apache2/bin/httxt2dbm | Bin 0 -> 23394 bytes rubbos/app/apache2/bin/logresolve | Bin 0 -> 29935 bytes rubbos/app/apache2/bin/rotatelogs | Bin 0 -> 26569 bytes rubbos/app/apache2/build/apr_rules.mk | 194 + rubbos/app/apache2/build/config.nice | 10 + rubbos/app/apache2/build/config_vars.mk | 150 + rubbos/app/apache2/build/instdso.sh | 93 + rubbos/app/apache2/build/library.mk | 22 + rubbos/app/apache2/build/libtool | 7621 ++++++++++++++++++++ rubbos/app/apache2/build/ltlib.mk | 23 + rubbos/app/apache2/build/make_exports.awk | 150 + rubbos/app/apache2/build/make_var_export.awk | 59 + rubbos/app/apache2/build/mkdir.sh | 37 + rubbos/app/apache2/build/program.mk | 22 + rubbos/app/apache2/build/rules.mk | 226 + rubbos/app/apache2/build/special.mk | 38 + rubbos/app/apache2/cgi-bin/printenv | 13 + rubbos/app/apache2/cgi-bin/test-cgi | 31 + rubbos/app/apache2/conf/highperformance-std.conf | 70 + rubbos/app/apache2/conf/highperformance.conf | 70 + rubbos/app/apache2/conf/httpd-std.conf | 1041 +++ rubbos/app/apache2/conf/httpd.conf | 1076 +++ rubbos/app/apache2/conf/magic | 382 + rubbos/app/apache2/conf/mime.types | 1351 ++++ rubbos/app/apache2/conf/ssl-std.conf | 246 + rubbos/app/apache2/conf/ssl.conf | 246 + rubbos/app/apache2/conf/workers.properties | 215 + rubbos/app/apache2/error/HTTP_BAD_GATEWAY.html.var | 290 + rubbos/app/apache2/error/HTTP_BAD_REQUEST.html.var | 213 + rubbos/app/apache2/error/HTTP_FORBIDDEN.html.var | 372 + rubbos/app/apache2/error/HTTP_GONE.html.var | 422 ++ .../error/HTTP_INTERNAL_SERVER_ERROR.html.var | 453 ++ .../apache2/error/HTTP_LENGTH_REQUIRED.html.var | 222 + .../apache2/error/HTTP_METHOD_NOT_ALLOWED.html.var | 213 + rubbos/app/apache2/error/HTTP_NOT_FOUND.html.var | 435 ++ .../apache2/error/HTTP_NOT_IMPLEMENTED.html.var | 201 + .../error/HTTP_PRECONDITION_FAILED.html.var | 205 + .../error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | 226 + .../apache2/error/HTTP_REQUEST_TIME_OUT.html.var | 217 + .../error/HTTP_REQUEST_URI_TOO_LARGE.html.var | 217 + .../error/HTTP_SERVICE_UNAVAILABLE.html.var | 233 + .../app/apache2/error/HTTP_UNAUTHORIZED.html.var | 337 + .../error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | 201 + .../error/HTTP_VARIANT_ALSO_VARIES.html.var | 223 + rubbos/app/apache2/error/README | 36 + rubbos/app/apache2/error/contact.html.var | 120 + rubbos/app/apache2/error/include/bottom.html | 14 + rubbos/app/apache2/error/include/spacer.html | 2 + rubbos/app/apache2/error/include/top.html | 24 + rubbos/app/apache2/htdocs/apache_pb.gif | Bin 0 -> 2326 bytes rubbos/app/apache2/htdocs/apache_pb.png | Bin 0 -> 1385 bytes rubbos/app/apache2/htdocs/apache_pb2.gif | Bin 0 -> 2414 bytes rubbos/app/apache2/htdocs/apache_pb2.png | Bin 0 -> 1463 bytes rubbos/app/apache2/htdocs/apache_pb2_ani.gif | Bin 0 -> 2160 bytes rubbos/app/apache2/htdocs/index.html.ca | 38 + rubbos/app/apache2/htdocs/index.html.cz.iso8859-2 | 51 + rubbos/app/apache2/htdocs/index.html.de | 61 + rubbos/app/apache2/htdocs/index.html.dk | 47 + rubbos/app/apache2/htdocs/index.html.ee | 53 + rubbos/app/apache2/htdocs/index.html.el | 37 + rubbos/app/apache2/htdocs/index.html.en | 38 + rubbos/app/apache2/htdocs/index.html.es | 51 + rubbos/app/apache2/htdocs/index.html.et | 53 + rubbos/app/apache2/htdocs/index.html.fr | 47 + rubbos/app/apache2/htdocs/index.html.he.iso8859-8 | 54 + rubbos/app/apache2/htdocs/index.html.hr.iso8859-2 | 35 + rubbos/app/apache2/htdocs/index.html.it | 39 + rubbos/app/apache2/htdocs/index.html.ja.iso2022-jp | 42 + rubbos/app/apache2/htdocs/index.html.ko.euc-kr | 37 + rubbos/app/apache2/htdocs/index.html.lb.utf8 | 37 + rubbos/app/apache2/htdocs/index.html.nl | 54 + rubbos/app/apache2/htdocs/index.html.nn | 48 + rubbos/app/apache2/htdocs/index.html.no | 48 + rubbos/app/apache2/htdocs/index.html.po.iso8859-2 | 40 + rubbos/app/apache2/htdocs/index.html.pt | 42 + rubbos/app/apache2/htdocs/index.html.pt-br | 47 + rubbos/app/apache2/htdocs/index.html.ru.cp-1251 | 34 + rubbos/app/apache2/htdocs/index.html.ru.cp866 | 34 + rubbos/app/apache2/htdocs/index.html.ru.iso-ru | 34 + rubbos/app/apache2/htdocs/index.html.ru.koi8-r | 34 + rubbos/app/apache2/htdocs/index.html.ru.utf8 | 34 + rubbos/app/apache2/htdocs/index.html.sv | 43 + rubbos/app/apache2/htdocs/index.html.var | 123 + rubbos/app/apache2/htdocs/index.html.zh-cn.gb2312 | 29 + rubbos/app/apache2/htdocs/index.html.zh-tw.big5 | 46 + rubbos/app/apache2/htdocs/rubbos/RUBBoS_logo.jpg | Bin 0 -> 9724 bytes rubbos/app/apache2/htdocs/rubbos/author.html | 70 + rubbos/app/apache2/htdocs/rubbos/browse.html | 68 + rubbos/app/apache2/htdocs/rubbos/header.html | 53 + rubbos/app/apache2/htdocs/rubbos/index.html | 82 + rubbos/app/apache2/htdocs/rubbos/register.html | 95 + .../htdocs/rubbos/rubbos_html/RUBBoS_logo.jpg | Bin 0 -> 9724 bytes .../apache2/htdocs/rubbos/rubbos_html/author.html | 70 + .../apache2/htdocs/rubbos/rubbos_html/browse.html | 68 + .../apache2/htdocs/rubbos/rubbos_html/header.html | 53 + .../apache2/htdocs/rubbos/rubbos_html/index.html | 82 + .../htdocs/rubbos/rubbos_html/register.html | 95 + rubbos/app/apache2/icons/README | 166 + rubbos/app/apache2/icons/README.html | 815 +++ rubbos/app/apache2/icons/a.gif | Bin 0 -> 246 bytes rubbos/app/apache2/icons/a.png | Bin 0 -> 317 bytes rubbos/app/apache2/icons/alert.black.gif | Bin 0 -> 242 bytes rubbos/app/apache2/icons/alert.black.png | Bin 0 -> 304 bytes rubbos/app/apache2/icons/alert.red.gif | Bin 0 -> 247 bytes rubbos/app/apache2/icons/alert.red.png | Bin 0 -> 315 bytes rubbos/app/apache2/icons/apache_pb.gif | Bin 0 -> 2326 bytes rubbos/app/apache2/icons/apache_pb.png | Bin 0 -> 2089 bytes rubbos/app/apache2/icons/apache_pb2.gif | Bin 0 -> 2414 bytes rubbos/app/apache2/icons/apache_pb2.png | Bin 0 -> 2175 bytes rubbos/app/apache2/icons/apache_pb2_ani.gif | Bin 0 -> 2160 bytes rubbos/app/apache2/icons/back.gif | Bin 0 -> 216 bytes rubbos/app/apache2/icons/back.png | Bin 0 -> 316 bytes rubbos/app/apache2/icons/ball.gray.gif | Bin 0 -> 233 bytes rubbos/app/apache2/icons/ball.gray.png | Bin 0 -> 317 bytes rubbos/app/apache2/icons/ball.red.gif | Bin 0 -> 205 bytes rubbos/app/apache2/icons/ball.red.png | Bin 0 -> 295 bytes rubbos/app/apache2/icons/binary.gif | Bin 0 -> 246 bytes rubbos/app/apache2/icons/binary.png | Bin 0 -> 316 bytes rubbos/app/apache2/icons/binhex.gif | Bin 0 -> 246 bytes rubbos/app/apache2/icons/binhex.png | Bin 0 -> 325 bytes rubbos/app/apache2/icons/blank.gif | Bin 0 -> 148 bytes rubbos/app/apache2/icons/blank.png | Bin 0 -> 220 bytes rubbos/app/apache2/icons/bomb.gif | Bin 0 -> 308 bytes rubbos/app/apache2/icons/bomb.png | Bin 0 -> 390 bytes rubbos/app/apache2/icons/box1.gif | Bin 0 -> 251 bytes rubbos/app/apache2/icons/box1.png | Bin 0 -> 325 bytes rubbos/app/apache2/icons/box2.gif | Bin 0 -> 268 bytes rubbos/app/apache2/icons/box2.png | Bin 0 -> 336 bytes rubbos/app/apache2/icons/broken.gif | Bin 0 -> 247 bytes rubbos/app/apache2/icons/broken.png | Bin 0 -> 329 bytes rubbos/app/apache2/icons/burst.gif | Bin 0 -> 235 bytes rubbos/app/apache2/icons/burst.png | Bin 0 -> 344 bytes rubbos/app/apache2/icons/c.gif | Bin 0 -> 242 bytes rubbos/app/apache2/icons/c.png | Bin 0 -> 308 bytes rubbos/app/apache2/icons/comp.blue.gif | Bin 0 -> 251 bytes rubbos/app/apache2/icons/comp.blue.png | Bin 0 -> 330 bytes rubbos/app/apache2/icons/comp.gray.gif | Bin 0 -> 246 bytes rubbos/app/apache2/icons/comp.gray.png | Bin 0 -> 324 bytes rubbos/app/apache2/icons/compressed.gif | Bin 0 -> 1038 bytes rubbos/app/apache2/icons/compressed.png | Bin 0 -> 1108 bytes rubbos/app/apache2/icons/continued.gif | Bin 0 -> 214 bytes rubbos/app/apache2/icons/continued.png | Bin 0 -> 302 bytes rubbos/app/apache2/icons/dir.gif | Bin 0 -> 225 bytes rubbos/app/apache2/icons/dir.png | Bin 0 -> 301 bytes rubbos/app/apache2/icons/diskimg.gif | Bin 0 -> 167 bytes rubbos/app/apache2/icons/diskimg.png | Bin 0 -> 215 bytes rubbos/app/apache2/icons/down.gif | Bin 0 -> 163 bytes rubbos/app/apache2/icons/down.png | Bin 0 -> 262 bytes rubbos/app/apache2/icons/dvi.gif | Bin 0 -> 238 bytes rubbos/app/apache2/icons/dvi.png | Bin 0 -> 314 bytes rubbos/app/apache2/icons/f.gif | Bin 0 -> 236 bytes rubbos/app/apache2/icons/f.png | Bin 0 -> 305 bytes rubbos/app/apache2/icons/folder.gif | Bin 0 -> 225 bytes rubbos/app/apache2/icons/folder.open.gif | Bin 0 -> 242 bytes rubbos/app/apache2/icons/folder.open.png | Bin 0 -> 335 bytes rubbos/app/apache2/icons/folder.png | Bin 0 -> 301 bytes rubbos/app/apache2/icons/folder.sec.gif | Bin 0 -> 243 bytes rubbos/app/apache2/icons/folder.sec.png | Bin 0 -> 313 bytes rubbos/app/apache2/icons/forward.gif | Bin 0 -> 219 bytes rubbos/app/apache2/icons/forward.png | Bin 0 -> 314 bytes rubbos/app/apache2/icons/generic.gif | Bin 0 -> 221 bytes rubbos/app/apache2/icons/generic.png | Bin 0 -> 284 bytes rubbos/app/apache2/icons/generic.red.gif | Bin 0 -> 220 bytes rubbos/app/apache2/icons/generic.red.png | Bin 0 -> 286 bytes rubbos/app/apache2/icons/generic.sec.gif | Bin 0 -> 249 bytes rubbos/app/apache2/icons/generic.sec.png | Bin 0 -> 298 bytes rubbos/app/apache2/icons/hand.right.gif | Bin 0 -> 217 bytes rubbos/app/apache2/icons/hand.right.png | Bin 0 -> 322 bytes rubbos/app/apache2/icons/hand.up.gif | Bin 0 -> 223 bytes rubbos/app/apache2/icons/hand.up.png | Bin 0 -> 313 bytes rubbos/app/apache2/icons/icon.sheet.gif | Bin 0 -> 11977 bytes rubbos/app/apache2/icons/icon.sheet.png | Bin 0 -> 9018 bytes rubbos/app/apache2/icons/image1.gif | Bin 0 -> 274 bytes rubbos/app/apache2/icons/image1.png | Bin 0 -> 347 bytes rubbos/app/apache2/icons/image2.gif | Bin 0 -> 309 bytes rubbos/app/apache2/icons/image2.png | Bin 0 -> 383 bytes rubbos/app/apache2/icons/image3.gif | Bin 0 -> 286 bytes rubbos/app/apache2/icons/image3.png | Bin 0 -> 356 bytes rubbos/app/apache2/icons/index.gif | Bin 0 -> 268 bytes rubbos/app/apache2/icons/index.png | Bin 0 -> 338 bytes rubbos/app/apache2/icons/layout.gif | Bin 0 -> 276 bytes rubbos/app/apache2/icons/layout.png | Bin 0 -> 344 bytes rubbos/app/apache2/icons/left.gif | Bin 0 -> 172 bytes rubbos/app/apache2/icons/left.png | Bin 0 -> 260 bytes rubbos/app/apache2/icons/link.gif | Bin 0 -> 249 bytes rubbos/app/apache2/icons/link.png | Bin 0 -> 317 bytes rubbos/app/apache2/icons/movie.gif | Bin 0 -> 243 bytes rubbos/app/apache2/icons/movie.png | Bin 0 -> 275 bytes rubbos/app/apache2/icons/p.gif | Bin 0 -> 237 bytes rubbos/app/apache2/icons/p.png | Bin 0 -> 307 bytes rubbos/app/apache2/icons/patch.gif | Bin 0 -> 251 bytes rubbos/app/apache2/icons/patch.png | Bin 0 -> 313 bytes rubbos/app/apache2/icons/pdf.gif | Bin 0 -> 249 bytes rubbos/app/apache2/icons/pdf.png | Bin 0 -> 313 bytes rubbos/app/apache2/icons/pie0.gif | Bin 0 -> 188 bytes rubbos/app/apache2/icons/pie0.png | Bin 0 -> 262 bytes rubbos/app/apache2/icons/pie1.gif | Bin 0 -> 198 bytes rubbos/app/apache2/icons/pie1.png | Bin 0 -> 282 bytes rubbos/app/apache2/icons/pie2.gif | Bin 0 -> 198 bytes rubbos/app/apache2/icons/pie2.png | Bin 0 -> 275 bytes rubbos/app/apache2/icons/pie3.gif | Bin 0 -> 191 bytes rubbos/app/apache2/icons/pie3.png | Bin 0 -> 279 bytes rubbos/app/apache2/icons/pie4.gif | Bin 0 -> 193 bytes rubbos/app/apache2/icons/pie4.png | Bin 0 -> 261 bytes rubbos/app/apache2/icons/pie5.gif | Bin 0 -> 189 bytes rubbos/app/apache2/icons/pie5.png | Bin 0 -> 280 bytes rubbos/app/apache2/icons/pie6.gif | Bin 0 -> 186 bytes rubbos/app/apache2/icons/pie6.png | Bin 0 -> 276 bytes rubbos/app/apache2/icons/pie7.gif | Bin 0 -> 185 bytes rubbos/app/apache2/icons/pie7.png | Bin 0 -> 278 bytes rubbos/app/apache2/icons/pie8.gif | Bin 0 -> 173 bytes rubbos/app/apache2/icons/pie8.png | Bin 0 -> 262 bytes rubbos/app/apache2/icons/portal.gif | Bin 0 -> 254 bytes rubbos/app/apache2/icons/portal.png | Bin 0 -> 319 bytes rubbos/app/apache2/icons/ps.gif | Bin 0 -> 244 bytes rubbos/app/apache2/icons/ps.png | Bin 0 -> 312 bytes rubbos/app/apache2/icons/quill.gif | Bin 0 -> 267 bytes rubbos/app/apache2/icons/quill.png | Bin 0 -> 329 bytes rubbos/app/apache2/icons/right.gif | Bin 0 -> 172 bytes rubbos/app/apache2/icons/right.png | Bin 0 -> 257 bytes rubbos/app/apache2/icons/screw1.gif | Bin 0 -> 258 bytes rubbos/app/apache2/icons/screw1.png | Bin 0 -> 334 bytes rubbos/app/apache2/icons/screw2.gif | Bin 0 -> 263 bytes rubbos/app/apache2/icons/screw2.png | Bin 0 -> 339 bytes rubbos/app/apache2/icons/script.gif | Bin 0 -> 242 bytes rubbos/app/apache2/icons/script.png | Bin 0 -> 299 bytes rubbos/app/apache2/icons/small/back.gif | Bin 0 -> 129 bytes rubbos/app/apache2/icons/small/back.png | Bin 0 -> 181 bytes rubbos/app/apache2/icons/small/binary.gif | Bin 0 -> 134 bytes rubbos/app/apache2/icons/small/binary.png | Bin 0 -> 172 bytes rubbos/app/apache2/icons/small/binhex.gif | Bin 0 -> 131 bytes rubbos/app/apache2/icons/small/binhex.png | Bin 0 -> 178 bytes rubbos/app/apache2/icons/small/blank.gif | Bin 0 -> 55 bytes rubbos/app/apache2/icons/small/blank.png | Bin 0 -> 100 bytes rubbos/app/apache2/icons/small/broken.gif | Bin 0 -> 139 bytes rubbos/app/apache2/icons/small/broken.png | Bin 0 -> 184 bytes rubbos/app/apache2/icons/small/burst.gif | Bin 0 -> 128 bytes rubbos/app/apache2/icons/small/burst.png | Bin 0 -> 210 bytes rubbos/app/apache2/icons/small/comp1.gif | Bin 0 -> 130 bytes rubbos/app/apache2/icons/small/comp1.png | Bin 0 -> 216 bytes rubbos/app/apache2/icons/small/comp2.gif | Bin 0 -> 131 bytes rubbos/app/apache2/icons/small/comp2.png | Bin 0 -> 215 bytes rubbos/app/apache2/icons/small/compressed.gif | Bin 0 -> 128 bytes rubbos/app/apache2/icons/small/compressed.png | Bin 0 -> 212 bytes rubbos/app/apache2/icons/small/continued.gif | Bin 0 -> 114 bytes rubbos/app/apache2/icons/small/continued.png | Bin 0 -> 163 bytes rubbos/app/apache2/icons/small/dir.gif | Bin 0 -> 132 bytes rubbos/app/apache2/icons/small/dir.png | Bin 0 -> 175 bytes rubbos/app/apache2/icons/small/dir2.gif | Bin 0 -> 122 bytes rubbos/app/apache2/icons/small/dir2.png | Bin 0 -> 161 bytes rubbos/app/apache2/icons/small/doc.gif | Bin 0 -> 191 bytes rubbos/app/apache2/icons/small/doc.png | Bin 0 -> 222 bytes rubbos/app/apache2/icons/small/forward.gif | Bin 0 -> 125 bytes rubbos/app/apache2/icons/small/forward.png | Bin 0 -> 174 bytes rubbos/app/apache2/icons/small/generic.gif | Bin 0 -> 116 bytes rubbos/app/apache2/icons/small/generic.png | Bin 0 -> 149 bytes rubbos/app/apache2/icons/small/generic2.gif | Bin 0 -> 127 bytes rubbos/app/apache2/icons/small/generic2.png | Bin 0 -> 179 bytes rubbos/app/apache2/icons/small/generic3.gif | Bin 0 -> 113 bytes rubbos/app/apache2/icons/small/generic3.png | Bin 0 -> 171 bytes rubbos/app/apache2/icons/small/image.gif | Bin 0 -> 126 bytes rubbos/app/apache2/icons/small/image.png | Bin 0 -> 197 bytes rubbos/app/apache2/icons/small/image2.gif | Bin 0 -> 138 bytes rubbos/app/apache2/icons/small/image2.png | Bin 0 -> 203 bytes rubbos/app/apache2/icons/small/index.gif | Bin 0 -> 145 bytes rubbos/app/apache2/icons/small/index.png | Bin 0 -> 225 bytes rubbos/app/apache2/icons/small/key.gif | Bin 0 -> 187 bytes rubbos/app/apache2/icons/small/key.png | Bin 0 -> 210 bytes rubbos/app/apache2/icons/small/movie.gif | Bin 0 -> 134 bytes rubbos/app/apache2/icons/small/movie.png | Bin 0 -> 159 bytes rubbos/app/apache2/icons/small/patch.gif | Bin 0 -> 182 bytes rubbos/app/apache2/icons/small/patch.png | Bin 0 -> 211 bytes rubbos/app/apache2/icons/small/ps.gif | Bin 0 -> 184 bytes rubbos/app/apache2/icons/small/ps.png | Bin 0 -> 217 bytes rubbos/app/apache2/icons/small/rainbow.gif | Bin 0 -> 3811 bytes rubbos/app/apache2/icons/small/rainbow.png | Bin 0 -> 2427 bytes rubbos/app/apache2/icons/small/sound.gif | Bin 0 -> 130 bytes rubbos/app/apache2/icons/small/sound.png | Bin 0 -> 197 bytes rubbos/app/apache2/icons/small/sound2.gif | Bin 0 -> 119 bytes rubbos/app/apache2/icons/small/sound2.png | Bin 0 -> 171 bytes rubbos/app/apache2/icons/small/tar.gif | Bin 0 -> 132 bytes rubbos/app/apache2/icons/small/tar.png | Bin 0 -> 173 bytes rubbos/app/apache2/icons/small/text.gif | Bin 0 -> 128 bytes rubbos/app/apache2/icons/small/text.png | Bin 0 -> 163 bytes rubbos/app/apache2/icons/small/transfer.gif | Bin 0 -> 124 bytes rubbos/app/apache2/icons/small/transfer.png | Bin 0 -> 211 bytes rubbos/app/apache2/icons/small/unknown.gif | Bin 0 -> 131 bytes rubbos/app/apache2/icons/small/unknown.png | Bin 0 -> 172 bytes rubbos/app/apache2/icons/small/uu.gif | Bin 0 -> 125 bytes rubbos/app/apache2/icons/small/uu.png | Bin 0 -> 166 bytes rubbos/app/apache2/icons/sound1.gif | Bin 0 -> 248 bytes rubbos/app/apache2/icons/sound1.png | Bin 0 -> 331 bytes rubbos/app/apache2/icons/sound2.gif | Bin 0 -> 221 bytes rubbos/app/apache2/icons/sound2.png | Bin 0 -> 319 bytes rubbos/app/apache2/icons/sphere1.gif | Bin 0 -> 285 bytes rubbos/app/apache2/icons/sphere1.png | Bin 0 -> 368 bytes rubbos/app/apache2/icons/sphere2.gif | Bin 0 -> 264 bytes rubbos/app/apache2/icons/sphere2.png | Bin 0 -> 339 bytes rubbos/app/apache2/icons/tar.gif | Bin 0 -> 219 bytes rubbos/app/apache2/icons/tar.png | Bin 0 -> 270 bytes rubbos/app/apache2/icons/tex.gif | Bin 0 -> 251 bytes rubbos/app/apache2/icons/tex.png | Bin 0 -> 319 bytes rubbos/app/apache2/icons/text.gif | Bin 0 -> 229 bytes rubbos/app/apache2/icons/text.png | Bin 0 -> 298 bytes rubbos/app/apache2/icons/transfer.gif | Bin 0 -> 242 bytes rubbos/app/apache2/icons/transfer.png | Bin 0 -> 337 bytes rubbos/app/apache2/icons/unknown.gif | Bin 0 -> 245 bytes rubbos/app/apache2/icons/unknown.png | Bin 0 -> 316 bytes rubbos/app/apache2/icons/up.gif | Bin 0 -> 164 bytes rubbos/app/apache2/icons/up.png | Bin 0 -> 261 bytes rubbos/app/apache2/icons/uu.gif | Bin 0 -> 236 bytes rubbos/app/apache2/icons/uu.png | Bin 0 -> 305 bytes rubbos/app/apache2/icons/uuencoded.gif | Bin 0 -> 236 bytes rubbos/app/apache2/icons/uuencoded.png | Bin 0 -> 305 bytes rubbos/app/apache2/icons/world1.gif | Bin 0 -> 228 bytes rubbos/app/apache2/icons/world1.png | Bin 0 -> 332 bytes rubbos/app/apache2/icons/world2.gif | Bin 0 -> 261 bytes rubbos/app/apache2/icons/world2.png | Bin 0 -> 366 bytes rubbos/app/apache2/include/ap_compat.h | 28 + rubbos/app/apache2/include/ap_config.h | 256 + rubbos/app/apache2/include/ap_config_auto.h | 250 + rubbos/app/apache2/include/ap_config_layout.h | 59 + rubbos/app/apache2/include/ap_listen.h | 119 + rubbos/app/apache2/include/ap_mmn.h | 127 + rubbos/app/apache2/include/ap_mpm.h | 176 + rubbos/app/apache2/include/ap_provider.h | 54 + rubbos/app/apache2/include/ap_regkey.h | 218 + rubbos/app/apache2/include/ap_release.h | 56 + rubbos/app/apache2/include/apr.h | 414 ++ rubbos/app/apache2/include/apr_allocator.h | 170 + rubbos/app/apache2/include/apr_anylock.h | 128 + rubbos/app/apache2/include/apr_atomic.h | 314 + rubbos/app/apache2/include/apr_base64.h | 112 + rubbos/app/apache2/include/apr_buckets.h | 1495 ++++ rubbos/app/apache2/include/apr_compat.h | 231 + rubbos/app/apache2/include/apr_date.h | 106 + rubbos/app/apache2/include/apr_dbm.h | 224 + rubbos/app/apache2/include/apr_dso.h | 94 + rubbos/app/apache2/include/apr_env.h | 67 + rubbos/app/apache2/include/apr_errno.h | 1219 ++++ rubbos/app/apache2/include/apr_file_info.h | 421 ++ rubbos/app/apache2/include/apr_file_io.h | 766 ++ rubbos/app/apache2/include/apr_fnmatch.h | 105 + rubbos/app/apache2/include/apr_general.h | 249 + rubbos/app/apache2/include/apr_getopt.h | 158 + rubbos/app/apache2/include/apr_global_mutex.h | 153 + rubbos/app/apache2/include/apr_hash.h | 201 + rubbos/app/apache2/include/apr_hooks.h | 273 + rubbos/app/apache2/include/apr_inherit.h | 51 + rubbos/app/apache2/include/apr_ldap.h | 176 + rubbos/app/apache2/include/apr_ldap_url.h | 84 + rubbos/app/apache2/include/apr_lib.h | 228 + rubbos/app/apache2/include/apr_md4.h | 135 + rubbos/app/apache2/include/apr_md5.h | 158 + rubbos/app/apache2/include/apr_mmap.h | 193 + rubbos/app/apache2/include/apr_network_io.h | 845 +++ rubbos/app/apache2/include/apr_optional.h | 99 + rubbos/app/apache2/include/apr_optional_hooks.h | 117 + rubbos/app/apache2/include/apr_poll.h | 253 + rubbos/app/apache2/include/apr_pools.h | 664 ++ rubbos/app/apache2/include/apr_portable.h | 505 ++ rubbos/app/apache2/include/apr_proc_mutex.h | 166 + rubbos/app/apache2/include/apr_queue.h | 138 + rubbos/app/apache2/include/apr_reslist.h | 141 + rubbos/app/apache2/include/apr_ring.h | 551 ++ rubbos/app/apache2/include/apr_rmm.h | 137 + rubbos/app/apache2/include/apr_sdbm.h | 175 + rubbos/app/apache2/include/apr_sha1.h | 121 + rubbos/app/apache2/include/apr_shm.h | 127 + rubbos/app/apache2/include/apr_signal.h | 98 + rubbos/app/apache2/include/apr_strings.h | 337 + rubbos/app/apache2/include/apr_strmatch.h | 81 + rubbos/app/apache2/include/apr_support.h | 51 + rubbos/app/apache2/include/apr_tables.h | 422 ++ rubbos/app/apache2/include/apr_thread_cond.h | 128 + rubbos/app/apache2/include/apr_thread_mutex.h | 110 + rubbos/app/apache2/include/apr_thread_proc.h | 772 ++ rubbos/app/apache2/include/apr_thread_rwlock.h | 120 + rubbos/app/apache2/include/apr_time.h | 245 + rubbos/app/apache2/include/apr_uri.h | 181 + rubbos/app/apache2/include/apr_user.h | 195 + rubbos/app/apache2/include/apr_uuid.h | 76 + rubbos/app/apache2/include/apr_version.h | 115 + rubbos/app/apache2/include/apr_want.h | 109 + rubbos/app/apache2/include/apr_xlate.h | 158 + rubbos/app/apache2/include/apr_xml.h | 340 + rubbos/app/apache2/include/apu.h | 85 + rubbos/app/apache2/include/apu_compat.h | 116 + rubbos/app/apache2/include/apu_version.h | 105 + rubbos/app/apache2/include/apu_want.h | 50 + rubbos/app/apache2/include/expat.h | 1001 +++ rubbos/app/apache2/include/fdqueue.h | 64 + rubbos/app/apache2/include/http_config.h | 1018 +++ rubbos/app/apache2/include/http_connection.h | 139 + rubbos/app/apache2/include/http_core.h | 640 ++ rubbos/app/apache2/include/http_log.h | 334 + rubbos/app/apache2/include/http_main.h | 58 + rubbos/app/apache2/include/http_protocol.h | 697 ++ rubbos/app/apache2/include/http_request.h | 373 + rubbos/app/apache2/include/http_vhost.h | 109 + rubbos/app/apache2/include/httpd.h | 1760 +++++ rubbos/app/apache2/include/mod_cgi.h | 62 + rubbos/app/apache2/include/mod_core.h | 80 + rubbos/app/apache2/include/mod_dav.h | 2420 +++++++ rubbos/app/apache2/include/mod_include.h | 206 + rubbos/app/apache2/include/mod_log_config.h | 63 + rubbos/app/apache2/include/mod_proxy.h | 255 + rubbos/app/apache2/include/mod_ssl.h | 724 ++ rubbos/app/apache2/include/mod_status.h | 54 + rubbos/app/apache2/include/mpm.h | 50 + rubbos/app/apache2/include/mpm_common.h | 298 + rubbos/app/apache2/include/mpm_default.h | 69 + rubbos/app/apache2/include/os.h | 27 + rubbos/app/apache2/include/pcre.h | 113 + rubbos/app/apache2/include/pcreposix.h | 88 + rubbos/app/apache2/include/pod.h | 50 + rubbos/app/apache2/include/rfc1413.h | 42 + rubbos/app/apache2/include/scoreboard.h | 197 + rubbos/app/apache2/include/ssl_expr.h | 104 + rubbos/app/apache2/include/ssl_expr_parse.h | 27 + rubbos/app/apache2/include/ssl_toolkit_compat.h | 239 + rubbos/app/apache2/include/ssl_util_ssl.h | 93 + rubbos/app/apache2/include/ssl_util_table.h | 152 + rubbos/app/apache2/include/unixd.h | 109 + rubbos/app/apache2/include/util_cfgtree.h | 79 + rubbos/app/apache2/include/util_charset.h | 54 + rubbos/app/apache2/include/util_ebcdic.h | 78 + rubbos/app/apache2/include/util_filter.h | 516 ++ rubbos/app/apache2/include/util_ldap.h | 318 + rubbos/app/apache2/include/util_md5.h | 70 + rubbos/app/apache2/include/util_script.h | 142 + rubbos/app/apache2/include/util_time.h | 85 + rubbos/app/apache2/include/util_xml.h | 46 + rubbos/app/apache2/lib/apr.exp | 419 ++ rubbos/app/apache2/lib/aprutil.exp | 187 + rubbos/app/apache2/lib/libapr-0.a | Bin 0 -> 1237804 bytes rubbos/app/apache2/lib/libapr-0.la | 35 + rubbos/app/apache2/lib/libapr-0.so | Bin 0 -> 708933 bytes rubbos/app/apache2/lib/libapr-0.so.0 | Bin 0 -> 708933 bytes rubbos/app/apache2/lib/libapr-0.so.0.9.19 | Bin 0 -> 708933 bytes rubbos/app/apache2/lib/libaprutil-0.a | Bin 0 -> 709894 bytes rubbos/app/apache2/lib/libaprutil-0.la | 35 + rubbos/app/apache2/lib/libaprutil-0.so | Bin 0 -> 415764 bytes rubbos/app/apache2/lib/libaprutil-0.so.0 | Bin 0 -> 415764 bytes rubbos/app/apache2/lib/libaprutil-0.so.0.9.19 | Bin 0 -> 415764 bytes rubbos/app/apache2/lib/libexpat.a | Bin 0 -> 804898 bytes rubbos/app/apache2/lib/libexpat.la | 35 + rubbos/app/apache2/lib/libexpat.so | Bin 0 -> 513838 bytes rubbos/app/apache2/lib/libexpat.so.0 | Bin 0 -> 513838 bytes rubbos/app/apache2/lib/libexpat.so.0.5.0 | Bin 0 -> 513838 bytes rubbos/app/apache2/logs/access_log | 0 rubbos/app/apache2/logs/error_log | 2 + rubbos/app/apache2/man/man1/dbmmanage.1 | 118 + rubbos/app/apache2/man/man1/htdbm.1 | 169 + rubbos/app/apache2/man/man1/htdigest.1 | 57 + rubbos/app/apache2/man/man1/htpasswd.1 | 146 + rubbos/app/apache2/man/man8/ab.8 | 125 + rubbos/app/apache2/man/man8/apachectl.8 | 92 + rubbos/app/apache2/man/man8/apxs.8 | 255 + rubbos/app/apache2/man/man8/httpd.8 | 116 + rubbos/app/apache2/man/man8/logresolve.8 | 51 + rubbos/app/apache2/man/man8/rotatelogs.8 | 133 + rubbos/app/apache2/man/man8/suexec.8 | 48 + rubbos/app/apache2/manual/LICENSE | 202 + rubbos/app/apache2/manual/bind.html | 25 + rubbos/app/apache2/manual/bind.html.en | 177 + rubbos/app/apache2/manual/bind.html.es | 187 + rubbos/app/apache2/manual/bind.html.fr | 194 + rubbos/app/apache2/manual/bind.html.ja.utf8 | 193 + rubbos/app/apache2/manual/bind.html.ko.euc-kr | 163 + rubbos/app/apache2/manual/bind.html.tr.utf8 | 172 + rubbos/app/apache2/manual/configuring.html | 25 + rubbos/app/apache2/manual/configuring.html.de | 190 + rubbos/app/apache2/manual/configuring.html.en | 171 + rubbos/app/apache2/manual/configuring.html.fr | 185 + rubbos/app/apache2/manual/configuring.html.ja.utf8 | 175 + .../app/apache2/manual/configuring.html.ko.euc-kr | 156 + rubbos/app/apache2/manual/configuring.html.tr.utf8 | 101 + rubbos/app/apache2/manual/content-negotiation.html | 21 + .../app/apache2/manual/content-negotiation.html.en | 666 ++ .../app/apache2/manual/content-negotiation.html.fr | 715 ++ .../manual/content-negotiation.html.ja.utf8 | 725 ++ .../manual/content-negotiation.html.ko.euc-kr | 608 ++ .../manual/content-negotiation.html.tr.utf8 | 640 ++ rubbos/app/apache2/manual/custom-error.html | 25 + rubbos/app/apache2/manual/custom-error.html.en | 208 + rubbos/app/apache2/manual/custom-error.html.es | 223 + rubbos/app/apache2/manual/custom-error.html.fr | 215 + .../app/apache2/manual/custom-error.html.ja.utf8 | 201 + .../app/apache2/manual/custom-error.html.ko.euc-kr | 202 + .../app/apache2/manual/custom-error.html.tr.utf8 | 205 + rubbos/app/apache2/manual/developer/API.html | 5 + rubbos/app/apache2/manual/developer/API.html.en | 1223 ++++ rubbos/app/apache2/manual/developer/debugging.html | 5 + .../app/apache2/manual/developer/debugging.html.en | 196 + .../app/apache2/manual/developer/documenting.html | 5 + .../apache2/manual/developer/documenting.html.en | 84 + rubbos/app/apache2/manual/developer/filters.html | 5 + .../app/apache2/manual/developer/filters.html.en | 210 + rubbos/app/apache2/manual/developer/hooks.html | 5 + rubbos/app/apache2/manual/developer/hooks.html.en | 239 + rubbos/app/apache2/manual/developer/index.html | 5 + rubbos/app/apache2/manual/developer/index.html.en | 73 + rubbos/app/apache2/manual/developer/modules.html | 9 + .../app/apache2/manual/developer/modules.html.en | 273 + .../apache2/manual/developer/modules.html.ja.utf8 | 274 + rubbos/app/apache2/manual/developer/request.html | 5 + .../app/apache2/manual/developer/request.html.en | 260 + .../apache2/manual/developer/thread_safety.html | 5 + .../apache2/manual/developer/thread_safety.html.en | 285 + rubbos/app/apache2/manual/dns-caveats.html | 25 + rubbos/app/apache2/manual/dns-caveats.html.en | 245 + rubbos/app/apache2/manual/dns-caveats.html.es | 268 + rubbos/app/apache2/manual/dns-caveats.html.fr | 255 + rubbos/app/apache2/manual/dns-caveats.html.ja.utf8 | 249 + .../app/apache2/manual/dns-caveats.html.ko.euc-kr | 229 + rubbos/app/apache2/manual/dns-caveats.html.tr.utf8 | 239 + rubbos/app/apache2/manual/dso.html | 25 + rubbos/app/apache2/manual/dso.html.en | 318 + rubbos/app/apache2/manual/dso.html.es | 375 + rubbos/app/apache2/manual/dso.html.fr | 322 + rubbos/app/apache2/manual/dso.html.ja.utf8 | 301 + rubbos/app/apache2/manual/dso.html.ko.euc-kr | 282 + rubbos/app/apache2/manual/dso.html.tr.utf8 | 312 + rubbos/app/apache2/manual/env.html | 25 + rubbos/app/apache2/manual/env.html.en | 417 ++ rubbos/app/apache2/manual/env.html.es | 440 ++ rubbos/app/apache2/manual/env.html.fr | 425 ++ rubbos/app/apache2/manual/env.html.ja.utf8 | 391 + rubbos/app/apache2/manual/env.html.ko.euc-kr | 370 + rubbos/app/apache2/manual/env.html.tr.utf8 | 413 ++ rubbos/app/apache2/manual/faq/all_in_one.html | 13 + rubbos/app/apache2/manual/faq/all_in_one.html.en | 206 + .../apache2/manual/faq/all_in_one.html.ko.euc-kr | 207 + .../app/apache2/manual/faq/all_in_one.html.tr.utf8 | 209 + rubbos/app/apache2/manual/faq/error.html | 13 + rubbos/app/apache2/manual/faq/error.html.en | 85 + rubbos/app/apache2/manual/faq/error.html.ko.euc-kr | 84 + rubbos/app/apache2/manual/faq/error.html.tr.utf8 | 84 + rubbos/app/apache2/manual/faq/index.html | 13 + rubbos/app/apache2/manual/faq/index.html.en | 49 + rubbos/app/apache2/manual/faq/index.html.ko.euc-kr | 47 + rubbos/app/apache2/manual/faq/index.html.tr.utf8 | 49 + rubbos/app/apache2/manual/faq/support.html | 13 + rubbos/app/apache2/manual/faq/support.html.en | 138 + .../app/apache2/manual/faq/support.html.ko.euc-kr | 142 + rubbos/app/apache2/manual/faq/support.html.tr.utf8 | 142 + rubbos/app/apache2/manual/filter.html | 29 + rubbos/app/apache2/manual/filter.html.en | 84 + rubbos/app/apache2/manual/filter.html.es | 81 + rubbos/app/apache2/manual/filter.html.fr | 89 + rubbos/app/apache2/manual/filter.html.ja.utf8 | 84 + rubbos/app/apache2/manual/filter.html.ko.euc-kr | 82 + rubbos/app/apache2/manual/filter.html.ru.koi8-r | 85 + rubbos/app/apache2/manual/filter.html.tr.utf8 | 82 + rubbos/app/apache2/manual/glossary.html | 21 + rubbos/app/apache2/manual/glossary.html.de | 544 ++ rubbos/app/apache2/manual/glossary.html.en | 449 ++ rubbos/app/apache2/manual/glossary.html.es | 397 + rubbos/app/apache2/manual/glossary.html.ko.euc-kr | 366 + rubbos/app/apache2/manual/glossary.html.tr.utf8 | 460 ++ rubbos/app/apache2/manual/handler.html | 29 + rubbos/app/apache2/manual/handler.html.en | 159 + rubbos/app/apache2/manual/handler.html.es | 168 + rubbos/app/apache2/manual/handler.html.fr | 168 + rubbos/app/apache2/manual/handler.html.ja.utf8 | 163 + rubbos/app/apache2/manual/handler.html.ko.euc-kr | 153 + rubbos/app/apache2/manual/handler.html.ru.koi8-r | 168 + rubbos/app/apache2/manual/handler.html.tr.utf8 | 157 + rubbos/app/apache2/manual/howto/auth.html | 17 + rubbos/app/apache2/manual/howto/auth.html.en | 355 + rubbos/app/apache2/manual/howto/auth.html.es | 374 + rubbos/app/apache2/manual/howto/auth.html.ja.utf8 | 388 + .../app/apache2/manual/howto/auth.html.ko.euc-kr | 325 + rubbos/app/apache2/manual/howto/cgi.html | 13 + rubbos/app/apache2/manual/howto/cgi.html.en | 555 ++ rubbos/app/apache2/manual/howto/cgi.html.ja.utf8 | 546 ++ rubbos/app/apache2/manual/howto/cgi.html.ko.euc-kr | 503 ++ rubbos/app/apache2/manual/howto/htaccess.html | 13 + rubbos/app/apache2/manual/howto/htaccess.html.en | 386 + .../app/apache2/manual/howto/htaccess.html.ja.utf8 | 347 + .../apache2/manual/howto/htaccess.html.ko.euc-kr | 334 + rubbos/app/apache2/manual/howto/index.html | 13 + rubbos/app/apache2/manual/howto/index.html.en | 105 + rubbos/app/apache2/manual/howto/index.html.ja.utf8 | 102 + .../app/apache2/manual/howto/index.html.ko.euc-kr | 107 + rubbos/app/apache2/manual/howto/public_html.html | 17 + .../app/apache2/manual/howto/public_html.html.en | 163 + .../apache2/manual/howto/public_html.html.ja.utf8 | 157 + .../manual/howto/public_html.html.ko.euc-kr | 158 + .../apache2/manual/howto/public_html.html.tr.utf8 | 167 + rubbos/app/apache2/manual/howto/ssi.html | 13 + rubbos/app/apache2/manual/howto/ssi.html.en | 486 ++ rubbos/app/apache2/manual/howto/ssi.html.ja.utf8 | 481 ++ rubbos/app/apache2/manual/howto/ssi.html.ko.euc-kr | 426 ++ rubbos/app/apache2/manual/images/apache_header.gif | Bin 0 -> 4084 bytes .../app/apache2/manual/images/custom_errordocs.gif | Bin 0 -> 23291 bytes .../app/apache2/manual/images/custom_errordocs.png | Bin 0 -> 22907 bytes rubbos/app/apache2/manual/images/down.gif | Bin 0 -> 56 bytes rubbos/app/apache2/manual/images/favicon.ico | Bin 0 -> 1078 bytes rubbos/app/apache2/manual/images/feather.gif | Bin 0 -> 6471 bytes rubbos/app/apache2/manual/images/feather.png | Bin 0 -> 6345 bytes rubbos/app/apache2/manual/images/home.gif | Bin 0 -> 1465 bytes rubbos/app/apache2/manual/images/index.gif | Bin 0 -> 1540 bytes rubbos/app/apache2/manual/images/left.gif | Bin 0 -> 60 bytes .../app/apache2/manual/images/mod_rewrite_fig1.gif | Bin 0 -> 3525 bytes .../app/apache2/manual/images/mod_rewrite_fig1.png | Bin 0 -> 5597 bytes .../app/apache2/manual/images/mod_rewrite_fig2.gif | Bin 0 -> 2553 bytes .../app/apache2/manual/images/mod_rewrite_fig2.png | Bin 0 -> 4144 bytes rubbos/app/apache2/manual/images/pixel.gif | Bin 0 -> 61 bytes rubbos/app/apache2/manual/images/right.gif | Bin 0 -> 59 bytes .../app/apache2/manual/images/ssl_intro_fig1.gif | Bin 0 -> 5738 bytes .../app/apache2/manual/images/ssl_intro_fig1.png | Bin 0 -> 7325 bytes .../app/apache2/manual/images/ssl_intro_fig2.gif | Bin 0 -> 2700 bytes .../app/apache2/manual/images/ssl_intro_fig2.png | Bin 0 -> 3190 bytes .../app/apache2/manual/images/ssl_intro_fig3.gif | Bin 0 -> 4020 bytes .../app/apache2/manual/images/ssl_intro_fig3.png | Bin 0 -> 5487 bytes rubbos/app/apache2/manual/images/sub.gif | Bin 0 -> 6083 bytes rubbos/app/apache2/manual/images/up.gif | Bin 0 -> 57 bytes rubbos/app/apache2/manual/index.html | 33 + rubbos/app/apache2/manual/index.html.de | 104 + rubbos/app/apache2/manual/index.html.en | 103 + rubbos/app/apache2/manual/index.html.es | 108 + rubbos/app/apache2/manual/index.html.fr | 103 + rubbos/app/apache2/manual/index.html.ja.utf8 | 101 + rubbos/app/apache2/manual/index.html.ko.euc-kr | 101 + rubbos/app/apache2/manual/index.html.ru.koi8-r | 103 + rubbos/app/apache2/manual/index.html.tr.utf8 | 101 + rubbos/app/apache2/manual/install.html | 29 + rubbos/app/apache2/manual/install.html.de | 406 ++ rubbos/app/apache2/manual/install.html.en | 386 + rubbos/app/apache2/manual/install.html.es | 446 ++ rubbos/app/apache2/manual/install.html.ja.utf8 | 396 + rubbos/app/apache2/manual/install.html.ko.euc-kr | 363 + rubbos/app/apache2/manual/install.html.ru.koi8-r | 406 ++ rubbos/app/apache2/manual/install.html.tr.utf8 | 380 + rubbos/app/apache2/manual/invoking.html | 29 + rubbos/app/apache2/manual/invoking.html.de | 158 + rubbos/app/apache2/manual/invoking.html.en | 153 + rubbos/app/apache2/manual/invoking.html.es | 170 + rubbos/app/apache2/manual/invoking.html.ja.utf8 | 166 + rubbos/app/apache2/manual/invoking.html.ko.euc-kr | 142 + rubbos/app/apache2/manual/invoking.html.ru.koi8-r | 145 + rubbos/app/apache2/manual/invoking.html.tr.utf8 | 149 + rubbos/app/apache2/manual/license.html | 5 + rubbos/app/apache2/manual/license.html.en | 238 + rubbos/app/apache2/manual/logs.html | 21 + rubbos/app/apache2/manual/logs.html.en | 587 ++ rubbos/app/apache2/manual/logs.html.es | 644 ++ rubbos/app/apache2/manual/logs.html.ja.utf8 | 557 ++ rubbos/app/apache2/manual/logs.html.ko.euc-kr | 525 ++ rubbos/app/apache2/manual/logs.html.tr.utf8 | 557 ++ .../app/apache2/manual/misc/custom_errordocs.html | 5 + .../apache2/manual/misc/custom_errordocs.html.en | 577 ++ rubbos/app/apache2/manual/misc/descriptors.html | 5 + rubbos/app/apache2/manual/misc/descriptors.html.en | 233 + rubbos/app/apache2/manual/misc/fin_wait_2.html | 5 + rubbos/app/apache2/manual/misc/fin_wait_2.html.en | 422 ++ rubbos/app/apache2/manual/misc/index.html | 9 + rubbos/app/apache2/manual/misc/index.html.en | 121 + rubbos/app/apache2/manual/misc/index.html.tr.utf8 | 122 + .../apache2/manual/misc/known_client_problems.html | 5 + .../manual/misc/known_client_problems.html.en | 408 ++ rubbos/app/apache2/manual/misc/perf-tuning.html | 13 + rubbos/app/apache2/manual/misc/perf-tuning.html.en | 1058 +++ .../apache2/manual/misc/perf-tuning.html.ko.euc-kr | 978 +++ .../apache2/manual/misc/perf-tuning.html.tr.utf8 | 1100 +++ .../apache2/manual/misc/relevant_standards.html | 9 + .../apache2/manual/misc/relevant_standards.html.en | 199 + .../manual/misc/relevant_standards.html.ko.euc-kr | 191 + rubbos/app/apache2/manual/misc/rewriteguide.html | 9 + .../app/apache2/manual/misc/rewriteguide.html.en | 2110 ++++++ .../manual/misc/rewriteguide.html.ko.euc-kr | 2013 ++++++ rubbos/app/apache2/manual/misc/security_tips.html | 13 + .../app/apache2/manual/misc/security_tips.html.en | 354 + .../manual/misc/security_tips.html.ko.euc-kr | 345 + .../apache2/manual/misc/security_tips.html.tr.utf8 | 344 + rubbos/app/apache2/manual/misc/tutorials.html | 5 + rubbos/app/apache2/manual/misc/tutorials.html.en | 211 + rubbos/app/apache2/manual/mod/beos.html | 17 + rubbos/app/apache2/manual/mod/beos.html.de | 109 + rubbos/app/apache2/manual/mod/beos.html.en | 107 + rubbos/app/apache2/manual/mod/beos.html.es | 115 + rubbos/app/apache2/manual/mod/beos.html.ko.euc-kr | 105 + rubbos/app/apache2/manual/mod/core.html | 21 + rubbos/app/apache2/manual/mod/core.html.de | 3422 +++++++++ rubbos/app/apache2/manual/mod/core.html.en | 3250 +++++++++ rubbos/app/apache2/manual/mod/core.html.es | 3421 +++++++++ rubbos/app/apache2/manual/mod/core.html.ja.utf8 | 3203 ++++++++ rubbos/app/apache2/manual/mod/core.html.tr.utf8 | 3177 ++++++++ rubbos/app/apache2/manual/mod/directive-dict.html | 21 + .../app/apache2/manual/mod/directive-dict.html.en | 297 + .../app/apache2/manual/mod/directive-dict.html.es | 307 + .../apache2/manual/mod/directive-dict.html.ja.utf8 | 304 + .../manual/mod/directive-dict.html.ko.euc-kr | 256 + .../apache2/manual/mod/directive-dict.html.tr.utf8 | 176 + rubbos/app/apache2/manual/mod/directives.html | 29 + rubbos/app/apache2/manual/mod/directives.html.de | 416 ++ rubbos/app/apache2/manual/mod/directives.html.en | 417 ++ rubbos/app/apache2/manual/mod/directives.html.es | 417 ++ .../app/apache2/manual/mod/directives.html.ja.utf8 | 411 ++ .../apache2/manual/mod/directives.html.ko.euc-kr | 412 ++ .../apache2/manual/mod/directives.html.ru.koi8-r | 416 ++ .../app/apache2/manual/mod/directives.html.tr.utf8 | 413 ++ rubbos/app/apache2/manual/mod/index.html | 25 + rubbos/app/apache2/manual/mod/index.html.de | 183 + rubbos/app/apache2/manual/mod/index.html.en | 181 + rubbos/app/apache2/manual/mod/index.html.es | 185 + rubbos/app/apache2/manual/mod/index.html.ja.utf8 | 172 + rubbos/app/apache2/manual/mod/index.html.ko.euc-kr | 163 + rubbos/app/apache2/manual/mod/index.html.tr.utf8 | 174 + rubbos/app/apache2/manual/mod/leader.html | 17 + rubbos/app/apache2/manual/mod/leader.html.de | 97 + rubbos/app/apache2/manual/mod/leader.html.en | 93 + rubbos/app/apache2/manual/mod/leader.html.es | 102 + .../app/apache2/manual/mod/leader.html.ko.euc-kr | 92 + rubbos/app/apache2/manual/mod/mod_access.html | 9 + rubbos/app/apache2/manual/mod/mod_access.html.en | 372 + .../app/apache2/manual/mod/mod_access.html.ja.utf8 | 348 + rubbos/app/apache2/manual/mod/mod_actions.html | 13 + rubbos/app/apache2/manual/mod/mod_actions.html.en | 145 + .../apache2/manual/mod/mod_actions.html.ja.utf8 | 150 + .../apache2/manual/mod/mod_actions.html.ko.euc-kr | 140 + rubbos/app/apache2/manual/mod/mod_alias.html | 17 + rubbos/app/apache2/manual/mod/mod_alias.html.en | 430 ++ .../app/apache2/manual/mod/mod_alias.html.ja.utf8 | 389 + .../apache2/manual/mod/mod_alias.html.ko.euc-kr | 358 + .../app/apache2/manual/mod/mod_alias.html.tr.utf8 | 430 ++ rubbos/app/apache2/manual/mod/mod_asis.html | 13 + rubbos/app/apache2/manual/mod/mod_asis.html.en | 112 + .../app/apache2/manual/mod/mod_asis.html.ja.utf8 | 112 + .../app/apache2/manual/mod/mod_asis.html.ko.euc-kr | 110 + rubbos/app/apache2/manual/mod/mod_auth.html | 9 + rubbos/app/apache2/manual/mod/mod_auth.html.en | 201 + .../app/apache2/manual/mod/mod_auth.html.ja.utf8 | 226 + rubbos/app/apache2/manual/mod/mod_auth_anon.html | 5 + .../app/apache2/manual/mod/mod_auth_anon.html.en | 240 + rubbos/app/apache2/manual/mod/mod_auth_dbm.html | 5 + rubbos/app/apache2/manual/mod/mod_auth_dbm.html.en | 228 + rubbos/app/apache2/manual/mod/mod_auth_digest.html | 9 + .../app/apache2/manual/mod/mod_auth_digest.html.en | 358 + .../manual/mod/mod_auth_digest.html.ko.euc-kr | 344 + rubbos/app/apache2/manual/mod/mod_auth_ldap.html | 5 + .../app/apache2/manual/mod/mod_auth_ldap.html.en | 891 +++ rubbos/app/apache2/manual/mod/mod_autoindex.html | 17 + .../app/apache2/manual/mod/mod_autoindex.html.en | 897 +++ .../apache2/manual/mod/mod_autoindex.html.ja.utf8 | 963 +++ .../manual/mod/mod_autoindex.html.ko.euc-kr | 817 +++ .../apache2/manual/mod/mod_autoindex.html.tr.utf8 | 889 +++ rubbos/app/apache2/manual/mod/mod_cache.html | 9 + rubbos/app/apache2/manual/mod/mod_cache.html.en | 387 + .../apache2/manual/mod/mod_cache.html.ko.euc-kr | 323 + rubbos/app/apache2/manual/mod/mod_cern_meta.html | 9 + .../app/apache2/manual/mod/mod_cern_meta.html.en | 128 + .../manual/mod/mod_cern_meta.html.ko.euc-kr | 120 + rubbos/app/apache2/manual/mod/mod_cgi.html | 13 + rubbos/app/apache2/manual/mod/mod_cgi.html.en | 246 + rubbos/app/apache2/manual/mod/mod_cgi.html.ja.utf8 | 254 + .../app/apache2/manual/mod/mod_cgi.html.ko.euc-kr | 232 + rubbos/app/apache2/manual/mod/mod_cgid.html | 13 + rubbos/app/apache2/manual/mod/mod_cgid.html.en | 104 + .../app/apache2/manual/mod/mod_cgid.html.ja.utf8 | 98 + .../app/apache2/manual/mod/mod_cgid.html.ko.euc-kr | 97 + .../app/apache2/manual/mod/mod_charset_lite.html | 9 + .../apache2/manual/mod/mod_charset_lite.html.en | 209 + .../manual/mod/mod_charset_lite.html.ko.euc-kr | 196 + rubbos/app/apache2/manual/mod/mod_dav.html | 13 + rubbos/app/apache2/manual/mod/mod_dav.html.en | 268 + rubbos/app/apache2/manual/mod/mod_dav.html.ja.utf8 | 274 + .../app/apache2/manual/mod/mod_dav.html.ko.euc-kr | 263 + rubbos/app/apache2/manual/mod/mod_dav_fs.html | 13 + rubbos/app/apache2/manual/mod/mod_dav_fs.html.en | 97 + .../app/apache2/manual/mod/mod_dav_fs.html.ja.utf8 | 89 + .../apache2/manual/mod/mod_dav_fs.html.ko.euc-kr | 96 + rubbos/app/apache2/manual/mod/mod_deflate.html | 13 + rubbos/app/apache2/manual/mod/mod_deflate.html.en | 356 + .../apache2/manual/mod/mod_deflate.html.ja.utf8 | 357 + .../apache2/manual/mod/mod_deflate.html.ko.euc-kr | 341 + rubbos/app/apache2/manual/mod/mod_dir.html | 17 + rubbos/app/apache2/manual/mod/mod_dir.html.en | 171 + rubbos/app/apache2/manual/mod/mod_dir.html.ja.utf8 | 184 + .../app/apache2/manual/mod/mod_dir.html.ko.euc-kr | 171 + rubbos/app/apache2/manual/mod/mod_dir.html.tr.utf8 | 170 + rubbos/app/apache2/manual/mod/mod_disk_cache.html | 9 + .../app/apache2/manual/mod/mod_disk_cache.html.en | 368 + .../manual/mod/mod_disk_cache.html.ko.euc-kr | 355 + rubbos/app/apache2/manual/mod/mod_dumpio.html | 5 + rubbos/app/apache2/manual/mod/mod_dumpio.html.en | 106 + rubbos/app/apache2/manual/mod/mod_echo.html | 13 + rubbos/app/apache2/manual/mod/mod_echo.html.en | 74 + .../app/apache2/manual/mod/mod_echo.html.ja.utf8 | 74 + .../app/apache2/manual/mod/mod_echo.html.ko.euc-kr | 73 + rubbos/app/apache2/manual/mod/mod_env.html | 17 + rubbos/app/apache2/manual/mod/mod_env.html.en | 119 + rubbos/app/apache2/manual/mod/mod_env.html.ja.utf8 | 121 + .../app/apache2/manual/mod/mod_env.html.ko.euc-kr | 116 + rubbos/app/apache2/manual/mod/mod_env.html.tr.utf8 | 117 + rubbos/app/apache2/manual/mod/mod_example.html | 9 + rubbos/app/apache2/manual/mod/mod_example.html.en | 154 + .../apache2/manual/mod/mod_example.html.ko.euc-kr | 145 + rubbos/app/apache2/manual/mod/mod_expires.html | 13 + rubbos/app/apache2/manual/mod/mod_expires.html.en | 247 + .../apache2/manual/mod/mod_expires.html.ja.utf8 | 233 + .../apache2/manual/mod/mod_expires.html.ko.euc-kr | 225 + rubbos/app/apache2/manual/mod/mod_ext_filter.html | 9 + .../app/apache2/manual/mod/mod_ext_filter.html.en | 373 + .../manual/mod/mod_ext_filter.html.ko.euc-kr | 350 + rubbos/app/apache2/manual/mod/mod_file_cache.html | 9 + .../app/apache2/manual/mod/mod_file_cache.html.en | 212 + .../manual/mod/mod_file_cache.html.ko.euc-kr | 200 + rubbos/app/apache2/manual/mod/mod_headers.html | 9 + rubbos/app/apache2/manual/mod/mod_headers.html.en | 323 + .../apache2/manual/mod/mod_headers.html.ko.euc-kr | 299 + rubbos/app/apache2/manual/mod/mod_imap.html | 9 + rubbos/app/apache2/manual/mod/mod_imap.html.en | 382 + .../app/apache2/manual/mod/mod_imap.html.ko.euc-kr | 361 + rubbos/app/apache2/manual/mod/mod_include.html | 9 + rubbos/app/apache2/manual/mod/mod_include.html.en | 785 ++ .../apache2/manual/mod/mod_include.html.ja.utf8 | 762 ++ rubbos/app/apache2/manual/mod/mod_info.html | 13 + rubbos/app/apache2/manual/mod/mod_info.html.en | 128 + .../app/apache2/manual/mod/mod_info.html.ja.utf8 | 118 + .../app/apache2/manual/mod/mod_info.html.ko.euc-kr | 112 + rubbos/app/apache2/manual/mod/mod_isapi.html | 9 + rubbos/app/apache2/manual/mod/mod_isapi.html.en | 343 + .../apache2/manual/mod/mod_isapi.html.ko.euc-kr | 319 + rubbos/app/apache2/manual/mod/mod_ldap.html | 5 + rubbos/app/apache2/manual/mod/mod_ldap.html.en | 390 + rubbos/app/apache2/manual/mod/mod_log_config.html | 17 + .../app/apache2/manual/mod/mod_log_config.html.en | 472 ++ .../apache2/manual/mod/mod_log_config.html.ja.utf8 | 435 ++ .../manual/mod/mod_log_config.html.ko.euc-kr | 403 ++ .../apache2/manual/mod/mod_log_config.html.tr.utf8 | 466 ++ .../app/apache2/manual/mod/mod_log_forensic.html | 9 + .../apache2/manual/mod/mod_log_forensic.html.en | 171 + .../manual/mod/mod_log_forensic.html.tr.utf8 | 172 + rubbos/app/apache2/manual/mod/mod_logio.html | 17 + rubbos/app/apache2/manual/mod/mod_logio.html.en | 92 + .../app/apache2/manual/mod/mod_logio.html.ja.utf8 | 93 + .../apache2/manual/mod/mod_logio.html.ko.euc-kr | 94 + .../app/apache2/manual/mod/mod_logio.html.tr.utf8 | 92 + rubbos/app/apache2/manual/mod/mod_mem_cache.html | 13 + .../app/apache2/manual/mod/mod_mem_cache.html.en | 241 + .../apache2/manual/mod/mod_mem_cache.html.ja.utf8 | 238 + .../manual/mod/mod_mem_cache.html.ko.euc-kr | 235 + rubbos/app/apache2/manual/mod/mod_mime.html | 9 + rubbos/app/apache2/manual/mod/mod_mime.html.en | 940 +++ .../app/apache2/manual/mod/mod_mime.html.ja.utf8 | 938 +++ rubbos/app/apache2/manual/mod/mod_mime_magic.html | 5 + .../app/apache2/manual/mod/mod_mime_magic.html.en | 274 + rubbos/app/apache2/manual/mod/mod_negotiation.html | 9 + .../app/apache2/manual/mod/mod_negotiation.html.en | 306 + .../manual/mod/mod_negotiation.html.ja.utf8 | 302 + rubbos/app/apache2/manual/mod/mod_nw_ssl.html | 5 + rubbos/app/apache2/manual/mod/mod_nw_ssl.html.en | 97 + rubbos/app/apache2/manual/mod/mod_proxy.html | 5 + rubbos/app/apache2/manual/mod/mod_proxy.html.en | 1016 +++ .../app/apache2/manual/mod/mod_proxy_connect.html | 5 + .../apache2/manual/mod/mod_proxy_connect.html.en | 61 + rubbos/app/apache2/manual/mod/mod_proxy_ftp.html | 5 + .../app/apache2/manual/mod/mod_proxy_ftp.html.en | 59 + rubbos/app/apache2/manual/mod/mod_proxy_http.html | 5 + .../app/apache2/manual/mod/mod_proxy_http.html.en | 64 + rubbos/app/apache2/manual/mod/mod_rewrite.html | 5 + rubbos/app/apache2/manual/mod/mod_rewrite.html.en | 1671 +++++ rubbos/app/apache2/manual/mod/mod_setenvif.html | 17 + rubbos/app/apache2/manual/mod/mod_setenvif.html.en | 291 + .../apache2/manual/mod/mod_setenvif.html.ja.utf8 | 284 + .../apache2/manual/mod/mod_setenvif.html.ko.euc-kr | 261 + .../apache2/manual/mod/mod_setenvif.html.tr.utf8 | 278 + rubbos/app/apache2/manual/mod/mod_so.html | 17 + rubbos/app/apache2/manual/mod/mod_so.html.en | 192 + rubbos/app/apache2/manual/mod/mod_so.html.ja.utf8 | 192 + .../app/apache2/manual/mod/mod_so.html.ko.euc-kr | 176 + rubbos/app/apache2/manual/mod/mod_so.html.tr.utf8 | 196 + rubbos/app/apache2/manual/mod/mod_speling.html | 13 + rubbos/app/apache2/manual/mod/mod_speling.html.en | 121 + .../apache2/manual/mod/mod_speling.html.ja.utf8 | 119 + .../apache2/manual/mod/mod_speling.html.ko.euc-kr | 110 + rubbos/app/apache2/manual/mod/mod_ssl.html | 5 + rubbos/app/apache2/manual/mod/mod_ssl.html.en | 1576 ++++ rubbos/app/apache2/manual/mod/mod_status.html | 17 + rubbos/app/apache2/manual/mod/mod_status.html.en | 164 + .../app/apache2/manual/mod/mod_status.html.ja.utf8 | 158 + .../apache2/manual/mod/mod_status.html.ko.euc-kr | 152 + .../app/apache2/manual/mod/mod_status.html.tr.utf8 | 159 + rubbos/app/apache2/manual/mod/mod_suexec.html | 17 + rubbos/app/apache2/manual/mod/mod_suexec.html.en | 82 + .../app/apache2/manual/mod/mod_suexec.html.ja.utf8 | 83 + .../apache2/manual/mod/mod_suexec.html.ko.euc-kr | 83 + .../app/apache2/manual/mod/mod_suexec.html.tr.utf8 | 84 + rubbos/app/apache2/manual/mod/mod_unique_id.html | 13 + .../app/apache2/manual/mod/mod_unique_id.html.en | 215 + .../apache2/manual/mod/mod_unique_id.html.ja.utf8 | 216 + .../manual/mod/mod_unique_id.html.ko.euc-kr | 191 + rubbos/app/apache2/manual/mod/mod_userdir.html | 17 + rubbos/app/apache2/manual/mod/mod_userdir.html.en | 173 + .../apache2/manual/mod/mod_userdir.html.ja.utf8 | 183 + .../apache2/manual/mod/mod_userdir.html.ko.euc-kr | 161 + .../apache2/manual/mod/mod_userdir.html.tr.utf8 | 180 + rubbos/app/apache2/manual/mod/mod_usertrack.html | 5 + .../app/apache2/manual/mod/mod_usertrack.html.en | 252 + rubbos/app/apache2/manual/mod/mod_version.html | 13 + rubbos/app/apache2/manual/mod/mod_version.html.en | 150 + .../apache2/manual/mod/mod_version.html.ja.utf8 | 150 + .../apache2/manual/mod/mod_version.html.ko.euc-kr | 150 + rubbos/app/apache2/manual/mod/mod_vhost_alias.html | 9 + .../app/apache2/manual/mod/mod_vhost_alias.html.en | 314 + .../manual/mod/mod_vhost_alias.html.tr.utf8 | 305 + rubbos/app/apache2/manual/mod/module-dict.html | 17 + rubbos/app/apache2/manual/mod/module-dict.html.en | 119 + .../apache2/manual/mod/module-dict.html.ja.utf8 | 121 + .../apache2/manual/mod/module-dict.html.ko.euc-kr | 111 + .../apache2/manual/mod/module-dict.html.tr.utf8 | 91 + rubbos/app/apache2/manual/mod/mpm_common.html | 21 + rubbos/app/apache2/manual/mod/mpm_common.html.de | 978 +++ rubbos/app/apache2/manual/mod/mpm_common.html.en | 896 +++ rubbos/app/apache2/manual/mod/mpm_common.html.es | 982 +++ .../app/apache2/manual/mod/mpm_common.html.ja.utf8 | 956 +++ .../app/apache2/manual/mod/mpm_common.html.tr.utf8 | 905 +++ rubbos/app/apache2/manual/mod/mpm_netware.html | 5 + rubbos/app/apache2/manual/mod/mpm_netware.html.en | 125 + rubbos/app/apache2/manual/mod/mpm_winnt.html | 17 + rubbos/app/apache2/manual/mod/mpm_winnt.html.de | 95 + rubbos/app/apache2/manual/mod/mpm_winnt.html.en | 95 + rubbos/app/apache2/manual/mod/mpm_winnt.html.es | 99 + .../app/apache2/manual/mod/mpm_winnt.html.ja.utf8 | 94 + rubbos/app/apache2/manual/mod/mpmt_os2.html | 5 + rubbos/app/apache2/manual/mod/mpmt_os2.html.en | 73 + rubbos/app/apache2/manual/mod/perchild.html | 5 + rubbos/app/apache2/manual/mod/perchild.html.en | 266 + rubbos/app/apache2/manual/mod/prefork.html | 21 + rubbos/app/apache2/manual/mod/prefork.html.de | 195 + rubbos/app/apache2/manual/mod/prefork.html.en | 181 + rubbos/app/apache2/manual/mod/prefork.html.es | 197 + rubbos/app/apache2/manual/mod/prefork.html.ja.utf8 | 194 + rubbos/app/apache2/manual/mod/prefork.html.tr.utf8 | 180 + rubbos/app/apache2/manual/mod/quickreference.html | 29 + .../app/apache2/manual/mod/quickreference.html.de | 743 ++ .../app/apache2/manual/mod/quickreference.html.en | 721 ++ .../app/apache2/manual/mod/quickreference.html.es | 732 ++ .../apache2/manual/mod/quickreference.html.ja.utf8 | 670 ++ .../manual/mod/quickreference.html.ko.euc-kr | 674 ++ .../manual/mod/quickreference.html.ru.koi8-r | 726 ++ .../apache2/manual/mod/quickreference.html.tr.utf8 | 723 ++ rubbos/app/apache2/manual/mod/threadpool.html | 5 + rubbos/app/apache2/manual/mod/threadpool.html.en | 81 + rubbos/app/apache2/manual/mod/worker.html | 21 + rubbos/app/apache2/manual/mod/worker.html.de | 173 + rubbos/app/apache2/manual/mod/worker.html.en | 180 + rubbos/app/apache2/manual/mod/worker.html.es | 188 + rubbos/app/apache2/manual/mod/worker.html.ja.utf8 | 190 + rubbos/app/apache2/manual/mod/worker.html.tr.utf8 | 170 + rubbos/app/apache2/manual/mpm.html | 29 + rubbos/app/apache2/manual/mpm.html.de | 131 + rubbos/app/apache2/manual/mpm.html.en | 132 + rubbos/app/apache2/manual/mpm.html.es | 141 + rubbos/app/apache2/manual/mpm.html.ja.utf8 | 143 + rubbos/app/apache2/manual/mpm.html.ko.euc-kr | 126 + rubbos/app/apache2/manual/mpm.html.ru.koi8-r | 138 + rubbos/app/apache2/manual/mpm.html.tr.utf8 | 128 + rubbos/app/apache2/manual/new_features_2_0.html | 33 + rubbos/app/apache2/manual/new_features_2_0.html.de | 265 + rubbos/app/apache2/manual/new_features_2_0.html.en | 245 + rubbos/app/apache2/manual/new_features_2_0.html.es | 274 + rubbos/app/apache2/manual/new_features_2_0.html.fr | 124 + .../apache2/manual/new_features_2_0.html.ja.utf8 | 255 + .../apache2/manual/new_features_2_0.html.ko.euc-kr | 235 + .../apache2/manual/new_features_2_0.html.ru.koi8-r | 252 + .../apache2/manual/new_features_2_0.html.tr.utf8 | 251 + rubbos/app/apache2/manual/platform/ebcdic.html | 9 + rubbos/app/apache2/manual/platform/ebcdic.html.en | 584 ++ .../apache2/manual/platform/ebcdic.html.ko.euc-kr | 557 ++ rubbos/app/apache2/manual/platform/index.html | 9 + rubbos/app/apache2/manual/platform/index.html.en | 94 + .../apache2/manual/platform/index.html.ko.euc-kr | 94 + rubbos/app/apache2/manual/platform/netware.html | 9 + rubbos/app/apache2/manual/platform/netware.html.en | 589 ++ .../apache2/manual/platform/netware.html.ko.euc-kr | 579 ++ rubbos/app/apache2/manual/platform/perf-hp.html | 9 + rubbos/app/apache2/manual/platform/perf-hp.html.en | 105 + .../apache2/manual/platform/perf-hp.html.ko.euc-kr | 100 + .../app/apache2/manual/platform/win_compiling.html | 9 + .../apache2/manual/platform/win_compiling.html.en | 431 ++ .../manual/platform/win_compiling.html.ko.euc-kr | 423 ++ rubbos/app/apache2/manual/platform/windows.html | 9 + rubbos/app/apache2/manual/platform/windows.html.en | 754 ++ .../apache2/manual/platform/windows.html.ko.euc-kr | 688 ++ rubbos/app/apache2/manual/programs/ab.html | 13 + rubbos/app/apache2/manual/programs/ab.html.en | 200 + .../app/apache2/manual/programs/ab.html.ko.euc-kr | 203 + rubbos/app/apache2/manual/programs/ab.html.tr.utf8 | 224 + rubbos/app/apache2/manual/programs/apachectl.html | 13 + .../app/apache2/manual/programs/apachectl.html.en | 154 + .../manual/programs/apachectl.html.ko.euc-kr | 146 + .../apache2/manual/programs/apachectl.html.tr.utf8 | 160 + rubbos/app/apache2/manual/programs/apxs.html | 13 + rubbos/app/apache2/manual/programs/apxs.html.en | 339 + .../apache2/manual/programs/apxs.html.ko.euc-kr | 335 + .../app/apache2/manual/programs/apxs.html.tr.utf8 | 360 + rubbos/app/apache2/manual/programs/configure.html | 13 + .../app/apache2/manual/programs/configure.html.en | 916 +++ .../manual/programs/configure.html.ko.euc-kr | 932 +++ .../apache2/manual/programs/configure.html.tr.utf8 | 989 +++ rubbos/app/apache2/manual/programs/dbmmanage.html | 13 + .../app/apache2/manual/programs/dbmmanage.html.en | 193 + .../manual/programs/dbmmanage.html.ko.euc-kr | 174 + .../apache2/manual/programs/dbmmanage.html.tr.utf8 | 209 + rubbos/app/apache2/manual/programs/htdbm.html | 9 + rubbos/app/apache2/manual/programs/htdbm.html.en | 283 + .../app/apache2/manual/programs/htdbm.html.tr.utf8 | 290 + rubbos/app/apache2/manual/programs/htdigest.html | 13 + .../app/apache2/manual/programs/htdigest.html.en | 74 + .../manual/programs/htdigest.html.ko.euc-kr | 77 + .../apache2/manual/programs/htdigest.html.tr.utf8 | 78 + rubbos/app/apache2/manual/programs/htpasswd.html | 13 + .../app/apache2/manual/programs/htpasswd.html.en | 217 + .../manual/programs/htpasswd.html.ko.euc-kr | 219 + .../apache2/manual/programs/htpasswd.html.tr.utf8 | 224 + rubbos/app/apache2/manual/programs/httpd.html | 13 + rubbos/app/apache2/manual/programs/httpd.html.en | 189 + .../apache2/manual/programs/httpd.html.ko.euc-kr | 184 + .../app/apache2/manual/programs/httpd.html.tr.utf8 | 175 + rubbos/app/apache2/manual/programs/index.html | 21 + rubbos/app/apache2/manual/programs/index.html.en | 101 + rubbos/app/apache2/manual/programs/index.html.es | 104 + .../apache2/manual/programs/index.html.ko.euc-kr | 97 + .../apache2/manual/programs/index.html.ru.koi8-r | 95 + .../app/apache2/manual/programs/index.html.tr.utf8 | 90 + rubbos/app/apache2/manual/programs/logresolve.html | 13 + .../app/apache2/manual/programs/logresolve.html.en | 74 + .../manual/programs/logresolve.html.ko.euc-kr | 71 + .../manual/programs/logresolve.html.tr.utf8 | 71 + rubbos/app/apache2/manual/programs/other.html | 13 + rubbos/app/apache2/manual/programs/other.html.en | 61 + .../apache2/manual/programs/other.html.ko.euc-kr | 59 + .../app/apache2/manual/programs/other.html.tr.utf8 | 64 + rubbos/app/apache2/manual/programs/rotatelogs.html | 13 + .../app/apache2/manual/programs/rotatelogs.html.en | 148 + .../manual/programs/rotatelogs.html.ko.euc-kr | 147 + .../manual/programs/rotatelogs.html.tr.utf8 | 172 + rubbos/app/apache2/manual/programs/suexec.html | 13 + rubbos/app/apache2/manual/programs/suexec.html.en | 63 + .../apache2/manual/programs/suexec.html.ko.euc-kr | 64 + .../apache2/manual/programs/suexec.html.tr.utf8 | 63 + rubbos/app/apache2/manual/rewrite/index.html | 9 + rubbos/app/apache2/manual/rewrite/index.html.en | 99 + .../app/apache2/manual/rewrite/index.html.tr.utf8 | 91 + .../app/apache2/manual/rewrite/rewrite_guide.html | 5 + .../apache2/manual/rewrite/rewrite_guide.html.en | 788 ++ .../manual/rewrite/rewrite_guide_advanced.html | 5 + .../manual/rewrite/rewrite_guide_advanced.html.en | 1289 ++++ .../app/apache2/manual/rewrite/rewrite_intro.html | 5 + .../apache2/manual/rewrite/rewrite_intro.html.en | 117 + .../app/apache2/manual/rewrite/rewrite_tech.html | 5 + .../apache2/manual/rewrite/rewrite_tech.html.en | 166 + rubbos/app/apache2/manual/sections.html | 21 + rubbos/app/apache2/manual/sections.html.en | 457 ++ rubbos/app/apache2/manual/sections.html.es | 492 ++ rubbos/app/apache2/manual/sections.html.ja.utf8 | 467 ++ rubbos/app/apache2/manual/sections.html.ko.euc-kr | 423 ++ rubbos/app/apache2/manual/sections.html.tr.utf8 | 472 ++ rubbos/app/apache2/manual/server-wide.html | 21 + rubbos/app/apache2/manual/server-wide.html.en | 103 + rubbos/app/apache2/manual/server-wide.html.es | 107 + rubbos/app/apache2/manual/server-wide.html.ja.utf8 | 103 + .../app/apache2/manual/server-wide.html.ko.euc-kr | 97 + rubbos/app/apache2/manual/server-wide.html.tr.utf8 | 100 + rubbos/app/apache2/manual/sitemap.html | 25 + rubbos/app/apache2/manual/sitemap.html.de | 256 + rubbos/app/apache2/manual/sitemap.html.en | 254 + rubbos/app/apache2/manual/sitemap.html.es | 262 + rubbos/app/apache2/manual/sitemap.html.ja.utf8 | 256 + rubbos/app/apache2/manual/sitemap.html.ko.euc-kr | 261 + rubbos/app/apache2/manual/sitemap.html.tr.utf8 | 251 + rubbos/app/apache2/manual/ssl/index.html | 13 + rubbos/app/apache2/manual/ssl/index.html.en | 59 + rubbos/app/apache2/manual/ssl/index.html.ja.utf8 | 61 + rubbos/app/apache2/manual/ssl/index.html.tr.utf8 | 59 + rubbos/app/apache2/manual/ssl/ssl_compat.html | 5 + rubbos/app/apache2/manual/ssl/ssl_compat.html.en | 233 + rubbos/app/apache2/manual/ssl/ssl_faq.html | 5 + rubbos/app/apache2/manual/ssl/ssl_faq.html.en | 1043 +++ rubbos/app/apache2/manual/ssl/ssl_howto.html | 5 + rubbos/app/apache2/manual/ssl/ssl_howto.html.en | 284 + rubbos/app/apache2/manual/ssl/ssl_intro.html | 9 + rubbos/app/apache2/manual/ssl/ssl_intro.html.en | 641 ++ .../app/apache2/manual/ssl/ssl_intro.html.ja.utf8 | 695 ++ rubbos/app/apache2/manual/stopping.html | 29 + rubbos/app/apache2/manual/stopping.html.de | 262 + rubbos/app/apache2/manual/stopping.html.en | 235 + rubbos/app/apache2/manual/stopping.html.es | 272 + rubbos/app/apache2/manual/stopping.html.ja.utf8 | 261 + rubbos/app/apache2/manual/stopping.html.ko.euc-kr | 209 + rubbos/app/apache2/manual/stopping.html.ru.koi8-r | 251 + rubbos/app/apache2/manual/stopping.html.tr.utf8 | 243 + rubbos/app/apache2/manual/style/build.properties | 4 + rubbos/app/apache2/manual/style/common.dtd | 191 + rubbos/app/apache2/manual/style/css/manual-chm.css | 27 + .../manual/style/css/manual-loose-100pc.css | 155 + .../app/apache2/manual/style/css/manual-print.css | 717 ++ .../apache2/manual/style/css/manual-zip-100pc.css | 23 + rubbos/app/apache2/manual/style/css/manual-zip.css | 23 + rubbos/app/apache2/manual/style/css/manual.css | 1017 +++ rubbos/app/apache2/manual/style/faq.dtd | 35 + rubbos/app/apache2/manual/style/lang.dtd | 24 + .../app/apache2/manual/style/latex/atbeginend.sty | 65 + rubbos/app/apache2/manual/style/manualpage.dtd | 27 + rubbos/app/apache2/manual/style/modulesynopsis.dtd | 76 + rubbos/app/apache2/manual/style/sitemap.dtd | 38 + rubbos/app/apache2/manual/style/version.ent | 24 + rubbos/app/apache2/manual/suexec.html | 17 + rubbos/app/apache2/manual/suexec.html.en | 617 ++ rubbos/app/apache2/manual/suexec.html.ja.utf8 | 613 ++ rubbos/app/apache2/manual/suexec.html.ko.euc-kr | 536 ++ rubbos/app/apache2/manual/suexec.html.tr.utf8 | 556 ++ rubbos/app/apache2/manual/upgrading.html | 29 + rubbos/app/apache2/manual/upgrading.html.de | 228 + rubbos/app/apache2/manual/upgrading.html.en | 221 + rubbos/app/apache2/manual/upgrading.html.es | 246 + rubbos/app/apache2/manual/upgrading.html.fr | 164 + rubbos/app/apache2/manual/upgrading.html.ja.utf8 | 222 + rubbos/app/apache2/manual/upgrading.html.ko.euc-kr | 204 + rubbos/app/apache2/manual/upgrading.html.ru.koi8-r | 218 + rubbos/app/apache2/manual/urlmapping.html | 17 + rubbos/app/apache2/manual/urlmapping.html.en | 279 + rubbos/app/apache2/manual/urlmapping.html.ja.utf8 | 279 + .../app/apache2/manual/urlmapping.html.ko.euc-kr | 244 + rubbos/app/apache2/manual/urlmapping.html.tr.utf8 | 270 + rubbos/app/apache2/manual/vhosts/details.html | 13 + rubbos/app/apache2/manual/vhosts/details.html.en | 440 ++ .../apache2/manual/vhosts/details.html.ko.euc-kr | 384 + .../app/apache2/manual/vhosts/details.html.tr.utf8 | 401 + rubbos/app/apache2/manual/vhosts/examples.html | 13 + rubbos/app/apache2/manual/vhosts/examples.html.en | 654 ++ .../apache2/manual/vhosts/examples.html.ko.euc-kr | 622 ++ .../apache2/manual/vhosts/examples.html.tr.utf8 | 641 ++ rubbos/app/apache2/manual/vhosts/fd-limits.html | 17 + rubbos/app/apache2/manual/vhosts/fd-limits.html.en | 133 + .../apache2/manual/vhosts/fd-limits.html.ja.utf8 | 131 + .../apache2/manual/vhosts/fd-limits.html.ko.euc-kr | 126 + .../apache2/manual/vhosts/fd-limits.html.tr.utf8 | 128 + rubbos/app/apache2/manual/vhosts/index.html | 29 + rubbos/app/apache2/manual/vhosts/index.html.de | 112 + rubbos/app/apache2/manual/vhosts/index.html.en | 112 + rubbos/app/apache2/manual/vhosts/index.html.es | 119 + .../app/apache2/manual/vhosts/index.html.ja.utf8 | 108 + .../app/apache2/manual/vhosts/index.html.ko.euc-kr | 110 + .../app/apache2/manual/vhosts/index.html.ru.koi8-r | 107 + .../app/apache2/manual/vhosts/index.html.tr.utf8 | 107 + rubbos/app/apache2/manual/vhosts/ip-based.html | 13 + rubbos/app/apache2/manual/vhosts/ip-based.html.en | 160 + .../apache2/manual/vhosts/ip-based.html.ko.euc-kr | 150 + .../apache2/manual/vhosts/ip-based.html.tr.utf8 | 165 + rubbos/app/apache2/manual/vhosts/mass.html | 13 + rubbos/app/apache2/manual/vhosts/mass.html.en | 419 ++ .../app/apache2/manual/vhosts/mass.html.ko.euc-kr | 425 ++ rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 | 406 ++ rubbos/app/apache2/manual/vhosts/name-based.html | 25 + .../app/apache2/manual/vhosts/name-based.html.de | 270 + .../app/apache2/manual/vhosts/name-based.html.en | 248 + .../app/apache2/manual/vhosts/name-based.html.es | 292 + .../apache2/manual/vhosts/name-based.html.ja.utf8 | 273 + .../manual/vhosts/name-based.html.ko.euc-kr | 238 + .../apache2/manual/vhosts/name-based.html.tr.utf8 | 256 + rubbos/app/apache2/modules/httpd.exp | 421 ++ rubbos/app/apache2/modules/mod_jk.so | Bin 0 -> 1377048 bytes 1180 files changed, 222203 insertions(+) create mode 100755 rubbos/app/apache2/bin/ab create mode 100755 rubbos/app/apache2/bin/apachectl create mode 100755 rubbos/app/apache2/bin/apr-config create mode 100755 rubbos/app/apache2/bin/apu-config create mode 100755 rubbos/app/apache2/bin/apxs create mode 100755 rubbos/app/apache2/bin/checkgid create mode 100755 rubbos/app/apache2/bin/dbmmanage create mode 100644 rubbos/app/apache2/bin/envvars create mode 100644 rubbos/app/apache2/bin/envvars-std create mode 100755 rubbos/app/apache2/bin/htdbm create mode 100755 rubbos/app/apache2/bin/htdigest create mode 100755 rubbos/app/apache2/bin/htpasswd create mode 100755 rubbos/app/apache2/bin/httpd create mode 100755 rubbos/app/apache2/bin/httxt2dbm create mode 100755 rubbos/app/apache2/bin/logresolve create mode 100755 rubbos/app/apache2/bin/rotatelogs create mode 100644 rubbos/app/apache2/build/apr_rules.mk create mode 100755 rubbos/app/apache2/build/config.nice create mode 100644 rubbos/app/apache2/build/config_vars.mk create mode 100755 rubbos/app/apache2/build/instdso.sh create mode 100644 rubbos/app/apache2/build/library.mk create mode 100755 rubbos/app/apache2/build/libtool create mode 100644 rubbos/app/apache2/build/ltlib.mk create mode 100644 rubbos/app/apache2/build/make_exports.awk create mode 100644 rubbos/app/apache2/build/make_var_export.awk create mode 100755 rubbos/app/apache2/build/mkdir.sh create mode 100644 rubbos/app/apache2/build/program.mk create mode 100644 rubbos/app/apache2/build/rules.mk create mode 100644 rubbos/app/apache2/build/special.mk create mode 100644 rubbos/app/apache2/cgi-bin/printenv create mode 100644 rubbos/app/apache2/cgi-bin/test-cgi create mode 100644 rubbos/app/apache2/conf/highperformance-std.conf create mode 100644 rubbos/app/apache2/conf/highperformance.conf create mode 100644 rubbos/app/apache2/conf/httpd-std.conf create mode 100644 rubbos/app/apache2/conf/httpd.conf create mode 100644 rubbos/app/apache2/conf/magic create mode 100644 rubbos/app/apache2/conf/mime.types create mode 100644 rubbos/app/apache2/conf/ssl-std.conf create mode 100644 rubbos/app/apache2/conf/ssl.conf create mode 100644 rubbos/app/apache2/conf/workers.properties create mode 100644 rubbos/app/apache2/error/HTTP_BAD_GATEWAY.html.var create mode 100644 rubbos/app/apache2/error/HTTP_BAD_REQUEST.html.var create mode 100644 rubbos/app/apache2/error/HTTP_FORBIDDEN.html.var create mode 100644 rubbos/app/apache2/error/HTTP_GONE.html.var create mode 100644 rubbos/app/apache2/error/HTTP_INTERNAL_SERVER_ERROR.html.var create mode 100644 rubbos/app/apache2/error/HTTP_LENGTH_REQUIRED.html.var create mode 100644 rubbos/app/apache2/error/HTTP_METHOD_NOT_ALLOWED.html.var create mode 100644 rubbos/app/apache2/error/HTTP_NOT_FOUND.html.var create mode 100644 rubbos/app/apache2/error/HTTP_NOT_IMPLEMENTED.html.var create mode 100644 rubbos/app/apache2/error/HTTP_PRECONDITION_FAILED.html.var create mode 100644 rubbos/app/apache2/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var create mode 100644 rubbos/app/apache2/error/HTTP_REQUEST_TIME_OUT.html.var create mode 100644 rubbos/app/apache2/error/HTTP_REQUEST_URI_TOO_LARGE.html.var create mode 100644 rubbos/app/apache2/error/HTTP_SERVICE_UNAVAILABLE.html.var create mode 100644 rubbos/app/apache2/error/HTTP_UNAUTHORIZED.html.var create mode 100644 rubbos/app/apache2/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var create mode 100644 rubbos/app/apache2/error/HTTP_VARIANT_ALSO_VARIES.html.var create mode 100644 rubbos/app/apache2/error/README create mode 100644 rubbos/app/apache2/error/contact.html.var create mode 100644 rubbos/app/apache2/error/include/bottom.html create mode 100644 rubbos/app/apache2/error/include/spacer.html create mode 100644 rubbos/app/apache2/error/include/top.html create mode 100644 rubbos/app/apache2/htdocs/apache_pb.gif create mode 100644 rubbos/app/apache2/htdocs/apache_pb.png create mode 100644 rubbos/app/apache2/htdocs/apache_pb2.gif create mode 100644 rubbos/app/apache2/htdocs/apache_pb2.png create mode 100644 rubbos/app/apache2/htdocs/apache_pb2_ani.gif create mode 100644 rubbos/app/apache2/htdocs/index.html.ca create mode 100644 rubbos/app/apache2/htdocs/index.html.cz.iso8859-2 create mode 100644 rubbos/app/apache2/htdocs/index.html.de create mode 100644 rubbos/app/apache2/htdocs/index.html.dk create mode 100644 rubbos/app/apache2/htdocs/index.html.ee create mode 100644 rubbos/app/apache2/htdocs/index.html.el create mode 100644 rubbos/app/apache2/htdocs/index.html.en create mode 100644 rubbos/app/apache2/htdocs/index.html.es create mode 100644 rubbos/app/apache2/htdocs/index.html.et create mode 100644 rubbos/app/apache2/htdocs/index.html.fr create mode 100644 rubbos/app/apache2/htdocs/index.html.he.iso8859-8 create mode 100644 rubbos/app/apache2/htdocs/index.html.hr.iso8859-2 create mode 100644 rubbos/app/apache2/htdocs/index.html.it create mode 100644 rubbos/app/apache2/htdocs/index.html.ja.iso2022-jp create mode 100644 rubbos/app/apache2/htdocs/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/htdocs/index.html.lb.utf8 create mode 100644 rubbos/app/apache2/htdocs/index.html.nl create mode 100644 rubbos/app/apache2/htdocs/index.html.nn create mode 100644 rubbos/app/apache2/htdocs/index.html.no create mode 100644 rubbos/app/apache2/htdocs/index.html.po.iso8859-2 create mode 100644 rubbos/app/apache2/htdocs/index.html.pt create mode 100644 rubbos/app/apache2/htdocs/index.html.pt-br create mode 100644 rubbos/app/apache2/htdocs/index.html.ru.cp-1251 create mode 100644 rubbos/app/apache2/htdocs/index.html.ru.cp866 create mode 100644 rubbos/app/apache2/htdocs/index.html.ru.iso-ru create mode 100644 rubbos/app/apache2/htdocs/index.html.ru.koi8-r create mode 100644 rubbos/app/apache2/htdocs/index.html.ru.utf8 create mode 100644 rubbos/app/apache2/htdocs/index.html.sv create mode 100644 rubbos/app/apache2/htdocs/index.html.var create mode 100644 rubbos/app/apache2/htdocs/index.html.zh-cn.gb2312 create mode 100644 rubbos/app/apache2/htdocs/index.html.zh-tw.big5 create mode 100644 rubbos/app/apache2/htdocs/rubbos/RUBBoS_logo.jpg create mode 100644 rubbos/app/apache2/htdocs/rubbos/author.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/browse.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/header.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/index.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/register.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/rubbos_html/RUBBoS_logo.jpg create mode 100644 rubbos/app/apache2/htdocs/rubbos/rubbos_html/author.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/rubbos_html/browse.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/rubbos_html/header.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/rubbos_html/index.html create mode 100644 rubbos/app/apache2/htdocs/rubbos/rubbos_html/register.html create mode 100644 rubbos/app/apache2/icons/README create mode 100644 rubbos/app/apache2/icons/README.html create mode 100644 rubbos/app/apache2/icons/a.gif create mode 100644 rubbos/app/apache2/icons/a.png create mode 100644 rubbos/app/apache2/icons/alert.black.gif create mode 100644 rubbos/app/apache2/icons/alert.black.png create mode 100644 rubbos/app/apache2/icons/alert.red.gif create mode 100644 rubbos/app/apache2/icons/alert.red.png create mode 100644 rubbos/app/apache2/icons/apache_pb.gif create mode 100644 rubbos/app/apache2/icons/apache_pb.png create mode 100644 rubbos/app/apache2/icons/apache_pb2.gif create mode 100644 rubbos/app/apache2/icons/apache_pb2.png create mode 100644 rubbos/app/apache2/icons/apache_pb2_ani.gif create mode 100644 rubbos/app/apache2/icons/back.gif create mode 100644 rubbos/app/apache2/icons/back.png create mode 100644 rubbos/app/apache2/icons/ball.gray.gif create mode 100644 rubbos/app/apache2/icons/ball.gray.png create mode 100644 rubbos/app/apache2/icons/ball.red.gif create mode 100644 rubbos/app/apache2/icons/ball.red.png create mode 100644 rubbos/app/apache2/icons/binary.gif create mode 100644 rubbos/app/apache2/icons/binary.png create mode 100644 rubbos/app/apache2/icons/binhex.gif create mode 100644 rubbos/app/apache2/icons/binhex.png create mode 100644 rubbos/app/apache2/icons/blank.gif create mode 100644 rubbos/app/apache2/icons/blank.png create mode 100644 rubbos/app/apache2/icons/bomb.gif create mode 100644 rubbos/app/apache2/icons/bomb.png create mode 100644 rubbos/app/apache2/icons/box1.gif create mode 100644 rubbos/app/apache2/icons/box1.png create mode 100644 rubbos/app/apache2/icons/box2.gif create mode 100644 rubbos/app/apache2/icons/box2.png create mode 100644 rubbos/app/apache2/icons/broken.gif create mode 100644 rubbos/app/apache2/icons/broken.png create mode 100644 rubbos/app/apache2/icons/burst.gif create mode 100644 rubbos/app/apache2/icons/burst.png create mode 100644 rubbos/app/apache2/icons/c.gif create mode 100644 rubbos/app/apache2/icons/c.png create mode 100644 rubbos/app/apache2/icons/comp.blue.gif create mode 100644 rubbos/app/apache2/icons/comp.blue.png create mode 100644 rubbos/app/apache2/icons/comp.gray.gif create mode 100644 rubbos/app/apache2/icons/comp.gray.png create mode 100644 rubbos/app/apache2/icons/compressed.gif create mode 100644 rubbos/app/apache2/icons/compressed.png create mode 100644 rubbos/app/apache2/icons/continued.gif create mode 100644 rubbos/app/apache2/icons/continued.png create mode 100644 rubbos/app/apache2/icons/dir.gif create mode 100644 rubbos/app/apache2/icons/dir.png create mode 100644 rubbos/app/apache2/icons/diskimg.gif create mode 100644 rubbos/app/apache2/icons/diskimg.png create mode 100644 rubbos/app/apache2/icons/down.gif create mode 100644 rubbos/app/apache2/icons/down.png create mode 100644 rubbos/app/apache2/icons/dvi.gif create mode 100644 rubbos/app/apache2/icons/dvi.png create mode 100644 rubbos/app/apache2/icons/f.gif create mode 100644 rubbos/app/apache2/icons/f.png create mode 100644 rubbos/app/apache2/icons/folder.gif create mode 100644 rubbos/app/apache2/icons/folder.open.gif create mode 100644 rubbos/app/apache2/icons/folder.open.png create mode 100644 rubbos/app/apache2/icons/folder.png create mode 100644 rubbos/app/apache2/icons/folder.sec.gif create mode 100644 rubbos/app/apache2/icons/folder.sec.png create mode 100644 rubbos/app/apache2/icons/forward.gif create mode 100644 rubbos/app/apache2/icons/forward.png create mode 100644 rubbos/app/apache2/icons/generic.gif create mode 100644 rubbos/app/apache2/icons/generic.png create mode 100644 rubbos/app/apache2/icons/generic.red.gif create mode 100644 rubbos/app/apache2/icons/generic.red.png create mode 100644 rubbos/app/apache2/icons/generic.sec.gif create mode 100644 rubbos/app/apache2/icons/generic.sec.png create mode 100644 rubbos/app/apache2/icons/hand.right.gif create mode 100644 rubbos/app/apache2/icons/hand.right.png create mode 100644 rubbos/app/apache2/icons/hand.up.gif create mode 100644 rubbos/app/apache2/icons/hand.up.png create mode 100644 rubbos/app/apache2/icons/icon.sheet.gif create mode 100644 rubbos/app/apache2/icons/icon.sheet.png create mode 100644 rubbos/app/apache2/icons/image1.gif create mode 100644 rubbos/app/apache2/icons/image1.png create mode 100644 rubbos/app/apache2/icons/image2.gif create mode 100644 rubbos/app/apache2/icons/image2.png create mode 100644 rubbos/app/apache2/icons/image3.gif create mode 100644 rubbos/app/apache2/icons/image3.png create mode 100644 rubbos/app/apache2/icons/index.gif create mode 100644 rubbos/app/apache2/icons/index.png create mode 100644 rubbos/app/apache2/icons/layout.gif create mode 100644 rubbos/app/apache2/icons/layout.png create mode 100644 rubbos/app/apache2/icons/left.gif create mode 100644 rubbos/app/apache2/icons/left.png create mode 100644 rubbos/app/apache2/icons/link.gif create mode 100644 rubbos/app/apache2/icons/link.png create mode 100644 rubbos/app/apache2/icons/movie.gif create mode 100644 rubbos/app/apache2/icons/movie.png create mode 100644 rubbos/app/apache2/icons/p.gif create mode 100644 rubbos/app/apache2/icons/p.png create mode 100644 rubbos/app/apache2/icons/patch.gif create mode 100644 rubbos/app/apache2/icons/patch.png create mode 100644 rubbos/app/apache2/icons/pdf.gif create mode 100644 rubbos/app/apache2/icons/pdf.png create mode 100644 rubbos/app/apache2/icons/pie0.gif create mode 100644 rubbos/app/apache2/icons/pie0.png create mode 100644 rubbos/app/apache2/icons/pie1.gif create mode 100644 rubbos/app/apache2/icons/pie1.png create mode 100644 rubbos/app/apache2/icons/pie2.gif create mode 100644 rubbos/app/apache2/icons/pie2.png create mode 100644 rubbos/app/apache2/icons/pie3.gif create mode 100644 rubbos/app/apache2/icons/pie3.png create mode 100644 rubbos/app/apache2/icons/pie4.gif create mode 100644 rubbos/app/apache2/icons/pie4.png create mode 100644 rubbos/app/apache2/icons/pie5.gif create mode 100644 rubbos/app/apache2/icons/pie5.png create mode 100644 rubbos/app/apache2/icons/pie6.gif create mode 100644 rubbos/app/apache2/icons/pie6.png create mode 100644 rubbos/app/apache2/icons/pie7.gif create mode 100644 rubbos/app/apache2/icons/pie7.png create mode 100644 rubbos/app/apache2/icons/pie8.gif create mode 100644 rubbos/app/apache2/icons/pie8.png create mode 100644 rubbos/app/apache2/icons/portal.gif create mode 100644 rubbos/app/apache2/icons/portal.png create mode 100644 rubbos/app/apache2/icons/ps.gif create mode 100644 rubbos/app/apache2/icons/ps.png create mode 100644 rubbos/app/apache2/icons/quill.gif create mode 100644 rubbos/app/apache2/icons/quill.png create mode 100644 rubbos/app/apache2/icons/right.gif create mode 100644 rubbos/app/apache2/icons/right.png create mode 100644 rubbos/app/apache2/icons/screw1.gif create mode 100644 rubbos/app/apache2/icons/screw1.png create mode 100644 rubbos/app/apache2/icons/screw2.gif create mode 100644 rubbos/app/apache2/icons/screw2.png create mode 100644 rubbos/app/apache2/icons/script.gif create mode 100644 rubbos/app/apache2/icons/script.png create mode 100644 rubbos/app/apache2/icons/small/back.gif create mode 100644 rubbos/app/apache2/icons/small/back.png create mode 100644 rubbos/app/apache2/icons/small/binary.gif create mode 100644 rubbos/app/apache2/icons/small/binary.png create mode 100644 rubbos/app/apache2/icons/small/binhex.gif create mode 100644 rubbos/app/apache2/icons/small/binhex.png create mode 100644 rubbos/app/apache2/icons/small/blank.gif create mode 100644 rubbos/app/apache2/icons/small/blank.png create mode 100644 rubbos/app/apache2/icons/small/broken.gif create mode 100644 rubbos/app/apache2/icons/small/broken.png create mode 100644 rubbos/app/apache2/icons/small/burst.gif create mode 100644 rubbos/app/apache2/icons/small/burst.png create mode 100644 rubbos/app/apache2/icons/small/comp1.gif create mode 100644 rubbos/app/apache2/icons/small/comp1.png create mode 100644 rubbos/app/apache2/icons/small/comp2.gif create mode 100644 rubbos/app/apache2/icons/small/comp2.png create mode 100644 rubbos/app/apache2/icons/small/compressed.gif create mode 100644 rubbos/app/apache2/icons/small/compressed.png create mode 100644 rubbos/app/apache2/icons/small/continued.gif create mode 100644 rubbos/app/apache2/icons/small/continued.png create mode 100644 rubbos/app/apache2/icons/small/dir.gif create mode 100644 rubbos/app/apache2/icons/small/dir.png create mode 100644 rubbos/app/apache2/icons/small/dir2.gif create mode 100644 rubbos/app/apache2/icons/small/dir2.png create mode 100644 rubbos/app/apache2/icons/small/doc.gif create mode 100644 rubbos/app/apache2/icons/small/doc.png create mode 100644 rubbos/app/apache2/icons/small/forward.gif create mode 100644 rubbos/app/apache2/icons/small/forward.png create mode 100644 rubbos/app/apache2/icons/small/generic.gif create mode 100644 rubbos/app/apache2/icons/small/generic.png create mode 100644 rubbos/app/apache2/icons/small/generic2.gif create mode 100644 rubbos/app/apache2/icons/small/generic2.png create mode 100644 rubbos/app/apache2/icons/small/generic3.gif create mode 100644 rubbos/app/apache2/icons/small/generic3.png create mode 100644 rubbos/app/apache2/icons/small/image.gif create mode 100644 rubbos/app/apache2/icons/small/image.png create mode 100644 rubbos/app/apache2/icons/small/image2.gif create mode 100644 rubbos/app/apache2/icons/small/image2.png create mode 100644 rubbos/app/apache2/icons/small/index.gif create mode 100644 rubbos/app/apache2/icons/small/index.png create mode 100644 rubbos/app/apache2/icons/small/key.gif create mode 100644 rubbos/app/apache2/icons/small/key.png create mode 100644 rubbos/app/apache2/icons/small/movie.gif create mode 100644 rubbos/app/apache2/icons/small/movie.png create mode 100644 rubbos/app/apache2/icons/small/patch.gif create mode 100644 rubbos/app/apache2/icons/small/patch.png create mode 100644 rubbos/app/apache2/icons/small/ps.gif create mode 100644 rubbos/app/apache2/icons/small/ps.png create mode 100644 rubbos/app/apache2/icons/small/rainbow.gif create mode 100644 rubbos/app/apache2/icons/small/rainbow.png create mode 100644 rubbos/app/apache2/icons/small/sound.gif create mode 100644 rubbos/app/apache2/icons/small/sound.png create mode 100644 rubbos/app/apache2/icons/small/sound2.gif create mode 100644 rubbos/app/apache2/icons/small/sound2.png create mode 100644 rubbos/app/apache2/icons/small/tar.gif create mode 100644 rubbos/app/apache2/icons/small/tar.png create mode 100644 rubbos/app/apache2/icons/small/text.gif create mode 100644 rubbos/app/apache2/icons/small/text.png create mode 100644 rubbos/app/apache2/icons/small/transfer.gif create mode 100644 rubbos/app/apache2/icons/small/transfer.png create mode 100644 rubbos/app/apache2/icons/small/unknown.gif create mode 100644 rubbos/app/apache2/icons/small/unknown.png create mode 100644 rubbos/app/apache2/icons/small/uu.gif create mode 100644 rubbos/app/apache2/icons/small/uu.png create mode 100644 rubbos/app/apache2/icons/sound1.gif create mode 100644 rubbos/app/apache2/icons/sound1.png create mode 100644 rubbos/app/apache2/icons/sound2.gif create mode 100644 rubbos/app/apache2/icons/sound2.png create mode 100644 rubbos/app/apache2/icons/sphere1.gif create mode 100644 rubbos/app/apache2/icons/sphere1.png create mode 100644 rubbos/app/apache2/icons/sphere2.gif create mode 100644 rubbos/app/apache2/icons/sphere2.png create mode 100644 rubbos/app/apache2/icons/tar.gif create mode 100644 rubbos/app/apache2/icons/tar.png create mode 100644 rubbos/app/apache2/icons/tex.gif create mode 100644 rubbos/app/apache2/icons/tex.png create mode 100644 rubbos/app/apache2/icons/text.gif create mode 100644 rubbos/app/apache2/icons/text.png create mode 100644 rubbos/app/apache2/icons/transfer.gif create mode 100644 rubbos/app/apache2/icons/transfer.png create mode 100644 rubbos/app/apache2/icons/unknown.gif create mode 100644 rubbos/app/apache2/icons/unknown.png create mode 100644 rubbos/app/apache2/icons/up.gif create mode 100644 rubbos/app/apache2/icons/up.png create mode 100644 rubbos/app/apache2/icons/uu.gif create mode 100644 rubbos/app/apache2/icons/uu.png create mode 100644 rubbos/app/apache2/icons/uuencoded.gif create mode 100644 rubbos/app/apache2/icons/uuencoded.png create mode 100644 rubbos/app/apache2/icons/world1.gif create mode 100644 rubbos/app/apache2/icons/world1.png create mode 100644 rubbos/app/apache2/icons/world2.gif create mode 100644 rubbos/app/apache2/icons/world2.png create mode 100644 rubbos/app/apache2/include/ap_compat.h create mode 100644 rubbos/app/apache2/include/ap_config.h create mode 100644 rubbos/app/apache2/include/ap_config_auto.h create mode 100644 rubbos/app/apache2/include/ap_config_layout.h create mode 100644 rubbos/app/apache2/include/ap_listen.h create mode 100644 rubbos/app/apache2/include/ap_mmn.h create mode 100644 rubbos/app/apache2/include/ap_mpm.h create mode 100644 rubbos/app/apache2/include/ap_provider.h create mode 100644 rubbos/app/apache2/include/ap_regkey.h create mode 100644 rubbos/app/apache2/include/ap_release.h create mode 100644 rubbos/app/apache2/include/apr.h create mode 100644 rubbos/app/apache2/include/apr_allocator.h create mode 100644 rubbos/app/apache2/include/apr_anylock.h create mode 100644 rubbos/app/apache2/include/apr_atomic.h create mode 100644 rubbos/app/apache2/include/apr_base64.h create mode 100644 rubbos/app/apache2/include/apr_buckets.h create mode 100644 rubbos/app/apache2/include/apr_compat.h create mode 100644 rubbos/app/apache2/include/apr_date.h create mode 100644 rubbos/app/apache2/include/apr_dbm.h create mode 100644 rubbos/app/apache2/include/apr_dso.h create mode 100644 rubbos/app/apache2/include/apr_env.h create mode 100644 rubbos/app/apache2/include/apr_errno.h create mode 100644 rubbos/app/apache2/include/apr_file_info.h create mode 100644 rubbos/app/apache2/include/apr_file_io.h create mode 100644 rubbos/app/apache2/include/apr_fnmatch.h create mode 100644 rubbos/app/apache2/include/apr_general.h create mode 100644 rubbos/app/apache2/include/apr_getopt.h create mode 100644 rubbos/app/apache2/include/apr_global_mutex.h create mode 100644 rubbos/app/apache2/include/apr_hash.h create mode 100644 rubbos/app/apache2/include/apr_hooks.h create mode 100644 rubbos/app/apache2/include/apr_inherit.h create mode 100644 rubbos/app/apache2/include/apr_ldap.h create mode 100644 rubbos/app/apache2/include/apr_ldap_url.h create mode 100644 rubbos/app/apache2/include/apr_lib.h create mode 100644 rubbos/app/apache2/include/apr_md4.h create mode 100644 rubbos/app/apache2/include/apr_md5.h create mode 100644 rubbos/app/apache2/include/apr_mmap.h create mode 100644 rubbos/app/apache2/include/apr_network_io.h create mode 100644 rubbos/app/apache2/include/apr_optional.h create mode 100644 rubbos/app/apache2/include/apr_optional_hooks.h create mode 100644 rubbos/app/apache2/include/apr_poll.h create mode 100644 rubbos/app/apache2/include/apr_pools.h create mode 100644 rubbos/app/apache2/include/apr_portable.h create mode 100644 rubbos/app/apache2/include/apr_proc_mutex.h create mode 100644 rubbos/app/apache2/include/apr_queue.h create mode 100644 rubbos/app/apache2/include/apr_reslist.h create mode 100644 rubbos/app/apache2/include/apr_ring.h create mode 100644 rubbos/app/apache2/include/apr_rmm.h create mode 100644 rubbos/app/apache2/include/apr_sdbm.h create mode 100644 rubbos/app/apache2/include/apr_sha1.h create mode 100644 rubbos/app/apache2/include/apr_shm.h create mode 100644 rubbos/app/apache2/include/apr_signal.h create mode 100644 rubbos/app/apache2/include/apr_strings.h create mode 100644 rubbos/app/apache2/include/apr_strmatch.h create mode 100644 rubbos/app/apache2/include/apr_support.h create mode 100644 rubbos/app/apache2/include/apr_tables.h create mode 100644 rubbos/app/apache2/include/apr_thread_cond.h create mode 100644 rubbos/app/apache2/include/apr_thread_mutex.h create mode 100644 rubbos/app/apache2/include/apr_thread_proc.h create mode 100644 rubbos/app/apache2/include/apr_thread_rwlock.h create mode 100644 rubbos/app/apache2/include/apr_time.h create mode 100644 rubbos/app/apache2/include/apr_uri.h create mode 100644 rubbos/app/apache2/include/apr_user.h create mode 100644 rubbos/app/apache2/include/apr_uuid.h create mode 100644 rubbos/app/apache2/include/apr_version.h create mode 100644 rubbos/app/apache2/include/apr_want.h create mode 100644 rubbos/app/apache2/include/apr_xlate.h create mode 100644 rubbos/app/apache2/include/apr_xml.h create mode 100644 rubbos/app/apache2/include/apu.h create mode 100644 rubbos/app/apache2/include/apu_compat.h create mode 100644 rubbos/app/apache2/include/apu_version.h create mode 100644 rubbos/app/apache2/include/apu_want.h create mode 100644 rubbos/app/apache2/include/expat.h create mode 100644 rubbos/app/apache2/include/fdqueue.h create mode 100644 rubbos/app/apache2/include/http_config.h create mode 100644 rubbos/app/apache2/include/http_connection.h create mode 100644 rubbos/app/apache2/include/http_core.h create mode 100644 rubbos/app/apache2/include/http_log.h create mode 100644 rubbos/app/apache2/include/http_main.h create mode 100644 rubbos/app/apache2/include/http_protocol.h create mode 100644 rubbos/app/apache2/include/http_request.h create mode 100644 rubbos/app/apache2/include/http_vhost.h create mode 100644 rubbos/app/apache2/include/httpd.h create mode 100644 rubbos/app/apache2/include/mod_cgi.h create mode 100644 rubbos/app/apache2/include/mod_core.h create mode 100644 rubbos/app/apache2/include/mod_dav.h create mode 100644 rubbos/app/apache2/include/mod_include.h create mode 100644 rubbos/app/apache2/include/mod_log_config.h create mode 100644 rubbos/app/apache2/include/mod_proxy.h create mode 100644 rubbos/app/apache2/include/mod_ssl.h create mode 100644 rubbos/app/apache2/include/mod_status.h create mode 100644 rubbos/app/apache2/include/mpm.h create mode 100644 rubbos/app/apache2/include/mpm_common.h create mode 100644 rubbos/app/apache2/include/mpm_default.h create mode 100644 rubbos/app/apache2/include/os.h create mode 100644 rubbos/app/apache2/include/pcre.h create mode 100644 rubbos/app/apache2/include/pcreposix.h create mode 100644 rubbos/app/apache2/include/pod.h create mode 100644 rubbos/app/apache2/include/rfc1413.h create mode 100644 rubbos/app/apache2/include/scoreboard.h create mode 100644 rubbos/app/apache2/include/ssl_expr.h create mode 100644 rubbos/app/apache2/include/ssl_expr_parse.h create mode 100644 rubbos/app/apache2/include/ssl_toolkit_compat.h create mode 100644 rubbos/app/apache2/include/ssl_util_ssl.h create mode 100644 rubbos/app/apache2/include/ssl_util_table.h create mode 100644 rubbos/app/apache2/include/unixd.h create mode 100644 rubbos/app/apache2/include/util_cfgtree.h create mode 100644 rubbos/app/apache2/include/util_charset.h create mode 100644 rubbos/app/apache2/include/util_ebcdic.h create mode 100644 rubbos/app/apache2/include/util_filter.h create mode 100644 rubbos/app/apache2/include/util_ldap.h create mode 100644 rubbos/app/apache2/include/util_md5.h create mode 100644 rubbos/app/apache2/include/util_script.h create mode 100644 rubbos/app/apache2/include/util_time.h create mode 100644 rubbos/app/apache2/include/util_xml.h create mode 100644 rubbos/app/apache2/lib/apr.exp create mode 100644 rubbos/app/apache2/lib/aprutil.exp create mode 100644 rubbos/app/apache2/lib/libapr-0.a create mode 100644 rubbos/app/apache2/lib/libapr-0.la create mode 100755 rubbos/app/apache2/lib/libapr-0.so create mode 100755 rubbos/app/apache2/lib/libapr-0.so.0 create mode 100755 rubbos/app/apache2/lib/libapr-0.so.0.9.19 create mode 100644 rubbos/app/apache2/lib/libaprutil-0.a create mode 100644 rubbos/app/apache2/lib/libaprutil-0.la create mode 100755 rubbos/app/apache2/lib/libaprutil-0.so create mode 100755 rubbos/app/apache2/lib/libaprutil-0.so.0 create mode 100755 rubbos/app/apache2/lib/libaprutil-0.so.0.9.19 create mode 100644 rubbos/app/apache2/lib/libexpat.a create mode 100755 rubbos/app/apache2/lib/libexpat.la create mode 100755 rubbos/app/apache2/lib/libexpat.so create mode 100755 rubbos/app/apache2/lib/libexpat.so.0 create mode 100755 rubbos/app/apache2/lib/libexpat.so.0.5.0 create mode 100644 rubbos/app/apache2/logs/access_log create mode 100644 rubbos/app/apache2/logs/error_log create mode 100644 rubbos/app/apache2/man/man1/dbmmanage.1 create mode 100644 rubbos/app/apache2/man/man1/htdbm.1 create mode 100644 rubbos/app/apache2/man/man1/htdigest.1 create mode 100644 rubbos/app/apache2/man/man1/htpasswd.1 create mode 100644 rubbos/app/apache2/man/man8/ab.8 create mode 100644 rubbos/app/apache2/man/man8/apachectl.8 create mode 100644 rubbos/app/apache2/man/man8/apxs.8 create mode 100644 rubbos/app/apache2/man/man8/httpd.8 create mode 100644 rubbos/app/apache2/man/man8/logresolve.8 create mode 100644 rubbos/app/apache2/man/man8/rotatelogs.8 create mode 100644 rubbos/app/apache2/man/man8/suexec.8 create mode 100644 rubbos/app/apache2/manual/LICENSE create mode 100644 rubbos/app/apache2/manual/bind.html create mode 100644 rubbos/app/apache2/manual/bind.html.en create mode 100644 rubbos/app/apache2/manual/bind.html.es create mode 100644 rubbos/app/apache2/manual/bind.html.fr create mode 100644 rubbos/app/apache2/manual/bind.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/bind.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/bind.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/configuring.html create mode 100644 rubbos/app/apache2/manual/configuring.html.de create mode 100644 rubbos/app/apache2/manual/configuring.html.en create mode 100644 rubbos/app/apache2/manual/configuring.html.fr create mode 100644 rubbos/app/apache2/manual/configuring.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/configuring.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/configuring.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/content-negotiation.html create mode 100644 rubbos/app/apache2/manual/content-negotiation.html.en create mode 100644 rubbos/app/apache2/manual/content-negotiation.html.fr create mode 100644 rubbos/app/apache2/manual/content-negotiation.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/content-negotiation.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/content-negotiation.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/custom-error.html create mode 100644 rubbos/app/apache2/manual/custom-error.html.en create mode 100644 rubbos/app/apache2/manual/custom-error.html.es create mode 100644 rubbos/app/apache2/manual/custom-error.html.fr create mode 100644 rubbos/app/apache2/manual/custom-error.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/custom-error.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/custom-error.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/developer/API.html create mode 100644 rubbos/app/apache2/manual/developer/API.html.en create mode 100644 rubbos/app/apache2/manual/developer/debugging.html create mode 100644 rubbos/app/apache2/manual/developer/debugging.html.en create mode 100644 rubbos/app/apache2/manual/developer/documenting.html create mode 100644 rubbos/app/apache2/manual/developer/documenting.html.en create mode 100644 rubbos/app/apache2/manual/developer/filters.html create mode 100644 rubbos/app/apache2/manual/developer/filters.html.en create mode 100644 rubbos/app/apache2/manual/developer/hooks.html create mode 100644 rubbos/app/apache2/manual/developer/hooks.html.en create mode 100644 rubbos/app/apache2/manual/developer/index.html create mode 100644 rubbos/app/apache2/manual/developer/index.html.en create mode 100644 rubbos/app/apache2/manual/developer/modules.html create mode 100644 rubbos/app/apache2/manual/developer/modules.html.en create mode 100644 rubbos/app/apache2/manual/developer/modules.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/developer/request.html create mode 100644 rubbos/app/apache2/manual/developer/request.html.en create mode 100644 rubbos/app/apache2/manual/developer/thread_safety.html create mode 100644 rubbos/app/apache2/manual/developer/thread_safety.html.en create mode 100644 rubbos/app/apache2/manual/dns-caveats.html create mode 100644 rubbos/app/apache2/manual/dns-caveats.html.en create mode 100644 rubbos/app/apache2/manual/dns-caveats.html.es create mode 100644 rubbos/app/apache2/manual/dns-caveats.html.fr create mode 100644 rubbos/app/apache2/manual/dns-caveats.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/dns-caveats.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/dns-caveats.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/dso.html create mode 100644 rubbos/app/apache2/manual/dso.html.en create mode 100644 rubbos/app/apache2/manual/dso.html.es create mode 100644 rubbos/app/apache2/manual/dso.html.fr create mode 100644 rubbos/app/apache2/manual/dso.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/dso.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/dso.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/env.html create mode 100644 rubbos/app/apache2/manual/env.html.en create mode 100644 rubbos/app/apache2/manual/env.html.es create mode 100644 rubbos/app/apache2/manual/env.html.fr create mode 100644 rubbos/app/apache2/manual/env.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/env.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/env.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/faq/all_in_one.html create mode 100644 rubbos/app/apache2/manual/faq/all_in_one.html.en create mode 100644 rubbos/app/apache2/manual/faq/all_in_one.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/faq/all_in_one.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/faq/error.html create mode 100644 rubbos/app/apache2/manual/faq/error.html.en create mode 100644 rubbos/app/apache2/manual/faq/error.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/faq/error.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/faq/index.html create mode 100644 rubbos/app/apache2/manual/faq/index.html.en create mode 100644 rubbos/app/apache2/manual/faq/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/faq/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/faq/support.html create mode 100644 rubbos/app/apache2/manual/faq/support.html.en create mode 100644 rubbos/app/apache2/manual/faq/support.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/faq/support.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/filter.html create mode 100644 rubbos/app/apache2/manual/filter.html.en create mode 100644 rubbos/app/apache2/manual/filter.html.es create mode 100644 rubbos/app/apache2/manual/filter.html.fr create mode 100644 rubbos/app/apache2/manual/filter.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/filter.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/filter.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/filter.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/glossary.html create mode 100644 rubbos/app/apache2/manual/glossary.html.de create mode 100644 rubbos/app/apache2/manual/glossary.html.en create mode 100644 rubbos/app/apache2/manual/glossary.html.es create mode 100644 rubbos/app/apache2/manual/glossary.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/glossary.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/handler.html create mode 100644 rubbos/app/apache2/manual/handler.html.en create mode 100644 rubbos/app/apache2/manual/handler.html.es create mode 100644 rubbos/app/apache2/manual/handler.html.fr create mode 100644 rubbos/app/apache2/manual/handler.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/handler.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/handler.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/handler.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/howto/auth.html create mode 100644 rubbos/app/apache2/manual/howto/auth.html.en create mode 100644 rubbos/app/apache2/manual/howto/auth.html.es create mode 100644 rubbos/app/apache2/manual/howto/auth.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/howto/auth.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/howto/cgi.html create mode 100644 rubbos/app/apache2/manual/howto/cgi.html.en create mode 100644 rubbos/app/apache2/manual/howto/cgi.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/howto/cgi.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/howto/htaccess.html create mode 100644 rubbos/app/apache2/manual/howto/htaccess.html.en create mode 100644 rubbos/app/apache2/manual/howto/htaccess.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/howto/htaccess.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/howto/index.html create mode 100644 rubbos/app/apache2/manual/howto/index.html.en create mode 100644 rubbos/app/apache2/manual/howto/index.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/howto/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/howto/public_html.html create mode 100644 rubbos/app/apache2/manual/howto/public_html.html.en create mode 100644 rubbos/app/apache2/manual/howto/public_html.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/howto/public_html.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/howto/public_html.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/howto/ssi.html create mode 100644 rubbos/app/apache2/manual/howto/ssi.html.en create mode 100644 rubbos/app/apache2/manual/howto/ssi.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/howto/ssi.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/images/apache_header.gif create mode 100644 rubbos/app/apache2/manual/images/custom_errordocs.gif create mode 100644 rubbos/app/apache2/manual/images/custom_errordocs.png create mode 100644 rubbos/app/apache2/manual/images/down.gif create mode 100644 rubbos/app/apache2/manual/images/favicon.ico create mode 100644 rubbos/app/apache2/manual/images/feather.gif create mode 100644 rubbos/app/apache2/manual/images/feather.png create mode 100644 rubbos/app/apache2/manual/images/home.gif create mode 100644 rubbos/app/apache2/manual/images/index.gif create mode 100644 rubbos/app/apache2/manual/images/left.gif create mode 100644 rubbos/app/apache2/manual/images/mod_rewrite_fig1.gif create mode 100644 rubbos/app/apache2/manual/images/mod_rewrite_fig1.png create mode 100644 rubbos/app/apache2/manual/images/mod_rewrite_fig2.gif create mode 100644 rubbos/app/apache2/manual/images/mod_rewrite_fig2.png create mode 100644 rubbos/app/apache2/manual/images/pixel.gif create mode 100644 rubbos/app/apache2/manual/images/right.gif create mode 100644 rubbos/app/apache2/manual/images/ssl_intro_fig1.gif create mode 100644 rubbos/app/apache2/manual/images/ssl_intro_fig1.png create mode 100644 rubbos/app/apache2/manual/images/ssl_intro_fig2.gif create mode 100644 rubbos/app/apache2/manual/images/ssl_intro_fig2.png create mode 100644 rubbos/app/apache2/manual/images/ssl_intro_fig3.gif create mode 100644 rubbos/app/apache2/manual/images/ssl_intro_fig3.png create mode 100644 rubbos/app/apache2/manual/images/sub.gif create mode 100644 rubbos/app/apache2/manual/images/up.gif create mode 100644 rubbos/app/apache2/manual/index.html create mode 100644 rubbos/app/apache2/manual/index.html.de create mode 100644 rubbos/app/apache2/manual/index.html.en create mode 100644 rubbos/app/apache2/manual/index.html.es create mode 100644 rubbos/app/apache2/manual/index.html.fr create mode 100644 rubbos/app/apache2/manual/index.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/index.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/install.html create mode 100644 rubbos/app/apache2/manual/install.html.de create mode 100644 rubbos/app/apache2/manual/install.html.en create mode 100644 rubbos/app/apache2/manual/install.html.es create mode 100644 rubbos/app/apache2/manual/install.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/install.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/install.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/install.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/invoking.html create mode 100644 rubbos/app/apache2/manual/invoking.html.de create mode 100644 rubbos/app/apache2/manual/invoking.html.en create mode 100644 rubbos/app/apache2/manual/invoking.html.es create mode 100644 rubbos/app/apache2/manual/invoking.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/invoking.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/invoking.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/invoking.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/license.html create mode 100644 rubbos/app/apache2/manual/license.html.en create mode 100644 rubbos/app/apache2/manual/logs.html create mode 100644 rubbos/app/apache2/manual/logs.html.en create mode 100644 rubbos/app/apache2/manual/logs.html.es create mode 100644 rubbos/app/apache2/manual/logs.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/logs.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/logs.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/misc/custom_errordocs.html create mode 100644 rubbos/app/apache2/manual/misc/custom_errordocs.html.en create mode 100644 rubbos/app/apache2/manual/misc/descriptors.html create mode 100644 rubbos/app/apache2/manual/misc/descriptors.html.en create mode 100644 rubbos/app/apache2/manual/misc/fin_wait_2.html create mode 100644 rubbos/app/apache2/manual/misc/fin_wait_2.html.en create mode 100644 rubbos/app/apache2/manual/misc/index.html create mode 100644 rubbos/app/apache2/manual/misc/index.html.en create mode 100644 rubbos/app/apache2/manual/misc/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/misc/known_client_problems.html create mode 100644 rubbos/app/apache2/manual/misc/known_client_problems.html.en create mode 100644 rubbos/app/apache2/manual/misc/perf-tuning.html create mode 100644 rubbos/app/apache2/manual/misc/perf-tuning.html.en create mode 100644 rubbos/app/apache2/manual/misc/perf-tuning.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/misc/perf-tuning.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/misc/relevant_standards.html create mode 100644 rubbos/app/apache2/manual/misc/relevant_standards.html.en create mode 100644 rubbos/app/apache2/manual/misc/relevant_standards.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/misc/rewriteguide.html create mode 100644 rubbos/app/apache2/manual/misc/rewriteguide.html.en create mode 100644 rubbos/app/apache2/manual/misc/rewriteguide.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/misc/security_tips.html create mode 100644 rubbos/app/apache2/manual/misc/security_tips.html.en create mode 100644 rubbos/app/apache2/manual/misc/security_tips.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/misc/security_tips.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/misc/tutorials.html create mode 100644 rubbos/app/apache2/manual/misc/tutorials.html.en create mode 100644 rubbos/app/apache2/manual/mod/beos.html create mode 100644 rubbos/app/apache2/manual/mod/beos.html.de create mode 100644 rubbos/app/apache2/manual/mod/beos.html.en create mode 100644 rubbos/app/apache2/manual/mod/beos.html.es create mode 100644 rubbos/app/apache2/manual/mod/beos.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/core.html create mode 100644 rubbos/app/apache2/manual/mod/core.html.de create mode 100644 rubbos/app/apache2/manual/mod/core.html.en create mode 100644 rubbos/app/apache2/manual/mod/core.html.es create mode 100644 rubbos/app/apache2/manual/mod/core.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/core.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/directive-dict.html create mode 100644 rubbos/app/apache2/manual/mod/directive-dict.html.en create mode 100644 rubbos/app/apache2/manual/mod/directive-dict.html.es create mode 100644 rubbos/app/apache2/manual/mod/directive-dict.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/directive-dict.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/directive-dict.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/directives.html create mode 100644 rubbos/app/apache2/manual/mod/directives.html.de create mode 100644 rubbos/app/apache2/manual/mod/directives.html.en create mode 100644 rubbos/app/apache2/manual/mod/directives.html.es create mode 100644 rubbos/app/apache2/manual/mod/directives.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/directives.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/directives.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/mod/directives.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/index.html create mode 100644 rubbos/app/apache2/manual/mod/index.html.de create mode 100644 rubbos/app/apache2/manual/mod/index.html.en create mode 100644 rubbos/app/apache2/manual/mod/index.html.es create mode 100644 rubbos/app/apache2/manual/mod/index.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/leader.html create mode 100644 rubbos/app/apache2/manual/mod/leader.html.de create mode 100644 rubbos/app/apache2/manual/mod/leader.html.en create mode 100644 rubbos/app/apache2/manual/mod/leader.html.es create mode 100644 rubbos/app/apache2/manual/mod/leader.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_access.html create mode 100644 rubbos/app/apache2/manual/mod/mod_access.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_access.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_actions.html create mode 100644 rubbos/app/apache2/manual/mod/mod_actions.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_actions.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_actions.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_alias.html create mode 100644 rubbos/app/apache2/manual/mod/mod_alias.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_alias.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_alias.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_alias.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_asis.html create mode 100644 rubbos/app/apache2/manual/mod/mod_asis.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_asis.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_asis.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_auth.html create mode 100644 rubbos/app/apache2/manual/mod/mod_auth.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_auth.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_anon.html create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_anon.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_dbm.html create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_dbm.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_digest.html create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_digest.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_digest.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_ldap.html create mode 100644 rubbos/app/apache2/manual/mod/mod_auth_ldap.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_autoindex.html create mode 100644 rubbos/app/apache2/manual/mod/mod_autoindex.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_autoindex.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_autoindex.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_autoindex.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_cache.html create mode 100644 rubbos/app/apache2/manual/mod/mod_cache.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_cache.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_cern_meta.html create mode 100644 rubbos/app/apache2/manual/mod/mod_cern_meta.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_cern_meta.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_cgi.html create mode 100644 rubbos/app/apache2/manual/mod/mod_cgi.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_cgi.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_cgi.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_cgid.html create mode 100644 rubbos/app/apache2/manual/mod/mod_cgid.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_cgid.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_cgid.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_charset_lite.html create mode 100644 rubbos/app/apache2/manual/mod/mod_charset_lite.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_charset_lite.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_dav.html create mode 100644 rubbos/app/apache2/manual/mod/mod_dav.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_dav.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_dav.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_dav_fs.html create mode 100644 rubbos/app/apache2/manual/mod/mod_dav_fs.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_dav_fs.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_dav_fs.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_deflate.html create mode 100644 rubbos/app/apache2/manual/mod/mod_deflate.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_deflate.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_deflate.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_dir.html create mode 100644 rubbos/app/apache2/manual/mod/mod_dir.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_dir.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_dir.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_dir.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_disk_cache.html create mode 100644 rubbos/app/apache2/manual/mod/mod_disk_cache.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_disk_cache.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_dumpio.html create mode 100644 rubbos/app/apache2/manual/mod/mod_dumpio.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_echo.html create mode 100644 rubbos/app/apache2/manual/mod/mod_echo.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_echo.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_echo.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_env.html create mode 100644 rubbos/app/apache2/manual/mod/mod_env.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_env.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_env.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_env.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_example.html create mode 100644 rubbos/app/apache2/manual/mod/mod_example.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_example.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_expires.html create mode 100644 rubbos/app/apache2/manual/mod/mod_expires.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_expires.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_expires.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_ext_filter.html create mode 100644 rubbos/app/apache2/manual/mod/mod_ext_filter.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_ext_filter.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_file_cache.html create mode 100644 rubbos/app/apache2/manual/mod/mod_file_cache.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_file_cache.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_headers.html create mode 100644 rubbos/app/apache2/manual/mod/mod_headers.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_headers.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_imap.html create mode 100644 rubbos/app/apache2/manual/mod/mod_imap.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_imap.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_include.html create mode 100644 rubbos/app/apache2/manual/mod/mod_include.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_include.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_info.html create mode 100644 rubbos/app/apache2/manual/mod/mod_info.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_info.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_info.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_isapi.html create mode 100644 rubbos/app/apache2/manual/mod/mod_isapi.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_isapi.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_ldap.html create mode 100644 rubbos/app/apache2/manual/mod/mod_ldap.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_log_config.html create mode 100644 rubbos/app/apache2/manual/mod/mod_log_config.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_log_config.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_log_config.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_log_config.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_log_forensic.html create mode 100644 rubbos/app/apache2/manual/mod/mod_log_forensic.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_log_forensic.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_logio.html create mode 100644 rubbos/app/apache2/manual/mod/mod_logio.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_logio.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_logio.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_logio.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_mem_cache.html create mode 100644 rubbos/app/apache2/manual/mod/mod_mem_cache.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_mem_cache.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_mem_cache.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_mime.html create mode 100644 rubbos/app/apache2/manual/mod/mod_mime.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_mime.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_mime_magic.html create mode 100644 rubbos/app/apache2/manual/mod/mod_mime_magic.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_negotiation.html create mode 100644 rubbos/app/apache2/manual/mod/mod_negotiation.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_negotiation.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_nw_ssl.html create mode 100644 rubbos/app/apache2/manual/mod/mod_nw_ssl.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy.html create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy_connect.html create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy_connect.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy_ftp.html create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy_ftp.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy_http.html create mode 100644 rubbos/app/apache2/manual/mod/mod_proxy_http.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_rewrite.html create mode 100644 rubbos/app/apache2/manual/mod/mod_rewrite.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_setenvif.html create mode 100644 rubbos/app/apache2/manual/mod/mod_setenvif.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_setenvif.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_setenvif.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_setenvif.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_so.html create mode 100644 rubbos/app/apache2/manual/mod/mod_so.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_so.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_so.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_so.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_speling.html create mode 100644 rubbos/app/apache2/manual/mod/mod_speling.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_speling.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_speling.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_ssl.html create mode 100644 rubbos/app/apache2/manual/mod/mod_ssl.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_status.html create mode 100644 rubbos/app/apache2/manual/mod/mod_status.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_status.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_status.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_status.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_suexec.html create mode 100644 rubbos/app/apache2/manual/mod/mod_suexec.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_suexec.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_suexec.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_suexec.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_unique_id.html create mode 100644 rubbos/app/apache2/manual/mod/mod_unique_id.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_unique_id.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_unique_id.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_userdir.html create mode 100644 rubbos/app/apache2/manual/mod/mod_userdir.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_userdir.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_userdir.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_userdir.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_usertrack.html create mode 100644 rubbos/app/apache2/manual/mod/mod_usertrack.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_version.html create mode 100644 rubbos/app/apache2/manual/mod/mod_version.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_version.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mod_version.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/mod_vhost_alias.html create mode 100644 rubbos/app/apache2/manual/mod/mod_vhost_alias.html.en create mode 100644 rubbos/app/apache2/manual/mod/mod_vhost_alias.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/module-dict.html create mode 100644 rubbos/app/apache2/manual/mod/module-dict.html.en create mode 100644 rubbos/app/apache2/manual/mod/module-dict.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/module-dict.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/module-dict.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mpm_common.html create mode 100644 rubbos/app/apache2/manual/mod/mpm_common.html.de create mode 100644 rubbos/app/apache2/manual/mod/mpm_common.html.en create mode 100644 rubbos/app/apache2/manual/mod/mpm_common.html.es create mode 100644 rubbos/app/apache2/manual/mod/mpm_common.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mpm_common.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mpm_netware.html create mode 100644 rubbos/app/apache2/manual/mod/mpm_netware.html.en create mode 100644 rubbos/app/apache2/manual/mod/mpm_winnt.html create mode 100644 rubbos/app/apache2/manual/mod/mpm_winnt.html.de create mode 100644 rubbos/app/apache2/manual/mod/mpm_winnt.html.en create mode 100644 rubbos/app/apache2/manual/mod/mpm_winnt.html.es create mode 100644 rubbos/app/apache2/manual/mod/mpm_winnt.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/mpmt_os2.html create mode 100644 rubbos/app/apache2/manual/mod/mpmt_os2.html.en create mode 100644 rubbos/app/apache2/manual/mod/perchild.html create mode 100644 rubbos/app/apache2/manual/mod/perchild.html.en create mode 100644 rubbos/app/apache2/manual/mod/prefork.html create mode 100644 rubbos/app/apache2/manual/mod/prefork.html.de create mode 100644 rubbos/app/apache2/manual/mod/prefork.html.en create mode 100644 rubbos/app/apache2/manual/mod/prefork.html.es create mode 100644 rubbos/app/apache2/manual/mod/prefork.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/prefork.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.de create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.en create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.es create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/mod/quickreference.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mod/threadpool.html create mode 100644 rubbos/app/apache2/manual/mod/threadpool.html.en create mode 100644 rubbos/app/apache2/manual/mod/worker.html create mode 100644 rubbos/app/apache2/manual/mod/worker.html.de create mode 100644 rubbos/app/apache2/manual/mod/worker.html.en create mode 100644 rubbos/app/apache2/manual/mod/worker.html.es create mode 100644 rubbos/app/apache2/manual/mod/worker.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mod/worker.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/mpm.html create mode 100644 rubbos/app/apache2/manual/mpm.html.de create mode 100644 rubbos/app/apache2/manual/mpm.html.en create mode 100644 rubbos/app/apache2/manual/mpm.html.es create mode 100644 rubbos/app/apache2/manual/mpm.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/mpm.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/mpm.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/mpm.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.de create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.en create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.es create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.fr create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/new_features_2_0.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/platform/ebcdic.html create mode 100644 rubbos/app/apache2/manual/platform/ebcdic.html.en create mode 100644 rubbos/app/apache2/manual/platform/ebcdic.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/platform/index.html create mode 100644 rubbos/app/apache2/manual/platform/index.html.en create mode 100644 rubbos/app/apache2/manual/platform/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/platform/netware.html create mode 100644 rubbos/app/apache2/manual/platform/netware.html.en create mode 100644 rubbos/app/apache2/manual/platform/netware.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/platform/perf-hp.html create mode 100644 rubbos/app/apache2/manual/platform/perf-hp.html.en create mode 100644 rubbos/app/apache2/manual/platform/perf-hp.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/platform/win_compiling.html create mode 100644 rubbos/app/apache2/manual/platform/win_compiling.html.en create mode 100644 rubbos/app/apache2/manual/platform/win_compiling.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/platform/windows.html create mode 100644 rubbos/app/apache2/manual/platform/windows.html.en create mode 100644 rubbos/app/apache2/manual/platform/windows.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/ab.html create mode 100644 rubbos/app/apache2/manual/programs/ab.html.en create mode 100644 rubbos/app/apache2/manual/programs/ab.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/ab.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/apachectl.html create mode 100644 rubbos/app/apache2/manual/programs/apachectl.html.en create mode 100644 rubbos/app/apache2/manual/programs/apachectl.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/apachectl.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/apxs.html create mode 100644 rubbos/app/apache2/manual/programs/apxs.html.en create mode 100644 rubbos/app/apache2/manual/programs/apxs.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/apxs.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/configure.html create mode 100644 rubbos/app/apache2/manual/programs/configure.html.en create mode 100644 rubbos/app/apache2/manual/programs/configure.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/configure.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/dbmmanage.html create mode 100644 rubbos/app/apache2/manual/programs/dbmmanage.html.en create mode 100644 rubbos/app/apache2/manual/programs/dbmmanage.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/dbmmanage.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/htdbm.html create mode 100644 rubbos/app/apache2/manual/programs/htdbm.html.en create mode 100644 rubbos/app/apache2/manual/programs/htdbm.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/htdigest.html create mode 100644 rubbos/app/apache2/manual/programs/htdigest.html.en create mode 100644 rubbos/app/apache2/manual/programs/htdigest.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/htdigest.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/htpasswd.html create mode 100644 rubbos/app/apache2/manual/programs/htpasswd.html.en create mode 100644 rubbos/app/apache2/manual/programs/htpasswd.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/htpasswd.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/httpd.html create mode 100644 rubbos/app/apache2/manual/programs/httpd.html.en create mode 100644 rubbos/app/apache2/manual/programs/httpd.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/httpd.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/index.html create mode 100644 rubbos/app/apache2/manual/programs/index.html.en create mode 100644 rubbos/app/apache2/manual/programs/index.html.es create mode 100644 rubbos/app/apache2/manual/programs/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/index.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/programs/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/logresolve.html create mode 100644 rubbos/app/apache2/manual/programs/logresolve.html.en create mode 100644 rubbos/app/apache2/manual/programs/logresolve.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/logresolve.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/other.html create mode 100644 rubbos/app/apache2/manual/programs/other.html.en create mode 100644 rubbos/app/apache2/manual/programs/other.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/other.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/rotatelogs.html create mode 100644 rubbos/app/apache2/manual/programs/rotatelogs.html.en create mode 100644 rubbos/app/apache2/manual/programs/rotatelogs.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/rotatelogs.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/programs/suexec.html create mode 100644 rubbos/app/apache2/manual/programs/suexec.html.en create mode 100644 rubbos/app/apache2/manual/programs/suexec.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/programs/suexec.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/rewrite/index.html create mode 100644 rubbos/app/apache2/manual/rewrite/index.html.en create mode 100644 rubbos/app/apache2/manual/rewrite/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_guide.html create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_guide.html.en create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_guide_advanced.html create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_guide_advanced.html.en create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_intro.html create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_intro.html.en create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_tech.html create mode 100644 rubbos/app/apache2/manual/rewrite/rewrite_tech.html.en create mode 100644 rubbos/app/apache2/manual/sections.html create mode 100644 rubbos/app/apache2/manual/sections.html.en create mode 100644 rubbos/app/apache2/manual/sections.html.es create mode 100644 rubbos/app/apache2/manual/sections.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/sections.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/sections.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/server-wide.html create mode 100644 rubbos/app/apache2/manual/server-wide.html.en create mode 100644 rubbos/app/apache2/manual/server-wide.html.es create mode 100644 rubbos/app/apache2/manual/server-wide.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/server-wide.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/server-wide.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/sitemap.html create mode 100644 rubbos/app/apache2/manual/sitemap.html.de create mode 100644 rubbos/app/apache2/manual/sitemap.html.en create mode 100644 rubbos/app/apache2/manual/sitemap.html.es create mode 100644 rubbos/app/apache2/manual/sitemap.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/sitemap.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/sitemap.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/ssl/index.html create mode 100644 rubbos/app/apache2/manual/ssl/index.html.en create mode 100644 rubbos/app/apache2/manual/ssl/index.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/ssl/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/ssl/ssl_compat.html create mode 100644 rubbos/app/apache2/manual/ssl/ssl_compat.html.en create mode 100644 rubbos/app/apache2/manual/ssl/ssl_faq.html create mode 100644 rubbos/app/apache2/manual/ssl/ssl_faq.html.en create mode 100644 rubbos/app/apache2/manual/ssl/ssl_howto.html create mode 100644 rubbos/app/apache2/manual/ssl/ssl_howto.html.en create mode 100644 rubbos/app/apache2/manual/ssl/ssl_intro.html create mode 100644 rubbos/app/apache2/manual/ssl/ssl_intro.html.en create mode 100644 rubbos/app/apache2/manual/ssl/ssl_intro.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/stopping.html create mode 100644 rubbos/app/apache2/manual/stopping.html.de create mode 100644 rubbos/app/apache2/manual/stopping.html.en create mode 100644 rubbos/app/apache2/manual/stopping.html.es create mode 100644 rubbos/app/apache2/manual/stopping.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/stopping.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/stopping.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/stopping.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/style/build.properties create mode 100644 rubbos/app/apache2/manual/style/common.dtd create mode 100644 rubbos/app/apache2/manual/style/css/manual-chm.css create mode 100644 rubbos/app/apache2/manual/style/css/manual-loose-100pc.css create mode 100644 rubbos/app/apache2/manual/style/css/manual-print.css create mode 100644 rubbos/app/apache2/manual/style/css/manual-zip-100pc.css create mode 100644 rubbos/app/apache2/manual/style/css/manual-zip.css create mode 100644 rubbos/app/apache2/manual/style/css/manual.css create mode 100644 rubbos/app/apache2/manual/style/faq.dtd create mode 100644 rubbos/app/apache2/manual/style/lang.dtd create mode 100644 rubbos/app/apache2/manual/style/latex/atbeginend.sty create mode 100644 rubbos/app/apache2/manual/style/manualpage.dtd create mode 100644 rubbos/app/apache2/manual/style/modulesynopsis.dtd create mode 100644 rubbos/app/apache2/manual/style/sitemap.dtd create mode 100644 rubbos/app/apache2/manual/style/version.ent create mode 100644 rubbos/app/apache2/manual/suexec.html create mode 100644 rubbos/app/apache2/manual/suexec.html.en create mode 100644 rubbos/app/apache2/manual/suexec.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/suexec.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/suexec.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/upgrading.html create mode 100644 rubbos/app/apache2/manual/upgrading.html.de create mode 100644 rubbos/app/apache2/manual/upgrading.html.en create mode 100644 rubbos/app/apache2/manual/upgrading.html.es create mode 100644 rubbos/app/apache2/manual/upgrading.html.fr create mode 100644 rubbos/app/apache2/manual/upgrading.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/upgrading.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/upgrading.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/urlmapping.html create mode 100644 rubbos/app/apache2/manual/urlmapping.html.en create mode 100644 rubbos/app/apache2/manual/urlmapping.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/urlmapping.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/urlmapping.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/details.html create mode 100644 rubbos/app/apache2/manual/vhosts/details.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/details.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/details.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/examples.html create mode 100644 rubbos/app/apache2/manual/vhosts/examples.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/examples.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/examples.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/fd-limits.html create mode 100644 rubbos/app/apache2/manual/vhosts/fd-limits.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/fd-limits.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/fd-limits.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/fd-limits.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/index.html create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.de create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.es create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.ru.koi8-r create mode 100644 rubbos/app/apache2/manual/vhosts/index.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/ip-based.html create mode 100644 rubbos/app/apache2/manual/vhosts/ip-based.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/ip-based.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/ip-based.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/mass.html create mode 100644 rubbos/app/apache2/manual/vhosts/mass.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/mass.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html.de create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html.en create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html.es create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html.ja.utf8 create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html.ko.euc-kr create mode 100644 rubbos/app/apache2/manual/vhosts/name-based.html.tr.utf8 create mode 100644 rubbos/app/apache2/modules/httpd.exp create mode 100755 rubbos/app/apache2/modules/mod_jk.so diff --git a/rubbos/app/apache2/bin/ab b/rubbos/app/apache2/bin/ab new file mode 100755 index 0000000000000000000000000000000000000000..e5b37b700448d83f060457efe51346261330a3bd GIT binary patch literal 104358 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 TPnBV=LP!!rBZt7tWc2?9$D*v( literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/bin/apachectl b/rubbos/app/apache2/bin/apachectl new file mode 100755 index 00000000..5eb2fe95 --- /dev/null +++ b/rubbos/app/apache2/bin/apachectl @@ -0,0 +1,103 @@ +#!/bin/sh +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# Apache control script designed to allow an easy command line interface +# to controlling Apache. Written by Marc Slemko, 1997/08/23 +# +# The exit codes returned are: +# XXX this doc is no longer correct now that the interesting +# XXX functions are handled by httpd +# 0 - operation completed successfully +# 1 - +# 2 - usage error +# 3 - httpd could not be started +# 4 - httpd could not be stopped +# 5 - httpd could not be started during a restart +# 6 - httpd could not be restarted during a restart +# 7 - httpd could not be restarted during a graceful restart +# 8 - configuration syntax error +# +# When multiple arguments are given, only the error from the _last_ +# one is reported. Run "apachectl help" for usage info +# +ARGV="$@" +# +# |||||||||||||||||||| START CONFIGURATION SECTION |||||||||||||||||||| +# -------------------- -------------------- +# +# the path to your httpd binary, including options if necessary +HTTPD='/bottlenecks/rubbos/app/apache2/bin/httpd' +# +# pick up any necessary environment variables +if test -f /bottlenecks/rubbos/app/apache2/bin/envvars; then + . /bottlenecks/rubbos/app/apache2/bin/envvars +fi +# +# a command that outputs a formatted text version of the HTML at the +# url given on the command line. Designed for lynx, however other +# programs may work. +LYNX="lynx -dump" +# +# the URL to your server's mod_status status page. If you do not +# have one, then status and fullstatus will not work. +STATUSURL="http://localhost:80/server-status" +# +# Set this variable to a command that increases the maximum +# number of file descriptors allowed per child process. This is +# critical for configurations that use many file descriptors, +# such as mass vhosting, or a multithreaded server. +ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`" +# -------------------- -------------------- +# |||||||||||||||||||| END CONFIGURATION SECTION |||||||||||||||||||| + +# Set the maximum number of file descriptors allowed per child process. +if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then + $ULIMIT_MAX_FILES +fi + +ERROR=0 +if [ "x$ARGV" = "x" ] ; then + ARGV="-h" +fi + +case $ARGV in +start|stop|restart|graceful) + $HTTPD -k $ARGV + ERROR=$? + ;; +startssl|sslstart|start-SSL) + $HTTPD -k start -DSSL + ERROR=$? + ;; +configtest) + $HTTPD -t + ERROR=$? + ;; +status) + $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } ' + ;; +fullstatus) + $LYNX $STATUSURL + ;; +*) + $HTTPD $ARGV + ERROR=$? +esac + +exit $ERROR + diff --git a/rubbos/app/apache2/bin/apr-config b/rubbos/app/apache2/bin/apr-config new file mode 100755 index 00000000..84f95e73 --- /dev/null +++ b/rubbos/app/apache2/bin/apr-config @@ -0,0 +1,249 @@ +#!/bin/sh +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# APR script designed to allow easy command line access to APR configuration +# parameters. + +APR_MAJOR_VERSION="0" +APR_DOTTED_VERSION="0.9.19" + +prefix="/bottlenecks/rubbos/app/apache2" +exec_prefix="/bottlenecks/rubbos/app/apache2" +bindir="${prefix}/bin" +libdir="${prefix}/lib" +datarootdir="/bottlenecks/rubbos/app/apache2" +datadir="/bottlenecks/rubbos/app/apache2" +installbuilddir="${prefix}/build" +includedir="/bottlenecks/rubbos/app/apache2/include" + +CC="gcc" +CPP="gcc -E" +SHELL="/bin/bash" +CPPFLAGS="-D_REENTRANT -D_GNU_SOURCE" +CFLAGS="-g -O2 -pthread" +LDFLAGS="" +LIBS="-lrt -lm -lcrypt -lnsl -lpthread -ldl" +EXTRA_INCLUDES="" +SHLIBPATH_VAR="LD_LIBRARY_PATH" +APR_SOURCE_DIR="/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr" +APR_BUILD_DIR="/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr" +APR_SO_EXT="lo" +APR_LIB_TARGET="-rpath \$(libdir) \$\$objects" +APR_LIBNAME="apr-${APR_MAJOR_VERSION}" + +# NOTE: the following line is modified during 'make install': alter with care! +location=installed + +show_usage() +{ + cat << EOF +Usage: apr-config [OPTION] + +Known values for OPTION are: + --prefix[=DIR] change prefix to DIR + --bindir print location where binaries are installed + --includedir print location where headers are installed + --cc print C compiler name + --cpp print C preprocessor name and any required options + --cflags print C compiler flags + --cppflags print cpp flags + --includes print include information + --ldflags print linker flags + --libs print additional libraries to link against + --srcdir print APR source directory + --installbuilddir print APR build helper directory + --link-ld print link switch(es) for linking to APR + --link-libtool print the libtool inputs for linking to APR + --shlib-path-var print the name of the shared library path env var + --apr-la-file print the path to the .la file, if available + --apr-so-ext print the extensions of shared objects on this platform + --apr-lib-target print the libtool target information + --apr-libtool print the path to APR's libtool + --version print the APR's version as a dotted triple + --help print this help + +When linking with libtool, an application should do something like: + APR_LIBS="\`apr-config --link-libtool --libs\`" +or when linking directly: + APR_LIBS="\`apr-config --link-ld --libs\`" + +An application should use the results of --cflags, --cppflags, --includes, +and --ldflags in their build process. +EOF +} + +if test $# -eq 0; then + show_usage + exit 1 +fi + +if test "$location" = "installed"; then + LA_FILE="$libdir/lib${APR_LIBNAME}.la" +else + LA_FILE="$APR_BUILD_DIR/lib${APR_LIBNAME}.la" +fi + +flags="" + +while test $# -gt 0; do + # Normalize the prefix. + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case "$1" in + # It is possible for the user to override our prefix. + --prefix=*) + prefix=$optarg + ;; + --prefix) + echo $prefix + exit 0 + ;; + --bindir) + echo $bindir + exit 0 + ;; + --includedir) + if test "$location" = "installed"; then + flags="$includedir" + elif test "$location" = "source"; then + flags="$APR_SOURCE_DIR/include" + else + # this is for VPATH builds + flags="$APR_BUILD_DIR/include $APR_SOURCE_DIR/include" + fi + echo $flags + exit 0 + ;; + --cc) + echo $CC + exit 0 + ;; + --cpp) + echo $CPP + exit 0 + ;; + --cflags) + flags="$flags $CFLAGS" + ;; + --cppflags) + flags="$flags $CPPFLAGS" + ;; + --libs) + flags="$flags $LIBS" + ;; + --ldflags) + flags="$flags $LDFLAGS" + ;; + --includes) + if test "$location" = "installed"; then + flags="$flags -I$includedir $EXTRA_INCLUDES" + elif test "$location" = "source"; then + flags="$flags -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" + else + # this is for VPATH builds + flags="$flags -I$APR_BUILD_DIR/include -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" + fi + ;; + --srcdir) + echo $APR_SOURCE_DIR + exit 0 + ;; + --installbuilddir) + if test "$location" = "installed"; then + echo "${installbuilddir}" + elif test "$location" = "source"; then + echo "$APR_SOURCE_DIR/build" + else + # this is for VPATH builds + echo "$APR_BUILD_DIR/build" + fi + exit 0 + ;; + --version) + echo $APR_DOTTED_VERSION + exit 0 + ;; + --link-ld) + if test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib + flags="$flags -L$libdir -l${APR_LIBNAME}" + else + ### this surely can't work since the library is in .libs? + flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}" + fi + ;; + --link-libtool) + # If the LA_FILE exists where we think it should be, use it. If we're + # installed and the LA_FILE does not exist, assume to use -L/-l + # (the LA_FILE may not have been installed). If we're building ourselves, + # we'll assume that at some point the .la file be created. + if test -f "$LA_FILE"; then + flags="$flags $LA_FILE" + elif test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib + flags="$flags -L$libdir -l${APR_LIBNAME}" + else + flags="$flags $LA_FILE" + fi + ;; + --shlib-path-var) + echo "$SHLIBPATH_VAR" + exit 0 + ;; + --apr-la-file) + if test -f "$LA_FILE"; then + flags="$flags $LA_FILE" + fi + ;; + --apr-so-ext) + echo "$APR_SO_EXT" + exit 0 + ;; + --apr-lib-target) + echo "$APR_LIB_TARGET" + exit 0 + ;; + --apr-libtool) + if test "$location" = "installed"; then + echo "${installbuilddir}/libtool" + else + echo "$APR_BUILD_DIR/libtool" + fi + exit 0 + ;; + --help) + show_usage + exit 0 + ;; + *) + show_usage + exit 1 + ;; + esac + + # Next please. + shift +done + +if test -n "$flags"; then + echo "$flags" +fi + +exit 0 diff --git a/rubbos/app/apache2/bin/apu-config b/rubbos/app/apache2/bin/apu-config new file mode 100755 index 00000000..92633b3a --- /dev/null +++ b/rubbos/app/apache2/bin/apu-config @@ -0,0 +1,205 @@ +#!/bin/sh +# Copyright 2001-2005 The Apache Software Foundation or its licensors, as +# applicable. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# APR-util script designed to allow easy command line access to APR-util +# configuration parameters. + +APRUTIL_MAJOR_VERSION="0" +APRUTIL_DOTTED_VERSION="0.9.19" + +prefix="/bottlenecks/rubbos/app/apache2" +exec_prefix="/bottlenecks/rubbos/app/apache2" +bindir="${prefix}/bin" +libdir="${prefix}/lib" +includedir="/bottlenecks/rubbos/app/apache2/include" + +LIBS="/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/libexpat.la" +INCLUDES="-I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/lib" +LDFLAGS="-L/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/lib" + +APRUTIL_LIBNAME="aprutil-${APRUTIL_MAJOR_VERSION}" + +APU_SOURCE_DIR="/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util" +APU_BUILD_DIR="/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util" +APR_XML_EXPAT_OLD="" +APU_DB_VERSION="0" + +# NOTE: the following line is modified during 'make install': alter with care! +location=installed + +show_usage() +{ + cat << EOF +Usage: apu-config [OPTION] + +Known values for OPTION are: + --prefix[=DIR] change prefix to DIR + --bindir print location where binaries are installed + --includes print include information + --includedir print location where headers are installed + --ldflags print linker flags + --libs print library information + --srcdir print APR-util source directory + --link-ld print link switch(es) for linking to APR-util + --link-libtool print the libtool inputs for linking to APR-util + --apu-la-file print the path to the .la file, if available + --old-expat indicate if APR-util was built against an old expat + --db-version print the DB version + --version print APR-util's version as a dotted triple + --help print this help + +When linking with libtool, an application should do something like: + APU_LIBS="\`apu-config --link-libtool --libs\`" +or when linking directly: + APU_LIBS="\`apu-config --link-ld --libs\`" + +An application should use the results of --includes, and --ldflags in +their build process. +EOF +} + +if test $# -eq 0; then + show_usage + exit 1 +fi + +if test "$location" = "installed"; then + LA_FILE="$libdir/lib${APRUTIL_LIBNAME}.la" + + LIBS=`echo "$LIBS" | sed -e "s $APU_BUILD_DIR/xml/expat $prefix g" -e "s $prefix/libexpat.la -lexpat g"` + LDFLAGS=`echo "$LDFLAGS" | sed -e "s $APU_BUILD_DIR/xml/expat $prefix g"` + INCLUDES=`echo "$INCLUDES" | sed -e "s $APU_BUILD_DIR/xml/expat $prefix g" -e "s -I$prefix/lib g"` +else + LA_FILE="$APU_BUILD_DIR/lib${APRUTIL_LIBNAME}.la" +fi + +flags="" + +while test $# -gt 0; do + # Normalize the prefix. + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case "$1" in + # It is possible for the user to override our prefix. + --prefix=*) + prefix=$optarg + ;; + --prefix) + echo $prefix + exit 0 + ;; + --bindir) + echo $bindir + exit 0 + ;; + --libs) + flags="$flags $LIBS" + ;; + --includedir) + if test "$location" = "installed"; then + flags="$includedir" + elif test "$location" = "source"; then + flags="$APU_SOURCE_DIR/include" + else + # this is for VPATH builds + flags="$APU_BUILD_DIR/include $APU_SOURCE_DIR/include" + fi + echo $flags + exit 0 + ;; + --includes) + if test "$location" = "installed"; then + flags="$flags -I$includedir $INCLUDES" + elif test "$location" = "source"; then + flags="$flags -I$APU_SOURCE_DIR/include $INCLUDES" + else + # this is for VPATH builds + flags="$flags -I$APU_BUILD_DIR/include -I$APU_SOURCE_DIR/include $INCLUDES" + fi + ;; + --ldflags) + flags="$flags $LDFLAGS" + ;; + --srcdir) + echo $APU_SOURCE_DIR + exit 0 + ;; + --version) + echo $APRUTIL_DOTTED_VERSION + exit 0 + ;; + --link-ld) + if test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib + flags="$flags -L$libdir -l$APRUTIL_LIBNAME" + else + flags="$flags -L$APU_BUILD_DIR -l$APRUTIL_LIBNAME" + fi + ;; + --link-libtool) + # If the LA_FILE exists where we think it should be, use it. If we're + # installed and the LA_FILE does not exist, assume to use -L/-l + # (the LA_FILE may not have been installed). If we're building ourselves, + # we'll assume that at some point the .la file be created. + if test -f "$LA_FILE"; then + flags="$flags $LA_FILE" + elif test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib + flags="$flags -L$libdir -l$APRUTIL_LIBNAME" + else + flags="$flags $LA_FILE" + fi + ;; + --apu-la-file) + if test -f "$LA_FILE"; then + flags="$flags $LA_FILE" + fi + ;; + --old-expat) + if test ! -n "$APR_XML_EXPAT_OLD"; then + echo "no" + else + echo "$APR_XML_EXPAT_OLD" + fi + exit 0 + ;; + --db-version) + echo $APU_DB_VERSION + exit 0 + ;; + --help) + show_usage + exit 0 + ;; + *) + show_usage + exit 1 + ;; + esac + + # Next please. + shift +done + +if test -n "$flags"; then + echo "$flags" +fi + +exit 0 diff --git a/rubbos/app/apache2/bin/apxs b/rubbos/app/apache2/bin/apxs new file mode 100755 index 00000000..4b3b702d --- /dev/null +++ b/rubbos/app/apache2/bin/apxs @@ -0,0 +1,778 @@ +#!/usr/bin/perl -w +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +require 5.003; +use strict; +package apxs; + +## +## Configuration +## + +my %config_vars = (); + +my $installbuilddir = "/bottlenecks/rubbos/app/apache2/build"; +get_config_vars("$installbuilddir/config_vars.mk",\%config_vars); + +# read the configuration variables once + +my $prefix = get_vars("prefix"); +my $CFG_PREFIX = $prefix; +my $exec_prefix = get_vars("exec_prefix"); +my $datadir = get_vars("datadir"); +my $localstatedir = get_vars("localstatedir"); +my $CFG_TARGET = get_vars("progname"); +my $CFG_SYSCONFDIR = get_vars("sysconfdir"); +my $CFG_CFLAGS = join ' ', map { get_vars($_) } + qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS); +my $includedir = get_vars("includedir"); +my $CFG_INCLUDEDIR = eval qq("$includedir"); +my $CFG_CC = get_vars("CC"); +my $libexecdir = get_vars("libexecdir"); +my $CFG_LIBEXECDIR = eval qq("$libexecdir"); +my $sbindir = get_vars("sbindir"); +my $CFG_SBINDIR = eval qq("$sbindir"); +my $ltflags = $ENV{'LTFLAGS'}; +$ltflags or $ltflags = "--silent"; + +my %internal_vars = map {$_ => 1} + qw(TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB + PREFIX SBINDIR INCLUDEDIR LIBEXECDIR SYSCONFDIR); + +## +## parse argument line +## + +# defaults for parameters +my $opt_n = ''; +my $opt_g = ''; +my $opt_c = 0; +my $opt_o = ''; +my @opt_D = (); +my @opt_I = (); +my @opt_L = (); +my @opt_l = (); +my @opt_W = (); +my @opt_S = (); +my $opt_e = 0; +my $opt_i = 0; +my $opt_a = 0; +my $opt_A = 0; +my $opt_q = 0; +my $opt_h = 0; +my $opt_p = 0; + +# this subroutine is derived from Perl's getopts.pl with the enhancement of +# the "+" metacharacter at the format string to allow a list to be built by +# subsequent occurrences of the same option. +sub Getopts { + my ($argumentative, @ARGV) = @_; + my $errs = 0; + local $_; + local $[ = 0; + + my @args = split / */, $argumentative; + while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { + my ($first, $rest) = ($1,$2); + if ($_ =~ m|^--$|) { + shift @ARGV; + last; + } + my $pos = index($argumentative,$first); + if ($pos >= $[) { + if ($pos < $#args && $args[$pos+1] eq ':') { + shift @ARGV; + if ($rest eq '') { + unless (@ARGV) { + error("Incomplete option: $first (needs an argument)"); + $errs++; + } + $rest = shift(@ARGV); + } + eval "\$opt_$first = \$rest;"; + } + elsif ($pos < $#args && $args[$pos+1] eq '+') { + shift @ARGV; + if ($rest eq '') { + unless (@ARGV) { + error("Incomplete option: $first (needs an argument)"); + $errs++; + } + $rest = shift(@ARGV); + } + eval "push(\@opt_$first, \$rest);"; + } + else { + eval "\$opt_$first = 1"; + if ($rest eq '') { + shift(@ARGV); + } + else { + $ARGV[0] = "-$rest"; + } + } + } + else { + error("Unknown option: $first"); + $errs++; + if ($rest ne '') { + $ARGV[0] = "-$rest"; + } + else { + shift(@ARGV); + } + } + } + return ($errs == 0, @ARGV); +} + +sub usage { + print STDERR "Usage: apxs -g [-S =] -n \n"; + print STDERR " apxs -q [-S =] ...\n"; + print STDERR " apxs -c [-S =] [-o ] [-D [=]]\n"; + print STDERR " [-I ] [-L ] [-l ] [-Wc,]\n"; + print STDERR " [-Wl,] [-p] ...\n"; + print STDERR " apxs -i [-S =] [-a] [-A] [-n ] ...\n"; + print STDERR " apxs -e [-S =] [-a] [-A] [-n ] ...\n"; + exit(1); +} + +# option handling +my $rc; +($rc, @ARGV) = &Getopts("qn:gco:I+D+L+l+W+S+eiaAp", @ARGV); +&usage if ($rc == 0); +&usage if ($#ARGV == -1 and not $opt_g); +&usage if (not $opt_q and not ($opt_g and $opt_n) and not $opt_i and not $opt_c and not $opt_e); + +# argument handling +my @args = @ARGV; +my $name = 'unknown'; +$name = $opt_n if ($opt_n ne ''); + +if (@opt_S) { + my ($opt_S); + foreach $opt_S (@opt_S) { + if ($opt_S =~ m/^([^=]+)=(.*)$/) { + my ($var) = $1; + my ($val) = $2; + my $oldval = eval "\$CFG_$var"; + + unless ($var and $oldval) { + print STDERR "apxs:Error: no config variable $var\n"; + &usage; + } + + eval "\$CFG_${var}=\"${val}\""; + } else { + print STDERR "apxs:Error: malformatted -S option\n"; + &usage; + } + } +} + +## +## Initial shared object support check +## +my $httpd = get_vars("sbindir") . "/" . get_vars("progname"); +$httpd = eval qq("$httpd"); +$httpd = eval qq("$httpd"); +my $envvars = get_vars("sbindir") . "/envvars"; +$envvars = eval qq("$envvars"); +$envvars = eval qq("$envvars"); + +#allow apxs to be run from the source tree, before installation +if ($0 =~ m:support/apxs$:) { + ($httpd = $0) =~ s:support/apxs$::; +} + +unless (-x "$httpd") { + error("$httpd not found or not executable"); + exit 1; +} + +unless (grep /mod_so/, `. $envvars && $httpd -l`) { + error("Sorry, no shared object support for Apache"); + error("available under your platform. Make sure"); + error("the Apache module mod_so is compiled into"); + error("your server binary `$httpd'."); + exit 1; +} + +sub get_config_vars{ + my ($file, $rh_config) = @_; + + open IN, $file or die "cannot open $file: $!"; + while (){ + if (/^\s*(.*?)\s*=\s*(.*)$/){ + $rh_config->{$1} = $2; + } + } + close IN; +} + +sub get_vars { + my $result = ''; + my $ok = 0; + my $arg; + foreach $arg (@_) { + if (exists $config_vars{$arg} or exists $config_vars{lc $arg}) { + my $val = exists $config_vars{$arg} + ? $config_vars{$arg} + : $config_vars{lc $arg}; + $val =~ s/[()]//g; + $result .= eval "qq($val)" if defined $val; + $result .= ";;"; + $ok = 1; + } + if (not $ok) { + if (exists $internal_vars{$arg} or exists $internal_vars{lc $arg}) { + my $val = exists $internal_vars{$arg} ? $arg : lc $arg; + $val = eval "\$CFG_$val"; + $result .= eval "qq($val)" if defined $val; + $result .= ";;"; + $ok = 1; + } + if (not $ok) { + error("Invalid query string `$arg'"); + exit(1); + } + } + } + $result =~ s|;;$||; + $result =~ s|:| |; + return $result; +} + +## +## Operation +## + +# helper function for executing a list of +# system command with return code checks +sub execute_cmds { + my (@cmds) = @_; + my ($cmd, $rc); + + foreach $cmd (@cmds) { + notice($cmd); + $rc = system $cmd; + if ($rc) { + error(sprintf "Command failed with rc=%d\n", $rc << 8); + exit 1 ; + } + } +} + +if ($opt_g) { + ## + ## SAMPLE MODULE SOURCE GENERATION + ## + + if (-d $name) { + error("Directory `$name' already exists. Remove first"); + exit(1); + } + + my $data = join('', ); + $data =~ s|%NAME%|$name|sg; + $data =~ s|%TARGET%|$CFG_TARGET|sg; + $data =~ s|%PREFIX%|$prefix|sg; + $data =~ s|%INSTALLBUILDDIR%|$installbuilddir|sg; + + my ($mkf, $mods, $src) = ($data =~ m|^(.+)-=#=-\n(.+)-=#=-\n(.+)|s); + + notice("Creating [DIR] $name"); + system("mkdir $name"); + notice("Creating [FILE] $name/Makefile"); + open(FP, ">${name}/Makefile") || die; + print FP $mkf; + close(FP); + notice("Creating [FILE] $name/modules.mk"); + open(FP, ">${name}/modules.mk") || die; + print FP $mods; + close(FP); + notice("Creating [FILE] $name/mod_$name.c"); + open(FP, ">${name}/mod_${name}.c") || die; + print FP $src; + close(FP); + notice("Creating [FILE] $name/.deps"); + system("touch ${name}/.deps"); + + exit(0); +} + + +if ($opt_q) { + ## + ## QUERY INFORMATION + ## + my $result = get_vars(@args); + print "$result\n"; +} + +my $apr_bindir = get_vars("APR_BINDIR"); + +if (! -x "$apr_bindir/apr-config") { + error("$apr_bindir/apr-config not found!"); + exit(1); +} + +my $apu_bindir = get_vars("APU_BINDIR"); + +if (! -x "$apu_bindir/apu-config") { + error("$apu_bindir/apu-config not found!"); + exit(1); +} + +my $libtool = `$apr_bindir/apr-config --installbuilddir`; +chomp($libtool); +$libtool = "$libtool/libtool"; + +my $apr_includedir = `$apr_bindir/apr-config --includes`; +chomp($apr_includedir); +my $apu_includedir = `$apu_bindir/apu-config --includes`; +chomp($apu_includedir); + +if ($opt_c) { + ## + ## SHARED OBJECT COMPILATION + ## + + # split files into sources and objects + my @srcs = (); + my @objs = (); + my $f; + foreach $f (@args) { + if ($f =~ m|\.c$|) { + push(@srcs, $f); + } + else { + push(@objs, $f); + } + } + + # determine output file + my $dso_file; + if ($opt_o eq '') { + if ($#srcs > -1) { + $dso_file = $srcs[0]; + $dso_file =~ s|\.[^.]+$|.la|; + } + elsif ($#objs > -1) { + $dso_file = $objs[0]; + $dso_file =~ s|\.[^.]+$|.la|; + } + else { + $dso_file = "mod_unknown.la"; + } + } + else { + $dso_file = $opt_o; + $dso_file =~ s|\.[^.]+$|.la|; + } + + # create compilation commands + my @cmds = (); + my $opt = ''; + my ($opt_Wc, $opt_I, $opt_D); + foreach $opt_Wc (@opt_W) { + $opt .= "$1 " if ($opt_Wc =~ m|^\s*c,(.*)$|); + } + foreach $opt_I (@opt_I) { + $opt .= "-I$opt_I "; + } + foreach $opt_D (@opt_D) { + $opt .= "-D$opt_D "; + } + my $cflags = "$CFG_CFLAGS"; + my $s; + my $mod; + foreach $s (@srcs) { + my $slo = $s; + $slo =~ s|\.c$|.slo|; + my $lo = $s; + $lo =~ s|\.c$|.lo|; + my $la = $s; + $la =~ s|\.c$|.la|; + my $o = $s; + $o =~ s|\.c$|.o|; + push(@cmds, "$libtool $ltflags --mode=compile $CFG_CC $cflags -I$CFG_INCLUDEDIR $apr_includedir $apu_includedir $opt -c -o $lo $s && touch $slo"); + unshift(@objs, $lo); + } + + # create link command + my $o; + my $lo; + foreach $o (@objs) { + $lo .= " $o"; + } + my ($opt_Wl, $opt_L, $opt_l); + $opt = ''; + foreach $opt_Wl (@opt_W) { + $opt .= "$1 " if ($opt_Wl =~ m|^\s*l,(.*)$|); + } + foreach $opt_L (@opt_L) { + $opt .= " -L$opt_L"; + } + foreach $opt_l (@opt_l) { + $opt .= " -l$opt_l"; + } + + if ($opt_p == 1) { + + my $apr_libs=`$apr_bindir/apr-config --ldflags --link-libtool --libs`; + chomp($apr_libs); + my $apu_libs=`$apu_bindir/apu-config --ldflags --link-libtool --libs`; + chomp($apu_libs); + + $opt .= " ".$apu_libs." ".$apr_libs; + } + else { + my $apr_ldflags=`$apr_bindir/apr-config --ldflags`; + chomp($apr_ldflags); + $opt .= " -rpath $CFG_LIBEXECDIR -module -avoid-version $apr_ldflags"; + } + + push(@cmds, "$libtool $ltflags --mode=link $CFG_CC -o $dso_file $opt $lo"); + + # execute the commands + &execute_cmds(@cmds); + + # allow one-step compilation and installation + if ($opt_i or $opt_e) { + @args = ( $dso_file ); + } +} + +if ($opt_i or $opt_e) { + ## + ## SHARED OBJECT INSTALLATION + ## + + # determine installation commands + # and corresponding LoadModule/AddModule directives + my @lmd = (); + my @amd = (); + my @cmds = (); + my $f; + foreach $f (@args) { + if ($f !~ m#(\.so$|\.la$)#) { + error("file $f is not a shared object"); + exit(1); + } + my $t = $f; + $t =~ s|^.+/([^/]+)$|$1|; + $t =~ s|\.la$|\.so|; + if ($opt_i) { + push(@cmds, "$installbuilddir/instdso.sh SH_LIBTOOL='" . + "$libtool' $f $CFG_LIBEXECDIR"); + push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t"); + } + + # determine module symbolname and filename + my $filename = ''; + if ($name eq 'unknown') { + $name = ''; + my $base = $f; + $base =~ s|\.[^.]+$||; + if (-f "$base.c") { + open(FP, "<$base.c"); + my $content = join('', ); + close(FP); + if ($content =~ m|.*module\s+(?:AP_MODULE_DECLARE_DATA\s+)?([a-zA-Z0-9_]+)_module\s*=\s*.*|s) { + $name = "$1"; + $filename = "$base.c"; + $filename =~ s|^[^/]+/||; + } + } + if ($name eq '') { + if ($base =~ m|.*mod_([a-zA-Z0-9_]+)\..+|) { + $name = "$1"; + $filename = $base; + $filename =~ s|^[^/]+/||; + } + } + if ($name eq '') { + error("Sorry, cannot determine bootstrap symbol name"); + error("Please specify one with option `-n'"); + exit(1); + } + } + if ($filename eq '') { + $filename = "mod_${name}.c"; + } + my $dir = $CFG_LIBEXECDIR; + $dir =~ s|^$CFG_PREFIX/?||; + $dir =~ s|(.)$|$1/|; + $t =~ s|\.la$|.so|; + push(@lmd, sprintf("LoadModule %-18s %s", "${name}_module", "$dir$t")); + push(@amd, sprintf("AddModule %s", $filename)); + } + + # execute the commands + &execute_cmds(@cmds); + + # activate module via LoadModule/AddModule directive + if ($opt_a or $opt_A) { + if (not -f "$CFG_SYSCONFDIR/$CFG_TARGET.conf") { + error("Config file $CFG_SYSCONFDIR/$CFG_TARGET.conf not found"); + exit(1); + } + + open(FP, "<$CFG_SYSCONFDIR/$CFG_TARGET.conf") || die; + my $content = join('', ); + close(FP); + + if ($content !~ m|\n#?\s*LoadModule\s+|) { + error("Activation failed for custom $CFG_SYSCONFDIR/$CFG_TARGET.conf file."); + error("At least one `LoadModule' directive already has to exist."); + exit(1); + } + + my $lmd; + my $c = ''; + $c = '#' if ($opt_A); + foreach $lmd (@lmd) { + my $what = $opt_A ? "preparing" : "activating"; + my $lmd_re = $lmd; + $lmd_re =~ s/\s+/\\s+/g; + + if ($content !~ m|\n#?\s*$lmd_re|) { + # check for open , so that the new LoadModule + # directive always appears *outside* of an . + + my $before = ($content =~ m|^(.*\n)#?\s*LoadModule\s+[^\n]+\n|s)[0]; + + # the '()=' trick forces list context and the scalar + # assignment counts the number of list members (aka number + # of matches) then + my $cntopen = () = ($before =~ m|^\s*<[^/].*$|mg); + my $cntclose = () = ($before =~ m|^\s*$CFG_SYSCONFDIR/$CFG_TARGET.conf.new")) { + print FP $content; + close(FP); + system("cp $CFG_SYSCONFDIR/$CFG_TARGET.conf $CFG_SYSCONFDIR/$CFG_TARGET.conf.bak && " . + "cp $CFG_SYSCONFDIR/$CFG_TARGET.conf.new $CFG_SYSCONFDIR/$CFG_TARGET.conf && " . + "rm $CFG_SYSCONFDIR/$CFG_TARGET.conf.new"); + } else { + notice("unable to open configuration file"); + } + } + } +} + +sub error{ + print STDERR "apxs:Error: $_[0].\n"; +} + +sub notice{ + print STDERR "$_[0]\n"; +} + +##EOF## +__DATA__ +## +## Makefile -- Build procedure for sample %NAME% Apache module +## Autogenerated via ``apxs -n %NAME% -g''. +## + +builddir=. +top_srcdir=%PREFIX% +top_builddir=%PREFIX% +include %INSTALLBUILDDIR%/special.mk + +# the used tools +APXS=apxs +APACHECTL=apachectl + +# additional defines, includes and libraries +#DEFS=-Dmy_define=my_value +#INCLUDES=-Imy/include/dir +#LIBS=-Lmy/lib/dir -lmylib + +# the default target +all: local-shared-build + +# install the shared object file into Apache +install: install-modules + +# cleanup +clean: + -rm -f mod_%NAME%.o mod_%NAME%.lo mod_%NAME%.slo mod_%NAME%.la + +# simple test +test: reload + lynx -mime_header http://localhost/%NAME% + +# install and activate shared object by reloading Apache to +# force a reload of the shared object file +reload: install restart + +# the general Apache start/restart/stop +# procedures +start: + $(APACHECTL) start +restart: + $(APACHECTL) restart +stop: + $(APACHECTL) stop + +-=#=- +mod_%NAME%.la: mod_%NAME%.slo + $(SH_LINK) -rpath $(libexecdir) -module -avoid-version mod_%NAME%.lo +DISTCLEAN_TARGETS = modules.mk +shared = mod_%NAME%.la +-=#=- +/* +** mod_%NAME%.c -- Apache sample %NAME% module +** [Autogenerated via ``apxs -n %NAME% -g''] +** +** To play with this sample module first compile it into a +** DSO file and install it into Apache's modules directory +** by running: +** +** $ apxs -c -i mod_%NAME%.c +** +** Then activate it in Apache's %TARGET%.conf file for instance +** for the URL /%NAME% in as follows: +** +** # %TARGET%.conf +** LoadModule %NAME%_module modules/mod_%NAME%.so +** +** SetHandler %NAME% +** +** +** Then after restarting Apache via +** +** $ apachectl restart +** +** you immediately can request the URL /%NAME% and watch for the +** output of this module. This can be achieved for instance via: +** +** $ lynx -mime_header http://localhost/%NAME% +** +** The output should be similar to the following one: +** +** HTTP/1.1 200 OK +** Date: Tue, 31 Mar 1998 14:42:22 GMT +** Server: Apache/1.3.4 (Unix) +** Connection: close +** Content-Type: text/html +** +** The sample page from mod_%NAME%.c +*/ + +#include "httpd.h" +#include "http_config.h" +#include "http_protocol.h" +#include "ap_config.h" + +/* The sample content handler */ +static int %NAME%_handler(request_rec *r) +{ + if (strcmp(r->handler, "%NAME%")) { + return DECLINED; + } + r->content_type = "text/html"; + + if (!r->header_only) + ap_rputs("The sample page from mod_%NAME%.c\n", r); + return OK; +} + +static void %NAME%_register_hooks(apr_pool_t *p) +{ + ap_hook_handler(%NAME%_handler, NULL, NULL, APR_HOOK_MIDDLE); +} + +/* Dispatch list for API hooks */ +module AP_MODULE_DECLARE_DATA %NAME%_module = { + STANDARD20_MODULE_STUFF, + NULL, /* create per-dir config structures */ + NULL, /* merge per-dir config structures */ + NULL, /* create per-server config structures */ + NULL, /* merge per-server config structures */ + NULL, /* table of config file commands */ + %NAME%_register_hooks /* register hooks */ +}; + diff --git a/rubbos/app/apache2/bin/checkgid b/rubbos/app/apache2/bin/checkgid new file mode 100755 index 0000000000000000000000000000000000000000..7c0f5e49d927d7821a4c6f61d97de951c386aa14 GIT binary patch literal 13697 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 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/bin/dbmmanage b/rubbos/app/apache2/bin/dbmmanage new file mode 100755 index 00000000..436e824f --- /dev/null +++ b/rubbos/app/apache2/bin/dbmmanage @@ -0,0 +1,312 @@ +#!/usr/bin/perl +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#for more functionality see the HTTPD::UserAdmin module: +# http://www.perl.com/CPAN/modules/by-module/HTTPD/HTTPD-Tools-x.xx.tar.gz +# +# usage: dbmmanage + +package dbmmanage; +# -ldb -lndbm -lgdbm -lsdbm +BEGIN { @AnyDBM_File::ISA = qw(DB_File NDBM_File GDBM_File SDBM_File) } +use strict; +use Fcntl; +use AnyDBM_File (); + +sub usage { + my $cmds = join "|", sort keys %dbmc::; + die <$command(); +untie %DB; + + +my $x; +sub genseed { + my $psf; + if ($not_unix) { + srand (time ^ $$ or time ^ ($$ + ($$ << 15))); + } + else { + for (qw(-xlwwa -le)) { + `ps $_ 2>/dev/null`; + $psf = $_, last unless $?; + } + srand (time ^ $$ ^ unpack("%L*", `ps $psf | gzip -f`)); + } + @range = (qw(. /), '0'..'9','a'..'z','A'..'Z'); + $x = int scalar @range; +} + +sub randchar { + join '', map $range[rand $x], 1..shift||1; +} + +sub saltpw_crypt { + genseed() unless @range; + return $newstyle_salt ? + join '', "_", randchar, "a..", randchar(4) : + randchar(2); +} + +sub cryptpw_crypt { + my ($pw, $salt) = @_; + $salt = saltpw_crypt unless $salt; + crypt $pw, $salt; +} + +sub saltpw_md5 { + genseed() unless @range; + randchar(8); +} + +sub cryptpw_md5 { + my($pw, $salt) = @_; + $salt = saltpw_md5 unless $salt; + Crypt::PasswdMD5::apache_md5_crypt($pw, $salt); +} + +sub cryptpw_sha1 { + my($pw, $salt) = @_; + '{SHA}' . Digest::SHA1::sha1_base64($pw) . "="; +} + +sub cryptpw { + if ($crypt_method eq "md5") { + return cryptpw_md5(@_); + } elsif ($crypt_method eq "sha1") { + return cryptpw_sha1(@_); + } elsif ($crypt_method eq "crypt") { + return cryptpw_crypt(@_); + } + @_[0]; # otherwise return plaintext +} + +sub getpass { + my $prompt = shift || "Enter password:"; + + unless($not_unix) { + open STDIN, "/dev/tty" or warn "couldn't open /dev/tty $!\n"; + system "stty -echo;"; + } + + my($c,$pwd); + print STDERR $prompt; + while (($c = getc(STDIN)) ne '' and $c ne "\n" and $c ne "\r") { + $pwd .= $c; + } + + system "stty echo" unless $not_unix; + print STDERR "\n"; + die "Can't use empty password!\n" unless length $pwd; + return $pwd; +} + +sub dbmc::update { + die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key}; + $crypted_pwd = (split /:/, $DB{$key}, 3)[0] if $crypted_pwd eq '.'; + $groups = (split /:/, $DB{$key}, 3)[1] if !$groups || $groups eq '.'; + $comment = (split /:/, $DB{$key}, 3)[2] if !$comment || $comment eq '.'; + if (!$crypted_pwd || $crypted_pwd eq '-') { + dbmc->adduser; + } + else { + dbmc->add; + } +} + +sub dbmc::add { + die "Can't use empty password!\n" unless $crypted_pwd; + unless($is_update) { + die "Sorry, user `$key' already exists!\n" if $DB{$key}; + } + $groups = '' if $groups eq '-'; + $comment = '' if $comment eq '-'; + $groups .= ":" . $comment if $comment; + $crypted_pwd .= ":" . $groups if $groups; + $DB{$key} = $crypted_pwd; + my $action = $is_update ? "updated" : "added"; + print "User $key $action with password encrypted to $DB{$key} using $crypt_method\n"; +} + +sub dbmc::adduser { + my $value = getpass "New password:"; + die "They don't match, sorry.\n" unless getpass("Re-type new password:") eq $value; + $crypted_pwd = cryptpw $value; + dbmc->add; +} + +sub dbmc::delete { + die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key}; + delete $DB{$key}, print "`$key' deleted\n"; +} + +sub dbmc::view { + print $key ? "$key:$DB{$key}\n" : map { "$_:$DB{$_}\n" if $DB{$_} } keys %DB; +} + +sub dbmc::check { + die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key}; + my $chkpass = (split /:/, $DB{$key}, 3)[0]; + my $testpass = getpass(); + if (substr($chkpass, 0, 6) eq '$apr1$') { + need_md5_crypt; + $crypt_method = "md5"; + } elsif (substr($chkpass, 0, 5) eq '{SHA}') { + need_sha1_crypt; + $crypt_method = "sha1"; + } elsif (length($chkpass) == 13 && $chkpass ne $testpass) { + $crypt_method = "crypt"; + } else { + $crypt_method = "plain"; + } + print $crypt_method . (cryptpw($testpass, $chkpass) eq $chkpass + ? " password ok\n" : " password mismatch\n"); +} + +sub dbmc::import { + while(defined($_ = ) and chomp) { + ($key,$crypted_pwd,$groups,$comment) = split /:/, $_, 4; + dbmc->add; + } +} + diff --git a/rubbos/app/apache2/bin/envvars b/rubbos/app/apache2/bin/envvars new file mode 100644 index 00000000..771c6c59 --- /dev/null +++ b/rubbos/app/apache2/bin/envvars @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# envvars-std - default environment variables for apachectl +# +# This file is generated from envvars-std.in +# +LD_LIBRARY_PATH="/bottlenecks/rubbos/app/apache2/lib:$LD_LIBRARY_PATH" +export LD_LIBRARY_PATH +# + diff --git a/rubbos/app/apache2/bin/envvars-std b/rubbos/app/apache2/bin/envvars-std new file mode 100644 index 00000000..771c6c59 --- /dev/null +++ b/rubbos/app/apache2/bin/envvars-std @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# envvars-std - default environment variables for apachectl +# +# This file is generated from envvars-std.in +# +LD_LIBRARY_PATH="/bottlenecks/rubbos/app/apache2/lib:$LD_LIBRARY_PATH" +export LD_LIBRARY_PATH +# + diff --git a/rubbos/app/apache2/bin/htdbm b/rubbos/app/apache2/bin/htdbm new file mode 100755 index 0000000000000000000000000000000000000000..815389daff6a5278b9efff00cedb373875704d20 GIT binary patch literal 44199 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 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/bin/httpd b/rubbos/app/apache2/bin/httpd new file mode 100755 index 0000000000000000000000000000000000000000..94f3320023789514be769a1e881c903fd85cf07e GIT binary patch literal 2192464 zcma%k2|QHq7x$ep7^21&q711JQI@FG*q0JX(LzF~R1}pGW6f46OSB;=711JEQ3@qd z$dDhF%BJb*(FGZXvq0W$#lbkd+t=kSzamM6`` zFb|gyG0N|M!oe!ZK9*z-!%Prt-gWdoRMr9;@_K=dH_txIY;#_c7ziSH_onNKg`4RLv=%Nz}Fq<97v%w2N7Y)d;K3HUnF+z{vJs8*eb|Ndu+8B#qzj8 zhI#mXOW=K|od3VV!jAShzkjuh9WMVc5BGzn&w4jK9Zeq(4WIR!19occ)YsF{)0wet z%ZypPdZYNr*JAN9UQWa9C<7@}W=Q}V1L*pen*tHM#+@a=E zRxwj_nTZ%ZOl{U=6(Y1ug-*~}$|{^pj_*eih$q7(M2K?8C3F&v>BWv`nl79)NlMw6 zOJndcS)2sMT17fx70=>`3(q9{l$2;3E`y^)(45XDm?()U(-_u-%oG_`XsO*yQ;re` zsu$&&6G}H0rmw+xuV-=X2}=$^ z&k)$G#1{nxXF3VH#xgmK@kzv;US*>wrZp>!NocXzEG@PNm&Q-y$`sOcLfHh9$vH}B zClFkMqX=_}4rhMuN}MKepwINS&ti^F=;$nA0! zV1{Qd&SHp&igg${5$dVXh>1${Xd;5iUaQRBFD^u=&@;HJ>Cx=hdt*yuxLhMkIbnh= zM&wv8A|kj@$I!I|SB5zyTltVOO@$9?C*{guv)BY7#u8SMauwgnj^-PGD#5Z`M3Tdd zii8UWmZ5ZWwg88gB~&V<_||Au_Poz4Tw~zbF|2vN@K53aXvzY5w()d;mU9xu%AlOS)3Tf znZAUnoIN{(C^O119nXSh&JYx*C!S=`6l2(~!W<87sJwa@n+p|UIc*JPiIy?7#&ML~ zL+@mUnG$q!HC-mVG@QMN;Fpw_4W$uWH?9_qNoT?^XB_035~XPp9GGiNLeFkvuCLkUSclT;W;EXYV!fX-xbiD3z{)I-}avRrnAsoOU)$jE`Vt(+L5!C9VX6 zGbMs9Ov@lLm{4sdOd=6ig2g{hg2tz4%%lr*8Sxw+Q>ci$@+t1{MiRpBEs!Fa!qN3BB8|P5Z*Mgvc!y8v6r|EIy6R|DDz?YUAiBK z;O8tPEQO6&uvoAY7_(++&|Sp?%f%TgWzF1L2UljOkdjEo9T+e)!iZoKYDyw(9Tqei zD_Vvg#)uXmMED6MNdXb@#q$K#vDgWQgc!7FPUu)RJ2^7Px>ZzHEsRAcP7*8~YZWmz zKi5pCjLlEbRg#z)0?9c#bQJ zL(tS|3?f1|jbMop1e?tfGULRC2^n+7%ZfpJ6XO*bDw(hxCMVLK5TQ04C5Ezi2II6M z>p>ZJI>$pr%txh^;3g3amMFoDwj>B{bm%*YFgQ9`GQ&*ijQc_YVhkcrjELtm4m}ie zpRgnpqm9b%CWVCxuwV$$^7shaTBa&v2kVe)*j%9uZUPKtIw7OP5h7TpR0x*R3K-o= zkO4P|MkDBp6q$6c46N4dIxh675uL^wL)>O6o71?8Q5+^af^Er9V{5Smj1?n@n5lHa z+HP-o^g@EUn&s)uQHe3GbS3zNXbv<6jmDBHN>OC0#&g6ARQPi4L=dpPL6Ml81n5aI z8kEnNPIyZa%3Mox4xJ(C5N;e1YB#}EcS!^%!qruPZV|(@=FWm(_8fxn4rMa-LeNMN zf+ZVyeVaX7sM@b5Epd(FK%q8?BrNCJnExB)H%lp!k($c2n#3Z z;$kb9rAr85cn9<_0c$o%VaWD?Luj6rqEUQ^U=?6Bz!~5ISOahctOX2<8&=$b*8#kSF93Uw z(2=?xr#E8u0p0}Ig44dhet>N_?GGFP*pAaXfOld&5c4kJ-GCsRMzm*y9y~%10i6p7 z#Won{L?j>z5Q}Z`!21CQ00#kyfFuBtWIzf}BX}E68rDbB5l9>boB*Vcyg<=2DCta` zJ_&pZa0ZYAI14~>4sf2Q5d**b9ipwisZvQw~cU==%W)*me;35FiPslYvtJhXJX8G{7;yaX zAO~;`a2}8g$O9m`fH@!dGT;hMqicnr7XgX^*GAZ{WBms3O~5U{Z9oa&4&W}J9B>~{ z38(@L%LA-G1g^$WpS1OZHJ6UHoxc`Wca z0G!AOF@QKg0w4uIG9FkOAcNBrfG1*o5@rR=utO4xSXaV41sIMb#54fh^YTOu^K{@D z08N~p2|Np+1JJ`Z^gL!R)(wFdVBH89jw(Dc#cTm=1y~5M1=s)z&9NQx>M*&A;Jr+0)>-#Y82R;Beh|`CF69GwpWIzhwFd!9h6mSf1 z9FPvk1Pseb(6a!i0H?A2EbuwNc|b06Tz0;&MRQVn_ypcYUEcmj9|s0Ta;Gysq^1HS^a09vu_4e(n) z2cQevNbmo>z8_)#fc4M7-B|Ad{)+WJ;C{dlz)!$00FpuAKY$^W=7T*HfP@YVcV|3d z01E&FaatHNc@_3hoE`@ZH-;&uv1OfH{LIA_U1w9m}!+;|IkvJWNdDs{6-VwGKtj7Vz zkFX=Z12~-kd7*5(R*ZfXjeFKoQ^?;5q=w4a_%zZvk%ObQ$m+z+J#SKn0)@Pz6Bp5V#uf2&a*) zW`vH?k0D)4u_1dM*q#8M0-oXP^}x>o4LFVbki5X@SHP`+*MK%`L)YJe-T~+wVS5L9 z*NF6c&_4n`1HJ%y0K@VX>wUoefNy~BfC0b{z)!$$0Fpt>e}IRO&VY3RfP@dTAZ8}8 z5Y|Z#@>LjYW3XKmcxunu50P8(pJiy8SCVtxJy+XB!zI1LZt{;!yVZVs@(HcMb@z(T-cY_kQn!#aAS zJ?Kku+5vbuzzL^UU`Bo`N9e0ScLuBhxB}b(NIWnj-4k>#zy`oZfDd33U|2ST?u*lY zn73ly1{{EOjM1);1l5U2>Y;qH`saseSm(zcL0(B%s+vDVV%4Ja~;xu z07C!@Ha8Q_Bp_Y0Aqj|z#M?Y64(l`5U>ca z7=XkMvpw)KtUCfb0aoJlDqv@T3r@QNyJ6h}^E%9)m{IKYp!)zejj(M7eG5+eV)g^x z2Jpve^xgo_w*vwJyRdyXa1dY*PKRLTVh+U|1{@BE#OWyDy?|((M)5~V47SGt#{uGT zdOzkvz{yxo0X_^!#pyKQqkv<8Hn_z3s}=mzuvdI4Vn{ebU)0RWPp zz`wBm8+Z`w=-MBw4*}BzU_S=%0|Wp_n83mS5u9cLi(y?7vlM3X9WZAhErV?nDA(jh zq$h$t38&e>lSf>e0{S$ZRs~iAr~@>xO%wBQo`|);HVdGKugwP52h73gk-kWu3-)>V znj!FftaC6M0h<8KaM~Q$66@&w)}Y$}7Gs<3h--GB+XEZ`D*!72s{pG3NL+x|09 z^}E3L0Tnon{3=K2RiHlrRAXBW@MEka-&(BKVSWny4DcMMkh ztQ7z{00|#v2Cx8tiPPws5a=Q!(#R%?(_=^2$AQiokroGCVnkXR>oUNyfC)G)2Rsol z37~*&C=Vs9D`TEI;@Y$kI`T!L@)w&bwoM;#O&#kRz%xeJQ4CE;YXN3qyAH4}Ko6(& zf#(3`0SvK?gV`9f31$?}6zk@|Rsb8oVr;VoUV?Sxi^Lw%4gg2MN`MPs4Zsb6WF4>< zz#Fh0+mL+&)_s6C0XE~bFJ}BPC}JB{-+_MuegOuNjR|W4V5HDTq~Y^E1o{9A5+Pt=z!-oiU>raKAPJBH zNCRX66994mc>o(QQWPm^B}h*OC}aDS5!Y2l=p$pOV!ImfbbuyKYhj)VtPRiu%m(NK z3;=TgNag_>Vx6?WJwBvO0H)Y(jv0L<(i-avffoVL#~Ez_O91wOr2r%jn3n-NV%-Td z=>ca6N_sU;J7abMUISPQa0jdd42vh|K7h^GwiVbP5CGVLZOC^g)&qfqM%aTv55ein z?m=hmZ>*nVvh-cR?-u(>_d6DsxGB`J>o zsh?l_`{Ll|m9iQZ((@2R=Nuk0S=Mk(r6e=RoyFQ%s(XEkm72N6l7$0H#t4_!_&Nr; z%`M7pY7<|dc|elAq}cPnQf-N6>fuYq?t0X}@34Osy(-lHO!^w59m{Bfsk^uMtDXpH zkLV6ne>-F1n3Bel1qWn}EZQG6X`Hh%JipkcjJqy#mAQWNbXon|Hd%^}vf(RFOqiK# zDx-X|ecK78d3k%%LX#TyoXj~ra{(*APj*eR-^LkwDF-H+42EAx%Kx!o)(t_gx4jd8 zXMUM9xKANHKKsOEO>O6CS+}EGmYFu?NuB&CTVs=2C$?`wgCI>eXyVl9zP(>Q2up6i zzunky_o)SMi`T7?I#H4Cc74XJ)8G9pJlVbbiNO;kOY*cD`NrhAWY{@L7tQH$Y$@H) z#`&H!xhh##)g($<&ecIf}Js0EB5%xDB1N*S9Q}1 zy7pn#Ucc49LtH*K9KL)?Jj*hC27%;(EOe^g}Bc zmsgz+=L@`@`C#GqVAJv|N4Ca1d>lV;mHR4ehe(^Oyt9&YZr5#_C9W3M{fvS9NrqPrX=C-|x`R>`dLT4eL{#j|{bsSL!Q~ z4@uQD&|387eE7Z{$2PZbb>6UOkJLcr_1)9GG!h?O4%MA-Ct8o2g($ZHPcoify`;F-SyZg*f8ubRQu%G7V z^+B;W9dS^Hna$l3G4@FpXIA+?Ro$iVJ=1p5bcJ^FNp0VwBPVOD=~LT(f4{K9l(V@J zdAA-qJu>1x4DEj4@igqGruC{Ev1aj1x!Ver+YJNhH`g8YwiS%ZeMNNUEtcP!S07R5 zCTg!L8TH?Vf%_U;q89z=ieo9u><)-kn$&)Dvw82`;Mvv|;sBYA6D6TICy^->vd%;26J?=;HF%YglAqpt(PS2P=Te)y6^h}}Ger;Q@5-QUT6KW$PGMVt zTWsvSF?UwKYECT~^W*WnBV&oRe_Xb!Eh#oTIB3x}KhAVuUvP*|<%vEsBWcCLM=YzJ z-ox|es`JI<-7Dn!YHYr|*+d{wTI^_=z$Aa?W^G4}@kw6h+rqxi`mXlk zK##rl+6Qh*$y;v82!v=Zd+hU{rBZ`ved4S6;d2w0Uz<5=DzhqHHFIoM&9azxhd!A# z=k4%%T@`o6QSGps<%NuuYkXQ;7X>YJ%drn+elN}O4;a@c!@MNB|Acbl#h%53Pg~w* zd&sO_U-Kz&^O9Owk+f*n+$lQ?56q>X?0EjQMCy0m#s(X{ZjH2f$s(?Pq>;GfhZPrg zUkhuxGJZVxddg_%i3vBnSbIt;<>?&-P2)1Y66uJgMlVfHhBXx}9z0Y1XpMCKhlPe+ zm9Fb*(++*VGWXUB8yjc6{h6muY*7?@;Uv5CeB${%3z+nh-lJ_p3O%pyU;5LxN-*GL zQrt)X*tuLefn{FoUOu0tc+=~JF9mzOZDU_oOo$hyeHS*i88c1Bo`+X+h zz#+yHm+`8{6a}w@c`a7!UaD%K9o42rzxB(y!131U{Hl`aq94UC_r9Jk{^LrINvOca zOZt{+2F_FDKGc3o<8us|ru;Zt#AoTougkaY`e1l3>(5ag*KAoG#~U4S)e3NL^Dkjg*iMeW{-_4%pGQ~AbK3(6QumT!`cJeQlr{N&>+?|4JqN%qod zl`WAI6r~qyTNGa0FzA!{`OBR6eQSH%+Z8w6{jxfJw%_z=v~5dQioTxSWH-)K^IYoG z90%i9-p?GI_+~PD@|Dg%sXqRq`6-9~jwb8-z*zHxe?_xI#GfCIUyb%EC3Ks-jXK~* z|K(YixOap7;n@CZ0{^|QJeMbSw>(EbSNf=d_B9i|aiPp``;DP1Zd^(?CbV|#^Z6um ze~jmU3{koN{NQ~~CE_fNUuw%4R&Ubpaw4M=cGpLgs{cuQUbvv)-cU--#?z;te_FA@ zY3R!vi9b`qM8`4pkEtppe~!!w@KmjBuU(Tq{_&GX{g-Uc8umFZ{4M;l>+RGR?-W@< z6$Pg^rT9l})bIQCdVOHSs@n?>=kQ5(ZTq+)U~!VzK%(x}wD^gul)78266!xZmb`ts zQ6RG3UGT=Vs^Z=6<7`dps^&!K7nj>q2PRE0d9{3)YxlEJ;)hNGKDK-udv*=RL3K2R^Co&tF#IU?y|N zjPb&J;=L_a^Vh~|y1sbqcIu^SpZAT4xt?=Z@a3jQ|M)VrC-X)lQEVyly5YdBlob;r zYnO;5Yer`kH12*-WOI}IaeLpShWQ=xg?bkfG_Tk#t>bEnKjGu637_Nj=8r9VhsO$= zTAI3KS7zs);8kH+`ii$?@6Vr~oh#Z{pH(brxyj4ce<&(>E_dcKhT*THr8`apmL&%E zJZ+xuD$_oAs3bG5+UerjT|3@IJ?@;i)MkZlmvGaAEZr&EyI&gS1zr)jU1r}>TD{&^ z?8k18HQFoJKe@TbwCGJfVK(l0xwwCm5x>Fhx|Wa+F1I(Yyc4`xRzuIRZi!#SSJ#PI zrd@Wuw=L$Ue+YSHq|J0r|6)G(>FE`#*k8tI&0MpqT586Vb%K4arAIfkooWu=2A687^_}h#{GXHtd^tVb{Wo9pvuJkJFg+^CE zjGLWF#s0gy_EgBmUM+9k<|Fh|tRbXb?$tg$pNitm2YLPlO zZ;DI9E=|`bkGv{YxJ4YkBR0vGVWU^QDcdN{P2ut%i)VWjhdTR@9DZKKzuv4tNXO#O z?JW7KRg!WFx%v*-C#-%5#Ktii6;EIBIqRz~xmoF2#@dR`@$DZjo!`8-J0<8sv8BYe z!*&%fib}(Ei_%Y)_lmuboI2I-tK8b5KN5$|J`H&Lyjc5Zc*NQdN7`@as+`;OZRc(; zA-;7}#P@8XEuZ^E{MKbbhk)IFS2_%~On5s-c9&pGuuEw4ukoh6F+#ab{C#29C;bs0 zfAU(-?oV6YE2qRw^^7?_)%BuddLg@XlU?|K?k@B@H{);ZYw;Fn(4GA)rpjH~;?&dJ zuNvAr@}DQRHYbl2xv=$<{YRmD>n~3Bbav6w8h_(dVbPC*UBx?2*xXBxUfL-%?w#MK z$-;m75`uz?Hhqh!Sgj;D-yZ>aZ=`Xu7xwGrH*iJZ*miAKqPm^d;+E@3AGf~GylQv!`(%p7tp{;|EezlX0 z*M!E6LMG40CR~tIRW-Y~L%_wZWSZD^>E$1@bG~hlfBI0(u|jqE+`yvwE2hocud?fm z>WRn~A5+U)vt=E_1ZSHpF@7KA^e*DOc4kM!3^f3BQi@yc*k&ya;zQ?!CjnJrCcN7?Qcg;&iLS!XQ1uMBln4mdY0B#o`H z(UPA?=@(}(K%O-(Pze5z{PA~nCIvFz+CzYp`iKiM^1Xsx^b$(w~%^~cpj z{eEVw*N-ZE%zrWRtIgLnh6gIz7CnFSj&)n^m9(AMc3bObFK7xo;tBr>ib{s_i0=k->`1TE8tg`aKgF& zeq`0_YPkN$T>Z1+az%uvd-D6ZYr@`|(*5_{wI(^Su7N52BA(Cg~4$NR)SOFUYHwxOdMn z`oa_!>!2`)&T5ZEk!DrCeJ*}^+w{Y>_HI=j4FAx*II1ggaVLNDGXa)*U{&PcU4PNBtB=0-(~>L>QcQWm-O zaTUx=ZzkzxD-DJOYuQZMwW7{%+B2>HIM?6fueHJz-!Ab!m=gVOh(-YW^1 z+vZ8HIdFIT!@d@+mcaM zZvp=qWt;3Q&iC5isGnoD`KR^w+k2**7M$-;dek%%^WAulDoN zdixKLX~#8I9v7ZHIJ+jA*_SwTuH&ma(`I@6_CMZIs9!(6&AJ|=)a{oSui5guKHpJ3edV<^c9tLe=FdE|T~uxTokZn#->vRe zZcnZ${qO6C8Lp>d9zEkGG;7CL8nm8@-b~YA1izY^yWq9W%CtJ8+Dk(V>!Mopl9TgW zN=hQ<7Rv5h0q=F2tQKCCqc=8R`}?y;SN1Rc7-ss>R{qK66Hj~X(=T$n?)Hi+wcG9* zpK?lO?wW`SXG2NbM3=~lEg!QL&Bd;n+Sq3A|K=#Vcczqwc-p0%Iy$GV)A)AwJF%uL z*4^*A`RPXSS!XR|=dO+YD(YEjVpjjLu+!_sA=%CQXA^6^=ge_G738sI%bJQBeK{BN z+Y^+$Hr?c!S1)Lv7j5^gIB}X|MzEKGM&G22j*mYbi^QIHcSNXq$Uo8D@FU=|f!v37 zn!L7`l9Al?b$jj^ZuAi;%+^?W_5S%i%h!pg@TIFgV%e>W&|arkJ3CJ0UBG@rooJ^q zW}l+h31-LDgq+QBd2l$jreMVz>pezwQFhnczeM@n+O^8Q&G`G;&a^R zu(P;RUn;Zs<}^Kd=yA}Ad*Ef?TEoDwt(*V2WQ(=Fl2E!-_b15S>_xrfr6YD<&fJoc z{=!lw4%R(ww-2AeT={#ldXzgGPIHtq5=$K3mt zGzVc1Pv6^{wK%Qw?e`t8Q+_HN((l1JQ2X^}q4&9k8=h{EWlT8gF~20_s{2Flc|Q}R zD`gEHwOz_S)c4Nu)-G7hw8_ry^IwjkC$1>za`ms$5j$8_!_EBvx{9=*eu~+Y1gO9l1D7kRf z)6Ku@d}ZCv_=Oe~?$1Ng`<3Xq%NC{kGL5GP+-)XGL?qvw*uV19hM}^?Ukl&Ydz#HU zE1c?7AH40sYK1eJKG!wZmGhrz&6G|!JEyp8_5s#hduLsn^fNu@_nC*!>o3sHq1DA) z-Y7!Xig~eh^_>*8b4T;zuk1B`^=rJBva#pVO|^x0g7{n<{Z%Jbk0V%yrP>=}-zvUI z<=2s3>$97kk&xWG((Kj64#8_TpF}YGw>xIr?432XP~u3yih;O~9-6Lmo|T)oh0SPr z!~WzcwZE#|`GeSA=9_}rGke1dUpt-l?RcM63HxYdDNkSU>}}S^zj+UNa__;*O=4a_0Da|8w$!_*BcPP4O+unC=g!Y)D#JaIj}a)Y*04 z3#Sc=_q1itc+eD}R+DNbGq9wxVeX1o2WdLz1>+hOL{C*&#Tx9~2JyDN@V&-=4q@s?Nn;F50?g5##=+JFh7k}E8pP72nqW;UO2YJ?8f8}1k^)~d2 zx@`K##&6+;kuz-_W(AF#8m&+^A?VSr=7>ev$2~HF^Df!FQC%K9eV(^Zjrno!DxFm_ zx>FAXJx$$mTgY-lmbKl1jJUFnG^d!r1HnfR`3I&6{StYmFA~1IK`(ww?#1$@h%SWeGJ#9~~y4X8WGlYI%K*@65chd`cYbyEH75OhL zrrEZ?nDYEZ_902NaO2>V<~8T!bOKM#>3{L4?Zg7Js>#0XtGUzVqz4)ouV6hrSn6AL z?cl4$#TgqSkIJ6STrS_XWLtdFwu@daEsOP&8noh`yJhnU$Qsw_w;Z^Z=+SlAxzR1+ zzOMh~m)ov*)<*T1^uC_;ey{qM-5<1t*x$#eBX82>o-EpzodyW;A%R|7XW&pEaH z=sSJ2XQuB3-{en!Yw%^7-O!SEpXlL-#sxZwUiu+7qjzy?jdI+M&6^h{bVL_hM^=7) z9ws&W$e2MrSN|UE|9-|Uzu;7O>K9+oX z^P)_(PeEMAGTwHm=XjH!ll+Wjd)!w|oqT*^WlY|@hiOh_fl`Sp#Rt+mT9-NLoIRd- zW_;Pas=b%jnl-w3&yrnmVVay`V47yHXhrCOn7Sa^FaCP1lQo9!vFUbvfuTz(u6st8 zZ5QgV-0saTPMDohM9h3)*W7%Ae{6|0bH4ZSe0`1kD|TI4btkps{B>4n^IrQchd(~~ zI%apFw%dzOw*zMh*_O{*rWF^ySE0T+_)2@{WBr%$G|P^*fY_-C%QVDq-Y}f^quFR; zuw9Hv|NDa9>57rr-;#HnWI7DhZ>eZ(zqNxk$&Jud!Y^_R~w6zl<+$YU!VMvExU0 zpRe?&(4tS=fnqsAvw7ux z+kAQXQiBwyx!pZ(vZ2XwSw|n_xaTn735y@Ok4dp86&H<`4`@9y7h>KGmIHAJ+dS7ra}oJt${**fN? z(JcWr#edpr0?k?NleQX#xpz)js(5Pkp#QI;x*&nXM5%UCB^+w_qdf99r~ z>rRGw2BJ5d4`~bQp0{-0xL0DpC&g~I^v{*G%@VuQX3DH~Gd>u9B))UPMfpDN#6R5A z5(XB=a|X^$Kk9R$Nocvt`$A%!$oumzR{iHRqUHoxlnNvn4pjhNh6c+9ED zxB7T=gZup(@^a4xC$9{PNw7ZZe#&jh@~yNrErew9Wc%s+Z_PTQ&1do`B9i&iu-3?J z#%td`n;oA!h?#}@y7?I=_Iwh&bfR;N&H1#Q!S}w+h#aKt)mz@YFSKsV(`}Q|^A*D8 z=mdGHXPw_+P~9?ax3^rNv`SX~t&WtQOuf(SlS->&%Iq@V?FhVdG{``8>d6}GISz~? zPEUOc8fZh$jvDyQj53S7erPY0o0-ALsmZ^*%)BkG=J?)< zW$Q00bV^*^S{&Or(>&bcx5T%JdCNZz-Con{yIJ+Ro^4C+-H&fqzHZA8Yd#wF`iq&z zl$L@=k|x>@io{G#TYcN<`EaUlI6YV8qV)qOu|KTm_S5o&J~^DfXWQI5T{3UZ;Mhuy{X(ii3_3IF-l@k)MuBC%TiXot{e!{{D1N1kSMalxfAb~V-F>f&+d zK3=yCkbHlXP*txBDp6$14mwQT+8g%raaTrNX5ERPq5WrXZTWRaG$GWWeeO~tt6M3t zVlj3R>r-{pU1$|E=UPsaZ+~Gb#}vBcnD)kc|2DC+4dvcLD}!2d8vUmyD3vGdGCeu@ zXN=k018euD_}y2xnh>v`x3R)2u(5gW+cou#M$;Uehjc`4Z7HmH`7%|vcuixM;uk#>mW9+>XK*C*%00P@dE>$YG)7J(LP51q&sQVa`S?`#){nZIbUu$ z>3V#3ANu-jy|PtMs^077^CHU=1ar<$*q0YR$?B2&wY4WLlU2^Ijy3=O^V6T6j{BP& z#N!5jt3~@xSvEDqC0?r6>~Tu@ndSqT65H={joSCB-N-GTyMJuwyymxQ#^=vf1s?6U zUehEkVq0n|`(*F8GfHPUJ7`B%^=cOs+)o~}@ZD_PuICd&EJRMOU07fM`3O2`z1SUB z8@n&{+PfF)V<(L{nkl`&X~ly_x^7?1J{&2q+$Z?;`}>Qjm1Vuw@`ANzXTAy9X0Wis zS7vfoMNF%r_Wkjb%wH*F?lyY2 zs;ASI-A|wgv5S^AUA`+?-b4$S^Ye+POPSl2-;;(;9}Mm>Iw^Ze!%n#JiW< ztxoOA=Vpr}J+e^#ba+{I+@yUfR<++>K6|w&(7{WneL#lw`=0NkuHTmPD;uh-W4=zA zRQ=`4rN-t;{(9;ep0#pvF6r^%}zs!O?ek` z4;5ZGD{sGcvQiSwP`-SEdSeP-{fo$-Q)RyKrTmCl%({H?p5Wu)**$EgSj#89bU}Y_ zy_40)HNv9~sy{t%xPHUTC<6h$Sqlmmz1wSZz_+btCUJ7(5|4nBJ5<}B_1$r?-0Xaz zW22P`qyN+K?ww)TU&l<66CL`M`NJiol5eH++#%0HrPuUoZv1HNn$ z(Q~H%Vr-*Mh~Ce!r`M)f?!D(}dY*B(F0gy|J$iLwg2%uIEkUa)tHlQWOWNDqWFt?V z9*Pj?@s!(UvTyiv5mf#S-(eG{8X=9oBltJ_FZf>S-|XnS(top~?=t?)E+Y1KyVF17 zpzqTDEzXO7*o*&Rmw>vl|5D%7fB37o|2<#yeZjw#2Yp}rZ+78-_}@4EyFcGQ{Ly#E z{}#XWA9j74zxylxBR=|`^WWkpz>ib>&Hh>W?{?#V#DDh>JNnM&-{PBj|J@!1KZx-+ ze=qpX)!*z^|A?O>`*(lWf5egbM;!D$*}vsG;~#d-e~iP(fB1|2!yfz(d%!>J=)2l~ zD`(@%zuOo5qaD)!F;38TbpICrm+s%~=zGV1^GDz1{hOWjkMf}39{8L8_04~`qwkjf z&EM`H`L6hf|F?hm2mZr<{y+Nt#XrU~`hA1Hm2=KN@-?;pyT2kVe1D7613!54H@ovc z;#>TqUZwx=hvE=y09DX$Qv5C7lUx68N5A9nH~)?Q$hTAa@BX)z{@p(DAN4}tt^ZrT zGyma_eoy0X{@Y<46N6t+BKCs`GWmw5i%9=gztR4uRY?DYZ=?Mq z@w&mL8{-^FLZ72Y?cgdf+HL?pY=rDuzemTpIThJOiGoXJya4ETdXQ`pBK_@XqvO0| zlI8S`8C}kr#iV~}&*=DD#*_9|{?T!~b=fTnCF=dhdTuT44d`NpL8mJ&l9RDh`53gQdN5|Q$K$a(?ge*@J_J1u! z+6(TJ{fK^}0!c80<&E3Lq`w-CwA(@dqVmg7%0JG9w3kMVE>9EmBl7q4A8qf2a}KiW zZyjwP51-pc_MNBzAWSk_qQ`-(SH|1X_0rfz+S#8++c(d``9_b96TgbIr-qHTm%_wE z`R42#ZTB=M?fR5rF6TuUKd7CxE|Trf z#Pvm=*GA<@*fqL5P3~kI*6Y!69zee%e`5D&|5!iL-<2}XPvQQuiy!Tu!5b$~FG_q1 z-gyAZd2)2UWMCYkdTIR}T^_bGSueYO(jS&Do-Feq%UMeq&#KC#U4^nfoR~w}wJ7uY z`x-Le+Sbwe-saU;l*nix+w(fkSAHfLr*hBe`l@J=aT2;l$9cAbEPnwy@Pjnc$UrQ- zJ`_{N^I;f=sQsg3N5|hf++UP_e-3eYpQ$p-GU*7@@=H7Z{HM2|JqNaKNN!}LcH^d zC}H=Kw2NT-g4tvoHf4P%(j@H#lzv|X>mILtDD%r}3ihYW#}=p;@-KZgy1vitk-sd# z#QQ80m*<@US^jQkvYaz;|0=?H1JyT`vhUA<`GVrNQua+N4KfaqO^!F{KAy-*l5tch z?aYO7h~jW5>)84&q`&39(f#rsuk!_zc^bt}`e&>o{R?ou#S*wY^T>J)*LTh$(qD^m zZZXH>KZ7z3KVW|@WxkZ-_GzWmD@L7+-$>aXLty%|uKYazs_P4-x^gApp==Yolq(3$j3t=Nh{;l&!f0&*; zNyhgbEXuz59p4AlGAQ#4D#e=@l=W7hH?KvB?jSP$WE@|CL*`3#lKs*QCfsPJukAM9Z>lPDEpl=K96N| zkM`fg^B+fW7m_WkkIDd|3gZElGXtM*VHog4nm1oWi3D-79mZn22`|1V!7(Q5wF=iu z6q*;6he;X#-!_o(3w%ib;r2wo@qzri@pu>>=T~umxps~&f1E5Chcyc}bPza(@kEVx z{sEQZFQH8Ob34dCg<6pHV^G(PbJ^rhq-B5dKQP!DT zKBT=gk(@`v?W_*Xi2O?_=j4v5Wc=DwWWH*2GUI$`f8-xcInS)Yfr{5NsEhFD}fXnh~u@92ANsD11x>$WBg092j=$~mwJ#sji5DfOb^eX5nR zzt7{H-(WnnjLz2>1}ZN;W#3f7=dspbqx}~xC;i!!_zR&~P@D`OvVF)`_&z$Ei%`9^ z-i(fu2knXMwI4^@`BjizlyJ=;`vs;gPdaeFWNaB7--`DfQj}nYlKv;Kf72MUJTjDh zM2;WZDd(b9c-_vS^rP!K(!Z249{NN{dog8yiN^OYzBkG8$kE6G6);KvTFUw1ofv6% z^%`BTRf43QOSymX9v*L@q(6k^Nv;Xmo(b%!~xlh-Fc1Ctr%6`#^ z$J89MDZh-X=)k}*~uQG_k+rM%~kDombq<=J}zFSt4 zb{WdKHv$fpV#GKi!x9!85C-oR>NA1#x1*egzrcL~DvuMTAA4m;dje&gpzl;8|5S?I z56)w#{0UZM`K@rin$VcY-mO8}VfyprGpySvjtnK=2fX`4xNqtt$I0+-l=|ZSDxlmK zRP**zIJ;2x-!#~OP`-9g$$aF;SPf+eRE7ZyQX4H`FCV_lF zW{oHPGd_(je->V^5}2evxbb8*%p(-Pma_iehy9T^ZYkscIks0)#-|qqME*>Q|Gp(; zIXMbszQH)(WjbWOY)U^W!~Ft^Q%f1=uf0h7PRjb(vX!*U1dLuceow{u;&Tx+J5R3T z_Ozp{S375taZ)Mw(br&{qw?&e^sgIUA6S&~Fo)N3%DAeYg5y)3=d`(#b~Zkzk+p!| z1z1Vi8!7wm?xkeC?6k=Cgtzl#9dsfpXE9}-zJPg+=0!#uIWLCS;p=!lmQv=UB0fK} zDC0qH9T}gXoI`RUU*3Gj?aaaDNdZRdWNYH+ewhjFfW})lt%iqXH+FPqhyE~1{c;9BSoOYCUzU@i+vqDJ!bX-nts4r?aJIc5X$K$Y=vVI=H zc5lk_nPPu34u>*M-dd3Lq}7Pbs3z~P``62`{`-k{sQsG0EM~l)vzFMSRhB6-;Vf>@=uql5Jsv3v=DbKH1I%K}J z!eqY3dAY*x&cHf};?z>&RN9mFQp!2@DVvP%P1(o8R7m?y$~bAl=f(`m^Plf5(w|G& zk1BcVBs_&zRXLLw6iGBjkV#tfz|;_ z%6O=UZspD2!=u;j-!Ki4e-7n7MFjWP0A;^kjORruW!%1k^9CxX7UjM^YYJ(vrJNr& zOOW}pD9`0i^7aKdw^PbF7LSKg%D%bXnT*4w%$KQny|tw5%by@$R8CjQI8TOi2x^A` zN_noYCGBiV{0^AEy!ul5<&7ojpFuf)p5v_#@LZSjd}bO91Kv88Lav9yzhNx{&qGjo zxRmkvYAm)>`m1FVSspg!e!OHoX=hQ^XXOcGzU=elIAr2+=mX;!m8W(VX@_NpCq1x` zqVhOV=C2`)2ha~;7zcRdW3;WSqvK^Z7y5~5D zEN3g_K1B_R!CMdUxqZ0Z++ZFdyH+?^&e=GQfIYV3_IJhQPhUsIx1+S@Qr^A~{bEMO z$;19D@OdnOQm^$8AJvORIS*`f!|^HmzA@g{xRm=}3*I<^zZZOf1!RP{z%qjBm9U3w z9~XSB74LVol>4Tzt)xHki!6T)Ziip+c3!_z=Hm{ykLI;oJsBTvKY3EbChO%**_Y98 zd87IkP|9Bl!I52s(hfz_NP7ll9XmUnv~wu)w-@Tgi%;1X&~GIodnqN~XuLiYQ2w6S z4HFI3tG1kM2iX32k~j(1cN1xcX~>i0$z=N^P|o?r_*~RVsnl#ERP;8&;Es^z4Q`kH^lye7G!)^%K9J(6BG4sDdl;~ zK{)55@@P@!otX;hUrQOEM_oyKH|2R?2+Rv!eJSU2D`{L`%5(UgFr1LTH>JPk{09~DY@4nzB(df8FVMK1X73%+B>dL6~(e}LPq zlyc4)#Op=@#V$7s$ETc6&f|XJZXnx-e1-obf_J`x^}LlFSH(DA4Mh|O{?39505bgl zAv}h2CbF~f-^<8%!S6`peVm}|n|q-=sNI|><81~$542Lwjl1zWkVCoeHqs#D_)^xN z$FSg|_Uxvd-*kEVDV&Qa&xMjtlP+*K>0h!kSbYDHsyJHk3Q)?K#3!^j`S~}jDLBkEGj=Yk1YT2IR6i?1NxMG ze-Phiu_*IPm3Q8gAvlzERl}VuPb+2I>a%fuDf7Y{pC8zi@yvkYp?+ag_G|QUFVsF6 zl>3Vla6gOe-IQ}6Ya(f9Qr3-p_&W~rFQ)X@NjUEz`v9e0_wf0ROcOc>JeQ?jtnEka0>W z>&yxR(yl`BPk{3YZ~j`6Gn5|?7sAq}_=U-wE%twUl$X z&mz*_ml9_^+-ISDYbosz3;QD~CuN+i}Lr}KkG=l z7Uel=Fx)?)@)T3%<8$a26vvhFe92A{=S#VNDZ%r%m9o!@Z6y8Klzxf8>rydge#zUD z<*}ozxA}0+LFFMR<-fy=59iOHWc!>zJ|Mk*q<;qGIf*&+7pgCt@*K$;_6yYSrT97R z@V;XV;|JMY<;ec6gYzYl@p!-BP|h)vcGJ{=avM@-`6g}zKP0XNm)N1!8(KD6AQ@r!}Tr0 z@m(o@kC=?_7ZQHJz#AcRJy0ANCzNyAJQ&X?el2>i0J4Yo3ZJjQ`woY4UvO*zjzfv> zF`Kj#l=}itJnsl;vR`a*d~e=)2JW+-lH(zSPF~o(n2b|OX}4E+U*=Ncr!dI!v%ARn z4{`hx_`FeDPuA-=_#r`mENN-EF>1F~N;~ZJAmdb0`q2;O1@h-o z)@StG6y493CXpv7c~lsXC(!T6pGB!xKkRF$U$pYcdJXsc4K>oJ3bl=zDr$o980Aln(HKTp07pQ9+}lQz5$YEkx!>G=F_ zM>$vUL5K3nL%CmgE=;yV0c9PNgZ&!$6O{7D%_043DbJI?a7a6gvTh_;lJz3+bEM(% zrt41n`%<2x{{BCNeF

Rh9Mwx*^S4Y??-vVh>vrn#F)D1t8gUCEV`P+xs2Del8%A7+;$Q@q|2y}bSMPhLD$GMW zsju!k_uO;OcF(=%aIrPLQYcTYO6OVYPM}{W<6}@`oK2huVbeMHqtU z+l-5+$Mz_m`4<$Gu3O;;r2VLi?>mM#1-*6kglRAwy^9#!pGA3YppK@{k z`XC?VKXz_;AESRP^jzeVap%)M-mG}e)t{fYdCWTfZ@F0eopb&E75XFm)Hyr4_DI8> z{L0E|6wNKdROe99sQ%wK(-Gj^UN{`-H=tkQ9HJH5IVoeG}|zted{8W65eoTcsO+-*Y2jU9X8mxDOp9QDSKSkmvc(?Pn*FY@= zpKx;iSKt#QU0v>A*qyYWckB9g=)cIP#pO$l=C_xfp2*+G5;~FVSN^t+;G@nTW-iz9 zMxRwX`n&m`MkMyqe#Ghjpsl03U4A%kb}?mjhBvF&qR$?pbe5c5eA)7WqSM>x1^4WN-&dYYj=hxsrgWMdQapSYu#fz`QK}q`-r_VP+;YF|J>^wuP|387>llDt4 z|M}3NikF@LJQ4Dg_Bq$@+Yt8!A9r#5UZ}CmZ{*e&FFQ}$H@G~o8^f3OQ!a0R^Of4Z z&du-UgLGWc5jwvkHZQ+GToyV7S9dME-1v8XX|G+i{iyRNM;xy0C!N0Se!liwc6QX; ztoW$mu|GU-!1{Ih`B4^+rd<8D`DNOE%Ei;~7(dfa4j+NPlJVwT{(KWmMdoG7>G?si zKeTlX!cDmL+C}+aGJk%D;a@-3_;+;bgWjSp?efnZPSN(0&VODHy%jyong4`(hwE>M zo5Al5>O6kP@C_!P1?L|&!H%STbhO$_$=c5r1V=sG<>%)Ge~A3~C~be2wLi_)kE2d+ z|7CVJ?&Q4H8XZ^U^16?jKaZSU{Lb`q)aCOhTRpSc&F_aURr<|NPgdLf&bd0(#Rxz$ zzay>=c^mv{ut%roXI-N5X>t12)uVXEt&c7b^Mdt-ljpA>H<9y z__#J2cjx+U#JW%ToOSlK5Bzh`XLqhZ{*IfpFFL<50X_w9b#ZDId1IjO{PSf&|FI5o z{J+iSrOEB%9M~!RU_JN&)z41z&jS|M>YRVR3#Kz81yjon7p7rs4&+{_Q_a$JJtWo*islzq0m4NB`BBFOkE-!D`q4 zW%F`9^f1WZ#joc~&e5&ifwKOKzn5-#W4+6x#@m$s%oh;IaJ^}D_z^u5)&Cr z7aaaPb-C-(7Oz2)gEl%K4d-+_abe$mCLe_((jhsf2V>I|Q8e(x^ivC@9r`OiP?r+CKs z+gbB7qfY;?Jka=ba{Cd+7vh)2BdBY*pIh`MkoKl9_44$@qf*gO27OU%^&(qpP$}d+fO<<&moTr_TuXH7h&Bhd`2xg zkB1nYtF7M_=O>>;ybJT<_&gi_R_M<;KfL>q+P>)g|MSRWLwlDuz8mcYZ*+d+dmTzA z(=`$^cl@LA{l#_y0P3*PPY>YcAr zyxIBTlOV?6w~tnP*+0w<{-*HJ+J4csZ;$gINB_rWFH^35dv&l2oF{xx{l=HfpNv@C zkK8)qM-Zm)Uv&Pe7kr7o8g>5a-yvt=zhLK+*P6Z8o4<Al|P}gv+4>h-Tv`XkPtywlblEl!?y zn!oCH?b|{=0REky`TJEWpX}*6zfjk3-GsbC#?|Ef>UlQ5i>|(X1N^!0Uv~cCea3&c z^CwTh{H1-)t!vIWz~tcSZ+W@}+CFmi=MP#ODZ9Abhdd|fp~?Av>-QDr|Fe$IcVe9@{LH&` z+!uCKe9`%zCt#04zi97)L6{5IYN(&knRIlvg53rBPM$5X|9AZFbiDQJ#`_A$LHf+V2Y z7CJ4?pZ`4O$Lhn=#!ts#+P>i0_p~bgaku_@(ELfxtrI_vd6a&q9RAZdj<|8XBdoho z|9njSDyAb`M`FA(FXPT1&LdwE`ZI1`erx!GtM9$m{MfkDhZ`?eI+649FQC35de!L8 zKYSRBNx!WwANw!kbII+?e5pg*H@JKtZ*jKh;@}hJ2bP_`dNSA-?9Q!^u7^DeKeJAs zZ?ZgX$?0>~`PzQL`R%7pQoPB@?QpZN@sF8(*}S~5N#`Z!^1!)f#mlY^^Q6@oCY`@M z8u}n|9<_az-x>X1Ua0ug&$V9+GhBbf`YZUQuOiUkf?Ez(`$5`oi{t0L7GFkOeItYQ zm*`catJ~Be9}{^lxc2LIRlM8T>A%^0O*wzNgUPws;g6fWOt?JZCJaaVZF2ZlmM;|@ zKTm}Cj=aLf<^N}P-SSbD+sP)Mtxax)Q_}Lh`zV#elG}fL;aufs&e`dU$ghOYC0C!B zKu5uUy7l!fn8zSbXI~eZzD+s&LGxFmPR^g|v-x%V9mfF|`lBu`+yuQ1xU-9)4xxkd zz4l&5s7<&I4eLoB5y#J(qjkKac787&*EI5c>9^6<6W(%w;!7@nKH2PI z)SV}68qoGdx6jzts{GG5z5Vc!if5g@JZy1u#??{J2;5J;O@3Qurch~kU|4hs6hleY^;NtbQwytS;PWye{^yIVfGofGi9-+UO9o4&a zMQ2|>X;XaB)m4r$zt?h*^0U7VD|!-oD|A|&zMTL)6#mN#st*WT;rdSm^q~Jv zA0CGt2_8B7y4~hI=ju86)k=S9lgb%xHe9=#{*Sr5@dpjcXV%GWxuE#C%lEF_Me%MY z&lf|#*!Oqw^cm>0$RToaXoVk>aTOf@w`{BY&pfU2#B_wKAO20`wq(yqVL2SGeM?He z!NrTen?2@SUfPTJCH z)d>(0ej5L({9kMI4={U~artCD_z(K#?)?0Vkf+dZ za&~ukppSKjozn(;;kp$2FT#H`srd&jJ{cT5RzeQ(XCj@;!9mC}hKf!Q>|FYBbZi};J z7vGPvyk*w;f%}@QUnkGyKIK2>^8azH3&Q-mc{#@Fu}dzFd~j!#f6L=4{|jxvFTxN+ zJ~@})wqL6B>zrPF0rM#RHaq%%H@j+TbF)b@)`KAT>pc!RUk^Pz9T51x1r|Hl8E zwn^J}JNiF0{h#pu^BQemc6G2rO`m66UG7s@4@$q|F2CySP&)Na9}X#L`vrHd=B;oP zqUVJ%m2>Pr&kXdj-g%40ooO4`wa{mgXU5Irt2-56bak+EPdD7{uRRZcEBr6HJnG&d zU+lLysOKV&HoqN`ucT<<3fMIoqPO`2E}Jw{xFkQ{tHe%bBL$H|B^jF^3Zmw zSijy!+c!8l-*B+vMVF`Dg!-QFGw1TdKc1j?qw}{PzfkFPJNZ9kc3S7;+&G}^XWYCz zX7!Cx=T|@1rS0dP{%ns4lJRD2Um%{ZfsKmi?7cm3*Wvmz>{rG$hhe|M zf7!*mZ^B-JA8_wonY6k}%Qw}34jZrUw{_ow^LyRFpJ1Kt?B#c`yFlOGLwi2PFV`O| z?qpq_a4_Ps_`OEAUr=xMIOFo<4`sFeq{|zBdZhL{Wp&+t^ADZtwEdXV+o=l_UvP3h z#n$!V4-bLw*zTsVFDCLFb@Tr0p^9f*e%oVwj=6aE(D~Ya#_8MlgC4@(pHcb0fWGAV zH~3rWx5cero`t~*zTo2EQ6}e%TR;BU^0YZ;r)%I3MgFZW4t_N&^s#^E{+`HH<_}w3 z{eR{>r8DmI`L2r}{5f8KIeR|?^#qYmowKhitl#Jwwd>frKXs6ftI^dPvyDn;*3}8m zxmxkE%Rj%^p!l>~e=Wm*3O~(`pZ`RjAo3iw`U%uKTz5g9B8O3DchA{+Vae6Uc7#6{ z`UMx?pR~Ma*2#IFv$g%a^;p#AD)7v?>9@%(~^4aS2c}I)C*)>Z4%B__CI`hMI&fbr< z^-hz^C)?rwWxf_HPCagXPK3N2PUwEss5-;{h5S?IG2`-wN8p!azLuRo{B}<9F_%vs z4*5v?tc%O<*;(-kw?4f+_`RK?=u1!xTu4{KH3z>ZbVi+?{MG0eT>kJr+$j9dxbsd^ zyDObVx9)iTD-~aIv#r~EfMz1kGwGW_17+V36K?_5FX?|{Eo1w)|gc_^^R zdCbZADcGaPv(c@~J_fxNJaYRKy9a%PA8`Kvo>&j<`KdFv*3R4E=YxFCQa-OxIQkp> zr|>iG;>9J{{}O!K#o4#uK9T35qVf=%L$3-Y>)>*t^TO@3y!+&K_CE)H^ba{ED;7x3xg!pV?> z@Hy%9Y7+4-&~f?XD{LO8oPFIA^Z|axt?QrOR_Tnpb@V|O8+~_P>tp7(=bc?2)vJ7F zoF3kkReZwD*LsuBvXkeY(DNYwx2WE}X)9ISyI-$#7TkR8hJ0A$v*7yu1@dsgTU~ry z9sC3I%IW!oSZ_-EMW>(pG^-pkF7J9Vr|sul{v)qr6*>iHr$2#R2R&Jkp8# zw9hzufB724mz{t974lD^6WyiqSz~nm(XM=sy8ZnxAWjMWtdoBMB!o_*{XH7E@o-&Y za-MMfJog4|KQ(nmXjid|V5ivMbm!bQpQQZces;Q1)*mgcN+)B_hhAsje%t12!P$$v zZ%_1m$?5r|vwhF2lWBxXZ{Ai7v$#R!l8&G zf={?S{sN|V&`Gt*24A7E0mvlmj|xxw{bZ?wx(0tkGXl-&f-Yf#rMY! z()JV1js}r83O{p4o1Pm#hoD|3_>{b`9oIG%z}}0GBG01plUKv;B!8HnOy>`$UvB)n zy2{?iDV-7Lm)?tc6#9)$KVN^Y(wTAjz~`@0J|jDq9>;}?uuc^IqtEHM`nJ)5?T>^+ z^nAgsXFp);yR54R{@Uamxq0ce`I>Y7`Dxg-^jrR+%I!b3+vvA8-dSfary)@keu}P6 zvX{k+f{P2^fOthd1*f;4fqn{|vWq)kJyP2jUH-OTm$uKiyzB6nY5T~nBL@3)TvO-j zxZZ01@cv!2{gR{q@eZXQxqRSx$Y1zxcKY)a>{0k%a^u}|mG&F$r}KCi;;vkOgq=$J zoSUy3gFNAX-2UvHh&wVb#UCjhq`Tqzi20eU%MX8H{;J^CUu&*WI#Y)!oij}i*KgEu zW!*aKJElLaPM^P@Q~sl^)z2F{(LdHIokgcty|(VIcl56a^A3G`LixGh2rXg0M9$;R z-V28-KI6^-?qL3K$@#a2LzK@MxBrzjyIc4l<^Nfe!<|N_#qs$`)Bi?iNBL7!o`oY+ zui)Opb&>JE9rN5KOzcZ(FW?cQ`!u=Glcle*dPmt#)RsIEKGkTZJ*Mgg`apVa>ube(#f2hiB z#@YJ<0-VsFviUvN=-=C{bn0BaXxGyfUvP5xBmB4YTj%O~&zin9xccflVBleX-F$rv z>qp_If!ImY5Vae?RVPxeH-G4&~I?|cu&YDaSqDm zOWj9k`$m_SZUcQ5IukB_^$aQA?B?+w7N_c+p5NG`?Wdicp0mH=b51_(wvNlXxNsiE zEBs_!{_sgCnBb$%9@ku;__7<<+fP+|+Ud`o2P@v_^1#c_SG?Sh0piksqiEe4mH()V zFRwN^7hRlv3Vv1iEVw%GMX)2m8{N2$KTYY+&FcJ~6M9E|3T7*MQuwLj2*=@iXI5~W zTX1>c+rf{}A9HnsUmL#Y)>E6VRXSOhfA(YDA#@s?U%KWfZC`YChKInO@RM==;ZO)r z_+OBL;DR}X>m2hlQFmI-pEv!Pa(4Pkv&R`XUk_s*rQZd&uG|x*DEu$EIC#3vZ=K5r z&VqjsI%QX%c{lut&>3-lwS1!DEiNzmrRmkU)5GFU+CJ;_aMw#zK6CaQL2TFW1pmU% zjN7mI7W7~6DOVSjKSwBX&R9LF6K&+0f}a%r>zrNx?pVbaogQv&_R{L~_WIB-{QQFE z16wQk=nLpb=+8TQ-yiWv_?feFUv<|0U7#=cjMbN5R^fUt;*pH2;PwqaZS%F{{Klz` z+V7I<_d3gOmt0(1i?}27b1u*MG=?Mmk2-x@YjT@(da};O+wADyxY5RI=S!hB;rdVG zv%$&v%#*d>8K*xFSRBbYyg$U*D9XC?d;6JRTKbdD%e^)+Php)RdS1Ug2=-dK3m3hy&_23Ecdm@LTv+L_k4;!7HOxgNz z)U6k8wz})6qyL5u?RV70wF9i)QgnI6bFfE|Tkfr|2@?C|Rw}q7E>%7koSsj>f6BNb zw?29|>_zBAM=G7Ol}xm~*~Pev*AHK#?aS>d=TofTH}0YI3vR#iTdj&`Ts`V(1T2wf zo%7FkgTCN1E{?1U{tf=BU;F)l@wuD%|BUmKpMV|7xU!c2v|IbPAFccpo&P`kFzq*T zdBS66?~P9X|BC!y_#AQVUo^QDonF0Wt@bRn^VV>76e`138ZecFD>`R!6s#}%31 zi2eUwrk|6}FCBZh(Q)y2DAci0hy1zD`@=Sm=h}LF!uj)`yg}(?oxNXR@|kz@c*zEB z-{|TX9VWLWm(QOCJrDZn>Wynm4q123?TUaSE?9hdhs|$f@psL%PHRC?D_@hztEp^b@C@n4rM2Yd%>8rpLXrP z3;Pwk?COV`*Xy`uY@h4v=JzgyKFfH=-=*V)n+n&z&~LDJTi?a{v)<^GPtx{r{Jqoi zz;WmIwt2bIS!&bvcbopa0eP3u&shB}%qe=lA*cLjon3r8*ah0RDjl#9uD9Suxwq*2 z)&4>M@rBce-r$FKioUfw6q2q-F<(-L9C7=Yzul!Z({i2+8=TYdi8?N?{$XXglUrTW}ST63QB*$>B-E++P>)Q?pMfXgie!_ z!(-rI@MV|3&9*4s;?@gW!S1B}nB!+X@;4c8&aJ=p!*WL2&${*3O*X&tuHTa}FCvHH zk*c3@9Q-;0oY0?h=h^<<^13mnCl_9*{f_p40bKfT6kQqO*V<@rJHN3id>chy0CBOS zruS&eI>Ud7=@5RVmXx1=nIG6br~FL0yy!N>BN^|!liQ=n8wHn>CCve`9Ao0 z8SkizM}y}oon==iJP>|f_-wKFG9k?i*OmsQGw0@IWG|&Nx=F{Y|3=aNw%)0Cdh!vI z|AJe8&ByDPZ>!(y$p$n{Ip+cBpPUE2$twNbsZqs364$BnLD_xb&F9+!5-#NpZ${*9tfAEo?^yY3Oq@7tcY>!aTb1?hAr~PdNXdD=6OV=4%k~RN9x_e7#`&jJbO6C->F)YH@M!9?Q4O zZe25fsJ73zee+j=j`Z8$;@6vxHGUkQFF>z?KeYFRz|DqhFX*A*nUmEo-E8pXW7~Ne?xzSpM?(fNK-bhJHvQU*K&UB0LWR|PdNRVINs#o{OWDCera*_ zlTqlW&>3;-g51SQr|j%BTCeh1vh(&kZmoj+E#{a#DcVQmg^AxvSqx6ez z|K$*~>v<>Vbz%PqbxvnrKel++>f*~~A%3B~^FQCPbwtj^@$Vh1{4_d0e**GGkx#+d z#S_6lqYmTRk3$)x{hXVZ>>-LTxqi3Zp#A1tUFC*WX^;00Kc@N+%X8I6rL*k(`6UBN zC*$JgPdXHzbN=vY*t_U$#^=chpu&II@qgU;+CFl6^%~fVv|n)R#9ek!{<|IjN1L8E zxP6fOkW%H)#f$sR|1UW@A3sp~#d`ToYNsF@uAAVO z1fRQ0^Ouo;lFUd@*n%LxpNec3@;e{-AxWT`#arn`(Ig}*68*% zHeugN=6%WO;dMr*D8?-SA5Lv?~Eaz3HtCpmD>l6 z&u2QceVwZ>4Q{XavhxEU4tfqbyjtnR=R-am_ylf$mo1jVTagb7pK~ssY~RktS{}&+cNc%~*?%3VcG4UKLxk1^Z?wWjJN#1I<8aA z54>xg$>BqaUugK^xq`!fU7hXp!AyU)2*fc=-#As!p18gq|M>_Eb^$pr}M+_IY`?t*!$-(t>JnT>_y}= z>z>5N{?N&P@KxG=>W@hLaQ)u$(yMk<`rS^Smyc0=(b>gDlV_{bldr^f z;qYgmZ^Hk$%YWV${3O=Dj?c**wEd9%9gtOl+bH@b1SoW}11eAb7uz@I8=tPUpP2tH*V=RT}-5bncu-D>SO>-6NK zS;dRKF43X%i%#D@cYxw!Zr!?dm`BLXtvB~SOxsU6IZwlEgZ!QTe8=>s{DA5qmR;fc zJ>sK`D|eiZ>ruoZxsHKdh&-pgiky_ zfnM-d=V#jYS3KwR&US$jWo9Cx09 zUlsZpM`uU#w~_swrZ3riJ$t;ipK*SB-)j^fb@}Zolh3kS$9*uiBeyQt=~$!h#(RzB zpEI@(SZDlP+G2WjlUe)@?IW|7 zdRK>ON4_NEnz~Z;XKb&## zv;%QR=oj32;V%{!M(w#^q^aThw((PN@#W*T9-sNS%K5|A{v+n!>Rnyp2R2^|&JVxY z@{^*gZ+z`#IQ%${==646wJS!XZUxaS28a}NB`1u6>o8V=|jQZk%zl=@v$A+ ze$mb2VOf=1&g~apaD=umxOg;TaUt8Q`lkOz(W$1NOTX3m!tlfOLGy=^v(tCKUggkY zer#83|BizdkK_+4;5x$W_gyyLDQ6e^^qG8|J-*ufMw5#R|1f=crwt~tY-ou54EXrY5~U8M4Pjm^tDA%DRO zZa;MA-ECgnd^NW!UgzfJPUxG^S+e&)#{To~Py@lszf^f{)@g}uf34D)a`QMHK^X7(ehbJf85FKZ-EZvZ0B% z>#)nUeZj?rE5iB$>sCkSmzeimqg|qzwP%MO!Ctr?40erkbgu64!bvKhRu`|Y%^IIB z|Lh6*5A4G2(`~(jw$HgZ^&`kL%$M`S%>^6p+jPDTv+?c*dy)2yj-StOZ}i=G-*<(L z_hmZX*bjW)@}g;%AHFZI{f=(0{pwv&bf)?L$i>H}>a_j%I&I&s;*8F<)>)p+gpvFe;}Sp`)(I^9^Oas zdRLdY#O$%b(I47I=}&F1zFYNkb%ICDT{{!SB z{1jci^z9ZO3p;Cjh$~#H;P*rhS+{O_+Wddk<<*0SYWoHkm+uUD1xUK~qmZ}IZ*cYM zC*TJJA9a3sE%aaHkh@p;{Ic=cc#XDSbo2YVU@y=sx8CeNMcZec{=Aq~`HZ`|$D!-A zeZlF~w~?Ooq?wcua$ zs`y6j7j7_IZ#mugbbeqMxU`S#?J8eyVEIE#U(8wbVZp7_|FmA| z%sF}93B8qmr`-FTry)=AbgIx z=fciK0vYD(N9xbNYV)-(;-k>XIQh4r?kD)X%M&hwT?qXJm!CXpajkr}(qFf=c5u>a zrIU5`eqG3`@pncZ>kbW989%?be0#!;>oUXz>9_3jeE37b$6Y+S3~@^MZ*qS4ft<>r zWlZ_p#rl0E^i$+BXZfdv<>*u-FoC{Xk6ckwJm>u09v~a|ba~p1w$7S${`Mft-)3Ci z{vjx&@KgAr^7%pI^G+lrGOp2Xm7D$>MK_v!vQ9sr-&WhtI)60MoAwJF1_D+IX9ww?W_Bxc-Rw4RoAe{q7+)Uq8|Lde-8?6(A_{ zm}yc!5X=A9a9lE9OV0lszftK=yZk|phe`VdcW&)ZkiXC$|GLtLSi*JmMT$rL>3&Z^ zzruf$%X2o>E1q+4 zzt+u0=N*@6`;1%neRz}dIqK|v_w|Z5I{h3jD4uovuSOmy{EWKi3tk0%5c#w^Kl4vC zmi9R(|MQR!Nc)20XC8Jfc%xg7d~pZGo1CAy0QCo<-{}1Cp%xd4P7YCT&xW>QX?Uoo z_o&8og9Gatqx?CSo}cgNEOl<|864^?U3&hRy#xK7m$q%_?TqsIjeP_C`N5&K(ojAh z<8G2cF1Ds}b`dAPG*cPvLxSI=fI#0wsWM|Hlzd9p~u6P_88kx zcYd(Htq%hcprdU|{1L6&OIwQJ-eZJPaj3i0+18=7>_dLAXJcR6;3f#FvsCII$oCGk zw+;0S^ha@nO+CH65n8pi2Uw^Ig%hH|&Y|I+j%aW|1QZPpmD-D2K&I4oU0-Kkdv^)H z7fU_;LtXiH9QMKY{q23lXk+J4@w#vy8V&VEJ^ejH8%qPj#X)TnXkfb9H_2`JuC|`u zXt=+(r+-sa93E=#ZYu>6((zDfXuy8-DqYAy;NDKKUlQuzyR)x2v<19I1I5n%UcAO0 z+{s5_68z-zgIfjx2PX6RE@l~n?&y%VV0vRoh|5jja5#uehTJyTsZ`p7hHMb|N%PMB z&C%dsds}~(eCi$;9NMr&W=Z-JNwf`x4!cU7!j=x*Xtj3_;E!7g4H46|g9D|ZXsAaf zIG@*Eh9ItDXDRd*=z%BWKW@-Fa9z@X#+1*GK)7KKoYHDbu-8rK$sx zi8j0GYwH1vTL#+)Fr0j6N83;vc-b&GsNVzX?}(1xFfcR($#=GI8a%o*ykWz@;L&Zx zBL3gj-rc$WXwZX(=DTHP@v{hv8yrqS?a+Qv<5pQ0f#m^F94g1F=L{ zI@9Yb_T@{%{opGw-aa^tM*Th9q^%cH5tjQq+DaYyKAD#eF`KxLQohtV*b66;7kLk$ zADMjqexwfu-&PugY`Z#xCF{Mz{XHWc(i-C$XwUZz4|R^@F-3h$K5qkr82j@g%btxX z;^JQNUA=7^2lJSH`bq|-9te_zwei49`C+JuyP@K?0!i)G)9dNSC~8S^5c&tl(lOi{ zd`co5@pSq2-cFdHPM}z2Cj?oeZSatZPtHU3#6T%uY?s++huem~q;JAd+uGYZpPgIDIaWh=t!+VyoD51yeFLzfO96--Dg1z1BK zd=L&@>}qdXzaAcaNPch<#dGL8b z32g#XorL)l*8`K#u$uaMNCH_E^|XNd+D7v5Z_K>R8(gD>)1iUjrG)TH$Q~0iuxVHv z#=vGsmUTao{yo6cfv(K!AiNX8cvlyUcChD-%#Q#YIqsNa<6z1+NI(;x2i}n|gv64_ z1?N)~AqO)mb%Mviw5EyXOFoq!=t4jq>JGUTNc6*ygW}W{LlUPgdtV_^%S=iLg4zuX zm)ZlP>2RG#07HJ%K2Yl1Fd*qfwQEs74AvF%kK__EvN8+1M71r`Y1DlYD zCtxYBZC7wI-2;7{qIhmtd8`p_2NxF>t2)(TVZhu6#x0turSrE) zS)dmK?7`rdATg|UI)+(762l}Rg8bo*M0~o$PjMbP)71j?!g?PRE%jZ;pe&`^*nSXS zG52s-U8b%>1I22A#sklnt_z{>x>D^pA}ZUqA)R$pqI!OFjhJB(AKwiRVbrM!x5bra z@~MG{qYZlA*IC+_wtM+1-xs`X+5nN=!&S(_R+^;93EN^i;t^I#Xxay`#O~>D?;Y*{ z{jj(o8tNv(YP))YkoXY9AgL)p;IYXg=`9Vz8Dp}D95kT2?HEgY@*AMdsT@nxVx!Aq zgGU?e?(?QUEJ0{}I_C>|D7wFXa0sbaS|v4#V^v$~ZA&M1oWrMOYwJDD<5T0XoTYOl z<=c>oA+1m|u6AxnQ;J%9iZ$Mn%Iiu9P3de;)>hy}JRJ3#ZySaajKgmw*ARyqbeZZ0oy!7U1oD%qAkg)c1mpIFrFl$pnTHSTd`+tZ}_3zD+6+{mzU3Up7v4o2q!8 zF9nZ?0$5m)_?$l|W=e1&Fl*virT4P_5U^^XZKV=Qv&DfBed3aXWRD%geMQJT)k9ny zmK>-@G{c*csBj)-vY}xtUS&Cwx;;2%%sT5BM4jZLX_pcvx>{i=ML;sv9xN6DD-VxP2Fy?8!YxhMEwH@ zPsOyq7mX8>7#{5Gkf};bNgS6(L!uh1H+&Y{V!BKdkGh6SkX%sew8JIXgip-FB)QnG z;cMlE5quKdRHbTC@wPT*37j>DjQTKcO?yu0fNBKtKOU-8z!?&0(Mm@qNE}#jQ3zgc zH3<13L)H2oQGo)21*BT(6jdS$zK~oKWq2vSp>T~&1q%F9kwslOm9bRPB*<0PUQ)%O z&XPPpQm&za5F^@L{$f(=LH)Zl1Uqs@7CY==6iOkXL6l*tk`c8k%rn-^q1q%oAQP5E zSd9DsSdCku7}bv|M-m)ksbiqOmooz$*Gko{iat~-weXW-DkPawo_rxDHW*Rr`=FSz z*OEdly9nZrqY5<$1{v}(u`8({q`uVnhJ}8*jE0q=g-ztEn~^JSL^(NDuOuKq%KbGG zTCr@&2{!hz0$23Rwo{l)7@CN>qu7IJRUHaKilQsaI7=YK@9Fa@1f2-`OIncOA;a@X zlDiQLHBFIZCu`X96j^rhMn5&D}R zWW`b0dag?6D6y$p=Js{MNlWPH=#d&(YJg#zMw7Lk&FQg&yRhs}ulRKZi{K{p{L+@{ zG#JWk#RwK8Y}ArFSqAbq!>HJXtPk;x@MIUQr++hQ193fBiU5`p$mD4F=&N2jSNv1R z1BtLmRti3DVQ&%0q6oFeK7HGu6hu*%Ou?23NdZcBdfjYL6VE zp+A(hBy+UwUG_F%VX4a(>OSNiamFrQg1evVq;gIpO=7INdHyOSJS*4AOlhl&0!dK?8yr~jau%w7 zxOP4)q779v$!tR=LyK#5uHlph@hI&Q(})X{Ld}rD@jz)ad1Lxqi7=G zLCqeka``G=Vj_gf6v`F}-4W`(9Mbu_ILAR=B$EIpeQChfB;L7+Pm?MH5kuKgSCaS& z^IG{PiT`%4gFR80W?utJg7-^G585spaX5yQ?@hV`b<7*$URa)PaP}jUm~6yXjto@t zQ}B**dxdv7xTNBBn<$}=KIvX-y%GyusV5kIP2B?%vFgVeozs7nfJBv*b{j0~9q8BP zZ)E@yqwE01aET9@z;tw(Ekdh4L83iYCrh?fMiP;sYtg1U>id%dVXaW>bb@Z?;vj`= zm1yjhE@WpOrSPiV`HHu<%6icMwDMIa2&5lFZ=?Z)Drua&rSOVAdCS*&sEc6c5JOQo z(P`OKLcS6z(`_3D2YPYhCe=wY_kA6qSnOS2$PGLPn9LC2Wm|C&%bC=2MG~9#bWJo) z(rYD(rU*9KoniYa_NAz9Bdkber+r`;o6afLd)>ae3{(?6zyB|T)LmPoQ9<3)l!S%g zW3f1up@tQ^oKd0vLLRvCp0=caF#RxR>Eu9@kuU?LfdO_6=>WN*gnbYkl;aj*xp?hx zkL>M-jcV31HIkKe5U0ul)78;NQq0=LWp$eDFvDp{t5VCv4x^5thej$^9+#4E=n#25 z&2irrh%+oe(i`E(<@LDepsY<%4wWJl%Nmma9~A10wF)PRW%wnnIu+F=CYVa>iwtLjyg{g~TEUq6kYpg=m5z_0F-po!*AsANlBJhPQ##P1=AA06%w@q-zz5swgruzbhH2HaBG zc?C(w)dL(rWr2rPV>oD}iw4u>TDBjgB%f``1Hnmc|mOHH|ZJgND9A5YEP=}njPV_6RT1vj(xM&3NZ4UJ&x})M)d^sa% z-%6n@d>QAaDd`5S>XS^(Ym{XbaV8=gGQ|Ou(P~Xzm>DTp_`KKbP!FRc(D~ z3WB zO=wLy<4ja1{K|B%RVjbOEYkNCYl&0PX5rB<`-o9AqX$6)!;@?97|ONr{mL!v!;k5g>dk{Ruu=2 zyM%o}UBq+^_u`OR7yE@|yqd39CEsxxBvB>BcbHU3CBq_#bfw}qRyc0tyR5Q4p&V97 zCJZVfNwKn;iyFm7Eu~bs5Gg_E-V-*6KuM0_RHZMv+js4-_)2Y7DgK3uRciMo#Z9Ow zR7ys1n5o)mg?~mGQ0*SXRmrIq_{tT|-iO2D2>J-zC7kPL>!r#~PpGz~IFnQALOyKa zq`pyKClRZr0)}bs+k_%E$2wVE>p_~40MmY7_3|RtVeBaPfOB3)%Q=zbR$wgD8l-GV z>{@j(PW$b#sF$jri*`!BCq$%#W19pkEDi!CSTM|7x=Nq^5mI&xBPdSsI^wLN)x1gC zj)%i)>6gWq8Y{}m0%s*9gRro$)BuA*N)a1eY?mQInmdpfGsMr5=o#fu*V=#tCAHmb zyCglDv&Mc}R3_N?ipOT+wY$0x=PvbpTD&P-30+VgHNp^nQ$p1BMPSiq-O9v5XNq0pZ{=R%}$9oPeuGgLI% zJdWY`Bd~e^RntXkiohY89#tC$l|8)msm5V^LE8!DjcE*fqkCl35|Y^XGC;4xb3XqsUl^)AwPrRC!lgSmVrO`rxKHD7R*-_)Dwlr6YsgJ& zRG8Ovtut>ApVc^E+aV7o<2+t?bgt@Izc4M!j6?2ePJV7lg0F*u~=V1KE$pj_<+J^et^z3P6YC^xEwpim3 zzn&y=wrrbLL)|^BX2IWwN?zLG$CahQ4HX@Z3kR}QP?4P)9qXw+C|#BIL$cvv`BaV} zWW;$TRrC1xvFt9%w>Ae=+JQKna)RlVou&=u0>%GV_!XtM@Mou=aPFw;ftFB9!!a(D zSs`dRwAB3}_OOEzh#iLlE4Fr0$EhUHRXsW)&sG!5 zl_eHl@={gSmjo;|Nm8=1{MI~Jij-`&cqc55M9%;sKW1V`$B?B<8sqA$E9^>yrEA!v zPW2hgQj3b!DUt9i4PK&_lkz9E9+r+RrRvsd11sycKscyoexXPneQ~_Q!B(8CuSQ${f zPtP--CcMHnCu#G1H-b3ztYJ|5s^M) z?vw;MhgA*r**GxT8EM$6nsi$~q-t|1CVSFP%U1Fk%i(ZpTc32S_&F&_^!w^X>e*hR zpEv;>zZ4p3oa=RoXiywkc@rgQL3r;>+F1)d@H5 zt??Kicxdk)?#J3ZtbnWK78VJ7c!Ky-eW-Dc(y|roQH0FUrG)W1t;)rOGKF~|rw$>r zmopT?HU5FwxO1JI#a_e<_&Rypfp}(S6gKC*pGb)+PjZu&eprGS7?+7~o-44BREZ>m z?`T8aqu+*09arLKB@c{4SH(EEs*>!HhD=HHCv1zPD5`)0>-HkHw5+TIR3rUJ97rPi zuzs^sxM4+~>MLlOHW4FBeJB1ttV7e?t5UqA`@~(TgKa6YiMOhCMuqp4F{9}y8JtE{ zA`!=9mRQwH%j1Ol3RQW$O&GEX$NL60H>Mawrhr4XwGSqvo>leA3l+!;J8JN4IEF2C zu=H9vu1zB+@XK^F-|%#B%~e$#ZS}oeDc;4=#P?t=UQ-O=<$IWg)Qz>mR9K^if^XHc z>E_#I0g)mTlrr8IsZmZ-SwW$|BqjjI?IcO0@?4w=!@hg*+O#y2m>H=t*iN7?b;e>T z#;*xTQnvgcj+YE}^|-?TvajxIJ~;4KChWKcOuX?Ec5gY)j=i-!Xttu-+oRqwkxE`9k_ysIb)4FhfqmKQ46D3WIXrMpbBNNb(ydx`K@+TWZ(nC1p8o$d?-A0vjsIkJ9 zTSeDG{sz@cM-&TU60DKe(m+&6Ut;MWzX;L}mf}2~9$uDOYwe9`ELebB5()=ufJihWlND27YJeN z2%BvPD#K}YPo?AZE+iCsd)s<&%qMIPnNXaOChSTemNzE3I37Pg5pQ$SOokj!-x8xm z*3`NqH8x2=D#v==%RVbMWo|Fjyv5Z@SFx9qgNUUzISd|`D2b7vhWxx4e}^>6o->og zhrf~OkoWdh*R`Pra-0w^4#1I}s#R88aS6`VCH_({*4GC_!QoWhZH5%yGk~2#n-yUz zyv7mk+ERMrR1X~3D@$vvZxg?7=}`5eD;37!YVo$`@bb}sF-$#JK1 zDs!i)c4u$80v^(|6=G3r6m}vtaY@Jz{QDa8NjbM~s=lpO1P$ZBt|#il106kx6C6e@ zTSL$dFCx%m)UsM5frr}WOD17qWGk1tLZsHC*5*>=O$WSN7DpdUd@PB|X`T28r?pAf z9l{F_W$tj8P0}l3+jL82vHBfz2=C!w7y>(tiSEjGRlOfVatu^BlF&=dWyOb6{~~}C ziWAm|1eyk>z6e=U$oi{Rbd{vSA6+pM3(xy_3)6BrUf}Kyqhj=xMG3ld4;ETMIXnaq zUMig8(U$}&>x=5;nXP!;&R^oFQjwfG(I<-HL#*MXff>K}CBGo!mo$X)>+7pyC^Snw zU-FQDqD?4IplEf%ahQ6-rknf_}m_1 zEb{oZk~Np5sfkXBQ`a4G*ofdnRiS_W-Q054O1FtaS|^i8x7zIahj{b_K@yv>y@B`K zSI11XO}86Wb!f@vtwzb+rp1mU(2jE@0EH0YUnv+r*Vzfj zHGWyPLw&^6rSPElsFSWwp<>{bmqj6`);DWcIvMQ6gDG?aN^v3j69mC+9<16-)pdNR zEWid(+)Ldd<%yO60S&4cz#%Jt-eq%N8wqhc#Y!(L}X4D|x;2$38tow76VoFYO6gKc1G; zGGKq_M!X(SAGJ!->-bO_<{0l5t6IM%&rrroFp_S50EGlAI#-4p2WMOUg_k1oJt2b+ zbt!&Dm{u*|wsE{%qE?k-5eMR4OdDRL9L6S7PkmS|vg$x!IMB3Gc4mi2IWNqk(wEkF zv%(rXnQ=Voj>rGl(mM@<$u0Lxb2_RglJd1MenIy}mQ0xU$9-JFJ{^3RNPvBLrJPk|Ak_97%Kb!T~(dmEn!OIM4@E zW9EWi6KAjQ_18><8u)}b{YqjKmTLaJ4IyZcuJLm$m{_UW)hZ|AtBO%TBWf-na0U&E zf@SvRs^<PtXN{uz~Xfp&h^V;n7;`*bfwhB-@rlI3yR414X55bhX*6z zt7^RIO$xhOZzPJ9Om&NtWm8{>HOcJAQwO4s@@kS)15LKPo74WQ_HmP9$4Y0n!j7b` zJmYY^9L^nz-{lxPY8hi}m=bhTk1NS(7nkiIf$B%`+)~^mqeu-%MjIZXb=D{Ob8=>@ z_UbBs&A^IpO>luj)gqjFkdD0VgxW85f8`HCV2s9cFx;98gT$k%epY475?ZRx0@#~V z5+@9E)>rq&VOwgXMcz=1<68Qica>Eea%;A18f7TY=20~*7@c@=`lcc&-I4Lt2EB3R1WKRzuCdHPjmDBIe>&BK15VXO<6WSnY?fj# z$!Nnd8lTA9^y4k^sgo0xV^B5nCpp1eT|)q27qL=oR345gRx2$;*_=`S*<43 zxDT%n=}G-5E-A?1G^musV0WqhboH;G&Q#ya^pdVEI)qskA(4<=w&>Pu5y$ z5tqY2*Dd>!$%!B6tI9QOy{wxtRYJ(G{I`WLAza7|!}0%fA?dV{hUItq z1gxB%9)>{V#WmGsiX^s3AsyuivGo)LJyx5m2dRhZKBnN>m4yFpX5KiYg=j) zf3sb*T|ndeqY6c#E#KkKSXb^7x?AHv!MCFSBK#g-@|%9r7V;_nPk(15Zj)g0ThcE6 zl>R<$k@O?I$GyZfxs_ntBK|#nU-C)5=l?V91Xn6@m;T1Bw8t2a?@2iJZS`}~j_;4D z)VfFePVP&8PVTJrTbiD>s6CeCZsp7Wo2HchRwyR-r+bO?F_?~1A6N<@q2@eTX z#pE;pKWUlflyPkzQ%ZVH+Qi?*KlK~^l<*h#;9I3XugqWEF8-lPkHOe-oU))!!4ue_u^G?lb8j z_TPbU=r^XPZQ@TcAKHh~iGSDcl23Xk_paY1c>G-&spc;3HEzGsPo=M|lfG*4&J>eT z@SW8y1W7p6-{Q~wGx6H|;^`kyfuehdlDw563?F{kpIey*k)BQYhtC%#)z zy+8gvxg!t_z4-6qHcW?q*IszkdPj1fQjFWh^y52{&q=%VZ!taYHTk`|A3^y0@PWpb z^sFtD&(g2n8PiDUFi+JKlRNb{r5W>5aKQfoB&J-621UmA(|W$N+o z$^G14f+p>_k2D|toA@(ROzsd=t^|?a5=1}gx5~M;P5zbNxPACw^y2&YXWTZSz~Acc zOhennc>1Trp_oqmQ(DOHF%7;y=2X8|S}}$Alin|P$4K&fd|&)Cxi?1mXZ)?_MB2pP z#lIyZiIKQ>X{mR_i2oelk+e#Fi|>is@K5C-<|er(`7Pa=KP7EqZqi8dN$-k3$3Nq~ z_2 zd^J9vEX>=rNO-+`8DF<2?Jtv(j9odx|GagKM$stYW7K|z@Dr*10^u2IAH65(cW1(z z2p^Qe*;U`7?WOLs$Ep~G>#6+&;RPC3nehLn z_LGF4Nca@tZ8Trggx?)c7JkkU{#C+f3EzkGVUFowVx+^Ka#@& z;cub#i-g}q_!8j@L}!`s1BsvL;za*{LGxZm_-{y_8N%N6a@B!kpnegw>cv}d6JK?Q_OXQEQ0^y&f_T7X(O>!<0{`;5+evT0S zIg;Bb;XBiK#|Zx<^*c`Z8%RGV2;V?-%7i~ebHULlc;?o;ZM^%HW9v&`ppr35y_{SaLG^OtA+48Xk4v?zmn(_ z2=6C;x(Ppr?6FArsWk5+gf|oaqlC{9K1TROB)4(G$En{5!taX*i=Sn}cO`t1@Xdrz z5#B~}m?nHTYCl8x6NJwaely8!j_@~-eC7$?o#-qO{w9XJ{%-1bg79{d zTbc0V$j?j?z8A@Jits&%&NSg?(LBx&{te=1mhd-F`#Hi7BKgb{{y!v#1;YP}=r0m} zEa6LpA4z(zJc%w!W#)ckN9sQ z{AQY$9N}xI-)6$ULUdXPe>sh-mGF9!LxJ#N(w}a^7f3&gglCA(2;s-kct;68ipDiY z_&13Eal%K5p9#V*CHiH;U!?I)5`F>c=M>?ml02sgf0WwK5dJe7?=0c<)bAYOoiwg_ z!uKILED-)PlJg?rj}x6G!p|UlneZcs&*-v5|EEZ9b%ftYbTWirNbTzhe>ur5OZcrM zhX%sS)V`7MI-=i1_-jcHIl}KJxiu4h0*$wY@ORRCv z|09GClKzYm{vqmjjPP&Kc*hApm-V0UM~Kfd;W?r+N%)tEpDDs`r1sNwTM*K7qzBjdRBK#zhLyqu25Z+AqB#o;68;s!M+iTT_#7pC3(0Ma@ROPvCIn)t;DD|5m{CwiGp74(no+W&i=r<6)Kgpqy@V8O>Cc-~T^PVF-PyIF%{sH2@ zh42fBPAlP$5uF0zza%={gkMMVUL<^9!bb?-kML2#vxJWk{wd;Tobbztp9#W`p!Q|L zFQ@jCgb$MZrwCt9dNNJ;2+^M*yp7t=5|1r;+f}h)xsXMWT}< z`~c#!ned0nAGQ$QN&U7GzLxqe5WXk%+f8@_;YGq5soxR8FC~1G@B@keF~Scbe4Oxi z6P*ddTL~`{ejtr&lJG}~{uJQ{6FyD&7NRplxa=p#*DT?mCqFhv`1c8)Cww=ezd-n1 z)P9lh|0H~g@ZXUfmI*&3W>S7$ndtwagx3+?MdQj4ege_2C;SIQCrkMG#AgHHH<3SS zBzy;-d`n$Is7(03QTs{44^Ns$Q-lu_|I>uuMf}eYK0tDqCHyCZ z&k_DN8rMAGM-V>?gg-?1BH>RFKTCwaituH^2S^UlRf+x|N%ZRozlh|SA-taTpYYwO z-z?#MM8ARX^T;k53I90p*+lp{qMsxDyVSm!@MnpB3*r4lry2hkZN{Ewt>V}##G{EQR+QR07s@S~`GneYz6CkcOm@F~K-L-;h|12pe5 zgg;2~pC$Zdq(5_n|BTwt6Mg~7VS(^Rh@VBmo2dN~;p?dVGT}MuH+p@d|96v}))D>@ zqMsprp746YkEVXJgx^l|8wfw0_-Q2kE2Jk)gujp4=LkQY+BXy4Nqn{t{y(Ijt%P4n zd=>~FC%l{RJxL#mgy%>4#eB>X1g zbBgd&Xa!ncro771UXd08U-7er^7@U_He z^oB(LkD>N;gx^MdW(a>d^;=K)o;2Pp;eV%o8wfv?#??sp+0?#?@NI~n9N`;?PBYL`6JVW?dgx3@P2g0+2HxS-H_;+Z28wvj^$+L;@ zUlW}i;o|gtt+@t%To9@+lDhbHcj`e~Rc734aI8%Lw6rB7GPo{CJ{2 zM))%EKTdc%;S+?POmZs|ejM>LN%&`o|0%*BWc_EH_?#j9avIkx;m;C2M|gqtpYY>} z&jrG-COV6R-%5Ng5q><`=`!IzB>6=7ME`$Acpc&Wgl7nUE6Jgr@c$-0vxJ{O<7y!M zt;A;|;jg6jO@x1r=;sJOl;qh=_-~0$3*pT)@2!L%NP1Nud^h5=oA8~94qk2)dK2g> z>UV_jt!chS2|tbKj}hKPbjAr^qJAd`e;Ls!6TTnK<0RofB7BPQ>xj>3!W&6GGlV}y z^D;~Ln@CUQ2>%(;pC|l(X-V}I z&lKS;qz}`Ce~jcjL-<|9|19C_h|V10A1D6j3BQEsED+vC<60!Vf!Z$-UPt{d6Mi=J z8?|+Z*%J|*O!HVr_$h>E2wxz1))Rg;&2N_Qf05i82tS4JM#2vu{+kHjf%?r6UZ#0$ zCj1y`-$HmJ_1jAL7LsRy@V$vnH{qv}e2RoWO8krvzKQxBCH(tDXN>UE2p=bWKjL$O z@COJl6aHi3f0FPb;ZuY^Nc>L|zBlR54B>C0am^C`0O50l=V)B>gqI0lApA2lu0_J% zMD3RdKb`Pp!vCA>DB6(d{~M@%9pPsXo+12B((`)44=26N65dI2Yasl$B>zUj&!m2v z2tSJ2=Lo-q#??&ttBFnv;k%POTM55|=obh-k@)W>{0gF9B>Yt3XN2(gliWrL|0U5G zBm73vpK-#^qV^MnUqny+!fzexQ~5Z**|%7ouea+@Ul0@9Ny!p|W&OcP!p zer5>&BDJ3-d=rg#j_^66Gf()rL}!8UchGnj3Ez{(yF~cUXug&SKac1~9o^xRsKQ4` z4t0bdMto)nf0FpAC;Y9{K1=v(sow^|44zlPSXAN%%D3FDE{mZ~T2-^UbS2SUMzX{{Ni4349b)_QzYD1dWJRtDqUirNxK= zQ4`z}7U>QNRAUDs$TA2TK@m}h7`p{gw57X&qNX+O4x?iR#|?ER!ze=3P7@>n9JR#_ zVU&nlRl*WcBLpSy_dC^{1$6%JJwG#~zO~%C%em*CbMC#>k+{EyxgEP#w9s3b>+MXm zU;H30wV(Yk{#DO#skhcoCT`Y{i8akoiWdTDXGDo@`YK&mmKS ztV-b-Waiuo3Qr}o#;tPU@nqJ7RVF-!dDoYuJB+ow>VlZ;eq7i z$WGyYWNvM<6yd&PmE3X&C(b^R%q>|~qi|0$wcOIt0sa1EJDSFK#( zRb(zrwOqn0$)}N>!YjyJ`erG@%gJ2wX0`mn@;^v+ksF1VkkP($Y+tO zg)7L}|@!ZXPI$wA?%eW(&`;s{&YPI|?St~FC%-%3E@TLLULSq z0eK|3TDXE-M6ME^LoOy)3eO;qA_s-1l1G!vg~yXMa+&ZLGKYGrRJf4LA=q*Y44keaTxF4CS*;0i2lBtrdmNsdBaw)k{xF`7vazZ$bJf0jEZkr39 zK&}?vN4}C=CEP@wNUjv#NuERw3U4D%CYK9uA#*C&DihvJrVC@03fGZ2SAAkQRM z3s;b@BUcH}Azx3f6rMqzMGgv2CEq|U7amXM0A!U3k0IYkE)^~$&mp^ohmda~=L!!d z-%NH14T7m%MOR|{8=|4yzFocnJALa<1@T@=Iiw@Idm*WT$XH@;}Ima9{F2$t^!f`;)85 zjlw<2{~{-Z)5xpHapAU`!T%;#3-2SpLaq{SBEL$m6y8Z*O%4igBfmy27v4f%LoO5E zOkPVa6|N)Kkln&HYTu9zb zb_)+7zfH~+9!&lZ*(E%X{0`YE+>iV&SrP6_evjO;PuicHAU6v4B)?Bi2&a*^kmJH_ zH-SGOR}1eWe@LzpZX$m~t`y!${+JvT-bVg}TrRwYyp>!gyqWwdxm380yp8M@t|4zH z=L)YP|Cj6%UP=Cp>=a%>{+z4`FDLIHw|pnpu6rM`{mRv48o@|oKgvXFAa;b13xryu+9zt#==L!!d?;^W| z2a`trIU$@z-baoLx6J{6Pp%f;NB)6aCEP^* zkz6UfliW%U3U4F-L@pQJLf%g<6W&ZdKrR)oBe#*=!ZqZBw4st?x5t&N_thn$3GC#p$RSQ>;GssoKbI3i&mBKT~ zoZ7X5!c)mdlgow2lQYR>!ehwCkV}ON$vw$#;UVN>$+^OV$-T%f;eq7i$WGyY4OxF7j^vLf7< zd;z&-m$W}Qm)t1alblCR2&a(;ljFi|2xiQ_kX$Xik9-liO1O!9F}YHBC;1X`PRIA-srONRA6HAde(h3s;bf$W_8~$i?JJ;Thyn0WGN=5la^dl0 zja()?hU_Jm3Kx>ckln&V$d{9Ig$I*;WS8(jatYZf+>gvD1xpd`OCCpVX_EFQmy#QW zdy*OIwi3c=wx!aK>6$U)(4S$q;Z@{mWS8(t@^rFOcm?@tvLd{kd=0t9lJ+Mv#BMbTFC$+| zP6#g|&mhNz7m#O?tA#7b*O9A)=a4zIY*h-+AkQKPg{P8lAeRe|Co|w|l?jg_-$*VM zE+o$(yM>34ZzAUk4<_GCb_ow8-$Hf@_apz2tO)ld&n35*(*ERfa-(oh@~z~Aa2mOS z92ahz1?CoAt6F#;*-x$#ZXyTBmBKs8x08dy+sItXW|a$XASuk?$hAgjbRmlAXdU$aj+!;pJpb#ab=jO8b+8>g6?n}O(-13dIKe>|JDBP3$068I?Mt+bS7jC;A{1CZXcpv#; za+Pos`4MuZ@J{lh02@?+$3;VtCH$z{Tu$$uu73fGaBlik8K+rIlb<5Dd@b!yt|B)IFC+hroDg0_UO|ovFCafnt`@E!|D9YVJcs-Y zxl(ur`B`#Mcq;iha=Gw$^7G^};W6YF$fd%CkP($m_|~!WHDV$W_8~$Q#I&!ZXPA0Was#=qtEew&;tJed3+vP*a%`5m%TxF7jlvLf7<{2sYwr?fvg zL2eZ8Nq(Q45Kbd+A;*Q=W`aK;R}1eWe@LzpZX$m~t`y!${+JvT-bVg}TrRwYyp>!g zyqWwdxm380yp8M@t|4zH=L)YP|Cj6%UP=Cp>=a%>{+z4`FDLIHw|pV(Pi`bP3NIsn zK~4xSBJU)}g%^;&Bv%VpkiQ~V3C|&aO|BH4LH>pu6rM`{mRv48o@|oKgvXFAa;b13 zxryu+9zt#==L!!d?;^W|2a`trIU$@z-baoL zx6J^5Pp%f;NB)6aCEP^*kz6UfliW%U3U4F-L@pQJLf%g<6W&ZdKrR)oBe#*=!ZqZB z=IWD|_oKCJ5 zt|0SM*H)GA9C8nGrSJ^$QRJZTRPxc}a^dl0e%i+>6COi8hFmIKNbX5?3lAY5OU@M@ zOzuT?2@fP6M|KMLBlA^$c@6w$Y+uh!i&iL$Z_EX zWNt~Zs)Z}a+2ktWIpnj+mBKT~{mDV$sbqe_$SM~ePv%xMt4w$dnM<6kQsF}KK(bqS z2$`SEvvP$8les0%atRM4bIX9`6z)eppR5S?C0{^p`LDD;nOjJ#M&X`hF4?yd!fE8e z=Ir{9!_=&uOM^jtEC7pCyyYvY?t;YyUC5h%g7#bLU<9m zkQ^6YKpsi17Oo%{k*kE~kc-Kc!ZXO+nrH=ur;JaN^TVHN#<4;DS$q;Z@{mWS8(t@^rFOcm?@tvLd{kd=0tfQ)z!Pmrz=b!pq3lk`uy<$TP@s;RWQG zs$mPQ0$y{J&l?jg_-$*VME+o$(yM>34ZzAUk z4<_GCb_ow8-$Hf@_apz2tO)ld&n35PmG&o>lN*J5l5Zs^gwx0s_L9TDXE7CRYj1AxFrS z!ZXN=$wA?%C;qm09&X@7Dhxly<$`2li5IF0-uIWF8b9sCfvT6iD%VR981>o2o3{ZK=X$(8*T z7+H!Iy(_zy`OJ>?b}Yv{+h_C`_;i0oU*}m{zIBvRgU6KEzzjvHJ@%tfN?zQ20+Nj7 znpx{TS9r#&eL=tw>5=r=ObbS-Z6(@27N0tr5LaYhT~|PkGd*e`Ef`e)Yl5nD=1>(~RNY z{tY?l@iNYuy?(?yjf;7lw<&K+ZOfyx74ustdfZmYlUwpy%~SA8Bbw1C2*$l9RP|SC zxAMLn5C{}53l+3|l!8p&$As7AZHW~lZ_Pu^`?jVlk$B)TJaro`A1!D7&7F4H z2H~;ExaL{wMjG-kzpI`q*ngn8YE|a_LD=L*pUS6@%*=~lj`mm9pt$$Y5mzEx)Z#jA z-8boak5ifcXas7ode^JJ6*x;XPTP+Rn8)Wx`6j1Bl>wNW6T=wbTnm2sd-X0ph6p1>1*Z$Kdp>K~iKSWNrUfMG` zZ;NM=XClP&&5?&jDHF7NcX9EKepmJ&P4{QJSm}ebD2}evjEu8$a81+0*-P;kb#$Ic zoW9;)V$Ptpz|CcvUT^jwAZIQV@62UvIv+0#%J%46Ys`bA6b5i0p_xcy0BXU^_y~2! zbLL8{YGFE4DF0~SCTRIcTwkw7dS|jf<4Ww!HKUZ`yxpGKjY!H9d(|R-WsZ}#;s$df z27LQgX4pLH3ueckJw=Po&(!qwOj^@((I0sJ&dk^p6y0>p~cCX?eCU#i8fW^(ILB*7Zw+b*#A@|GjcA)RqZ z$9(WtFAd_QdAy|Wz@2@FYhXPCO&6>rWGc&;;AFl^SwhVm^1l6wQr0;Nd}a29vCB># zt(dp|#EJ}@tgbG~zA$8t72ycb_GHpLba1Wz!O7kl7 z6qr|UvM>*T^9yG7vQ45bI@+jvQ99_<%**x;_sES9I@@ONE&g0R3 z9-W0FyUlbMYpC>{OZzM4o0u}RI|Aj@Znd=tqiV*L*%;^3tU72b-25_bwwvEv#zz{I zJCQZ(@3?AOFy`%)FOZbkt&E{&1(NaV8)Q{HQn(2zG~bVd3LY#rKfu?24{zOTkhHn& z=ObHplw^|v_a9iE>_l0ygOD_HdP0J@V?rZ4L z14tpZnt+tpQbWrw(6ZD&ox*~m*W}x}V2`;-DhwxLOV|qO(j76b@Fq8JGRu;8xMP3f z9bcfMl|**?^x=;!>96>YMJ4$3J?0qr4y5QuFhk5$H8~yj(H6| zHsOvQOz0ny&;;zm@u2|vUJS>P#r+jifmiA?ZWi_D)AyQH@G7ARdH4tnbTbZpSRDDv zUlJRfDvD?Aiyeh@A#D_G0emrAoEqVU*f}|oIl0x&$*m1NMj$6gF(=u`N$snw{2x$W zZV2kl3Y9jxs69d5!B;S1C1D3zD&MlsHnsWxS&i!uB+WL;HNPQO~la_HPS!uCT zn1|i(ur}0))kbN0?dtxrk<)qt_$x{O6HSJs`+L@I>z=g6q`AEXnZ1aeH~yEm(@haL9`WUu*nyJVpandUr%Z(vTqj%^QEc8#ZmQfuh(W7yWS6uvi; z%0D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

  • +Z!*?Hr!XiRhR>Gl!zxT%4&BtHK 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 +Q(6@uW4|KKf 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

    }4v4Da@6 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
    #1!Uq;WLF2=CfF5g*Y4cD=YNmN}YbY!E~ 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�`yylmD^tTQ6|exPcg7ax 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%0D-T|NGFMEf%B9VH>JM@)wk7oqo6m@ntw^K*UbCKl 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

    qTXUVe-oaC$9_5+UgU2h#rpXn@YbZr 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 JNZP-Q{U@%e=I{Uj literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/bin/logresolve b/rubbos/app/apache2/bin/logresolve new file mode 100755 index 0000000000000000000000000000000000000000..e658dc233d633e4ceeef5236f7eb40f806d2f397 GIT binary patch literal 29935 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 MRlRQ~PN4$*Z;9WVa{vGU literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/bin/rotatelogs b/rubbos/app/apache2/bin/rotatelogs new file mode 100755 index 0000000000000000000000000000000000000000..9775a25e25735073285e924117b8a61ae86ae015 GIT binary patch literal 26569 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 /dev/null`"; then \ + $(RM) -f .deps; \ + list='$(srcdir)/*.c'; \ + for i in $$list; do \ + $(MKDEP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) $$i | sed 's/\.o:/.lo:/' >> .deps; \ + done; \ + fi + +# to be filled in by the actual Makefile +x-local-depend x-local-clean x-local-distclean x-local-extraclean: + +# +# Implicit rules for creating outputs from input files +# +.SUFFIXES: +.SUFFIXES: .c .lo .o + +.c.o: + $(COMPILE) -c $< + +.c.lo: + $(LT_COMPILE) + +.PHONY: all all-recursive local-all install \ + depend depend-recursive local-depend x-local-depend \ + clean clean-recursive local-clean x-local-clean \ + distclean distclean-recursive local-distclean x-local-distclean \ + extraclean extraclean-recursive local-extraclean x-local-extraclean diff --git a/rubbos/app/apache2/build/config.nice b/rubbos/app/apache2/build/config.nice new file mode 100755 index 00000000..b02ccd1e --- /dev/null +++ b/rubbos/app/apache2/build/config.nice @@ -0,0 +1,10 @@ +#! /bin/sh +# +# Created by configure + +"./configure" \ +"--prefix=/bottlenecks/rubbos/app/apache2" \ +"--enable-module=so" \ +"--enable-so" \ +"--with-mpm=worker" \ +"$@" diff --git a/rubbos/app/apache2/build/config_vars.mk b/rubbos/app/apache2/build/config_vars.mk new file mode 100644 index 00000000..c9147f51 --- /dev/null +++ b/rubbos/app/apache2/build/config_vars.mk @@ -0,0 +1,150 @@ +exp_exec_prefix = /bottlenecks/rubbos/app/apache2 +rel_exec_prefix = +exp_bindir = /bottlenecks/rubbos/app/apache2/bin +rel_bindir = bin +exp_sbindir = /bottlenecks/rubbos/app/apache2/bin +rel_sbindir = bin +exp_libdir = /bottlenecks/rubbos/app/apache2/lib +rel_libdir = lib +exp_libexecdir = /bottlenecks/rubbos/app/apache2/modules +rel_libexecdir = modules +exp_mandir = /bottlenecks/rubbos/app/apache2/man +rel_mandir = man +exp_sysconfdir = /bottlenecks/rubbos/app/apache2/conf +rel_sysconfdir = conf +exp_datadir = /bottlenecks/rubbos/app/apache2 +rel_datadir = +exp_installbuilddir = /bottlenecks/rubbos/app/apache2/build +rel_installbuilddir = build +exp_errordir = /bottlenecks/rubbos/app/apache2/error +rel_errordir = error +exp_iconsdir = /bottlenecks/rubbos/app/apache2/icons +rel_iconsdir = icons +exp_htdocsdir = /bottlenecks/rubbos/app/apache2/htdocs +rel_htdocsdir = htdocs +exp_manualdir = /bottlenecks/rubbos/app/apache2/manual +rel_manualdir = manual +exp_cgidir = /bottlenecks/rubbos/app/apache2/cgi-bin +rel_cgidir = cgi-bin +exp_includedir = /bottlenecks/rubbos/app/apache2/include +rel_includedir = include +exp_localstatedir = /bottlenecks/rubbos/app/apache2 +rel_localstatedir = +exp_runtimedir = /bottlenecks/rubbos/app/apache2/logs +rel_runtimedir = logs +exp_logfiledir = /bottlenecks/rubbos/app/apache2/logs +rel_logfiledir = logs +exp_proxycachedir = /bottlenecks/rubbos/app/apache2/proxy +rel_proxycachedir = proxy +SHLTCFLAGS = -prefer-pic +LTCFLAGS = -prefer-non-pic -static +MOD_ACCESS_LDADD = +MOD_AUTH_LDADD = +MOD_INCLUDE_LDADD = +MOD_LOG_CONFIG_LDADD = +MOD_ENV_LDADD = +MOD_SETENVIF_LDADD = +MPM_NAME = worker +MPM_SUBDIR_NAME = worker +htpasswd_LTFLAGS = +htdigest_LTFLAGS = +rotatelogs_LTFLAGS = +logresolve_LTFLAGS = +htdbm_LTFLAGS = +ab_LTFLAGS = +checkgid_LTFLAGS = +APACHECTL_ULIMIT = ulimit -S -n `ulimit -H -n` +MOD_HTTP_LDADD = +MOD_MIME_LDADD = +MOD_STATUS_LDADD = +MOD_AUTOINDEX_LDADD = +MOD_ASIS_LDADD = +MOD_CGID_LDADD = +MOD_NEGOTIATION_LDADD = +MOD_DIR_LDADD = +MOD_IMAP_LDADD = +MOD_ACTIONS_LDADD = +MOD_USERDIR_LDADD = +MOD_ALIAS_LDADD = +MOD_SO_LDADD = +progname = httpd +MPM_LIB = server/mpm/worker/libworker.la +OS = unix +OS_DIR = unix +BUILTIN_LIBS = modules/aaa/mod_access.la modules/aaa/mod_auth.la modules/filters/mod_include.la modules/loggers/mod_log_config.la modules/metadata/mod_env.la modules/metadata/mod_setenvif.la modules/http/mod_http.la modules/http/mod_mime.la modules/generators/mod_status.la modules/generators/mod_autoindex.la modules/generators/mod_asis.la modules/generators/mod_cgid.la modules/mappers/mod_negotiation.la modules/mappers/mod_dir.la modules/mappers/mod_imap.la modules/mappers/mod_actions.la modules/mappers/mod_userdir.la modules/mappers/mod_alias.la modules/mappers/mod_so.la +SHLIBPATH_VAR = LD_LIBRARY_PATH +OS_SPECIFIC_VARS = +PRE_SHARED_CMDS = echo "" +POST_SHARED_CMDS = echo "" +shared_build = +AP_LIBS = /bottlenecks/rubbos/app/httpd-2.0.64/srclib/pcre/libpcre.la /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/libaprutil-0.la /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/libexpat.la /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr/libapr-0.la -lrt -lm -lcrypt -lnsl -lpthread -ldl +AP_BUILD_SRCLIB_DIRS = apr apr-util +AP_CLEAN_SRCLIB_DIRS = apr-util apr +abs_srcdir = /bottlenecks/rubbos/app/httpd-2.0.64 +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/bin +cgidir = ${datadir}/cgi-bin +logfiledir = ${localstatedir}/logs +exec_prefix = ${prefix} +datadir = ${prefix} +localstatedir = ${prefix} +mandir = ${prefix}/man +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/modules +htdocsdir = ${datadir}/htdocs +manualdir = ${datadir}/manual +includedir = ${prefix}/include +errordir = ${datadir}/error +iconsdir = ${datadir}/icons +sysconfdir = ${prefix}/conf +installbuilddir = ${datadir}/build +runtimedir = ${localstatedir}/logs +proxycachedir = ${localstatedir}/proxy +other_targets = +progname = httpd +prefix = /bottlenecks/rubbos/app/apache2 +AWK = gawk +CC = gcc +CPP = gcc -E +CXX = +CPPFLAGS = +CFLAGS = +CXXFLAGS = +LTFLAGS = --silent +LDFLAGS = +LT_LDFLAGS = -export-dynamic +SH_LDFLAGS = +HTTPD_LDFLAGS = +UTIL_LDFLAGS = +LIBS = +DEFS = +INCLUDES = +NOTEST_CPPFLAGS = -DAP_HAVE_DESIGNATED_INITIALIZER +NOTEST_CFLAGS = +NOTEST_CXXFLAGS = +NOTEST_LDFLAGS = +NOTEST_LIBS = +EXTRA_CPPFLAGS = -D_REENTRANT -D_GNU_SOURCE +EXTRA_CFLAGS = -g -O2 -pthread +EXTRA_CXXFLAGS = +EXTRA_LDFLAGS = -L/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/lib +EXTRA_LIBS = +EXTRA_INCLUDES = -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr/include -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/include -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/lib -I. -I$(top_srcdir)/os/$(OS_DIR) -I$(top_srcdir)/server/mpm/$(MPM_SUBDIR_NAME) -I$(top_srcdir)/modules/http -I$(top_srcdir)/modules/filters -I$(top_srcdir)/modules/proxy -I$(top_srcdir)/include -I$(top_srcdir)/modules/generators -I$(top_srcdir)/modules/dav/main +LIBTOOL = /bin/bash /bottlenecks/rubbos/app/apache2/build/libtool --silent +SHELL = /bin/bash +MODULE_DIRS = aaa filters loggers metadata http generators mappers +MODULE_CLEANDIRS = arch/win32 cache echo experimental proxy ssl test dav/main dav/fs +PORT = 80 +nonssl_listen_stmt_1 = +nonssl_listen_stmt_2 = Listen @@Port@@ +CORE_IMPLIB_FILE = +CORE_IMPLIB = +SH_LIBS = +SH_LIBTOOL = /bin/bash /bottlenecks/rubbos/app/apache2/build/libtool --silent +MK_IMPLIB = +INSTALL_PROG_FLAGS = +DSO_MODULES = +APR_BINDIR = /bottlenecks/rubbos/app/apache2/bin +APR_INCLUDEDIR = /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr/include +APU_BINDIR = /bottlenecks/rubbos/app/apache2/bin +APU_INCLUDEDIR = /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/include diff --git a/rubbos/app/apache2/build/instdso.sh b/rubbos/app/apache2/build/instdso.sh new file mode 100755 index 00000000..bcd96fff --- /dev/null +++ b/rubbos/app/apache2/build/instdso.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# instdso.sh - install Apache DSO modules +# +# we use this instead of libtool --install because: +# 1) on a few platforms libtool doesn't install DSOs exactly like we'd +# want (weird names, doesn't remove DSO first) +# 2) we never want the .la files copied, so we might as well copy +# the .so files ourselves + +if test "$#" != "3"; then + echo "wrong number of arguments to instdso.sh" + echo "Usage: instdso.sh SH_LIBTOOL-value dso-name path-to-modules" + exit 1 +fi + +SH_LIBTOOL=`echo $1 | sed -e 's/^SH_LIBTOOL=//'` +DSOARCHIVE=$2 +DSOARCHIVE_BASENAME=`basename $2` +TARGETDIR=$3 +DSOBASE=`echo $DSOARCHIVE_BASENAME | sed -e 's/\.la$//'` +TARGET_NAME="$DSOBASE.so" + +SYS=`uname -s` + +if test "$SYS" = "AIX" +then + # on AIX, shared libraries remain in storage even when + # all processes using them have exited; standard practice + # prior to installing a shared library is to rm -f first + CMD="rm -f $TARGETDIR/$TARGET_NAME" + echo $CMD + $CMD || exit $? +fi + +CMD="$SH_LIBTOOL --mode=install cp $DSOARCHIVE $TARGETDIR/" +echo $CMD +$CMD || exit $? + +if test "$SYS" = "OS/2" +then + # on OS/2, aplibtool --install doesn't copy the .la files & we can't + # rename DLLs to have a .so extension or they won't load so none of the + # steps below make sense. + exit 0 +fi + +DLNAME=`grep "^dlname" $TARGETDIR/$DSOARCHIVE_BASENAME | sed -e "s/dlname='\([^']*\)'/\1/"` +LIBRARY_NAMES=`grep "library_names" $TARGETDIR/$DSOARCHIVE_BASENAME | sed -e "s/dlname='\([^']*\)'/\1/"` +LIBRARY_NAMES=`echo $LIBRARY_NAMES | sed -e "s/ *$DLNAME//g"` + +if test -z "$DLNAME" +then + echo "Warning! dlname not found in $TARGETDIR/$DSOARCHIVE_BASENAME." + echo "Assuming installing a .so rather than a libtool archive." + exit 0 +fi + +if test -n "$LIBRARY_NAMES" +then + for f in $LIBRARY_NAMES + do + rm -f $TARGETDIR/$f + done +fi + +if test "$DLNAME" != "$TARGET_NAME" +then + mv $TARGETDIR/$DLNAME $TARGETDIR/$TARGET_NAME +fi + +rm -f $TARGETDIR/$DSOARCHIVE_BASENAME +rm -f $TARGETDIR/$DSOBASE.a +rm -f $TARGETDIR/lib$DSOBASE.a +rm -f $TARGETDIR/lib$TARGET_NAME + +exit 0 diff --git a/rubbos/app/apache2/build/library.mk b/rubbos/app/apache2/build/library.mk new file mode 100644 index 00000000..930d4655 --- /dev/null +++ b/rubbos/app/apache2/build/library.mk @@ -0,0 +1,22 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# The build environment was provided by Sascha Schumann. + +LTLIBRARY_OBJECTS = $(LTLIBRARY_SOURCES:.c=.lo) $(LTLIBRARY_OBJECTS_X) + +$(LTLIBRARY_NAME): $(LTLIBRARY_OBJECTS) $(LTLIBRARY_DEPENDENCIES) + $(LINK) $(LTLIBRARY_LDFLAGS) $(LTLIBRARY_OBJECTS) $(LTLIBRARY_LIBADD) diff --git a/rubbos/app/apache2/build/libtool b/rubbos/app/apache2/build/libtool new file mode 100755 index 00000000..5ae0c56c --- /dev/null +++ b/rubbos/app/apache2/build/libtool @@ -0,0 +1,7621 @@ +#! /bin/bash + +# libtoolT - Provide generalized library-building support services. +# Generated automatically by (GNU ) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED="/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="/bin/sed -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags=" CXX" + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host ubuntu: + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=no + +# Whether or not to optimize for fast installation. +fast_install=yes + +# The host system. +host_alias= +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# An echo program that does not interpret backslashes. +echo="echo" + +# The archiver. +AR="ar" +AR_FLAGS="cru" + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2" + +# A language-specific compiler. +CC="gcc" + +# Is the compiler the GNU C compiler? +with_gcc=yes + +# An ERE matcher. +EGREP="/bin/grep -E" + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Whether we need hard or soft links. +LN_S="ln -s" + +# A BSD-compatible nm program. +NM="/usr/bin/nm -B" + +# A symbol stripping program +STRIP="strip" + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=file + +# Used on cygwin: DLL creation program. +DLLTOOL="dlltool" + +# Used on cygwin: object dumper. +OBJDUMP="objdump" + +# Used on cygwin: assembler. +AS="as" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Object file suffix (normally "o"). +objext="o" + +# Old archive suffix (normally "a"). +libext="a" + +# Shared library suffix (normally ".so"). +shrext_cmds='.so' + +# Executable file suffix (normally ""). +exeext="" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" +pic_mode=default + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Must we lock files when doing compilation? +need_locks="no" + +# Do we need the lib prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec="" + +# Library versioning type. +version_type=linux + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Commands used to build and install an old-style archive. +RANLIB="ranlib" +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" +old_postuninstall_cmds="" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build and install a shared archive. +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" +postinstall_cmds="" +postuninstall_cmds="" + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds="" +module_expsym_cmds="" + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects="" + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects="" + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps="" + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps="" + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs="" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="" + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd="\$MAGIC_CMD" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that forces no undefined symbols. +no_undefined_flag="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" + +# This is the shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# This is the shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist. +hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into +# a binary during linking. This must work even if $libdir does +# not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="" + +# Set to yes if using DIR/libNAME during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=no + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=no + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=no + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Compile-time system search path for libraries +sys_lib_search_path_spec="/usr/lib64 /lib64 /usr/local/lib64" + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec="/usr/lib64 /lib64 /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to yes if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# ### END LIBTOOL CONFIG + +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.26 +TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + extracted_serial=`expr $extracted_serial + 1` + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + echo "\ +$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP + +Copyright (C) 2008 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.[fF][09]?) xform=[fF][09]. ;; + *.for) xform=for ;; + *.java) xform=java ;; + *.obj) xform=obj ;; + *.sx) xform=sx ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$deplibdir/$depdepl" ; then + depdepl="$deplibdir/$depdepl" + elif test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + else + # Can't find it, oh well... + depdepl= + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + case " $deplibs" in + *\ -l* | *\ -L*) + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; + esac + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + major=`expr $current - $age` + else + major=`expr $current - $age + 1` + fi + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + case $archive_cmds in + *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; + *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; + esac + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + case " $deplibs" in + *\ -l* | *\ -L*) + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; + esac + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + else + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \$*\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` + else + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# Libtool was configured on host ubuntu: + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=no + +# Whether or not to optimize for fast installation. +fast_install=yes + +# The host system. +host_alias= +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# An echo program that does not interpret backslashes. +echo="echo" + +# The archiver. +AR="ar" +AR_FLAGS="cru" + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2" + +# A language-specific compiler. +CC="g++" + +# Is the compiler the GNU C compiler? +with_gcc=yes + +# An ERE matcher. +EGREP="/bin/grep -E" + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Whether we need hard or soft links. +LN_S="ln -s" + +# A BSD-compatible nm program. +NM="/usr/bin/nm -B" + +# A symbol stripping program +STRIP="strip" + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=file + +# Used on cygwin: DLL creation program. +DLLTOOL="dlltool" + +# Used on cygwin: object dumper. +OBJDUMP="objdump" + +# Used on cygwin: assembler. +AS="as" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Object file suffix (normally "o"). +objext="o" + +# Old archive suffix (normally "a"). +libext="a" + +# Shared library suffix (normally ".so"). +shrext_cmds='.so' + +# Executable file suffix (normally ""). +exeext="" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" +pic_mode=default + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Must we lock files when doing compilation? +need_locks="no" + +# Do we need the lib prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec="" + +# Library versioning type. +version_type=linux + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Commands used to build and install an old-style archive. +RANLIB="ranlib" +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" +old_postuninstall_cmds="" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build and install a shared archive. +archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" +postinstall_cmds="" +postuninstall_cmds="" + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds="" +module_expsym_cmds="" + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginS.o" + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o" + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps="" + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/4.8 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/4.8/../../.." + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.." + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd="\$MAGIC_CMD" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that forces no undefined symbols. +no_undefined_flag="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" + +# This is the shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# This is the shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist. +hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into +# a binary during linking. This must work even if $libdir does +# not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="" + +# Set to yes if using DIR/libNAME during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=no + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=no + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=no + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Compile-time system search path for libraries +sys_lib_search_path_spec="/usr/lib64 /lib64 /usr/local/lib64" + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec="/usr/lib64 /lib64 /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to yes if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# ### END LIBTOOL TAG CONFIG: CXX + diff --git a/rubbos/app/apache2/build/ltlib.mk b/rubbos/app/apache2/build/ltlib.mk new file mode 100644 index 00000000..3b87dd36 --- /dev/null +++ b/rubbos/app/apache2/build/ltlib.mk @@ -0,0 +1,23 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# The build environment was provided by Sascha Schumann. + +TARGETS = $(LTLIBRARY_NAME) + +include $(top_builddir)/build/rules.mk +include $(top_srcdir)/build/library.mk + diff --git a/rubbos/app/apache2/build/make_exports.awk b/rubbos/app/apache2/build/make_exports.awk new file mode 100644 index 00000000..1d12fc65 --- /dev/null +++ b/rubbos/app/apache2/build/make_exports.awk @@ -0,0 +1,150 @@ + +BEGIN { + printf("/*\n") + printf(" * THIS FILE WAS AUTOGENERATED BY make_exports.awk\n") + printf(" *\n") + printf(" * This is an ugly hack that needs to be here, so\n") + printf(" * that libtool will link all of the APR functions\n") + printf(" * into server regardless of whether the base server\n") + printf(" * uses them.\n") + printf(" */\n") + printf("\n") + printf("#define CORE_PRIVATE\n") + printf("\n") + + for (i = 1; i < ARGC; i++) { + file = ARGV[i] + sub("([^/]*[/])*", "", file) + printf("#include \"%s\"\n", file) + } + + printf("\n") + printf("const void *ap_ugly_hack = NULL;\n") + printf("\n") + + TYPE_NORMAL = 0 + TYPE_HEADER = 1 + + stackptr = 0 +} + +function push(line) { + stack[stackptr] = line + stackptr++ +} + +function do_output() { + printf("/*\n") + printf(" * %s\n", FILENAME) + printf(" */\n") + + for (i = 0; i < stackptr; i++) { + printf("%s\n", stack[i]) + } + + stackptr = 0 + + printf("\n"); +} + +function enter_scope(type) { + scope++ + scope_type[scope] = type + scope_stack[scope] = stackptr + delete scope_used[scope] +} + +function leave_scope() { + used = scope_used[scope] + + if (!used) + stackptr = scope_stack[scope] + + scope-- + if (used) { + scope_used[scope] = 1 + + if (!scope) + do_output() + } +} + +function add_symbol(symbol) { + if (!index(symbol, "#")) { + push("const void *ap_hack_" symbol " = (const void *)" symbol ";") + scope_used[scope] = 1 + } +} + +/^[ \t]*AP[RUI]?_(CORE_)?DECLARE[^(]*[(][^)]*[)]([^ ]* )*[^(]+[(]/ { + sub("[ \t]*AP[RUI]?_(CORE_)?DECLARE[^(]*[(][^)]*[)][ \t]*", "") + sub("[(].*", "") + sub("([^ ]* (^([ \t]*[(])))+", "") + + add_symbol($0) + next +} + +/^[ \t]*AP_DECLARE_HOOK[^(]*[(][^)]*/ { + split($0, args, ",") + symbol = args[2] + sub("^[ \t]+", "", symbol) + sub("[ \t]+$", "", symbol) + + add_symbol("ap_hook_" symbol) + add_symbol("ap_hook_get_" symbol) + add_symbol("ap_run_" symbol) + next +} + +/^[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(][^)]*[)]/ { + sub("[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(]", "", $0) + sub("[)].*$", "", $0) + add_symbol("apr_" $0 "_pool_get") + next +} + +/^[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(][^)]*[)]/ { + sub("[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(]", "", $0) + sub("[)].*$", "", $0) + add_symbol("apr_" $0 "_inherit_set") + next +} + +/^[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(][^)]*[)]/ { + sub("[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(]", "", $0) + sub("[)].*$", "", $0) + add_symbol("apr_" $0 "_inherit_unset") + next +} + +/^#[ \t]*if(ndef| !defined[(])([^_]*_)*H/ { + enter_scope(TYPE_HEADER) + next +} + +/^#[ \t]*if([n]?def)? / { + enter_scope(TYPE_NORMAL) + push($0) + next +} + +/^#[ \t]*endif/ { + if (scope_type[scope] == TYPE_NORMAL) + push($0) + + leave_scope() + next +} + +/^#[ \t]*else/ { + push($0) + next +} + +/^#[ \t]*elif/ { + push($0) + next +} + + diff --git a/rubbos/app/apache2/build/make_var_export.awk b/rubbos/app/apache2/build/make_var_export.awk new file mode 100644 index 00000000..59922758 --- /dev/null +++ b/rubbos/app/apache2/build/make_var_export.awk @@ -0,0 +1,59 @@ +# Based on apr's make_export.awk, which is +# based on Ryan Bloom's make_export.pl + +/^#[ \t]*if(def)? (AP[RUI]?_|!?defined).*/ { + if (old_filename != FILENAME) { + if (old_filename != "") printf("%s", line) + macro_no = 0 + found = 0 + count = 0 + old_filename = FILENAME + line = "" + } + macro_stack[macro_no++] = macro + macro = substr($0, length($1)+2) + count++ + line = line "#ifdef " macro "\n" + next +} + +/^#[ \t]*endif/ { + if (count > 0) { + count-- + line = line "#endif /* " macro " */\n" + macro = macro_stack[--macro_no] + } + if (count == 0) { + if (found != 0) { + printf("%s", line) + } + line = "" + } + next +} + +function add_symbol (sym_name) { + if (count) { + found++ + } + for (i = 0; i < count; i++) { + line = line "\t" + } + line = line sym_name "\n" + + if (count == 0) { + printf("%s", line) + line = "" + } +} + +/^[ \t]*(extern[ \t]+)?AP[RUI]?_DECLARE_DATA .*;$/ { + varname = $NF; + gsub( /[*;]/, "", varname); + gsub( /\[.*\]/, "", varname); + add_symbol(varname); +} + +END { + printf("%s", line) +} diff --git a/rubbos/app/apache2/build/mkdir.sh b/rubbos/app/apache2/build/mkdir.sh new file mode 100755 index 00000000..b947c926 --- /dev/null +++ b/rubbos/app/apache2/build/mkdir.sh @@ -0,0 +1,37 @@ +#!/bin/sh +## +## mkdir.sh -- make directory hierarchy +## +## Based on `mkinstalldirs' from Noah Friedman +## as of 1994-03-25, which was placed in the Public Domain. +## Cleaned up for Apache's Autoconf-style Interface (APACI) +## by Ralf S. Engelschall +## +# +# This script falls under the Apache License. +# See http://www.apache.org/docs/LICENSE + + +umask 022 +errstatus=0 +for file in ${1+"$@"} ; do + set fnord `echo ":$file" |\ + sed -e 's/^:\//%/' -e 's/^://' -e 's/\// /g' -e 's/^%/\//'` + shift + pathcomp= + for d in ${1+"$@"}; do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + ?: ) pathcomp="$pathcomp/" + continue ;; + esac + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + mkdir "$pathcomp" || errstatus=$? + fi + pathcomp="$pathcomp/" + done +done +exit $errstatus + diff --git a/rubbos/app/apache2/build/program.mk b/rubbos/app/apache2/build/program.mk new file mode 100644 index 00000000..bdba429d --- /dev/null +++ b/rubbos/app/apache2/build/program.mk @@ -0,0 +1,22 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# The build environment was provided by Sascha Schumann. + +PROGRAM_OBJECTS = $(PROGRAM_SOURCES:.c=.lo) + +$(PROGRAM_NAME): $(PROGRAM_DEPENDENCIES) $(PROGRAM_OBJECTS) + $(LINK) $(PROGRAM_LDFLAGS) $(PROGRAM_OBJECTS) $(PROGRAM_LDADD) diff --git a/rubbos/app/apache2/build/rules.mk b/rubbos/app/apache2/build/rules.mk new file mode 100644 index 00000000..06afb83b --- /dev/null +++ b/rubbos/app/apache2/build/rules.mk @@ -0,0 +1,226 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# The build environment was originally provided by Sascha Schumann. + +include $(top_builddir)/build/config_vars.mk + +# Combine all of the flags together in the proper order so that +# the user-defined flags can always override the configure ones, if needed. +# Note that includes are listed after the flags because -I options have +# left-to-right precedence and CPPFLAGS may include user-defined overrides. +# +ALL_CFLAGS = $(EXTRA_CFLAGS) $(NOTEST_CFLAGS) $(CFLAGS) +ALL_CPPFLAGS = $(DEFS) $(EXTRA_CPPFLAGS) $(NOTEST_CPPFLAGS) $(CPPFLAGS) +ALL_CXXFLAGS = $(EXTRA_CXXFLAGS) $(NOTEST_CXXFLAGS) $(CXXFLAGS) +ALL_LDFLAGS = $(EXTRA_LDFLAGS) $(NOTEST_LDFLAGS) $(LDFLAGS) +ALL_LIBS = $(EXTRA_LIBS) $(NOTEST_LIBS) $(LIBS) +ALL_INCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) + +# Compile commands + +COMPILE = $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(ALL_INCLUDES) +CXX_COMPILE = $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(ALL_INCLUDES) + +SH_COMPILE = $(LIBTOOL) --mode=compile $(COMPILE) -prefer-pic -c $< && touch $@ +SH_CXX_COMPILE = $(LIBTOOL) --mode=compile $(CXX_COMPILE) -prefer-pic -c $< && touch $@ + +LT_COMPILE = $(LIBTOOL) --mode=compile $(COMPILE) -prefer-non-pic -static -c $< && touch $@ +LT_CXX_COMPILE = $(LIBTOOL) --mode=compile $(CXX_COMPILE) -prefer-non-pic -static -c $< && touch $@ + +# Link-related commands + +LINK = $(LIBTOOL) --mode=link $(COMPILE) $(LT_LDFLAGS) $(ALL_LDFLAGS) -o $@ +SH_LINK = $(SH_LIBTOOL) --mode=link $(COMPILE) $(LT_LDFLAGS) $(ALL_LDFLAGS) $(SH_LDFLAGS) $(CORE_IMPLIB) $(SH_LIBS) -o $@ +MOD_LINK = $(LIBTOOL) --mode=link $(COMPILE) -module $(LT_LDFLAGS) $(ALL_LDFLAGS) -o $@ + +# Cross compile commands + +# Helper programs + +MKINSTALLDIRS = $(abs_srcdir)/build/mkdir.sh +INSTALL = $(LIBTOOL) --mode=install $(abs_srcdir)/build/install.sh -c +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_PROGRAM = $(INSTALL) -m 755 $(INSTALL_PROG_FLAGS) + +# +# Standard build rules +# +all: all-recursive +depend: depend-recursive +clean: clean-recursive +distclean: distclean-recursive +extraclean: extraclean-recursive +install: install-recursive +shared-build: shared-build-recursive + +all-recursive install-recursive depend-recursive: + @otarget=`echo $@|sed s/-recursive//`; \ + list=' $(BUILD_SUBDIRS) $(SUBDIRS)'; \ + for i in $$list; do \ + if test -d "$$i"; then \ + target="$$otarget"; \ + echo "Making $$target in $$i"; \ + if test "$$i" = "."; then \ + made_local=yes; \ + target="local-$$target"; \ + fi; \ + (cd $$i && $(MAKE) $$target) || exit 1; \ + fi; \ + done; \ + if test "$$otarget" = "all" && test -z '$(TARGETS)'; then \ + made_local=yes; \ + fi; \ + if test "$$made_local" != "yes"; then \ + $(MAKE) "local-$$otarget" || exit 1; \ + fi + +clean-recursive distclean-recursive extraclean-recursive: + @otarget=`echo $@|sed s/-recursive//`; \ + list='$(CLEAN_SUBDIRS) $(SUBDIRS)'; \ + for i in $$list; do \ + if test -d "$$i"; then \ + target="$$otarget"; \ + echo "Making $$target in $$i"; \ + if test "$$i" = "."; then \ + made_local=yes; \ + target="local-$$target"; \ + fi; \ + (cd $$i && $(MAKE) $$target); \ + fi; \ + done; \ + if test "$$otarget" = "all" && test -z '$(TARGETS)'; then \ + made_local=yes; \ + fi; \ + if test "$$made_local" != "yes"; then \ + $(MAKE) "local-$$otarget"; \ + fi + +shared-build-recursive: + @if test `pwd` = "$(top_builddir)"; then \ + $(PRE_SHARED_CMDS) ; \ + fi; \ + list='$(SUBDIRS)'; for i in $$list; do \ + target="shared-build"; \ + if test "$$i" = "."; then \ + made_local=yes; \ + target="local-shared-build"; \ + fi; \ + if test "$$i" != "srclib"; then \ + (cd $$i && $(MAKE) $$target) || exit 1; \ + fi; \ + done; \ + if test -f 'modules.mk'; then \ + if test -n '$(SHARED_TARGETS)'; then \ + echo "Building shared: $(SHARED_TARGETS)"; \ + if test "$$made_local" != "yes"; then \ + $(MAKE) "local-shared-build" || exit 1; \ + fi; \ + fi; \ + fi; \ + if test `pwd` = "$(top_builddir)"; then \ + $(POST_SHARED_CMDS) ; \ + fi + +local-all: $(TARGETS) + +local-shared-build: $(SHARED_TARGETS) + +local-depend: x-local-depend + if test -n "`ls $(srcdir)/*.c 2> /dev/null`"; then \ + $(CC) -MM $(ALL_CPPFLAGS) $(ALL_INCLUDES) $(srcdir)/*.c | sed 's/\.o:/.lo:/' > $(builddir)/.deps || true; \ + fi + +local-clean: x-local-clean + rm -f *.o *.lo *.slo *.obj *.a *.la $(CLEAN_TARGETS) $(TARGETS) + rm -rf .libs + +local-distclean: local-clean x-local-distclean + rm -f .deps Makefile $(DISTCLEAN_TARGETS) + +local-extraclean: local-distclean x-local-extraclean + @if test -n "$(EXTRACLEAN_TARGETS)"; then \ + echo "rm -f $(EXTRACLEAN_TARGETS)"; \ + rm -f $(EXTRACLEAN_TARGETS) ; \ + fi + +local-install: $(TARGETS) $(SHARED_TARGETS) $(INSTALL_TARGETS) + @if test -n '$(PROGRAMS)'; then \ + test -d $(DESTDIR)$(sbindir) || $(MKINSTALLDIRS) $(DESTDIR)$(sbindir); \ + list='$(PROGRAMS)'; for i in $$list; do \ + $(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir); \ + done; \ + fi + +# to be filled in by the actual Makefile if extra commands are needed +x-local-depend x-local-clean x-local-distclean x-local-extraclean: + +# +# Implicit rules for creating outputs from input files +# +CXX_SUFFIX = cpp +SHLIB_SUFFIX = so + +.SUFFIXES: +.SUFFIXES: .S .c .$(CXX_SUFFIX) .lo .o .s .y .l .slo .def .la + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.c.lo: + $(LT_COMPILE) + +.s.lo: + $(LT_COMPILE) + +.c.slo: + $(SH_COMPILE) + +.$(CXX_SUFFIX).lo: + $(LT_CXX_COMPILE) + +.$(CXX_SUFFIX).slo: + $(SH_CXX_COMPILE) + +.y.c: + $(YACC) $(YFLAGS) $< && mv y.tab.c $*.c + if test -f y.tab.h; then \ + if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \ + else :; fi + +.l.c: + $(LEX) $(LFLAGS) $< && mv $(LEX_OUTPUT_ROOT).c $@ + +# Makes an import library from a def file +.def.la: + $(LIBTOOL) --mode=compile $(MK_IMPLIB) -o $@ $< + +# +# Dependencies +# +include $(builddir)/.deps + +.PHONY: all all-recursive install-recursive local-all $(PHONY_TARGETS) \ + shared-build shared-build-recursive local-shared-build \ + depend depend-recursive local-depend x-local-depend \ + clean clean-recursive local-clean x-local-clean \ + distclean distclean-recursive local-distclean x-local-distclean \ + extraclean extraclean-recursive local-extraclean x-local-extraclean \ + install local-install $(INSTALL_TARGETS) + diff --git a/rubbos/app/apache2/build/special.mk b/rubbos/app/apache2/build/special.mk new file mode 100644 index 00000000..d7d474d6 --- /dev/null +++ b/rubbos/app/apache2/build/special.mk @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# The build environment was provided by Sascha Schumann. + +all: all-recursive + +include $(builddir)/modules.mk +TARGETS = $(static) +SHARED_TARGETS = $(shared) +INSTALL_TARGETS = install-modules + +install-modules: + @test -d $(DESTDIR)$(libexecdir) || $(MKINSTALLDIRS) $(DESTDIR)$(libexecdir); + @builtin='$(BUILTIN_LIBS)'; \ + has_mod_so=`echo $$builtin|sed 's/^.*mod_so.*$$/has_mod_so/'`; \ + if [ "x$$has_mod_so" = "xhas_mod_so" ]; then \ + list='$(shared)'; \ + for i in $$list; do \ + $(top_srcdir)/build/instdso.sh SH_LIBTOOL='$(SH_LIBTOOL)' $$i $(DESTDIR)$(libexecdir); \ + done; \ + fi + +include $(top_builddir)/build/rules.mk + diff --git a/rubbos/app/apache2/cgi-bin/printenv b/rubbos/app/apache2/cgi-bin/printenv new file mode 100644 index 00000000..e4c2140b --- /dev/null +++ b/rubbos/app/apache2/cgi-bin/printenv @@ -0,0 +1,13 @@ +#!/usr/local/bin/perl +## +## printenv -- demo CGI program which just prints its environment +## + +print "Content-type: text/plain; charset=iso-8859-1\n\n"; +foreach $var (sort(keys(%ENV))) { + $val = $ENV{$var}; + $val =~ s|\n|\\n|g; + $val =~ s|"|\\"|g; + print "${var}=\"${val}\"\n"; +} + diff --git a/rubbos/app/apache2/cgi-bin/test-cgi b/rubbos/app/apache2/cgi-bin/test-cgi new file mode 100644 index 00000000..e27f8575 --- /dev/null +++ b/rubbos/app/apache2/cgi-bin/test-cgi @@ -0,0 +1,31 @@ +#!/bin/sh + +# disable filename globbing +set -f + +echo "Content-type: text/plain; charset=iso-8859-1" +echo + +echo CGI/1.0 test script report: +echo + +echo argc is $#. argv is "$*". +echo + +echo SERVER_SOFTWARE = $SERVER_SOFTWARE +echo SERVER_NAME = $SERVER_NAME +echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE +echo SERVER_PROTOCOL = $SERVER_PROTOCOL +echo SERVER_PORT = $SERVER_PORT +echo REQUEST_METHOD = $REQUEST_METHOD +echo HTTP_ACCEPT = "$HTTP_ACCEPT" +echo PATH_INFO = "$PATH_INFO" +echo PATH_TRANSLATED = "$PATH_TRANSLATED" +echo SCRIPT_NAME = "$SCRIPT_NAME" +echo QUERY_STRING = "$QUERY_STRING" +echo REMOTE_HOST = $REMOTE_HOST +echo REMOTE_ADDR = $REMOTE_ADDR +echo REMOTE_USER = $REMOTE_USER +echo AUTH_TYPE = $AUTH_TYPE +echo CONTENT_TYPE = $CONTENT_TYPE +echo CONTENT_LENGTH = $CONTENT_LENGTH diff --git a/rubbos/app/apache2/conf/highperformance-std.conf b/rubbos/app/apache2/conf/highperformance-std.conf new file mode 100644 index 00000000..310a7b8c --- /dev/null +++ b/rubbos/app/apache2/conf/highperformance-std.conf @@ -0,0 +1,70 @@ +# Ha, you're reading this config file looking for the easy way out! +# "how do I make my apache server go really really fast??" +# Well you could start by reading the /manual/misc/perf-tuning.html +# page. But, we'll give you a head start. +# +# This config file is small, it is probably not what you'd expect on a +# full featured internet webserver with multiple users. But it's +# probably a good starting point for any folks interested in testing +# performance. +# +# To run this config you'll need to use something like: +# httpd -f /bottlenecks/rubbos/app/apache2/conf/highperformance.conf + +Listen 80 +ServerRoot /bottlenecks/rubbos/app/apache2 +DocumentRoot /bottlenecks/rubbos/app/apache2/htdocs + +User nobody +# If you're not on Linux, you'll probably need to change Group +Group nobody + + +MaxClients 150 +StartServers 5 +MinSpareServers 5 +MaxSpareServers 10 + + + +StartServers 2 +MaxClients 150 +MinSpareThreads 25 +MaxSpareThreads 75 +ThreadsPerChild 25 +MaxRequestsPerChild 0 + + +# Assume no memory leaks at all +MaxRequestsPerChild 0 + +# it's always nice to know the server has started +ErrorLog logs/error_log + +# Some benchmarks require logging, which is a good requirement. Uncomment +# this if you need logging. +#TransferLog logs/access_log + + + # The server can be made to avoid following symbolic links, + # to make security simpler. However, this takes extra CPU time, + # so we will just let it follow symlinks. + Options FollowSymLinks + + # Don't check for .htaccess files in each directory - they slow + # things down + AllowOverride None + + # If this was a real internet server you'd probably want to + # uncomment these: + #order deny,allow + #deny from all + + +# If this was a real internet server you'd probably want to uncomment this: +# +# order allow,deny +# allow from all +# + +# OK that's enough hints. Read the documentation if you want more. diff --git a/rubbos/app/apache2/conf/highperformance.conf b/rubbos/app/apache2/conf/highperformance.conf new file mode 100644 index 00000000..310a7b8c --- /dev/null +++ b/rubbos/app/apache2/conf/highperformance.conf @@ -0,0 +1,70 @@ +# Ha, you're reading this config file looking for the easy way out! +# "how do I make my apache server go really really fast??" +# Well you could start by reading the /manual/misc/perf-tuning.html +# page. But, we'll give you a head start. +# +# This config file is small, it is probably not what you'd expect on a +# full featured internet webserver with multiple users. But it's +# probably a good starting point for any folks interested in testing +# performance. +# +# To run this config you'll need to use something like: +# httpd -f /bottlenecks/rubbos/app/apache2/conf/highperformance.conf + +Listen 80 +ServerRoot /bottlenecks/rubbos/app/apache2 +DocumentRoot /bottlenecks/rubbos/app/apache2/htdocs + +User nobody +# If you're not on Linux, you'll probably need to change Group +Group nobody + + +MaxClients 150 +StartServers 5 +MinSpareServers 5 +MaxSpareServers 10 + + + +StartServers 2 +MaxClients 150 +MinSpareThreads 25 +MaxSpareThreads 75 +ThreadsPerChild 25 +MaxRequestsPerChild 0 + + +# Assume no memory leaks at all +MaxRequestsPerChild 0 + +# it's always nice to know the server has started +ErrorLog logs/error_log + +# Some benchmarks require logging, which is a good requirement. Uncomment +# this if you need logging. +#TransferLog logs/access_log + + + # The server can be made to avoid following symbolic links, + # to make security simpler. However, this takes extra CPU time, + # so we will just let it follow symlinks. + Options FollowSymLinks + + # Don't check for .htaccess files in each directory - they slow + # things down + AllowOverride None + + # If this was a real internet server you'd probably want to + # uncomment these: + #order deny,allow + #deny from all + + +# If this was a real internet server you'd probably want to uncomment this: +# +# order allow,deny +# allow from all +# + +# OK that's enough hints. Read the documentation if you want more. diff --git a/rubbos/app/apache2/conf/httpd-std.conf b/rubbos/app/apache2/conf/httpd-std.conf new file mode 100644 index 00000000..1c6efa5e --- /dev/null +++ b/rubbos/app/apache2/conf/httpd-std.conf @@ -0,0 +1,1041 @@ +# +# Based upon the NCSA server configuration files originally by Rob McCool. +# +# This is the main Apache server configuration file. It contains the +# configuration directives that give the server its instructions. +# See for detailed information about +# the directives. +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# +# The configuration directives are grouped into three basic sections: +# 1. Directives that control the operation of the Apache server process as a +# whole (the 'global environment'). +# 2. Directives that define the parameters of the 'main' or 'default' server, +# which responds to requests that aren't handled by a virtual host. +# These directives also provide default values for the settings +# of all virtual hosts. +# 3. Settings for virtual hosts, which allow Web requests to be sent to +# different IP addresses or hostnames and have them handled by the +# same Apache server process. +# +# Configuration and logfile names: If the filenames you specify for many +# of the server's control files begin with "/" (or "drive:/" for Win32), the +# server will use that explicit path. If the filenames do *not* begin +# with "/", the value of ServerRoot is prepended -- so "logs/foo.log" +# with ServerRoot set to "/bottlenecks/rubbos/app/apache2" will be interpreted by the +# server as "/bottlenecks/rubbos/app/apache2/logs/foo.log". +# + +### Section 1: Global Environment +# +# The directives in this section affect the overall operation of Apache, +# such as the number of concurrent requests it can handle or where it +# can find its configuration files. +# + +# +# ServerRoot: The top of the directory tree under which the server's +# configuration, error, and log files are kept. +# +# NOTE! If you intend to place this on an NFS (or otherwise network) +# mounted filesystem then please read the LockFile documentation (available +# at ); +# you will save yourself a lot of trouble. +# +# Do NOT add a slash at the end of the directory path. +# +ServerRoot "/bottlenecks/rubbos/app/apache2" + +# +# The accept serialization lock file MUST BE STORED ON A LOCAL DISK. +# + + +#LockFile logs/accept.lock + + + +# +# ScoreBoardFile: File used to store internal server process information. +# If unspecified (the default), the scoreboard will be stored in an +# anonymous shared memory segment, and will be unavailable to third-party +# applications. +# If specified, ensure that no two invocations of Apache share the same +# scoreboard file. The scoreboard file MUST BE STORED ON A LOCAL DISK. +# + + +#ScoreBoardFile logs/apache_runtime_status + + + + +# +# PidFile: The file in which the server should record its process +# identification number when it starts. +# + +PidFile logs/httpd.pid + + +# +# Timeout: The number of seconds before receives and sends time out. +# +Timeout 300 + +# +# KeepAlive: Whether or not to allow persistent connections (more than +# one request per connection). Set to "Off" to deactivate. +# +KeepAlive On + +# +# MaxKeepAliveRequests: The maximum number of requests to allow +# during a persistent connection. Set to 0 to allow an unlimited amount. +# We recommend you leave this number high, for maximum performance. +# +MaxKeepAliveRequests 100 + +# +# KeepAliveTimeout: Number of seconds to wait for the next request from the +# same client on the same connection. +# +KeepAliveTimeout 15 + +## +## Server-Pool Size Regulation (MPM specific) +## + +# prefork MPM +# StartServers: number of server processes to start +# MinSpareServers: minimum number of server processes which are kept spare +# MaxSpareServers: maximum number of server processes which are kept spare +# MaxClients: maximum number of server processes allowed to start +# MaxRequestsPerChild: maximum number of requests a server process serves + +StartServers 5 +MinSpareServers 5 +MaxSpareServers 10 +MaxClients 150 +MaxRequestsPerChild 0 + + +# worker MPM +# StartServers: initial number of server processes to start +# MaxClients: maximum number of simultaneous client connections +# MinSpareThreads: minimum number of worker threads which are kept spare +# MaxSpareThreads: maximum number of worker threads which are kept spare +# ThreadsPerChild: constant number of worker threads in each server process +# MaxRequestsPerChild: maximum number of requests a server process serves + +StartServers 2 +MaxClients 150 +MinSpareThreads 25 +MaxSpareThreads 75 +ThreadsPerChild 25 +MaxRequestsPerChild 0 + + +# perchild MPM +# NumServers: constant number of server processes +# StartThreads: initial number of worker threads in each server process +# MinSpareThreads: minimum number of worker threads which are kept spare +# MaxSpareThreads: maximum number of worker threads which are kept spare +# MaxThreadsPerChild: maximum number of worker threads in each server process +# MaxRequestsPerChild: maximum number of connections per server process + +NumServers 5 +StartThreads 5 +MinSpareThreads 5 +MaxSpareThreads 10 +MaxThreadsPerChild 20 +MaxRequestsPerChild 0 + + +# WinNT MPM +# ThreadsPerChild: constant number of worker threads in the server process +# MaxRequestsPerChild: maximum number of requests a server process serves + +ThreadsPerChild 250 +MaxRequestsPerChild 0 + + +# BeOS MPM +# StartThreads: how many threads do we initially spawn? +# MaxClients: max number of threads we can have (1 thread == 1 client) +# MaxRequestsPerThread: maximum number of requests each thread will process + +StartThreads 10 +MaxClients 50 +MaxRequestsPerThread 10000 + + +# NetWare MPM +# ThreadStackSize: Stack size allocated for each worker thread +# StartThreads: Number of worker threads launched at server startup +# MinSpareThreads: Minimum number of idle threads, to handle request spikes +# MaxSpareThreads: Maximum number of idle threads +# MaxThreads: Maximum number of worker threads alive at the same time +# MaxRequestsPerChild: Maximum number of requests a thread serves. It is +# recommended that the default value of 0 be set for this +# directive on NetWare. This will allow the thread to +# continue to service requests indefinitely. + +ThreadStackSize 65536 +StartThreads 250 +MinSpareThreads 25 +MaxSpareThreads 250 +MaxThreads 1000 +MaxRequestsPerChild 0 +MaxMemFree 100 + + +# OS/2 MPM +# StartServers: Number of server processes to maintain +# MinSpareThreads: Minimum number of idle threads per process, +# to handle request spikes +# MaxSpareThreads: Maximum number of idle threads per process +# MaxRequestsPerChild: Maximum number of connections per server process + +StartServers 2 +MinSpareThreads 5 +MaxSpareThreads 10 +MaxRequestsPerChild 0 + + +# +# Listen: Allows you to bind Apache to specific IP addresses and/or +# ports, instead of the default. See also the +# directive. +# +# Change this to Listen on specific IP addresses as shown below to +# prevent Apache from glomming onto all bound IP addresses (0.0.0.0) +# +#Listen 12.34.56.78:80 + +Listen 80 + +# +# Dynamic Shared Object (DSO) Support +# +# To be able to use the functionality of a module which was built as a DSO you +# have to place corresponding `LoadModule' lines at this location so the +# directives contained in it are actually available _before_ they are used. +# Statically compiled modules (those listed by `httpd -l') do not need +# to be loaded here. +# +# Example: +# LoadModule foo_module modules/mod_foo.so +# + +# +# ExtendedStatus controls whether Apache will generate "full" status +# information (ExtendedStatus On) or just basic information (ExtendedStatus +# Off) when the "server-status" handler is called. The default is Off. +# +#ExtendedStatus On + +### Section 2: 'Main' server configuration +# +# The directives in this section set up the values used by the 'main' +# server, which responds to any requests that aren't handled by a +# definition. These values also provide defaults for +# any containers you may define later in the file. +# +# All of these directives may appear inside containers, +# in which case these default settings will be overridden for the +# virtual host being defined. +# + + + +# +# If you wish httpd to run as a different user or group, you must run +# httpd as root initially and it will switch. +# +# User/Group: The name (or #number) of the user/group to run httpd as. +# . On SCO (ODT 3) use "User nouser" and "Group nogroup". +# . On HPUX you may not be able to use shared memory as nobody, and the +# suggested workaround is to create a user www and use that user. +# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET) +# when the value of (unsigned)Group is above 60000; +# don't use Group #-1 on these systems! +# +User nobody +Group #-1 + + + +# +# ServerAdmin: Your address, where problems with the server should be +# e-mailed. This address appears on some server-generated pages, such +# as error documents. e.g. admin@your-domain.com +# +ServerAdmin you@example.com + +# +# ServerName gives the name and port that the server uses to identify itself. +# This can often be determined automatically, but we recommend you specify +# it explicitly to prevent problems during startup. +# +# If this is not set to valid DNS name for your host, server-generated +# redirections will not work. See also the UseCanonicalName directive. +# +# If your host doesn't have a registered DNS name, enter its IP address here. +# You will have to access it by its address anyway, and this will make +# redirections work in a sensible way. +# +#ServerName www.example.com:80 + +# +# UseCanonicalName: Determines how Apache constructs self-referencing +# URLs and the SERVER_NAME and SERVER_PORT variables. +# When set "Off", Apache will use the Hostname and Port supplied +# by the client. When set "On", Apache will use the value of the +# ServerName directive. +# +UseCanonicalName Off + +# +# DocumentRoot: The directory out of which you will serve your +# documents. By default, all requests are taken from this directory, but +# symbolic links and aliases may be used to point to other locations. +# +DocumentRoot "/bottlenecks/rubbos/app/apache2/htdocs" + +# +# Each directory to which Apache has access can be configured with respect +# to which services and features are allowed and/or disabled in that +# directory (and its subdirectories). +# +# First, we configure the "default" to be a very restrictive set of +# features. +# + + Options FollowSymLinks + AllowOverride None + + +# +# Note that from this point forward you must specifically allow +# particular features to be enabled - so if something's not working as +# you might expect, make sure that you have specifically enabled it +# below. +# + +# +# This should be changed to whatever you set DocumentRoot to. +# + + +# +# Possible values for the Options directive are "None", "All", +# or any combination of: +# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews +# +# Note that "MultiViews" must be named *explicitly* --- "Options All" +# doesn't give it to you. +# +# The Options directive is both complicated and important. Please see +# http://httpd.apache.org/docs/2.0/mod/core.html#options +# for more information. +# + Options Indexes FollowSymLinks + +# +# AllowOverride controls what directives may be placed in .htaccess files. +# It can be "All", "None", or any combination of the keywords: +# Options FileInfo AuthConfig Limit Indexes +# + AllowOverride None + +# +# Controls who can get stuff from this server. +# + Order allow,deny + Allow from all + + + +# +# UserDir: The name of the directory that is appended onto a user's home +# directory if a ~user request is received. +# +UserDir public_html + +# +# Control access to UserDir directories. The following is an example +# for a site where these directories are restricted to read-only. +# +# +# AllowOverride FileInfo AuthConfig Limit Indexes +# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +# +# Order allow,deny +# Allow from all +# +# +# Order deny,allow +# Deny from all +# +# + +# +# DirectoryIndex: sets the file that Apache will serve if a directory +# is requested. +# +# The index.html.var file (a type-map) is used to deliver content- +# negotiated documents. The MultiViews Option can be used for the +# same purpose, but it is much slower. +# +DirectoryIndex index.html index.html.var + +# +# AccessFileName: The name of the file to look for in each directory +# for additional configuration directives. See also the AllowOverride +# directive. +# +AccessFileName .htaccess + +# +# The following lines prevent .htaccess and .htpasswd files from being +# viewed by Web clients. +# + + Order allow,deny + Deny from all + + +# +# TypesConfig describes where the mime.types file (or equivalent) is +# to be found. +# +TypesConfig conf/mime.types + +# +# DefaultType is the default MIME type the server will use for a document +# if it cannot otherwise determine one, such as from filename extensions. +# If your server contains mostly text or HTML documents, "text/plain" is +# a good value. If most of your content is binary, such as applications +# or images, you may want to use "application/octet-stream" instead to +# keep browsers from trying to display binary files as though they are +# text. +# +DefaultType text/plain + +# +# The mod_mime_magic module allows the server to use various hints from the +# contents of the file itself to determine its type. The MIMEMagicFile +# directive tells the module where the hint definitions are located. +# + + MIMEMagicFile conf/magic + + +# +# HostnameLookups: Log the names of clients or just their IP addresses +# e.g., www.apache.org (on) or 204.62.129.132 (off). +# The default is off because it'd be overall better for the net if people +# had to knowingly turn this feature on, since enabling it means that +# each client request will result in AT LEAST one lookup request to the +# nameserver. +# +HostnameLookups Off + +# +# EnableMMAP: Control whether memory-mapping is used to deliver +# files (assuming that the underlying OS supports it). +# The default is on; turn this off if you serve from NFS-mounted +# filesystems. On some systems, turning it off (regardless of +# filesystem) can improve performance; for details, please see +# http://httpd.apache.org/docs/2.0/mod/core.html#enablemmap +# +#EnableMMAP off + +# +# EnableSendfile: Control whether the sendfile kernel support is +# used to deliver files (assuming that the OS supports it). +# The default is on; turn this off if you serve from NFS-mounted +# filesystems. Please see +# http://httpd.apache.org/docs/2.0/mod/core.html#enablesendfile +# +#EnableSendfile off + +# +# ErrorLog: The location of the error log file. +# If you do not specify an ErrorLog directive within a +# container, error messages relating to that virtual host will be +# logged here. If you *do* define an error logfile for a +# container, that host's errors will be logged there and not here. +# +ErrorLog logs/error_log + +# +# LogLevel: Control the number of messages logged to the error_log. +# Possible values include: debug, info, notice, warn, error, crit, +# alert, emerg. +# +LogLevel warn + +# +# The following directives define some format nicknames for use with +# a CustomLog directive (see below). +# +LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined +LogFormat "%h %l %u %t \"%r\" %>s %b" common +LogFormat "%{Referer}i -> %U" referer +LogFormat "%{User-agent}i" agent + +# You need to enable mod_logio.c to use %I and %O +#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio + +# +# The location and format of the access logfile (Common Logfile Format). +# If you do not define any access logfiles within a +# container, they will be logged here. Contrariwise, if you *do* +# define per- access logfiles, transactions will be +# logged therein and *not* in this file. +# +CustomLog logs/access_log common + +# +# If you would like to have agent and referer logfiles, uncomment the +# following directives. +# +#CustomLog logs/referer_log referer +#CustomLog logs/agent_log agent + +# +# If you prefer a single logfile with access, agent, and referer information +# (Combined Logfile Format) you can use the following directive. +# +#CustomLog logs/access_log combined + +# +# ServerTokens +# This directive configures what you return as the Server HTTP response +# Header. The default is 'Full' which sends information about the OS-Type +# and compiled in modules. +# Set to one of: Full | OS | Minor | Minimal | Major | Prod +# where Full conveys the most information, and Prod the least. +# +ServerTokens Full + +# +# Optionally add a line containing the server version and virtual host +# name to server-generated pages (internal error documents, FTP directory +# listings, mod_status and mod_info output etc., but not CGI generated +# documents or custom error documents). +# Set to "EMail" to also include a mailto: link to the ServerAdmin. +# Set to one of: On | Off | EMail +# +ServerSignature On + +# +# Aliases: Add here as many aliases as you need (with no limit). The format is +# Alias fakename realname +# +# Note that if you include a trailing / on fakename then the server will +# require it to be present in the URL. So "/icons" isn't aliased in this +# example, only "/icons/". If the fakename is slash-terminated, then the +# realname must also be slash terminated, and if the fakename omits the +# trailing slash, the realname must also omit it. +# +# We include the /icons/ alias for FancyIndexed directory listings. If you +# do not use FancyIndexing, you may comment this out. +# +Alias /icons/ "/bottlenecks/rubbos/app/apache2/icons/" + + + Options Indexes MultiViews + AllowOverride None + Order allow,deny + Allow from all + + +# +# This should be changed to the ServerRoot/manual/. The alias provides +# the manual, even if you choose to move your DocumentRoot. You may comment +# this out if you do not care for the documentation. +# +AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru|tr))?(/.*)?$ "/bottlenecks/rubbos/app/apache2/manual$1" + + + Options Indexes + AllowOverride None + Order allow,deny + Allow from all + + + SetHandler type-map + + # .tr is text/troff in mime.types! + + ForceType text/html + + + SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru|tr)/ prefer-language=$1 + RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru|tr)){2,}(/.*)?$ /manual/$1$2 + + +# +# ScriptAlias: This controls which directories contain server scripts. +# ScriptAliases are essentially the same as Aliases, except that +# documents in the realname directory are treated as applications and +# run by the server when requested rather than as documents sent to the client. +# The same rules about trailing "/" apply to ScriptAlias directives as to +# Alias. +# +ScriptAlias /cgi-bin/ "/bottlenecks/rubbos/app/apache2/cgi-bin/" + + +# +# Additional to mod_cgid.c settings, mod_cgid has Scriptsock +# for setting UNIX socket for communicating with cgid. +# +#Scriptsock logs/cgisock + + +# +# "/bottlenecks/rubbos/app/apache2/cgi-bin" should be changed to whatever your ScriptAliased +# CGI directory exists, if you have that configured. +# + + AllowOverride None + Options None + Order allow,deny + Allow from all + + +# +# Redirect allows you to tell clients about documents which used to exist in +# your server's namespace, but do not anymore. This allows you to tell the +# clients where to look for the relocated document. +# Example: +# Redirect permanent /foo http://www.example.com/bar + +# +# Directives controlling the display of server-generated directory listings. +# + +# +# IndexOptions: Controls the appearance of server-generated directory +# listings. +# +IndexOptions FancyIndexing VersionSort + +# +# AddIcon* directives tell the server which icon to show for different +# files or filename extensions. These are only displayed for +# FancyIndexed directories. +# +AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip + +AddIconByType (TXT,/icons/text.gif) text/* +AddIconByType (IMG,/icons/image2.gif) image/* +AddIconByType (SND,/icons/sound2.gif) audio/* +AddIconByType (VID,/icons/movie.gif) video/* + +AddIcon /icons/binary.gif .bin .exe +AddIcon /icons/binhex.gif .hqx +AddIcon /icons/tar.gif .tar +AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv +AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip +AddIcon /icons/a.gif .ps .ai .eps +AddIcon /icons/layout.gif .html .shtml .htm .pdf +AddIcon /icons/text.gif .txt +AddIcon /icons/c.gif .c +AddIcon /icons/p.gif .pl .py +AddIcon /icons/f.gif .for +AddIcon /icons/dvi.gif .dvi +AddIcon /icons/uuencoded.gif .uu +AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl +AddIcon /icons/tex.gif .tex +AddIcon /icons/bomb.gif core + +AddIcon /icons/back.gif .. +AddIcon /icons/hand.right.gif README +AddIcon /icons/folder.gif ^^DIRECTORY^^ +AddIcon /icons/blank.gif ^^BLANKICON^^ + +# +# DefaultIcon is which icon to show for files which do not have an icon +# explicitly set. +# +DefaultIcon /icons/unknown.gif + +# +# AddDescription allows you to place a short description after a file in +# server-generated indexes. These are only displayed for FancyIndexed +# directories. +# Format: AddDescription "description" filename +# +#AddDescription "GZIP compressed document" .gz +#AddDescription "tar archive" .tar +#AddDescription "GZIP compressed tar archive" .tgz + +# +# ReadmeName is the name of the README file the server will look for by +# default, and append to directory listings. +# +# HeaderName is the name of a file which should be prepended to +# directory indexes. +ReadmeName README.html +HeaderName HEADER.html + +# +# IndexIgnore is a set of filenames which directory indexing should ignore +# and not include in the listing. Shell-style wildcarding is permitted. +# +IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t + +# +# DefaultLanguage and AddLanguage allows you to specify the language of +# a document. You can then use content negotiation to give a browser a +# file in a language the user can understand. +# +# Specify a default language. This means that all data +# going out without a specific language tag (see below) will +# be marked with this one. You probably do NOT want to set +# this unless you are sure it is correct for all cases. +# +# * It is generally better to not mark a page as +# * being a certain language than marking it with the wrong +# * language! +# +# DefaultLanguage nl +# +# Note 1: The suffix does not have to be the same as the language +# keyword --- those with documents in Polish (whose net-standard +# language code is pl) may wish to use "AddLanguage pl .po" to +# avoid the ambiguity with the common suffix for perl scripts. +# +# Note 2: The example entries below illustrate that in some cases +# the two character 'Language' abbreviation is not identical to +# the two character 'Country' code for its country, +# E.g. 'Danmark/dk' versus 'Danish/da'. +# +# Note 3: In the case of 'ltz' we violate the RFC by using a three char +# specifier. There is 'work in progress' to fix this and get +# the reference data for rfc1766 cleaned up. +# +# Catalan (ca) - Croatian (hr) - Czech (cs) - Danish (da) - Dutch (nl) +# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de) +# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja) +# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn) +# Norwegian (no) - Polish (pl) - Portugese (pt) +# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv) +# Turkish (tr) - Simplified Chinese (zh-CN) - Spanish (es) +# Traditional Chinese (zh-TW) +# +AddLanguage ca .ca +AddLanguage cs .cz .cs +AddLanguage da .dk +AddLanguage de .de +AddLanguage el .el +AddLanguage en .en +AddLanguage eo .eo +AddLanguage es .es +AddLanguage et .et +AddLanguage fr .fr +AddLanguage he .he +AddLanguage hr .hr +AddLanguage it .it +AddLanguage ja .ja +AddLanguage ko .ko +AddLanguage ltz .ltz +AddLanguage nl .nl +AddLanguage nn .nn +AddLanguage no .no +AddLanguage pl .po +AddLanguage pt .pt +AddLanguage pt-BR .pt-br +AddLanguage ru .ru +AddLanguage sv .sv +AddLanguage tr .tr +AddLanguage zh-CN .zh-cn +AddLanguage zh-TW .zh-tw + +# +# LanguagePriority allows you to give precedence to some languages +# in case of a tie during content negotiation. +# +# Just list the languages in decreasing order of preference. We have +# more or less alphabetized them here. You probably want to change this. +# +LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW + +# +# ForceLanguagePriority allows you to serve a result page rather than +# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback) +# [in case no accepted languages matched the available variants] +# +ForceLanguagePriority Prefer Fallback + +# +# Commonly used filename extensions to character sets. You probably +# want to avoid clashes with the language extensions, unless you +# are good at carefully testing your setup after each change. +# See http://www.iana.org/assignments/character-sets for the +# official list of charset names and their respective RFCs. +# +AddCharset ISO-8859-1 .iso8859-1 .latin1 +AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen +AddCharset ISO-8859-3 .iso8859-3 .latin3 +AddCharset ISO-8859-4 .iso8859-4 .latin4 +AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru +AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb +AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk +AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb +AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk +AddCharset ISO-2022-JP .iso2022-jp .jis +AddCharset ISO-2022-KR .iso2022-kr .kis +AddCharset ISO-2022-CN .iso2022-cn .cis +AddCharset Big5 .Big5 .big5 +# For russian, more than one charset is used (depends on client, mostly): +AddCharset WINDOWS-1251 .cp-1251 .win-1251 +AddCharset CP866 .cp866 +AddCharset KOI8-r .koi8-r .koi8-ru +AddCharset KOI8-ru .koi8-uk .ua +AddCharset ISO-10646-UCS-2 .ucs2 +AddCharset ISO-10646-UCS-4 .ucs4 +AddCharset UTF-8 .utf8 + +# The set below does not map to a specific (iso) standard +# but works on a fairly wide range of browsers. Note that +# capitalization actually matters (it should not, but it +# does for some browsers). +# +# See http://www.iana.org/assignments/character-sets +# for a list of sorts. But browsers support few. +# +AddCharset GB2312 .gb2312 .gb +AddCharset utf-7 .utf7 +AddCharset utf-8 .utf8 +AddCharset big5 .big5 .b5 +AddCharset EUC-TW .euc-tw +AddCharset EUC-JP .euc-jp +AddCharset EUC-KR .euc-kr +AddCharset shift_jis .sjis + +# +# AddType allows you to add to or override the MIME configuration +# file mime.types for specific file types. +# +#AddType application/x-tar .tgz +# +# AddEncoding allows you to have certain browsers uncompress +# information on the fly. Note: Not all browsers support this. +# Despite the name similarity, the following Add* directives have nothing +# to do with the FancyIndexing customization directives above. +# +#AddEncoding x-compress .Z +#AddEncoding x-gzip .gz .tgz +# +# If the AddEncoding directives above are commented-out, then you +# probably should define those extensions to indicate media types: +# +AddType application/x-compress .Z +AddType application/x-gzip .gz .tgz + +# +# AddHandler allows you to map certain file extensions to "handlers": +# actions unrelated to filetype. These can be either built into the server +# or added with the Action directive (see below) +# +# To use CGI scripts outside of ScriptAliased directories: +# (You will also need to add "ExecCGI" to the "Options" directive.) +# +#AddHandler cgi-script .cgi + +# +# For files that include their own HTTP headers: +# +#AddHandler send-as-is asis + +# +# For server-parsed imagemap files: +# +#AddHandler imap-file map + +# +# For type maps (negotiated resources): +# (This is enabled by default to allow the Apache "It Worked" page +# to be distributed in multiple languages.) +# +AddHandler type-map var + +# +# Filters allow you to process content before it is sent to the client. +# +# To parse .shtml files for server-side includes (SSI): +# (You will also need to add "Includes" to the "Options" directive.) +# +#AddType text/html .shtml +#AddOutputFilter INCLUDES .shtml + +# +# Action lets you define media types that will execute a script whenever +# a matching file is called. This eliminates the need for repeated URL +# pathnames for oft-used CGI file processors. +# Format: Action media/type /cgi-script/location +# Format: Action handler-name /cgi-script/location +# + +# +# Customizable error responses come in three flavors: +# 1) plain text 2) local redirects 3) external redirects +# +# Some examples: +#ErrorDocument 500 "The server made a boo boo." +#ErrorDocument 404 /missing.html +#ErrorDocument 404 "/cgi-bin/missing_handler.pl" +#ErrorDocument 402 http://www.example.com/subscription_info.html +# + +# +# Putting this all together, we can internationalize error responses. +# +# We use Alias to redirect any /error/HTTP_.html.var response to +# our collection of by-error message multi-language collections. We use +# includes to substitute the appropriate text. +# +# You can modify the messages' appearance without changing any of the +# default HTTP_.html.var files by adding the line: +# +# Alias /error/include/ "/your/include/path/" +# +# which allows you to create your own set of files by starting with the +# /bottlenecks/rubbos/app/apache2/error/include/ files and copying them to /your/include/path/, +# even on a per-VirtualHost basis. The default include files will display +# your Apache version number and your ServerAdmin email address regardless +# of the setting of ServerSignature. +# +# The internationalized error documents require mod_alias, mod_include +# and mod_negotiation. To activate them, uncomment the following 30 lines. + +# Alias /error/ "/bottlenecks/rubbos/app/apache2/error/" +# +# +# AllowOverride None +# Options IncludesNoExec +# AddOutputFilter Includes html +# AddHandler type-map var +# Order allow,deny +# Allow from all +# LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr +# ForceLanguagePriority Prefer Fallback +# +# +# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var +# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var +# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var +# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var +# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var +# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var +# ErrorDocument 410 /error/HTTP_GONE.html.var +# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var +# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var +# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var +# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var +# ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var +# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var +# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var +# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var +# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var +# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var + + +# +# The following directives modify normal HTTP response behavior to +# handle known problems with browser implementations. +# +BrowserMatch "Mozilla/2" nokeepalive +BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 +BrowserMatch "RealPlayer 4\.0" force-response-1.0 +BrowserMatch "Java/1\.0" force-response-1.0 +BrowserMatch "JDK/1\.0" force-response-1.0 + +# +# The following directive disables redirects on non-GET requests for +# a directory that does not include the trailing slash. This fixes a +# problem with Microsoft WebFolders which does not appropriately handle +# redirects for folders with DAV methods. +# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV. +# +BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully +BrowserMatch "MS FrontPage" redirect-carefully +BrowserMatch "^WebDrive" redirect-carefully +BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully +BrowserMatch "^gnome-vfs" redirect-carefully +BrowserMatch "^XML Spy" redirect-carefully +BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully + +# +# Allow server status reports generated by mod_status, +# with the URL of http://servername/server-status +# Change the ".example.com" to match your domain to enable. +# +# +# SetHandler server-status +# Order deny,allow +# Deny from all +# Allow from .example.com +# + +# +# Allow remote server configuration reports, with the URL of +# http://servername/server-info (requires that mod_info.c be loaded). +# Change the ".example.com" to match your domain to enable. +# +# +# SetHandler server-info +# Order deny,allow +# Deny from all +# Allow from .example.com +# + + +# +# Bring in additional module-specific configurations +# + + Include conf/ssl.conf + + + +### Section 3: Virtual Hosts +# +# VirtualHost: If you want to maintain multiple domains/hostnames on your +# machine you can setup VirtualHost containers for them. Most configurations +# use only name-based virtual hosts so the server doesn't need to worry about +# IP addresses. This is indicated by the asterisks in the directives below. +# +# Please see the documentation at +# +# for further details before you try to setup virtual hosts. +# +# You may use the command line option '-S' to verify your virtual host +# configuration. + +# +# Use name-based virtual hosting. +# +#NameVirtualHost *:80 + +# +# VirtualHost example: +# Almost any Apache directive may go into a VirtualHost container. +# The first VirtualHost section is used for requests without a known +# server name. +# +# +# ServerAdmin webmaster@dummy-host.example.com +# DocumentRoot /www/docs/dummy-host.example.com +# ServerName dummy-host.example.com +# ErrorLog logs/dummy-host.example.com-error_log +# CustomLog logs/dummy-host.example.com-access_log common +# diff --git a/rubbos/app/apache2/conf/httpd.conf b/rubbos/app/apache2/conf/httpd.conf new file mode 100644 index 00000000..fe3be7b9 --- /dev/null +++ b/rubbos/app/apache2/conf/httpd.conf @@ -0,0 +1,1076 @@ + +# +# Based upon the NCSA server configuration files originally by Rob McCool. +# +# This is the main Apache server configuration file. It contains the +# configuration directives that give the server its instructions. +# See for detailed information about +# the directives. +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# +# The configuration directives are grouped into three basic sections: +# 1. Directives that control the operation of the Apache server process as a +# whole (the 'global environment'). +# 2. Directives that define the parameters of the 'main' or 'default' server, +# which responds to requests that aren't handled by a virtual host. +# These directives also provide default values for the settings +# of all virtual hosts. +# 3. Settings for virtual hosts, which allow Web requests to be sent to +# different IP addresses or hostnames and have them handled by the +# same Apache server process. +# +# Configuration and logfile names: If the filenames you specify for many +# of the server's control files begin with "/" (or "drive:/" for Win32), the +# server will use that explicit path. If the filenames do *not* begin +# with "/", the value of ServerRoot is prepended -- so "logs/foo.log" +# with ServerRoot set to "/mnt/elba/rubbos/apache2" will be interpreted by the +# server as "/mnt/elba/rubbos/apache2/logs/foo.log". +# + +### Section 1: Global Environment +# +# The directives in this section affect the overall operation of Apache, +# such as the number of concurrent requests it can handle or where it +# can find its configuration files. +# + +# +# ServerRoot: The top of the directory tree under which the server's +# configuration, error, and log files are kept. +# +# NOTE! If you intend to place this on an NFS (or otherwise network) +# mounted filesystem then please read the LockFile documentation (available +# at ); +# you will save yourself a lot of trouble. +# +# Do NOT add a slash at the end of the directory path. +# +#ServerRoot "/mnt/elba/rubbos/apache2" +ServerRoot "/bottlenecks/rubbos/app/apache2" + +# +# The accept serialization lock file MUST BE STORED ON A LOCAL DISK. +# + + +#LockFile logs/accept.lock + + + +# +# ScoreBoardFile: File used to store internal server process information. +# If unspecified (the default), the scoreboard will be stored in an +# anonymous shared memory segment, and will be unavailable to third-party +# applications. +# If specified, ensure that no two invocations of Apache share the same +# scoreboard file. The scoreboard file MUST BE STORED ON A LOCAL DISK. +# + + +#ScoreBoardFile logs/apache_runtime_status + + + + +# +# PidFile: The file in which the server should record its process +# identification number when it starts. +# + +PidFile logs/httpd.pid + + +# +# Timeout: The number of seconds before receives and sends time out. +# +Timeout 5 + +# +# KeepAlive: Whether or not to allow persistent connections (more than +# one request per connection). Set to "Off" to deactivate. +# +#KeepAlive On +KeepAlive Off + +# +# MaxKeepAliveRequests: The maximum number of requests to allow +# during a persistent connection. Set to 0 to allow an unlimited amount. +# We recommend you leave this number high, for maximum performance. +# +MaxKeepAliveRequests 100 + +# +# KeepAliveTimeout: Number of seconds to wait for the next request from the +# same client on the same connection. +# +KeepAliveTimeout 15 + +## +## Server-Pool Size Regulation (MPM specific) +## + +# prefork MPM +# StartServers: number of server processes to start +# MinSpareServers: minimum number of server processes which are kept spare +# MaxSpareServers: maximum number of server processes which are kept spare +# MaxClients: maximum number of server processes allowed to start +# MaxRequestsPerChild: maximum number of requests a server process serves + +StartServers 5 +MinSpareServers 5 +MaxSpareServers 10 +ServerLimit 4000 +MaxClients 4000 +MaxRequestsPerChild 0 + + +# worker MPM +# StartServers: initial number of server processes to start +# MaxClients: maximum number of simultaneous client connections +# MinSpareThreads: minimum number of worker threads which are kept spare +# MaxSpareThreads: maximum number of worker threads which are kept spare +# ThreadsPerChild: constant number of worker threads in each server process +# MaxRequestsPerChild: maximum number of requests a server process serves + +ServerLimit 200 +ThreadLimit 300 +StartServers 1 +MaxClients 300 +MinSpareThreads 5 +MaxSpareThreads 50 +ThreadsPerChild 150 +MaxRequestsPerChild 0 + + +# perchild MPM +# NumServers: constant number of server processes +# StartThreads: initial number of worker threads in each server process +# MinSpareThreads: minimum number of worker threads which are kept spare +# MaxSpareThreads: maximum number of worker threads which are kept spare +# MaxThreadsPerChild: maximum number of worker threads in each server process +# MaxRequestsPerChild: maximum number of connections per server process + +NumServers 5 +StartThreads 5 +MinSpareThreads 5 +MaxSpareThreads 10 +MaxThreadsPerChild 20 +MaxRequestsPerChild 0 + + +# WinNT MPM +# ThreadsPerChild: constant number of worker threads in the server process +# MaxRequestsPerChild: maximum number of requests a server process serves + +ThreadsPerChild 250 +MaxRequestsPerChild 0 + + +# BeOS MPM +# StartThreads: how many threads do we initially spawn? +# MaxClients: max number of threads we can have (1 thread == 1 client) +# MaxRequestsPerThread: maximum number of requests each thread will process + +StartThreads 10 +MaxClients 50 +MaxRequestsPerThread 10000 + + +# NetWare MPM +# ThreadStackSize: Stack size allocated for each worker thread +# StartThreads: Number of worker threads launched at server startup +# MinSpareThreads: Minimum number of idle threads, to handle request spikes +# MaxSpareThreads: Maximum number of idle threads +# MaxThreads: Maximum number of worker threads alive at the same time +# MaxRequestsPerChild: Maximum number of requests a thread serves. It is +# recommended that the default value of 0 be set for this +# directive on NetWare. This will allow the thread to +# continue to service requests indefinitely. + +ThreadStackSize 65536 +StartThreads 250 +MinSpareThreads 25 +MaxSpareThreads 250 +MaxThreads 1000 +MaxRequestsPerChild 0 +MaxMemFree 100 + + +# OS/2 MPM +# StartServers: Number of server processes to maintain +# MinSpareThreads: Minimum number of idle threads per process, +# to handle request spikes +# MaxSpareThreads: Maximum number of idle threads per process +# MaxRequestsPerChild: Maximum number of connections per server process + +StartServers 2 +MinSpareThreads 5 +MaxSpareThreads 10 +MaxRequestsPerChild 0 + + +# +# Listen: Allows you to bind Apache to specific IP addresses and/or +# ports, instead of the default. See also the +# directive. +# +# Change this to Listen on specific IP addresses as shown below to +# prevent Apache from glomming onto all bound IP addresses (0.0.0.0) +# +#Listen 12.34.56.78:80 + +Listen 8000 + +# +# Dynamic Shared Object (DSO) Support +# +# To be able to use the functionality of a module which was built as a DSO you +# have to place corresponding `LoadModule' lines at this location so the +# directives contained in it are actually available _before_ they are used. +# Statically compiled modules (those listed by `httpd -l') do not need +# to be loaded here. +# +# Example: +# LoadModule foo_module modules/mod_foo.so +# + +# +# ExtendedStatus controls whether Apache will generate "full" status +# information (ExtendedStatus On) or just basic information (ExtendedStatus +# Off) when the "server-status" handler is called. The default is Off. +# +#ExtendedStatus On + +### Section 2: 'Main' server configuration +# +# The directives in this section set up the values used by the 'main' +# server, which responds to any requests that aren't handled by a +# definition. These values also provide defaults for +# any containers you may define later in the file. +# +# All of these directives may appear inside containers, +# in which case these default settings will be overridden for the +# virtual host being defined. +# + + + +# +# If you wish httpd to run as a different user or group, you must run +# httpd as root initially and it will switch. +# +# User/Group: The name (or #number) of the user/group to run httpd as. +# . On SCO (ODT 3) use "User nouser" and "Group nogroup". +# . On HPUX you may not be able to use shared memory as nobody, and the +# suggested workaround is to create a user www and use that user. +# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET) +# when the value of (unsigned)Group is above 60000; +# don't use Group #-1 on these systems! +# +User nobody +Group #-1 + + + +# +# ServerAdmin: Your address, where problems with the server should be +# e-mailed. This address appears on some server-generated pages, such +# as error documents. e.g. admin@your-domain.com +# +ServerAdmin you@example.com + +# +# ServerName gives the name and port that the server uses to identify itself. +# This can often be determined automatically, but we recommend you specify +# it explicitly to prevent problems during startup. +# +# If this is not set to valid DNS name for your host, server-generated +# redirections will not work. See also the UseCanonicalName directive. +# +# If your host doesn't have a registered DNS name, enter its IP address here. +# You will have to access it by its address anyway, and this will make +# redirections work in a sensible way. +# +#ServerName www.example.com:80 + +# +# UseCanonicalName: Determines how Apache constructs self-referencing +# URLs and the SERVER_NAME and SERVER_PORT variables. +# When set "Off", Apache will use the Hostname and Port supplied +# by the client. When set "On", Apache will use the value of the +# ServerName directive. +# +UseCanonicalName Off + +# +# DocumentRoot: The directory out of which you will serve your +# documents. By default, all requests are taken from this directory, but +# symbolic links and aliases may be used to point to other locations. +# +#DocumentRoot "/mnt/elba/rubbos/apache2/htdocs" +DocumentRoot "/bottlenecks/rubbos/app/apache2/htdocs" + +# +# Each directory to which Apache has access can be configured with respect +# to which services and features are allowed and/or disabled in that +# directory (and its subdirectories). +# +# First, we configure the "default" to be a very restrictive set of +# features. +# + + Options FollowSymLinks + AllowOverride None + + +# +# Note that from this point forward you must specifically allow +# particular features to be enabled - so if something's not working as +# you might expect, make sure that you have specifically enabled it +# below. +# + +# +# This should be changed to whatever you set DocumentRoot to. +# + + +# +# Possible values for the Options directive are "None", "All", +# or any combination of: +# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews +# +# Note that "MultiViews" must be named *explicitly* --- "Options All" +# doesn't give it to you. +# +# The Options directive is both complicated and important. Please see +# http://httpd.apache.org/docs-2.0/mod/core.html#options +# for more information. +# + Options Indexes FollowSymLinks + +# +# AllowOverride controls what directives may be placed in .htaccess files. +# It can be "All", "None", or any combination of the keywords: +# Options FileInfo AuthConfig Limit +# + AllowOverride None + +# +# Controls who can get stuff from this server. +# + Order allow,deny + Allow from all + + + +# +# UserDir: The name of the directory that is appended onto a user's home +# directory if a ~user request is received. +# +UserDir public_html + +# +# Control access to UserDir directories. The following is an example +# for a site where these directories are restricted to read-only. +# +# +# AllowOverride FileInfo AuthConfig Limit Indexes +# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +# +# Order allow,deny +# Allow from all +# +# +# Order deny,allow +# Deny from all +# +# + +# +# DirectoryIndex: sets the file that Apache will serve if a directory +# is requested. +# +# The index.html.var file (a type-map) is used to deliver content- +# negotiated documents. The MultiViews Option can be used for the +# same purpose, but it is much slower. +# +DirectoryIndex index.html index.html.var + +# +# AccessFileName: The name of the file to look for in each directory +# for additional configuration directives. See also the AllowOverride +# directive. +# +AccessFileName .htaccess + +# +# The following lines prevent .htaccess and .htpasswd files from being +# viewed by Web clients. +# + + Order allow,deny + Deny from all + + +# +# TypesConfig describes where the mime.types file (or equivalent) is +# to be found. +# +TypesConfig conf/mime.types + +# +# DefaultType is the default MIME type the server will use for a document +# if it cannot otherwise determine one, such as from filename extensions. +# If your server contains mostly text or HTML documents, "text/plain" is +# a good value. If most of your content is binary, such as applications +# or images, you may want to use "application/octet-stream" instead to +# keep browsers from trying to display binary files as though they are +# text. +# +DefaultType text/plain + +# +# The mod_mime_magic module allows the server to use various hints from the +# contents of the file itself to determine its type. The MIMEMagicFile +# directive tells the module where the hint definitions are located. +# + + MIMEMagicFile conf/magic + + +# +# HostnameLookups: Log the names of clients or just their IP addresses +# e.g., www.apache.org (on) or 204.62.129.132 (off). +# The default is off because it'd be overall better for the net if people +# had to knowingly turn this feature on, since enabling it means that +# each client request will result in AT LEAST one lookup request to the +# nameserver. +# +HostnameLookups Off + +# +# EnableMMAP: Control whether memory-mapping is used to deliver +# files (assuming that the underlying OS supports it). +# The default is on; turn this off if you serve from NFS-mounted +# filesystems. On some systems, turning it off (regardless of +# filesystem) can improve performance; for details, please see +# http://httpd.apache.org/docs-2.0/mod/core.html#enablemmap +# +#EnableMMAP off + +# +# EnableSendfile: Control whether the sendfile kernel support is +# used to deliver files (assuming that the OS supports it). +# The default is on; turn this off if you serve from NFS-mounted +# filesystems. Please see +# http://httpd.apache.org/docs-2.0/mod/core.html#enablesendfile +# +#EnableSendfile off + +# +# ErrorLog: The location of the error log file. +# If you do not specify an ErrorLog directive within a +# container, error messages relating to that virtual host will be +# logged here. If you *do* define an error logfile for a +# container, that host's errors will be logged there and not here. +# +ErrorLog logs/error_log + +# +# LogLevel: Control the number of messages logged to the error_log. +# Possible values include: debug, info, notice, warn, error, crit, +# alert, emerg. +# +LogLevel warn + +# +# The following directives define some format nicknames for use with +# a CustomLog directive (see below). +# +LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined +LogFormat "%h %l %u %t \"%r\" %>s %b" common +LogFormat "%{Referer}i -> %U" referer +LogFormat "%{User-agent}i" agent + +# You need to enable mod_logio.c to use %I and %O +#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio + +# +# The location and format of the access logfile (Common Logfile Format). +# If you do not define any access logfiles within a +# container, they will be logged here. Contrariwise, if you *do* +# define per- access logfiles, transactions will be +# logged therein and *not* in this file. +# +CustomLog logs/access_log common + +# +# If you would like to have agent and referer logfiles, uncomment the +# following directives. +# +#CustomLog logs/referer_log referer +#CustomLog logs/agent_log agent + +# +# If you prefer a single logfile with access, agent, and referer information +# (Combined Logfile Format) you can use the following directive. +# +#CustomLog logs/access_log combined + +# +# ServerTokens +# This directive configures what you return as the Server HTTP response +# Header. The default is 'Full' which sends information about the OS-Type +# and compiled in modules. +# Set to one of: Full | OS | Minor | Minimal | Major | Prod +# where Full conveys the most information, and Prod the least. +# +ServerTokens Full + +# +# Optionally add a line containing the server version and virtual host +# name to server-generated pages (internal error documents, FTP directory +# listings, mod_status and mod_info output etc., but not CGI generated +# documents or custom error documents). +# Set to "EMail" to also include a mailto: link to the ServerAdmin. +# Set to one of: On | Off | EMail +# +ServerSignature On + +# +# Aliases: Add here as many aliases as you need (with no limit). The format is +# Alias fakename realname +# +# Note that if you include a trailing / on fakename then the server will +# require it to be present in the URL. So "/icons" isn't aliased in this +# example, only "/icons/". If the fakename is slash-terminated, then the +# realname must also be slash terminated, and if the fakename omits the +# trailing slash, the realname must also omit it. +# +# We include the /icons/ alias for FancyIndexed directory listings. If you +# do not use FancyIndexing, you may comment this out. +# +Alias /icons/ "/bottlenecks/rubbos/app/apache2/icons/" + + + Options Indexes MultiViews + AllowOverride None + Order allow,deny + Allow from all + + +# +# This should be changed to the ServerRoot/manual/. The alias provides +# the manual, even if you choose to move your DocumentRoot. You may comment +# this out if you do not care for the documentation. +# +AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ "/bottlenecks/rubbos/app/apache2/manual$1" + + + Options Indexes + AllowOverride None + Order allow,deny + Allow from all + + + SetHandler type-map + + + SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru)/ prefer-language=$1 + RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2 + + +# +# ScriptAlias: This controls which directories contain server scripts. +# ScriptAliases are essentially the same as Aliases, except that +# documents in the realname directory are treated as applications and +# run by the server when requested rather than as documents sent to the client. +# The same rules about trailing "/" apply to ScriptAlias directives as to +# Alias. +# +ScriptAlias /cgi-bin/ "/bottlenecks/rubbos/app/apache2/cgi-bin/" + + +# +# Additional to mod_cgid.c settings, mod_cgid has Scriptsock +# for setting UNIX socket for communicating with cgid. +# +#Scriptsock logs/cgisock + + +# +# "/mnt/elba/rubbos/apache2/cgi-bin" should be changed to whatever your ScriptAliased +# CGI directory exists, if you have that configured. +# + + AllowOverride None + Options None + Order allow,deny + Allow from all + + +# +# Redirect allows you to tell clients about documents which used to exist in +# your server's namespace, but do not anymore. This allows you to tell the +# clients where to look for the relocated document. +# Example: +# Redirect permanent /foo http://www.example.com/bar + +# +# Directives controlling the display of server-generated directory listings. +# + +# +# IndexOptions: Controls the appearance of server-generated directory +# listings. +# +IndexOptions FancyIndexing VersionSort + +# +# AddIcon* directives tell the server which icon to show for different +# files or filename extensions. These are only displayed for +# FancyIndexed directories. +# +AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip + +AddIconByType (TXT,/icons/text.gif) text/* +AddIconByType (IMG,/icons/image2.gif) image/* +AddIconByType (SND,/icons/sound2.gif) audio/* +AddIconByType (VID,/icons/movie.gif) video/* + +AddIcon /icons/binary.gif .bin .exe +AddIcon /icons/binhex.gif .hqx +AddIcon /icons/tar.gif .tar +AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv +AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip +AddIcon /icons/a.gif .ps .ai .eps +AddIcon /icons/layout.gif .html .shtml .htm .pdf +AddIcon /icons/text.gif .txt +AddIcon /icons/c.gif .c +AddIcon /icons/p.gif .pl .py +AddIcon /icons/f.gif .for +AddIcon /icons/dvi.gif .dvi +AddIcon /icons/uuencoded.gif .uu +AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl +AddIcon /icons/tex.gif .tex +AddIcon /icons/bomb.gif core + +AddIcon /icons/back.gif .. +AddIcon /icons/hand.right.gif README +AddIcon /icons/folder.gif ^^DIRECTORY^^ +AddIcon /icons/blank.gif ^^BLANKICON^^ + +# +# DefaultIcon is which icon to show for files which do not have an icon +# explicitly set. +# +DefaultIcon /icons/unknown.gif + +# +# AddDescription allows you to place a short description after a file in +# server-generated indexes. These are only displayed for FancyIndexed +# directories. +# Format: AddDescription "description" filename +# +#AddDescription "GZIP compressed document" .gz +#AddDescription "tar archive" .tar +#AddDescription "GZIP compressed tar archive" .tgz + +# +# ReadmeName is the name of the README file the server will look for by +# default, and append to directory listings. +# +# HeaderName is the name of a file which should be prepended to +# directory indexes. +ReadmeName README.html +HeaderName HEADER.html + +# +# IndexIgnore is a set of filenames which directory indexing should ignore +# and not include in the listing. Shell-style wildcarding is permitted. +# +IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t + +# +# DefaultLanguage and AddLanguage allows you to specify the language of +# a document. You can then use content negotiation to give a browser a +# file in a language the user can understand. +# +# Specify a default language. This means that all data +# going out without a specific language tag (see below) will +# be marked with this one. You probably do NOT want to set +# this unless you are sure it is correct for all cases. +# +# * It is generally better to not mark a page as +# * being a certain language than marking it with the wrong +# * language! +# +# DefaultLanguage nl +# +# Note 1: The suffix does not have to be the same as the language +# keyword --- those with documents in Polish (whose net-standard +# language code is pl) may wish to use "AddLanguage pl .po" to +# avoid the ambiguity with the common suffix for perl scripts. +# +# Note 2: The example entries below illustrate that in some cases +# the two character 'Language' abbreviation is not identical to +# the two character 'Country' code for its country, +# E.g. 'Danmark/dk' versus 'Danish/da'. +# +# Note 3: In the case of 'ltz' we violate the RFC by using a three char +# specifier. There is 'work in progress' to fix this and get +# the reference data for rfc1766 cleaned up. +# +# Catalan (ca) - Croatian (hr) - Czech (cs) - Danish (da) - Dutch (nl) +# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de) +# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja) +# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn) +# Norwegian (no) - Polish (pl) - Portugese (pt) +# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv) +# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW) +# +AddLanguage ca .ca +AddLanguage cs .cz .cs +AddLanguage da .dk +AddLanguage de .de +AddLanguage el .el +AddLanguage en .en +AddLanguage eo .eo +AddLanguage es .es +AddLanguage et .et +AddLanguage fr .fr +AddLanguage he .he +AddLanguage hr .hr +AddLanguage it .it +AddLanguage ja .ja +AddLanguage ko .ko +AddLanguage ltz .ltz +AddLanguage nl .nl +AddLanguage nn .nn +AddLanguage no .no +AddLanguage pl .po +AddLanguage pt .pt +AddLanguage pt-BR .pt-br +AddLanguage ru .ru +AddLanguage sv .sv +AddLanguage zh-CN .zh-cn +AddLanguage zh-TW .zh-tw + +# +# LanguagePriority allows you to give precedence to some languages +# in case of a tie during content negotiation. +# +# Just list the languages in decreasing order of preference. We have +# more or less alphabetized them here. You probably want to change this. +# +LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW + +# +# ForceLanguagePriority allows you to serve a result page rather than +# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback) +# [in case no accepted languages matched the available variants] +# +ForceLanguagePriority Prefer Fallback + +# +# Commonly used filename extensions to character sets. You probably +# want to avoid clashes with the language extensions, unless you +# are good at carefully testing your setup after each change. +# See http://www.iana.org/assignments/character-sets for the +# official list of charset names and their respective RFCs. +# +AddCharset ISO-8859-1 .iso8859-1 .latin1 +AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen +AddCharset ISO-8859-3 .iso8859-3 .latin3 +AddCharset ISO-8859-4 .iso8859-4 .latin4 +AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru +AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb +AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk +AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb +AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk +AddCharset ISO-2022-JP .iso2022-jp .jis +AddCharset ISO-2022-KR .iso2022-kr .kis +AddCharset ISO-2022-CN .iso2022-cn .cis +AddCharset Big5 .Big5 .big5 +# For russian, more than one charset is used (depends on client, mostly): +AddCharset WINDOWS-1251 .cp-1251 .win-1251 +AddCharset CP866 .cp866 +AddCharset KOI8-r .koi8-r .koi8-ru +AddCharset KOI8-ru .koi8-uk .ua +AddCharset ISO-10646-UCS-2 .ucs2 +AddCharset ISO-10646-UCS-4 .ucs4 +AddCharset UTF-8 .utf8 + +# The set below does not map to a specific (iso) standard +# but works on a fairly wide range of browsers. Note that +# capitalization actually matters (it should not, but it +# does for some browsers). +# +# See http://www.iana.org/assignments/character-sets +# for a list of sorts. But browsers support few. +# +AddCharset GB2312 .gb2312 .gb +AddCharset utf-7 .utf7 +AddCharset utf-8 .utf8 +AddCharset big5 .big5 .b5 +AddCharset EUC-TW .euc-tw +AddCharset EUC-JP .euc-jp +AddCharset EUC-KR .euc-kr +AddCharset shift_jis .sjis + +# +# AddType allows you to add to or override the MIME configuration +# file mime.types for specific file types. +# +#AddType application/x-tar .tgz +# +# AddEncoding allows you to have certain browsers uncompress +# information on the fly. Note: Not all browsers support this. +# Despite the name similarity, the following Add* directives have nothing +# to do with the FancyIndexing customization directives above. +# +#AddEncoding x-compress .Z +#AddEncoding x-gzip .gz .tgz +# +# If the AddEncoding directives above are commented-out, then you +# probably should define those extensions to indicate media types: +# +AddType application/x-compress .Z +AddType application/x-gzip .gz .tgz + +# +# AddHandler allows you to map certain file extensions to "handlers": +# actions unrelated to filetype. These can be either built into the server +# or added with the Action directive (see below) +# +# To use CGI scripts outside of ScriptAliased directories: +# (You will also need to add "ExecCGI" to the "Options" directive.) +# +#AddHandler cgi-script .cgi + +# +# For files that include their own HTTP headers: +# +#AddHandler send-as-is asis + +# +# For server-parsed imagemap files: +# +#AddHandler imap-file map + +# +# For type maps (negotiated resources): +# (This is enabled by default to allow the Apache "It Worked" page +# to be distributed in multiple languages.) +# +AddHandler type-map var + +# +# Filters allow you to process content before it is sent to the client. +# +# To parse .shtml files for server-side includes (SSI): +# (You will also need to add "Includes" to the "Options" directive.) +# +#AddType text/html .shtml +#AddOutputFilter INCLUDES .shtml + +# +# Action lets you define media types that will execute a script whenever +# a matching file is called. This eliminates the need for repeated URL +# pathnames for oft-used CGI file processors. +# Format: Action media/type /cgi-script/location +# Format: Action handler-name /cgi-script/location +# + +# +# Customizable error responses come in three flavors: +# 1) plain text 2) local redirects 3) external redirects +# +# Some examples: +#ErrorDocument 500 "The server made a boo boo." +#ErrorDocument 404 /missing.html +#ErrorDocument 404 "/cgi-bin/missing_handler.pl" +#ErrorDocument 402 http://www.example.com/subscription_info.html +# + +# +# Putting this all together, we can internationalize error responses. +# +# We use Alias to redirect any /error/HTTP_.html.var response to +# our collection of by-error message multi-language collections. We use +# includes to substitute the appropriate text. +# +# You can modify the messages' appearance without changing any of the +# default HTTP_.html.var files by adding the line: +# +# Alias /error/include/ "/your/include/path/" +# +# which allows you to create your own set of files by starting with the +# /mnt/elba/rubbos/apache2/error/include/ files and copying them to /your/include/path/, +# even on a per-VirtualHost basis. The default include files will display +# your Apache version number and your ServerAdmin email address regardless +# of the setting of ServerSignature. +# +# The internationalized error documents require mod_alias, mod_include +# and mod_negotiation. To activate them, uncomment the following 30 lines. + +# Alias /error/ "/mnt/elba/rubbos/apache2/error/" +# +# +# AllowOverride None +# Options IncludesNoExec +# AddOutputFilter Includes html +# AddHandler type-map var +# Order allow,deny +# Allow from all +# LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr +# ForceLanguagePriority Prefer Fallback +# +# +# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var +# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var +# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var +# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var +# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var +# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var +# ErrorDocument 410 /error/HTTP_GONE.html.var +# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var +# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var +# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var +# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var +# ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var +# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var +# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var +# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var +# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var +# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var + + +# +# The following directives modify normal HTTP response behavior to +# handle known problems with browser implementations. +# +BrowserMatch "Mozilla/2" nokeepalive +BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 +BrowserMatch "RealPlayer 4\.0" force-response-1.0 +BrowserMatch "Java/1\.0" force-response-1.0 +BrowserMatch "JDK/1\.0" force-response-1.0 + +# +# The following directive disables redirects on non-GET requests for +# a directory that does not include the trailing slash. This fixes a +# problem with Microsoft WebFolders which does not appropriately handle +# redirects for folders with DAV methods. +# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV. +# +BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully +BrowserMatch "^WebDrive" redirect-carefully +BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully +BrowserMatch "^gnome-vfs" redirect-carefully + +# +# Allow server status reports generated by mod_status, +# with the URL of http://servername/server-status +# Change the ".example.com" to match your domain to enable. +# +# +# SetHandler server-status +# Order deny,allow +# Deny from all +# Allow from .example.com +# + +# +# Allow remote server configuration reports, with the URL of +# http://servername/server-info (requires that mod_info.c be loaded). +# Change the ".example.com" to match your domain to enable. +# +# +# SetHandler server-info +# Order deny,allow +# Deny from all +# Allow from .example.com +# + + +# +# Bring in additional module-specific configurations +# + + Include conf/ssl.conf + + + +### Section 3: Virtual Hosts +# +# VirtualHost: If you want to maintain multiple domains/hostnames on your +# machine you can setup VirtualHost containers for them. Most configurations +# use only name-based virtual hosts so the server doesn't need to worry about +# IP addresses. This is indicated by the asterisks in the directives below. +# +# Please see the documentation at +# +# for further details before you try to setup virtual hosts. +# +# You may use the command line option '-S' to verify your virtual host +# configuration. + +# +# Use name-based virtual hosting. +# +#NameVirtualHost *:80 + +# +# VirtualHost example: +# Almost any Apache directive may go into a VirtualHost container. +# The first VirtualHost section is used for requests without a known +# server name. +# +# +# ServerAdmin webmaster@dummy-host.example.com +# DocumentRoot /www/docs/dummy-host.example.com +# ServerName dummy-host.example.com +# ErrorLog logs/dummy-host.example.com-error_log +# CustomLog logs/dummy-host.example.com-access_log common +# + + + +LoadModule jk_module "/bottlenecks/rubbos/app/apache2/modules/mod_jk.so" + +# Where to find workers.properties +JkWorkersFile /bottlenecks/rubbos/app/apache2/conf/workers.properties + +# Where to put jk logs +JkLogFile /bottlenecks/rubbos/app/apache2/logs/mod_jk.log + +# Set the jk log level [debug/error/info] +JkLogLevel info + +# Select the log format +JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " + +# JkOptions indicate to send SSL KEY SIZE, +JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories + +# JkRequestLogFormat set the request format +JkRequestLogFormat "%w %V %T" + +# Globally deny access to the WEB-INF directory + + AllowOverride None + deny from all + + + +JkMount /*/servlet/* worker1 +JkMount /*.jsp worker1 +#JkMount /rubbos worker1 +#JkMount /rubbos/* worker1 + + +ServerName localhost diff --git a/rubbos/app/apache2/conf/magic b/rubbos/app/apache2/conf/magic new file mode 100644 index 00000000..0de73361 --- /dev/null +++ b/rubbos/app/apache2/conf/magic @@ -0,0 +1,382 @@ +# Magic data for mod_mime_magic Apache module (originally for file(1) command) +# The module is described in /manual/mod/mod_mime_magic.html +# +# The format is 4-5 columns: +# Column #1: byte number to begin checking from, ">" indicates continuation +# Column #2: type of data to match +# Column #3: contents of data to match +# Column #4: MIME type of result +# Column #5: MIME encoding of result (optional) + +#------------------------------------------------------------------------------ +# Localstuff: file(1) magic for locally observed files +# Add any locally observed files here. + +#------------------------------------------------------------------------------ +# end local stuff +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Java + +0 short 0xcafe +>2 short 0xbabe application/java + +#------------------------------------------------------------------------------ +# audio: file(1) magic for sound formats +# +# from Jan Nicolai Langfeldt , +# + +# Sun/NeXT audio data +0 string .snd +>12 belong 1 audio/basic +>12 belong 2 audio/basic +>12 belong 3 audio/basic +>12 belong 4 audio/basic +>12 belong 5 audio/basic +>12 belong 6 audio/basic +>12 belong 7 audio/basic + +>12 belong 23 audio/x-adpcm + +# DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format +# that uses little-endian encoding and has a different magic number +# (0x0064732E in little-endian encoding). +0 lelong 0x0064732E +>12 lelong 1 audio/x-dec-basic +>12 lelong 2 audio/x-dec-basic +>12 lelong 3 audio/x-dec-basic +>12 lelong 4 audio/x-dec-basic +>12 lelong 5 audio/x-dec-basic +>12 lelong 6 audio/x-dec-basic +>12 lelong 7 audio/x-dec-basic +# compressed (G.721 ADPCM) +>12 lelong 23 audio/x-dec-adpcm + +# Bytes 0-3 of AIFF, AIFF-C, & 8SVX audio files are "FORM" +# AIFF audio data +8 string AIFF audio/x-aiff +# AIFF-C audio data +8 string AIFC audio/x-aiff +# IFF/8SVX audio data +8 string 8SVX audio/x-aiff + +# Creative Labs AUDIO stuff +# Standard MIDI data +0 string MThd audio/unknown +#>9 byte >0 (format %d) +#>11 byte >1 using %d channels +# Creative Music (CMF) data +0 string CTMF audio/unknown +# SoundBlaster instrument data +0 string SBI audio/unknown +# Creative Labs voice data +0 string Creative\ Voice\ File audio/unknown +## is this next line right? it came this way... +#>19 byte 0x1A +#>23 byte >0 - version %d +#>22 byte >0 \b.%d + +# [GRR 950115: is this also Creative Labs? Guessing that first line +# should be string instead of unknown-endian long...] +#0 long 0x4e54524b MultiTrack sound data +#0 string NTRK MultiTrack sound data +#>4 long x - version %ld + +# Microsoft WAVE format (*.wav) +# [GRR 950115: probably all of the shorts and longs should be leshort/lelong] +# Microsoft RIFF +0 string RIFF audio/unknown +# - WAVE format +>8 string WAVE audio/x-wav +# MPEG audio. +0 beshort&0xfff0 0xfff0 audio/mpeg +# C64 SID Music files, from Linus Walleij +0 string PSID audio/prs.sid + +#------------------------------------------------------------------------------ +# c-lang: file(1) magic for C programs or various scripts +# + +# XPM icons (Greg Roelofs, newt@uchicago.edu) +# ideally should go into "images", but entries below would tag XPM as C source +0 string /*\ XPM image/x-xbm 7bit + +# this first will upset you if you're a PL/1 shop... (are there any left?) +# in which case rm it; ascmagic will catch real C programs +# C or REXX program text +0 string /* text/plain +# C++ program text +0 string // text/plain + +#------------------------------------------------------------------------------ +# compress: file(1) magic for pure-compression formats (no archives) +# +# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, whap, etc. +# +# Formats for various forms of compressed data +# Formats for "compress" proper have been moved into "compress.c", +# because it tries to uncompress it to figure out what's inside. + +# standard unix compress +0 string \037\235 application/octet-stream x-compress + +# gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver) +0 string \037\213 application/octet-stream x-gzip + +# According to gzip.h, this is the correct byte order for packed data. +0 string \037\036 application/octet-stream +# +# This magic number is byte-order-independent. +# +0 short 017437 application/octet-stream + +# XXX - why *two* entries for "compacted data", one of which is +# byte-order independent, and one of which is byte-order dependent? +# +# compacted data +0 short 0x1fff application/octet-stream +0 string \377\037 application/octet-stream +# huf output +0 short 0145405 application/octet-stream + +# Squeeze and Crunch... +# These numbers were gleaned from the Unix versions of the programs to +# handle these formats. Note that I can only uncrunch, not crunch, and +# I didn't have a crunched file handy, so the crunch number is untested. +# Keith Waclena +#0 leshort 0x76FF squeezed data (CP/M, DOS) +#0 leshort 0x76FE crunched data (CP/M, DOS) + +# Freeze +#0 string \037\237 Frozen file 2.1 +#0 string \037\236 Frozen file 1.0 (or gzip 0.5) + +# lzh? +#0 string \037\240 LZH compressed data + +#------------------------------------------------------------------------------ +# frame: file(1) magic for FrameMaker files +# +# This stuff came on a FrameMaker demo tape, most of which is +# copyright, but this file is "published" as witness the following: +# +0 string \ +# and Anna Shergold +# +0 string \ +0 string \14 byte 12 (OS/2 1.x format) +#>14 byte 64 (OS/2 2.x format) +#>14 byte 40 (Windows 3.x format) +#0 string IC icon +#0 string PI pointer +#0 string CI color icon +#0 string CP color pointer +#0 string BA bitmap array + + +#------------------------------------------------------------------------------ +# lisp: file(1) magic for lisp programs +# +# various lisp types, from Daniel Quinlan (quinlan@yggdrasil.com) +0 string ;; text/plain 8bit +# Emacs 18 - this is always correct, but not very magical. +0 string \012( application/x-elc +# Emacs 19 +0 string ;ELC\023\000\000\000 application/x-elc + +#------------------------------------------------------------------------------ +# mail.news: file(1) magic for mail and news +# +# There are tests to ascmagic.c to cope with mail and news. +0 string Relay-Version: message/rfc822 7bit +0 string #!\ rnews message/rfc822 7bit +0 string N#!\ rnews message/rfc822 7bit +0 string Forward\ to message/rfc822 7bit +0 string Pipe\ to message/rfc822 7bit +0 string Return-Path: message/rfc822 7bit +0 string Path: message/news 8bit +0 string Xref: message/news 8bit +0 string From: message/rfc822 7bit +0 string Article message/news 8bit +#------------------------------------------------------------------------------ +# msword: file(1) magic for MS Word files +# +# Contributor claims: +# Reversed-engineered MS Word magic numbers +# + +0 string \376\067\0\043 application/msword +0 string \333\245-\0\0\0 application/msword + +# disable this one because it applies also to other +# Office/OLE documents for which msword is not correct. See PR#2608. +#0 string \320\317\021\340\241\261 application/msword + + + +#------------------------------------------------------------------------------ +# printer: file(1) magic for printer-formatted files +# + +# PostScript +0 string %! application/postscript +0 string \004%! application/postscript + +# Acrobat +# (due to clamen@cs.cmu.edu) +0 string %PDF- application/pdf + +#------------------------------------------------------------------------------ +# sc: file(1) magic for "sc" spreadsheet +# +38 string Spreadsheet application/x-sc + +#------------------------------------------------------------------------------ +# tex: file(1) magic for TeX files +# +# XXX - needs byte-endian stuff (big-endian and little-endian DVI?) +# +# From + +# Although we may know the offset of certain text fields in TeX DVI +# and font files, we can't use them reliably because they are not +# zero terminated. [but we do anyway, christos] +0 string \367\002 application/x-dvi +#0 string \367\203 TeX generic font data +#0 string \367\131 TeX packed font data +#0 string \367\312 TeX virtual font data +#0 string This\ is\ TeX, TeX transcript text +#0 string This\ is\ METAFONT, METAFONT transcript text + +# There is no way to detect TeX Font Metric (*.tfm) files without +# breaking them apart and reading the data. The following patterns +# match most *.tfm files generated by METAFONT or afm2tfm. +#2 string \000\021 TeX font metric data +#2 string \000\022 TeX font metric data +#>34 string >\0 (%s) + +# Texinfo and GNU Info, from Daniel Quinlan (quinlan@yggdrasil.com) +#0 string \\input\ texinfo Texinfo source text +#0 string This\ is\ Info\ file GNU Info text + +# correct TeX magic for Linux (and maybe more) +# from Peter Tobias (tobias@server.et-inf.fho-emden.de) +# +0 leshort 0x02f7 application/x-dvi + +# RTF - Rich Text Format +0 string {\\rtf application/rtf + +#------------------------------------------------------------------------------ +# animation: file(1) magic for animation/movie formats +# +# animation formats, originally from vax@ccwf.cc.utexas.edu (VaX#n8) +# MPEG file +0 string \000\000\001\263 video/mpeg +# +# The contributor claims: +# I couldn't find a real magic number for these, however, this +# -appears- to work. Note that it might catch other files, too, +# so BE CAREFUL! +# +# Note that title and author appear in the two 20-byte chunks +# at decimal offsets 2 and 22, respectively, but they are XOR'ed with +# 255 (hex FF)! DL format SUCKS BIG ROCKS. +# +# DL file version 1 , medium format (160x100, 4 images/screen) +0 byte 1 video/unknown +0 byte 2 video/unknown +# Quicktime video, from Linus Walleij +# from Apple quicktime file format documentation. +4 string moov video/quicktime +4 string mdat video/quicktime + diff --git a/rubbos/app/apache2/conf/mime.types b/rubbos/app/apache2/conf/mime.types new file mode 100644 index 00000000..1ae00972 --- /dev/null +++ b/rubbos/app/apache2/conf/mime.types @@ -0,0 +1,1351 @@ +# This file maps Internet media types to unique file extension(s). +# Although created for httpd, this file is used by many software systems +# and has been placed in the public domain for unlimited redisribution. +# +# The table below contains both registered and (common) unregistered types. +# A type that has no unique extension can be ignored -- they are listed +# here to guide configurations toward known types and to make it easier to +# identify "new" types. File extensions are also commonly used to indicate +# content languages and encodings, so choose them carefully. +# +# Internet media types should be registered as described in RFC 4288. +# The registry is at . +# +# MIME type Extensions +# application/3gpp-ims+xml +# application/activemessage +application/andrew-inset ez +# application/applefile +application/applixware aw +application/atom+xml atom +application/atomcat+xml atomcat +# application/atomicmail +application/atomsvc+xml atomsvc +# application/auth-policy+xml +# application/batch-smtp +# application/beep+xml +# application/cals-1840 +application/ccxml+xml ccxml +# application/cea-2018+xml +# application/cellml+xml +# application/cnrp+xml +# application/commonground +# application/conference-info+xml +# application/cpl+xml +# application/csta+xml +# application/cstadata+xml +application/cu-seeme cu +# application/cybercash +application/davmount+xml davmount +# application/dca-rft +# application/dec-dx +# application/dialog-info+xml +# application/dicom +# application/dns +application/dssc+der dssc +application/dssc+xml xdssc +# application/dvcs +application/ecmascript ecma +# application/edi-consent +# application/edi-x12 +# application/edifact +application/emma+xml emma +# application/epp+xml +application/epub+zip epub +# application/eshop +# application/example +# application/fastinfoset +# application/fastsoap +# application/fits +application/font-tdpfr pfr +# application/h224 +# application/held+xml +# application/http +application/hyperstudio stk +# application/ibe-key-request+xml +# application/ibe-pkg-reply+xml +# application/ibe-pp-data +# application/iges +# application/im-iscomposing+xml +# application/index +# application/index.cmd +# application/index.obj +# application/index.response +# application/index.vnd +# application/iotp +application/ipfix ipfix +# application/ipp +# application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class +application/javascript js +application/json json +# application/kpml-request+xml +# application/kpml-response+xml +application/lost+xml lostxml +application/mac-binhex40 hqx +application/mac-compactpro cpt +# application/macwriteii +application/marc mrc +application/mathematica ma nb mb +application/mathml+xml mathml +# application/mbms-associated-procedure-description+xml +# application/mbms-deregister+xml +# application/mbms-envelope+xml +# application/mbms-msk+xml +# application/mbms-msk-response+xml +# application/mbms-protection-description+xml +# application/mbms-reception-report+xml +# application/mbms-register+xml +# application/mbms-register-response+xml +# application/mbms-user-service-description+xml +application/mbox mbox +# application/media_control+xml +application/mediaservercontrol+xml mscml +# application/mikey +# application/moss-keys +# application/moss-signature +# application/mosskey-data +# application/mosskey-request +application/mp4 mp4s +# application/mpeg4-generic +# application/mpeg4-iod +# application/mpeg4-iod-xmt +application/msword doc dot +application/mxf mxf +# application/nasdata +# application/news-checkgroups +# application/news-groupinfo +# application/news-transmission +# application/nss +# application/ocsp-request +# application/ocsp-response +application/octet-stream bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy +application/oda oda +application/oebps-package+xml opf +application/ogg ogx +application/onenote onetoc onetoc2 onetmp onepkg +# application/parityfec +application/patch-ops-error+xml xer +application/pdf pdf +application/pgp-encrypted pgp +# application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +# application/pidf+xml +# application/pidf-diff+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +# application/poc-settings+xml +application/postscript ai eps ps +# application/prs.alvestrand.titrax-sheet +application/prs.cww cww +# application/prs.nprend +# application/prs.plucker +# application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +# application/remote-printing +application/resource-lists+xml rl +application/resource-lists-diff+xml rld +# application/riscos +# application/rlmi+xml +application/rls-services+xml rs +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +# application/rtx +# application/samlassertion+xml +# application/samlmetadata+xml +application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp +application/sdp sdp +# application/set-payment +application/set-payment-initiation setpay +# application/set-registration +application/set-registration-initiation setreg +# application/sgml +# application/sgml-open-catalog +application/shf+xml shf +# application/sieve +# application/simple-filter+xml +# application/simple-message-summary +# application/simplesymbolcontainer +# application/slate +# application/smil +application/smil+xml smi smil +# application/soap+fastinfoset +# application/soap+xml +application/sparql-query rq +application/sparql-results+xml srx +# application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/ssml+xml ssml +# application/timestamp-query +# application/timestamp-reply +# application/tve-trigger +# application/ulpfec +# application/vemmi +# application/vividence.scriptfile +# application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +# application/vnd.3gpp.sms +# application/vnd.3gpp2.bcmcsinfo+xml +# application/vnd.3gpp2.sms +application/vnd.3gpp2.tcap tcap +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.air-application-installer-package+zip air +# application/vnd.adobe.partial-upload +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +# application/vnd.aether.imp +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc +application/vnd.amiga.ami ami +application/vnd.android.package-archive apk +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.apple.mpegurl m3u8 +# application/vnd.arastra.swi +application/vnd.aristanetworks.swi swi +application/vnd.audiograph aep +# application/vnd.autopackage +# application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +# application/vnd.bluetooth.ep.oob +application/vnd.bmi bmi +application/vnd.businessobjects rep +# application/vnd.cab-jscript +# application/vnd.canon-cpdl +# application/vnd.canon-lips +# application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +# application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.cloanto.rp9 rp9 +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +# application/vnd.commerce-battelle +application/vnd.commonspace csp +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +# application/vnd.ctct.ws+xml +# application/vnd.cups-pdf +# application/vnd.cups-postscript +application/vnd.cups-ppd ppd +# application/vnd.cups-raster +# application/vnd.cups-raw +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +# application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.denovo.fcselayout-link fe_launch +# application/vnd.dir-bi.plate-dl-nosuffix +application/vnd.dna dna +application/vnd.dolby.mlp mlp +# application/vnd.dolby.mobile.1 +# application/vnd.dolby.mobile.2 +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +# application/vnd.dvb.esgcontainer +# application/vnd.dvb.ipdcdftnotifaccess +# application/vnd.dvb.ipdcesgaccess +# application/vnd.dvb.ipdcroaming +# application/vnd.dvb.iptv.alfec-base +# application/vnd.dvb.iptv.alfec-enhancement +# application/vnd.dvb.notif-aggregate-root+xml +# application/vnd.dvb.notif-container+xml +# application/vnd.dvb.notif-generic+xml +# application/vnd.dvb.notif-ia-msglist+xml +# application/vnd.dvb.notif-ia-registration-request+xml +# application/vnd.dvb.notif-ia-registration-response+xml +# application/vnd.dvb.notif-init+xml +# application/vnd.dxr +application/vnd.dynageo geo +# application/vnd.ecdis-update +application/vnd.ecowin.chart mag +# application/vnd.ecowin.filerequest +# application/vnd.ecowin.fileupdate +# application/vnd.ecowin.series +# application/vnd.ecowin.seriesrequest +# application/vnd.ecowin.seriesupdate +# application/vnd.emclient.accessrequest+xml +application/vnd.enliven nml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +# application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +# application/vnd.etsi.aoc+xml +# application/vnd.etsi.cug+xml +# application/vnd.etsi.iptvcommand+xml +# application/vnd.etsi.iptvdiscovery+xml +# application/vnd.etsi.iptvprofile+xml +# application/vnd.etsi.iptvsad-bc+xml +# application/vnd.etsi.iptvsad-cod+xml +# application/vnd.etsi.iptvsad-npvr+xml +# application/vnd.etsi.iptvueprofile+xml +# application/vnd.etsi.mcid+xml +# application/vnd.etsi.sci+xml +# application/vnd.etsi.simservs+xml +# application/vnd.etsi.tsl+xml +# application/vnd.etsi.tsl.der +# application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +# application/vnd.f-secure.mobile +application/vnd.fdf fdf +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed seed dataless +# application/vnd.ffsns +# application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +# application/vnd.font-fontforge-sfd +application/vnd.framemaker fm frame maker book +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +# application/vnd.fujixerox.art-ex +# application/vnd.fujixerox.art4 +# application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +# application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +# application/vnd.geocube+xml +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.geonext gxt +application/vnd.geoplan g2w +application/vnd.geospace g3w +# application/vnd.globalplatform.card-content-mgt +# application/vnd.globalplatform.card-content-mgt-response +application/vnd.gmx gmx +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +# application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +# application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +# application/vnd.httphone +application/vnd.hydrostatix.sof-data sfd-hdstx +application/vnd.hzn-3d-crossword x3d +# application/vnd.ibm.afplinedata +# application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +# application/vnd.informedcontrol.rms+xml +# application/vnd.informix-visionary +application/vnd.intercon.formnet xpw xpx +# application/vnd.intertrust.digibox +# application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +# application/vnd.iptc.g2.conceptitem+xml +# application/vnd.iptc.g2.knowledgeitem+xml +# application/vnd.iptc.g2.newsitem+xml +# application/vnd.iptc.g2.packageitem+xml +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.jam jam +# application/vnd.japannet-directory-service +# application/vnd.japannet-jpnstore-wakeup +# application/vnd.japannet-payment-wakeup +# application/vnd.japannet-registration +# application/vnd.japannet-registration-wakeup +# application/vnd.japannet-setstore-wakeup +# application/vnd.japannet-verification +# application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.joost.joda-archive joda +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.kodak-descriptor sse +# application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +# application/vnd.marlin.drm.actiontoken+xml +# application/vnd.marlin.drm.conftoken+xml +# application/vnd.marlin.drm.license+xml +# application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +# application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +# application/vnd.minisoft-hp3000-save +# application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +# application/vnd.motorola.flexsuite +# application/vnd.motorola.flexsuite.adsi +# application/vnd.motorola.flexsuite.fis +# application/vnd.motorola.flexsuite.gotap +# application/vnd.motorola.flexsuite.kmr +# application/vnd.motorola.flexsuite.ttc +# application/vnd.motorola.flexsuite.wem +# application/vnd.motorola.iprm +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +# application/vnd.ms-asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +# application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +application/vnd.ms-project mpp mpt +# application/vnd.ms-tnef +# application/vnd.ms-wmdrm.lic-chlg-req +# application/vnd.ms-wmdrm.lic-resp +# application/vnd.ms-wmdrm.meter-chlg-req +# application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +# application/vnd.msign +# application/vnd.multiad.creator +# application/vnd.multiad.creator.cif +# application/vnd.music-niff +application/vnd.musician mus +application/vnd.muvee.style msty +# application/vnd.ncd.control +# application/vnd.ncd.reference +# application/vnd.nervana +# application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +# application/vnd.nokia.catalogs +# application/vnd.nokia.conml+wbxml +# application/vnd.nokia.conml+xml +# application/vnd.nokia.isds-radio-presets +# application/vnd.nokia.iptv.config+xml +# application/vnd.nokia.landmark+wbxml +# application/vnd.nokia.landmark+xml +# application/vnd.nokia.landmarkcollection+xml +# application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +# application/vnd.nokia.ncd +# application/vnd.nokia.pcd+wbxml +# application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +# application/vnd.ntt-local.file-transfer +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template odft +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master otm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +# application/vnd.obn +application/vnd.olpc-sugar xo +# application/vnd.oma-scws-config +# application/vnd.oma-scws-http-request +# application/vnd.oma-scws-http-response +# application/vnd.oma.bcast.associated-procedure-parameter+xml +# application/vnd.oma.bcast.drm-trigger+xml +# application/vnd.oma.bcast.imd+xml +# application/vnd.oma.bcast.ltkm +# application/vnd.oma.bcast.notification+xml +# application/vnd.oma.bcast.provisioningtrigger +# application/vnd.oma.bcast.sgboot +# application/vnd.oma.bcast.sgdd+xml +# application/vnd.oma.bcast.sgdu +# application/vnd.oma.bcast.simple-symbol-container +# application/vnd.oma.bcast.smartcard-trigger+xml +# application/vnd.oma.bcast.sprov+xml +# application/vnd.oma.bcast.stkm +# application/vnd.oma.dcd +# application/vnd.oma.dcdc +application/vnd.oma.dd2+xml dd2 +# application/vnd.oma.drm.risd+xml +# application/vnd.oma.group-usage-list+xml +# application/vnd.oma.poc.detailed-progress-report+xml +# application/vnd.oma.poc.final-report+xml +# application/vnd.oma.poc.groups+xml +# application/vnd.oma.poc.invocation-descriptor+xml +# application/vnd.oma.poc.optimized-progress-report+xml +# application/vnd.oma.push +# application/vnd.oma.scidm.messages+xml +# application/vnd.oma.xcap-directory+xml +# application/vnd.omads-email+xml +# application/vnd.omads-file+xml +# application/vnd.omads-folder+xml +# application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +# application/vnd.openxmlformats-officedocument.custom-properties+xml +# application/vnd.openxmlformats-officedocument.customxmlproperties+xml +# application/vnd.openxmlformats-officedocument.drawing+xml +# application/vnd.openxmlformats-officedocument.drawingml.chart+xml +# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml +# application/vnd.openxmlformats-officedocument.extended-properties+xml +# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml +# application/vnd.openxmlformats-officedocument.presentationml.comments+xml +# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +# application/vnd.openxmlformats-officedocument.presentationml.slide+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml +# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml +# application/vnd.openxmlformats-officedocument.presentationml.tags+xml +application/vnd.openxmlformats-officedocument.presentationml.template potx +# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml +# application/vnd.openxmlformats-officedocument.theme+xml +# application/vnd.openxmlformats-officedocument.themeoverride+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml +# application/vnd.openxmlformats-package.core-properties+xml +# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml +# application/vnd.osa.netdeploy +# application/vnd.osgi.bundle +application/vnd.osgi.dp dp +# application/vnd.otps.ct-kip+xml +application/vnd.palm pdb pqa oprc +# application/vnd.paos.xml +application/vnd.pawaafile paw +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +# application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.pmi.widget wg +# application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +# application/vnd.powerbuilder6-s +# application/vnd.powerbuilder7 +# application/vnd.powerbuilder7-s +# application/vnd.powerbuilder75 +# application/vnd.powerbuilder75-s +# application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +# application/vnd.pwg-multiplexed +# application/vnd.pwg-xhtml-print+xml +# application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +# application/vnd.radisys.moml+xml +# application/vnd.radisys.msml+xml +# application/vnd.radisys.msml-audit+xml +# application/vnd.radisys.msml-audit-conf+xml +# application/vnd.radisys.msml-audit-conn+xml +# application/vnd.radisys.msml-audit-dialog+xml +# application/vnd.radisys.msml-audit-stream+xml +# application/vnd.radisys.msml-conf+xml +# application/vnd.radisys.msml-dialog+xml +# application/vnd.radisys.msml-dialog-base+xml +# application/vnd.radisys.msml-dialog-fax-detect+xml +# application/vnd.radisys.msml-dialog-fax-sendrecv+xml +# application/vnd.radisys.msml-dialog-group+xml +# application/vnd.radisys.msml-dialog-speech+xml +# application/vnd.radisys.msml-dialog-transform+xml +# application/vnd.rapid +application/vnd.realvnc.bed bed +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml musicxml +# application/vnd.renlearn.rlprint +application/vnd.rim.cod cod +application/vnd.rn-realmedia rm +application/vnd.route66.link66+xml link66 +# application/vnd.ruckus.download +# application/vnd.s3sms +application/vnd.sailingtracker.track st +# application/vnd.sbm.cid +# application/vnd.sbm.mid2 +# application/vnd.scribus +# application/vnd.sealed.3df +# application/vnd.sealed.csf +# application/vnd.sealed.doc +# application/vnd.sealed.eml +# application/vnd.sealed.mht +# application/vnd.sealed.net +# application/vnd.sealed.ppt +# application/vnd.sealed.tiff +# application/vnd.sealed.xls +# application/vnd.sealedmedia.softseal.html +# application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +# application/vnd.smart.notebook +application/vnd.smart.teacher teacher +# application/vnd.software602.filler.form+xml +# application/vnd.software602.filler.form-xml-zip +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +# application/vnd.sss-cod +# application/vnd.sss-dtf +# application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw +application/vnd.stardivision.writer vor +application/vnd.stardivision.writer-global sgl +# application/vnd.street-stream +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +# application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +# application/vnd.swiftview-ics +application/vnd.symbian.install sis sisx +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +# application/vnd.syncml.dm.notification +# application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +# application/vnd.truedoc +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +# application/vnd.uplanet.alert +# application/vnd.uplanet.alert-wbxml +# application/vnd.uplanet.bearer-choice +# application/vnd.uplanet.bearer-choice-wbxml +# application/vnd.uplanet.cacheop +# application/vnd.uplanet.cacheop-wbxml +# application/vnd.uplanet.channel +# application/vnd.uplanet.channel-wbxml +# application/vnd.uplanet.list +# application/vnd.uplanet.list-wbxml +# application/vnd.uplanet.listcmd +# application/vnd.uplanet.listcmd-wbxml +# application/vnd.uplanet.signal +application/vnd.vcx vcx +# application/vnd.vd-study +# application/vnd.vectorworks +# application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +# application/vnd.vividence.scriptfile +application/vnd.vsf vsf +# application/vnd.wap.sic +# application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +# application/vnd.wfa.wsc +# application/vnd.wmc +# application/vnd.wmf.bootstrap +# application/vnd.wolfram.mathematica +# application/vnd.wolfram.mathematica.package +application/vnd.wolfram.player nbp +application/vnd.wordperfect wpd +application/vnd.wqd wqd +# application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +# application/vnd.wv.csp+wbxml +# application/vnd.wv.csp+xml +# application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +# application/vnd.xfdl.webform +# application/vnd.xmi+xml +# application/vnd.xmpie.cpkg +# application/vnd.xmpie.dpkg +# application/vnd.xmpie.plan +# application/vnd.xmpie.ppkg +# application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +# application/watcherinfo+xml +# application/whoispp-query +# application/whoispp-response +application/winhlp hlp +# application/wita +# application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-abiword abw +application/x-ace-compressed ace +application/x-authorware-bin aab x32 u32 vox +application/x-authorware-map aam +application/x-authorware-seg aas +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +# application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-debian-package deb udeb +application/x-director dir dcr dxr cst cct cxt w3d fgd swa +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res +application/x-dvi dvi +application/x-font-bdf bdf +# application/x-font-dos +# application/x-font-framemaker +application/x-font-ghostscript gsf +# application/x-font-libgrx +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +# application/x-font-speedo +# application/x-font-sunos-news +application/x-font-ttf ttf ttc +application/x-font-type1 pfa pfb pfm afm +# application/x-font-vfont +application/x-futuresplash spl +application/x-gnumeric gnumeric +application/x-gtar gtar +# application/x-gzip +application/x-hdf hdf +application/x-java-jnlp-file jnlp +application/x-latex latex +application/x-mobipocket-ebook prc mobi +application/x-ms-application application +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-ms-xbap xbap +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-silverlight-app xap +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-tex-tfm tfm +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x-xfig fig +application/x-xpinstall xpi +# application/x400-bp +# application/xcap-att+xml +# application/xcap-caps+xml +# application/xcap-el+xml +# application/xcap-error+xml +# application/xcap-ns+xml +# application/xcon-conference-info-diff+xml +# application/xcon-conference-info+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +# application/xhtml-voice+xml +application/xml xml xsl +application/xml-dtd dtd +# application/xml-external-parsed-entity +# application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/zip zip +# audio/32kadpcm +# audio/3gpp +# audio/3gpp2 +# audio/ac3 +audio/adpcm adp +# audio/amr +# audio/amr-wb +# audio/amr-wb+ +# audio/asc +# audio/atrac-advanced-lossless +# audio/atrac-x +# audio/atrac3 +audio/basic au snd +# audio/bv16 +# audio/bv32 +# audio/clearmode +# audio/cn +# audio/dat12 +# audio/dls +# audio/dsr-es201108 +# audio/dsr-es202050 +# audio/dsr-es202211 +# audio/dsr-es202212 +# audio/dvi4 +# audio/eac3 +# audio/evrc +# audio/evrc-qcp +# audio/evrc0 +# audio/evrc1 +# audio/evrcb +# audio/evrcb0 +# audio/evrcb1 +# audio/evrcwb +# audio/evrcwb0 +# audio/evrcwb1 +# audio/example +# audio/g719 +# audio/g722 +# audio/g7221 +# audio/g723 +# audio/g726-16 +# audio/g726-24 +# audio/g726-32 +# audio/g726-40 +# audio/g728 +# audio/g729 +# audio/g7291 +# audio/g729d +# audio/g729e +# audio/gsm +# audio/gsm-efr +# audio/ilbc +# audio/l16 +# audio/l20 +# audio/l24 +# audio/l8 +# audio/lpc +audio/midi mid midi kar rmi +# audio/mobile-xmf +audio/mp4 mp4a +# audio/mp4a-latm +# audio/mpa +# audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +# audio/mpeg4-generic +audio/ogg oga ogg spx +# audio/parityfec +# audio/pcma +# audio/pcma-wb +# audio/pcmu-wb +# audio/pcmu +# audio/prs.sid +# audio/qcelp +# audio/red +# audio/rtp-enc-aescm128 +# audio/rtp-midi +# audio/rtx +# audio/smv +# audio/smv0 +# audio/smv-qcp +# audio/sp-midi +# audio/speex +# audio/t140c +# audio/t38 +# audio/telephone-event +# audio/tone +# audio/uemclip +# audio/ulpfec +# audio/vdvi +# audio/vmr-wb +# audio/vnd.3gpp.iufp +# audio/vnd.4sb +# audio/vnd.audiokoz +# audio/vnd.celp +# audio/vnd.cisco.nse +# audio/vnd.cmles.radio-events +# audio/vnd.cns.anp1 +# audio/vnd.cns.inf1 +audio/vnd.digital-winds eol +# audio/vnd.dlna.adts +# audio/vnd.dolby.heaac.1 +# audio/vnd.dolby.heaac.2 +# audio/vnd.dolby.mlp +# audio/vnd.dolby.mps +# audio/vnd.dolby.pl2 +# audio/vnd.dolby.pl2x +# audio/vnd.dolby.pl2z +# audio/vnd.dolby.pulse.1 +audio/vnd.dra dra +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +# audio/vnd.everad.plj +# audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.ms-playready.media.pya pya +# audio/vnd.nokia.mobile-xmf +# audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +# audio/vnd.octel.sbc +# audio/vnd.qcelp +# audio/vnd.rhetorex.32kadpcm +# audio/vnd.sealedmedia.softseal.mpeg +# audio/vnd.vmx.cvsd +# audio/vorbis +# audio/vorbis-config +audio/x-aac aac +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +# chemical/x-pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +# image/example +# image/fits +image/g3fax g3 +image/gif gif +image/ief ief +# image/jp2 +image/jpeg jpeg jpg jpe +# image/jpm +# image/jpx +# image/naplps +image/png png +image/prs.btif btif +# image/prs.pti +image/svg+xml svg svgz +# image/t38 +image/tiff tiff tif +# image/tiff-fx +image/vnd.adobe.photoshop psd +# image/vnd.cns.inf2 +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +# image/vnd.globalgraphics.pgb +# image/vnd.microsoft.icon +# image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +# image/vnd.radiance +# image/vnd.sealed.png +# image/vnd.sealedmedia.softseal.gif +# image/vnd.sealedmedia.softseal.jpg +# image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/x-cmu-raster ras +image/x-cmx cmx +image/x-freehand fh fhc fh4 fh5 fh7 +image/x-icon ico +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +# message/cpim +# message/delivery-status +# message/disposition-notification +# message/example +# message/external-body +# message/global +# message/global-delivery-status +# message/global-disposition-notification +# message/global-headers +# message/http +# message/imdn+xml +# message/news +# message/partial +message/rfc822 eml mime +# message/s-http +# message/sip +# message/sipfrag +# message/tracking-status +# message/vnd.si.simp +# model/example +model/iges igs iges +model/mesh msh mesh silo +model/vnd.dwf dwf +# model/vnd.flatland.3dml +model/vnd.gdl gdl +# model/vnd.gs-gdl +# model/vnd.gs.gdl +model/vnd.gtw gtw +# model/vnd.moml+xml +model/vnd.mts mts +# model/vnd.parasolid.transmit.binary +# model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +# multipart/alternative +# multipart/appledouble +# multipart/byteranges +# multipart/digest +# multipart/encrypted +# multipart/example +# multipart/form-data +# multipart/header-set +# multipart/mixed +# multipart/parallel +# multipart/related +# multipart/report +# multipart/signed +# multipart/voice-message +text/calendar ics ifb +text/css css +text/csv csv +# text/directory +# text/dns +# text/ecmascript +# text/enriched +# text/example +text/html html htm +# text/javascript +# text/parityfec +text/plain txt text conf def list log in +# text/prs.fallenstein.rst +text/prs.lines.tag dsc +# text/vnd.radisys.msml-basic-layout +# text/red +# text/rfc822-headers +text/richtext rtx +# text/rtf +# text/rtp-enc-aescm128 +# text/rtx +text/sgml sgml sgm +# text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +# text/ulpfec +text/uri-list uri uris urls +# text/vnd.abc +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.scurl scurl +text/vnd.curl.mcurl mcurl +# text/vnd.dmclientscript +# text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.graphviz gv +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +# text/vnd.iptc.newsml +# text/vnd.iptc.nitf +# text/vnd.latex-z +# text/vnd.motorola.reflex +# text/vnd.ms-mediapackage +# text/vnd.net2phone.commcenter.command +# text/vnd.si.uricatalogue +text/vnd.sun.j2me.app-descriptor jad +# text/vnd.trolltech.linguist +# text/vnd.wap.si +# text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +# text/xml +# text/xml-external-parsed-entity +video/3gpp 3gp +# video/3gpp-tt +video/3gpp2 3g2 +# video/bmpeg +# video/bt656 +# video/celb +# video/dv +# video/example +video/h261 h261 +video/h263 h263 +# video/h263-1998 +# video/h263-2000 +video/h264 h264 +video/jpeg jpgv +# video/jpeg2000 +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +# video/mp1s +# video/mp2p +# video/mp2t +video/mp4 mp4 mp4v mpg4 +# video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +# video/mpeg4-generic +# video/mpv +# video/nv +video/ogg ogv +# video/parityfec +# video/pointer +video/quicktime qt mov +# video/raw +# video/rtp-enc-aescm128 +# video/rtx +# video/smpte292m +# video/ulpfec +# video/vc1 +# video/vnd.cctv +# video/vnd.dlna.mpeg-tts +video/vnd.fvt fvt +# video/vnd.hns.video +# video/vnd.iptvforum.1dparityfec-1010 +# video/vnd.iptvforum.1dparityfec-2005 +# video/vnd.iptvforum.2dparityfec-1010 +# video/vnd.iptvforum.2dparityfec-2005 +# video/vnd.iptvforum.ttsavc +# video/vnd.iptvforum.ttsmpeg2 +# video/vnd.motorola.video +# video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.ms-playready.media.pyv pyv +# video/vnd.nokia.interleaved-multimedia +# video/vnd.nokia.videovoip +# video/vnd.objectvideo +# video/vnd.sealed.mpeg1 +# video/vnd.sealed.mpeg4 +# video/vnd.sealed.swf +# video/vnd.sealedmedia.softseal.mov +video/vnd.vivo viv +video/x-f4v f4v +video/x-fli fli +video/x-flv flv +video/x-m4v m4v +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/rubbos/app/apache2/conf/ssl-std.conf b/rubbos/app/apache2/conf/ssl-std.conf new file mode 100644 index 00000000..691b6ed5 --- /dev/null +++ b/rubbos/app/apache2/conf/ssl-std.conf @@ -0,0 +1,246 @@ +# +# This is the Apache server configuration file providing SSL support. +# It contains the configuration directives to instruct the server how to +# serve pages over an https connection. For detailing information about these +# directives see +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# + +# +# Pseudo Random Number Generator (PRNG): +# Configure one or more sources to seed the PRNG of the SSL library. +# The seed data should be of good random quality. +# WARNING! On some platforms /dev/random blocks if not enough entropy +# is available. This means you then cannot use the /dev/random device +# because it would lead to very long connection times (as long as +# it requires to make more entropy available). But usually those +# platforms additionally provide a /dev/urandom device which doesn't +# block. So, if available, use this one instead. Read the mod_ssl User +# Manual for more details. +# +# Note: This must come before the container to support +# starting without SSL on platforms with no /dev/random equivalent +# but a statically compiled-in mod_ssl. +# +SSLRandomSeed startup builtin +SSLRandomSeed connect builtin +#SSLRandomSeed startup file:/dev/random 512 +#SSLRandomSeed startup file:/dev/urandom 512 +#SSLRandomSeed connect file:/dev/random 512 +#SSLRandomSeed connect file:/dev/urandom 512 + + + +# +# When we also provide SSL we have to listen to the +# standard HTTP port (see above) and to the HTTPS port +# +# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two +# Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443" +# +Listen 443 + +## +## SSL Global Context +## +## All SSL configuration in this context applies both to +## the main server and all SSL-enabled virtual hosts. +## + +# +# Some MIME-types for downloading Certificates and CRLs +# +AddType application/x-x509-ca-cert .crt +AddType application/x-pkcs7-crl .crl + +# Pass Phrase Dialog: +# Configure the pass phrase gathering process. +# The filtering dialog program (`builtin' is a internal +# terminal dialog) has to provide the pass phrase on stdout. +SSLPassPhraseDialog builtin + +# Inter-Process Session Cache: +# Configure the SSL Session Cache: First the mechanism +# to use and second the expiring timeout (in seconds). +#SSLSessionCache none +#SSLSessionCache shmht:/bottlenecks/rubbos/app/apache2/logs/ssl_scache(512000) +#SSLSessionCache shmcb:/bottlenecks/rubbos/app/apache2/logs/ssl_scache(512000) +SSLSessionCache dbm:/bottlenecks/rubbos/app/apache2/logs/ssl_scache +SSLSessionCacheTimeout 300 + +# Semaphore: +# Configure the path to the mutual exclusion semaphore the +# SSL engine uses internally for inter-process synchronization. +SSLMutex file:/bottlenecks/rubbos/app/apache2/logs/ssl_mutex + +## +## SSL Virtual Host Context +## + + + +# General setup for the virtual host +DocumentRoot "/bottlenecks/rubbos/app/apache2/htdocs" +ServerName www.example.com:443 +ServerAdmin you@example.com +ErrorLog /bottlenecks/rubbos/app/apache2/logs/error_log +TransferLog /bottlenecks/rubbos/app/apache2/logs/access_log + +# SSL Engine Switch: +# Enable/Disable SSL for this virtual host. +SSLEngine on + +# SSL Cipher Suite: +# List the ciphers that the client is permitted to negotiate. +# See the mod_ssl documentation for a complete list. +SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL + +# Server Certificate: +# Point SSLCertificateFile at a PEM encoded certificate. If +# the certificate is encrypted, then you will be prompted for a +# pass phrase. Note that a kill -HUP will prompt again. Keep +# in mind that if you have both an RSA and a DSA certificate you +# can configure both in parallel (to also allow the use of DSA +# ciphers, etc.) +SSLCertificateFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/server.crt +#SSLCertificateFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/server-dsa.crt + +# Server Private Key: +# If the key is not combined with the certificate, use this +# directive to point at the key file. Keep in mind that if +# you've both a RSA and a DSA private key you can configure +# both in parallel (to also allow the use of DSA ciphers, etc.) +SSLCertificateKeyFile /bottlenecks/rubbos/app/apache2/conf/ssl.key/server.key +#SSLCertificateKeyFile /bottlenecks/rubbos/app/apache2/conf/ssl.key/server-dsa.key + +# Server Certificate Chain: +# Point SSLCertificateChainFile at a file containing the +# concatenation of PEM encoded CA certificates which form the +# certificate chain for the server certificate. Alternatively +# the referenced file can be the same as SSLCertificateFile +# when the CA certificates are directly appended to the server +# certificate for convinience. +#SSLCertificateChainFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/ca.crt + +# Certificate Authority (CA): +# Set the CA certificate verification path where to find CA +# certificates for client authentication or alternatively one +# huge file containing all of them (file must be PEM encoded) +# Note: Inside SSLCACertificatePath you need hash symlinks +# to point to the certificate files. Use the provided +# Makefile to update the hash symlinks after changes. +#SSLCACertificatePath /bottlenecks/rubbos/app/apache2/conf/ssl.crt +#SSLCACertificateFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/ca-bundle.crt + +# Certificate Revocation Lists (CRL): +# Set the CA revocation path where to find CA CRLs for client +# authentication or alternatively one huge file containing all +# of them (file must be PEM encoded) +# Note: Inside SSLCARevocationPath you need hash symlinks +# to point to the certificate files. Use the provided +# Makefile to update the hash symlinks after changes. +#SSLCARevocationPath /bottlenecks/rubbos/app/apache2/conf/ssl.crl +#SSLCARevocationFile /bottlenecks/rubbos/app/apache2/conf/ssl.crl/ca-bundle.crl + +# Client Authentication (Type): +# Client certificate verification type and depth. Types are +# none, optional, require and optional_no_ca. Depth is a +# number which specifies how deeply to verify the certificate +# issuer chain before deciding the certificate is not valid. +#SSLVerifyClient require +#SSLVerifyDepth 10 + +# Access Control: +# With SSLRequire you can do per-directory access control based +# on arbitrary complex boolean expressions containing server +# variable checks and other lookup directives. The syntax is a +# mixture between C and Perl. See the mod_ssl documentation +# for more details. +# +#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \ +# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ +# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \ +# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \ +# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \ +# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/ +# + +# SSL Engine Options: +# Set various options for the SSL engine. +# o FakeBasicAuth: +# Translate the client X.509 into a Basic Authorisation. This means that +# the standard Auth/DBMAuth methods can be used for access control. The +# user name is the `one line' version of the client's X.509 certificate. +# Note that no password is obtained from the user. Every entry in the user +# file needs this password: `xxj31ZMTZzkVA'. +# o ExportCertData: +# This exports two additional environment variables: SSL_CLIENT_CERT and +# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the +# server (always existing) and the client (only existing when client +# authentication is used). This can be used to import the certificates +# into CGI scripts. +# o StdEnvVars: +# This exports the standard SSL/TLS related `SSL_*' environment variables. +# Per default this exportation is switched off for performance reasons, +# because the extraction step is an expensive operation and is usually +# useless for serving static content. So one usually enables the +# exportation for CGI and SSI requests only. +# o CompatEnvVars: +# This exports obsolete environment variables for backward compatibility +# to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this +# to provide compatibility to existing CGI scripts. +# o StrictRequire: +# This denies access when "SSLRequireSSL" or "SSLRequire" applied even +# under a "Satisfy any" situation, i.e. when it applies access is denied +# and no other module can change it. +# o OptRenegotiate: +# This enables optimized SSL connection renegotiation handling when SSL +# directives are used in per-directory context. +#SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + +# SSL Protocol Adjustments: +# The safe and default but still SSL/TLS standard compliant shutdown +# approach is that mod_ssl sends the close notify alert but doesn't wait for +# the close notify alert from client. When you need a different shutdown +# approach you can use one of the following variables: +# o ssl-unclean-shutdown: +# This forces an unclean shutdown when the connection is closed, i.e. no +# SSL close notify alert is send or allowed to received. This violates +# the SSL/TLS standard but is needed for some brain-dead browsers. Use +# this when you receive I/O errors because of the standard approach where +# mod_ssl sends the close notify alert. +# o ssl-accurate-shutdown: +# This forces an accurate shutdown when the connection is closed, i.e. a +# SSL close notify alert is send and mod_ssl waits for the close notify +# alert of the client. This is 100% SSL/TLS standard compliant, but in +# practice often causes hanging connections with brain-dead browsers. Use +# this only for browsers where you know that their SSL implementation +# works correctly. +# Notice: Most problems of broken clients are also related to the HTTP +# keep-alive facility, so you usually additionally want to disable +# keep-alive for those clients, too. Use variable "nokeepalive" for this. +# Similarly, one has to force some clients to use HTTP/1.0 to workaround +# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and +# "force-response-1.0" for this. +SetEnvIf User-Agent ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + +# Per-Server Logging: +# The home of a custom SSL log file. Use this when you want a +# compact non-error SSL logfile on a virtual host basis. +CustomLog /bottlenecks/rubbos/app/apache2/logs/ssl_request_log \ + "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" + + + + diff --git a/rubbos/app/apache2/conf/ssl.conf b/rubbos/app/apache2/conf/ssl.conf new file mode 100644 index 00000000..691b6ed5 --- /dev/null +++ b/rubbos/app/apache2/conf/ssl.conf @@ -0,0 +1,246 @@ +# +# This is the Apache server configuration file providing SSL support. +# It contains the configuration directives to instruct the server how to +# serve pages over an https connection. For detailing information about these +# directives see +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# + +# +# Pseudo Random Number Generator (PRNG): +# Configure one or more sources to seed the PRNG of the SSL library. +# The seed data should be of good random quality. +# WARNING! On some platforms /dev/random blocks if not enough entropy +# is available. This means you then cannot use the /dev/random device +# because it would lead to very long connection times (as long as +# it requires to make more entropy available). But usually those +# platforms additionally provide a /dev/urandom device which doesn't +# block. So, if available, use this one instead. Read the mod_ssl User +# Manual for more details. +# +# Note: This must come before the container to support +# starting without SSL on platforms with no /dev/random equivalent +# but a statically compiled-in mod_ssl. +# +SSLRandomSeed startup builtin +SSLRandomSeed connect builtin +#SSLRandomSeed startup file:/dev/random 512 +#SSLRandomSeed startup file:/dev/urandom 512 +#SSLRandomSeed connect file:/dev/random 512 +#SSLRandomSeed connect file:/dev/urandom 512 + + + +# +# When we also provide SSL we have to listen to the +# standard HTTP port (see above) and to the HTTPS port +# +# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two +# Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443" +# +Listen 443 + +## +## SSL Global Context +## +## All SSL configuration in this context applies both to +## the main server and all SSL-enabled virtual hosts. +## + +# +# Some MIME-types for downloading Certificates and CRLs +# +AddType application/x-x509-ca-cert .crt +AddType application/x-pkcs7-crl .crl + +# Pass Phrase Dialog: +# Configure the pass phrase gathering process. +# The filtering dialog program (`builtin' is a internal +# terminal dialog) has to provide the pass phrase on stdout. +SSLPassPhraseDialog builtin + +# Inter-Process Session Cache: +# Configure the SSL Session Cache: First the mechanism +# to use and second the expiring timeout (in seconds). +#SSLSessionCache none +#SSLSessionCache shmht:/bottlenecks/rubbos/app/apache2/logs/ssl_scache(512000) +#SSLSessionCache shmcb:/bottlenecks/rubbos/app/apache2/logs/ssl_scache(512000) +SSLSessionCache dbm:/bottlenecks/rubbos/app/apache2/logs/ssl_scache +SSLSessionCacheTimeout 300 + +# Semaphore: +# Configure the path to the mutual exclusion semaphore the +# SSL engine uses internally for inter-process synchronization. +SSLMutex file:/bottlenecks/rubbos/app/apache2/logs/ssl_mutex + +## +## SSL Virtual Host Context +## + + + +# General setup for the virtual host +DocumentRoot "/bottlenecks/rubbos/app/apache2/htdocs" +ServerName www.example.com:443 +ServerAdmin you@example.com +ErrorLog /bottlenecks/rubbos/app/apache2/logs/error_log +TransferLog /bottlenecks/rubbos/app/apache2/logs/access_log + +# SSL Engine Switch: +# Enable/Disable SSL for this virtual host. +SSLEngine on + +# SSL Cipher Suite: +# List the ciphers that the client is permitted to negotiate. +# See the mod_ssl documentation for a complete list. +SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL + +# Server Certificate: +# Point SSLCertificateFile at a PEM encoded certificate. If +# the certificate is encrypted, then you will be prompted for a +# pass phrase. Note that a kill -HUP will prompt again. Keep +# in mind that if you have both an RSA and a DSA certificate you +# can configure both in parallel (to also allow the use of DSA +# ciphers, etc.) +SSLCertificateFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/server.crt +#SSLCertificateFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/server-dsa.crt + +# Server Private Key: +# If the key is not combined with the certificate, use this +# directive to point at the key file. Keep in mind that if +# you've both a RSA and a DSA private key you can configure +# both in parallel (to also allow the use of DSA ciphers, etc.) +SSLCertificateKeyFile /bottlenecks/rubbos/app/apache2/conf/ssl.key/server.key +#SSLCertificateKeyFile /bottlenecks/rubbos/app/apache2/conf/ssl.key/server-dsa.key + +# Server Certificate Chain: +# Point SSLCertificateChainFile at a file containing the +# concatenation of PEM encoded CA certificates which form the +# certificate chain for the server certificate. Alternatively +# the referenced file can be the same as SSLCertificateFile +# when the CA certificates are directly appended to the server +# certificate for convinience. +#SSLCertificateChainFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/ca.crt + +# Certificate Authority (CA): +# Set the CA certificate verification path where to find CA +# certificates for client authentication or alternatively one +# huge file containing all of them (file must be PEM encoded) +# Note: Inside SSLCACertificatePath you need hash symlinks +# to point to the certificate files. Use the provided +# Makefile to update the hash symlinks after changes. +#SSLCACertificatePath /bottlenecks/rubbos/app/apache2/conf/ssl.crt +#SSLCACertificateFile /bottlenecks/rubbos/app/apache2/conf/ssl.crt/ca-bundle.crt + +# Certificate Revocation Lists (CRL): +# Set the CA revocation path where to find CA CRLs for client +# authentication or alternatively one huge file containing all +# of them (file must be PEM encoded) +# Note: Inside SSLCARevocationPath you need hash symlinks +# to point to the certificate files. Use the provided +# Makefile to update the hash symlinks after changes. +#SSLCARevocationPath /bottlenecks/rubbos/app/apache2/conf/ssl.crl +#SSLCARevocationFile /bottlenecks/rubbos/app/apache2/conf/ssl.crl/ca-bundle.crl + +# Client Authentication (Type): +# Client certificate verification type and depth. Types are +# none, optional, require and optional_no_ca. Depth is a +# number which specifies how deeply to verify the certificate +# issuer chain before deciding the certificate is not valid. +#SSLVerifyClient require +#SSLVerifyDepth 10 + +# Access Control: +# With SSLRequire you can do per-directory access control based +# on arbitrary complex boolean expressions containing server +# variable checks and other lookup directives. The syntax is a +# mixture between C and Perl. See the mod_ssl documentation +# for more details. +# +#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \ +# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ +# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \ +# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \ +# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \ +# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/ +# + +# SSL Engine Options: +# Set various options for the SSL engine. +# o FakeBasicAuth: +# Translate the client X.509 into a Basic Authorisation. This means that +# the standard Auth/DBMAuth methods can be used for access control. The +# user name is the `one line' version of the client's X.509 certificate. +# Note that no password is obtained from the user. Every entry in the user +# file needs this password: `xxj31ZMTZzkVA'. +# o ExportCertData: +# This exports two additional environment variables: SSL_CLIENT_CERT and +# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the +# server (always existing) and the client (only existing when client +# authentication is used). This can be used to import the certificates +# into CGI scripts. +# o StdEnvVars: +# This exports the standard SSL/TLS related `SSL_*' environment variables. +# Per default this exportation is switched off for performance reasons, +# because the extraction step is an expensive operation and is usually +# useless for serving static content. So one usually enables the +# exportation for CGI and SSI requests only. +# o CompatEnvVars: +# This exports obsolete environment variables for backward compatibility +# to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this +# to provide compatibility to existing CGI scripts. +# o StrictRequire: +# This denies access when "SSLRequireSSL" or "SSLRequire" applied even +# under a "Satisfy any" situation, i.e. when it applies access is denied +# and no other module can change it. +# o OptRenegotiate: +# This enables optimized SSL connection renegotiation handling when SSL +# directives are used in per-directory context. +#SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + +# SSL Protocol Adjustments: +# The safe and default but still SSL/TLS standard compliant shutdown +# approach is that mod_ssl sends the close notify alert but doesn't wait for +# the close notify alert from client. When you need a different shutdown +# approach you can use one of the following variables: +# o ssl-unclean-shutdown: +# This forces an unclean shutdown when the connection is closed, i.e. no +# SSL close notify alert is send or allowed to received. This violates +# the SSL/TLS standard but is needed for some brain-dead browsers. Use +# this when you receive I/O errors because of the standard approach where +# mod_ssl sends the close notify alert. +# o ssl-accurate-shutdown: +# This forces an accurate shutdown when the connection is closed, i.e. a +# SSL close notify alert is send and mod_ssl waits for the close notify +# alert of the client. This is 100% SSL/TLS standard compliant, but in +# practice often causes hanging connections with brain-dead browsers. Use +# this only for browsers where you know that their SSL implementation +# works correctly. +# Notice: Most problems of broken clients are also related to the HTTP +# keep-alive facility, so you usually additionally want to disable +# keep-alive for those clients, too. Use variable "nokeepalive" for this. +# Similarly, one has to force some clients to use HTTP/1.0 to workaround +# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and +# "force-response-1.0" for this. +SetEnvIf User-Agent ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + +# Per-Server Logging: +# The home of a custom SSL log file. Use this when you want a +# compact non-error SSL logfile on a virtual host basis. +CustomLog /bottlenecks/rubbos/app/apache2/logs/ssl_request_log \ + "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" + + + + diff --git a/rubbos/app/apache2/conf/workers.properties b/rubbos/app/apache2/conf/workers.properties new file mode 100644 index 00000000..df4134bd --- /dev/null +++ b/rubbos/app/apache2/conf/workers.properties @@ -0,0 +1,215 @@ + +# workers.properties - +# +# This file provides jk derived plugins with the needed information to +# connect to the different tomcat workers. Note that the distributed +# version of this file requires modification before it is usable by a +# plugin. +# +# As a general note, the characters $( and ) are used internally to define +# macros. Do not use them in your own configuration!!! +# +# Whenever you see a set of lines such as: +# x=value +# y=$(x)\something +# +# the final value for y will be value\something +# +# Normaly all you will need to do is un-comment and modify the first three +# properties, i.e. workers.tomcat_home, workers.java_home and ps. +# Most of the configuration is derived from these. +# +# When you are done updating workers.tomcat_home, workers.java_home and ps +# you should have 3 workers configured: +# +# - An ajp12 worker that connects to localhost:8007 +# - An ajp13 worker that connects to localhost:8009 +# - A jni inprocess worker. +# - A load balancer worker +# +# However by default the plugins will only use the ajp12 worker. To have +# the plugins use other workers you should modify the worker.list property. +# +# + +# OPTIONS ( very important for jni mode ) + +# +# workers.tomcat_home should point to the location where you +# installed tomcat. This is where you have your conf, webapps and lib +# directories. +# +#workers.tomcat_home=/mnt/elba/rubbos/apache-tomcat-5.5.17 +workers.tomcat_home=/bottlenecks/rubbos/app/apache-tomcat-5.5.17 + +# +# workers.java_home should point to your Java installation. Normally +# you should have a bin and lib directories beneath it. +# +#workers.java_home=/mnt/elba/rubbos/jdk1.6.0_27 +workers.java_home=/bottlenecks/rubbos/app/jdk1.6.0_27 + +# +# You should configure your environment slash... ps=\ on NT and / on UNIX +# and maybe something different elsewhere. +# +ps=/ + +# +#------ ADVANCED MODE ------------------------------------------------ +#--------------------------------------------------------------------- +# + +# +#------ DEFAULT worket list ------------------------------------------ +#--------------------------------------------------------------------- +# +# +# The workers that your plugins should create and work with +# +# Add 'inprocess' if you want JNI connector +worker.list=worker1 +# , inprocess + + +worker.TOMCAT1.port=8009 +worker.TOMCAT1.host=node8 +worker.TOMCAT1.type=ajp13 +worker.TOMCAT1.lbfactor=1 + + +# +#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------ +#--------------------------------------------------------------------- +# + +# +# Defining a worker named ajp12 and of type ajp12 +# Note that the name and the type do not have to match. +# +#worker.ajp12.port=8007 +#worker.ajp12.host=localhost +#worker.ajp12.type=ajp12 +# +# Specifies the load balance factor when used with +# a load balancing worker. +# Note: +# ----> lbfactor must be > 0 +# ----> Low lbfactor means less work done by the worker. +#worker.ajp12.lbfactor=1 + +# +#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------ +#--------------------------------------------------------------------- +# + +# +# Defining a worker named ajp13 and of type ajp13 +# Note that the name and the type do not have to match. +# +#worker.ajp13.port=8009 +#worker.ajp13.host=node60.rubbostest.Infosphere.emulab.net +#worker.ajp13.type=ajp13 +# +# Specifies the load balance factor when used with +# a load balancing worker. +# Note: +# ----> lbfactor must be > 0 +# ----> Low lbfactor means less work done by the worker. +#worker.ajp13.lbfactor=1 + +# +# Specify the size of the open connection cache. +#worker.ajp13.cachesize + +# +#------ DEFAULT LOAD BALANCER WORKER DEFINITION ---------------------- +#--------------------------------------------------------------------- +# + +# +# The router (type lb) workers perform wighted round-robin +# load balancing with sticky sessions. +# Note: +# ----> If a worker dies, the load balancer will check its state +# once in a while. Until then all work is redirected to peer +# workers. +worker.worker1.type=lb +worker.worker1.balance_workers=TOMCAT1 +worker.worker1.sticky_session=True +worker.worker1.method=Session + +# +#------ DEFAULT JNI WORKER DEFINITION--------------------------------- +#--------------------------------------------------------------------- +# + +# +# Defining a worker named inprocess and of type jni +# Note that the name and the type do not have to match. +# +worker.inprocess.type=jni + +# +#------ CLASSPATH DEFINITION ----------------------------------------- +#--------------------------------------------------------------------- +# + +# +# Additional class path components. +# +worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar + +# +# Setting the command line for tomcat. +# Note: The cmd_line string may not contain spaces. +# +worker.inprocess.cmd_line=start + +# Not needed, but can be customized. +#worker.inprocess.cmd_line=-config +#worker.inprocess.cmd_line=$(workers.tomcat_home)$(ps)conf$(ps)server.xml +#worker.inprocess.cmd_line=-home +#worker.inprocess.cmd_line=$(workers.tomcat_home) + +# +# The JVM that we are about to use +# +# This is for Java2 +# +# Windows +#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll +# IBM JDK1.3 +#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)libjvm.so +# Unix - Sun VM or blackdown +#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so +worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)server$(ps)libjvm.so + +# +# And this is for jdk1.1.X +# +#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)bin$(ps)javai.dll + + +# +# Setting the place for the stdout and stderr of tomcat +# +worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout +worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr + +# +# Setting the tomcat.home Java property +# +#worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home) + +# +# Java system properties +# +# worker.inprocess.sysprops=java.compiler=NONE +# worker.inprocess.sysprops=myprop=mypropvalue + +# +# Additional path components. +# +# worker.inprocess.ld_path=d:$(ps)SQLLIB$(ps)bin +# diff --git a/rubbos/app/apache2/error/HTTP_BAD_GATEWAY.html.var b/rubbos/app/apache2/error/HTTP_BAD_GATEWAY.html.var new file mode 100644 index 00000000..c0a70af6 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_BAD_GATEWAY.html.var @@ -0,0 +1,290 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Proxy server obdr¾el od nadøazeného + serveru chybnou odpovìï. + + + + + + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der Proxy-Server erhielt eine fehlerhafte Antwort + eines übergeordneten Servers oder Proxies. + + + + + + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The proxy server received an invalid + response from an upstream server. + + + + + + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El servidor origen recibió información + inválida por parte del servidor destino. + + + + + + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Le serveur proxy a reçu une réponse + incorrecte de la part d'un serveur supérieur. + + + + + + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Fuair an seachfhreastalaí freagairt neamhbhailí + ó freastalaí thuasthrutha. + + + + + + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il server proxy ha ricevuto una risposta + non valida dal server precedente. + + + + + + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%W%m%/%7%5!<%P$O>eN.%5!<%P$+$iIT@5$J1~Ez$r + + + + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ÇÁ·Ï½Ã ¼­¹ö°¡ ´õ À­ÂÊÀÇ ¼­¹ö·ÎºÎÅÍ À߸øµÈ ÀÀ´äÀ» ¹Þ¾Ò½À´Ï´Ù. + + + + + + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De proxy server heeft een ongeldig + antwoord ontvangen van een gecontacteerde server. + + + + + + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Serwer otrzyma³ nieprawid³ow± odpowied¼ + od kolejnego serwera. + + + + + + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O servidor proxy recebeu uma resposta + inválida do servidor destino. + + + + + + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Serverul proxy a primit un raspuns invalid + de la serverul precedent. + + + + + + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ¿ÞáàÕÔÝØçÚØ áÕàÒÕà øÕ ßàØÜØÞ ÝÕØáßàÐÒÐÝ + ÞÔÓÞÒÞà ÞÔ áÛÕÔÕûÕÓ áÕàÒÕàÐ ã ÝØ×ã. + + + + + + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Proxyservern mottog ett felaktigt svar från + en tidigare server. + + + + + + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Vekil (proxy) sunucu üstbirim (upstream) sunucusundan + anlamsız bir cevap aldı. + + + + + + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_BAD_REQUEST.html.var b/rubbos/app/apache2/error/HTTP_BAD_REQUEST.html.var new file mode 100644 index 00000000..d282482b --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_BAD_REQUEST.html.var @@ -0,0 +1,213 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Vá¹ prohlí¾eè (nebo proxy server) vyslal po¾adavek, + kterému tento server nerozumìl. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Ihr Browser (oder Proxy) hat eine ungültige Anfrage + gesendet, die vom Server nicht beantwortet werden kann. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + Your browser (or proxy) sent a request that + this server could not understand. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El navegador ha solicitado una operación + que no puede ser procesada por el servidor. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Votre navigateur (ou votre proxy) a envoyé + une demande que ce serveur n'a pas comprise. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Seol do chuid brabhsálaí (nó + seachfhreastalaí) freagairt nárbh fhéidir leis an + fhreastalaí seo a thuisceant. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il tuo browser (o il proxy) ha inviato a + questo server una richiesta incomprensibile. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B$*;H$$$N%V%i%&%6(B ($B$^$?$O%W%m%/%7(B) + $B$,!"%5!<%P$NM}2r$G$-$J$$%j%/%(%9%H$rAw?.$7$^$7$?!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ºê¶ó¿ìÀú ¶Ç´Â ÇÁ·Ï½Ã°¡ + ÀÌ ¼­¹ö°¡ ó¸®ÇÒ ¼ö ¾ø´Â À߸øµÈ ¿äûÀ» º¸³Â½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + Uw browser (of proxy) stuurde een vraag die + deze server niet kon begrijpen. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Twoja przegl±darka (lub serwer po¶rednicz±cy) wys³a³ ¿±danie, + którego ten serwer nie potrafi obs³u¿yæ. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + Seu "browser" (ou o servidor proxy) enviou uma + requisição inválida ao servidor. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Browserul (sau proxy-ul) dumneavoastra a trimis + serverului o cerere ce nu poate fi procesata. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ²Ðè çØâÐç (ØÛØ ßÞáàÕÔÝØçÚØ áÕàÒÕà) ßÞáÛÐÞ øÕ ×ÐåâÕÒ ÚÞøØ + ÞÒÐø áÕàÒÕà ÝØøÕ ÜÞÓÐÞ ÔÐ àÐ×ãÜÕ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Din webbläsare eller proxy skickade en förfrågan + som denna server inte kunde förstå. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Gezgininiz (veya vekil sunucunuz) bu sunucunun + tanımadığı + bir istemde bulundu. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_FORBIDDEN.html.var b/rubbos/app/apache2/error/HTTP_FORBIDDEN.html.var new file mode 100644 index 00000000..4958148e --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_FORBIDDEN.html.var @@ -0,0 +1,372 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + + + Nemáte právo pro pøístup do po¾adovaného adresáøe. Buï neexistuje ¾ádný + dokument s obsahem (tzv. index), nebo je adresáø chránìn proti ètení. + + + + Nemáte právo pro pøístup k po¾adovanému objektu. + Buï je chránìn proti ètení, nebo není serverem èitelný. + + + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + + + Der Zugriff auf das angeforderte Verzeichnis ist nicht möglich. + Entweder ist kein Index-Dokument vorhanden oder das Verzeichnis + ist zugriffsgeschützt. + + + + Der Zugriff auf das angeforderte Objekt ist nicht möglich. + Entweder kann es vom Server nicht gelesen werden oder es + ist zugriffsgeschützt. + + + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + + + You don't have permission to access the requested directory. + There is either no index document or the directory is read-protected. + + + + You don't have permission to access the requested object. + It is either read-protected or not readable by the server. + + + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + + + Usted no tiene permiso para accesar a la dirección + solicitada. Existe la posibilidad de que el directorio + este protegido contra lectura o que no exista la + documentación requerida. + + + + Usted no tiene permiso de accesar al objeto solicitado. + Existe la posibilidad de que este protegido contra + lectura o que no haya podido ser leido por el servidor. + + + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + + + Vous n'avez pas le droit d'accéder au répertoire + demandé. Soit il n'y a pas de document index soit le répertoire + est protégé. + + + + Vous n'avez pas le droit d'accéder à l'objet + demandé. Soit celui-ci est protégé, soit il ne peut + être lu par le serveur. + + + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + + + Níl cead agat rochtain a dhéanamh ar an comhadlann faoi + iarratais. Is féidir nach bhfuil aon doiciméad + innéacs, nó go bhfuil cosaint ar lémh an comhadlann. + + + + Níl cead agat rochtain a dhéanamh ar an aidhm faoi iarratais. + Is féidir go bhfuil cosaint ar lé air, nó go bhfuil + sé doléite don freastalaí. + + + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + + + Non disponi dei permessi necessari per accedere alla + directory richiesta oppure non esiste il documento indice. + + + + Non disponi dei permessi necessari per accedere all'oggetto + richiesto, oppure l'oggetto non può essere letto dal server. + + + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + + + $BMW5a$5$l$?%G%#%l%/%H%j$X$N%"%/%;%98"8B$,$"$j$^$;$s!#(B + $B%$%s%G%C%/%9%I%-%e%a%s%H$,B8:_$7$J$$$+!"(B + $B%G%#%l%/%H%j$NFI$_9~$_$,5v2D$5$l$F$$$^$;$s!#(B + + + + $BMW5a$5$l$?%*%V%8%'%/%H$X$N%"%/%;%98"$,$"$j$^$;$s!#(B + $BFI$_9~$_$,5v2D$5$l$F$$$J$$$+!"(B + $B%5!<%P$,FI$_9~$_$K<:GT$7$?$+$G$7$g$&!#(B + + + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + + + ¿äûÇÑ µð·ºÅ丮¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ¾ø½À´Ï´Ù. + µð·ºÅ丮¿¡ ù ÆäÀÌÁö°¡ ¾ø°Å³ª ¾Æ´Ï¸é Àб⠺¸È£°¡ µÇ¾î ÀÖ½À´Ï´Ù. + + + + ¿äûÇÑ °´Ã¼¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ¾ø½À´Ï´Ù. + Àб⠺¸È£°¡ µÇ¾î Àְųª À¥¼­¹ö°¡ ÀÐÀ» ¼ö ¾øµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù. + + + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + + + U hebt niet de toestemming om toegang te krijgen tot de gevraagde map. + Er is of wel geen index document of de map is beveiligd tegen lezen. + + + + U hebt niet de toestemming om toegang te krijgen tot de gevraagde map. + Die is ofwel beveiligd tegen lezen of onleesbaar door de server. + + + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + + + Nie masz prawa dostêpu do ¿±danego katalogu. W katalogu nie + ma indeksu lub katalog jest zabezpieczony przed odczytem. + + + + Nie masz dostêpu do ¿±danego obiektu. Jest on zabezpieczony + przed odczytem lub nie mo¿e byæ odczytany przez serwer. + + + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + + + Você não tem permissão para acessar o + diretório requisitado. + Pode não existir o arquivo de índice ou + o diretório pode estar protegido contra leitura. + + + + Você não tem premissão para acessar o + objeto requisitado. Ele pode estar protegido contra leitura ou + não ser legível pelo servidor. + + + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + + + Nu aveti permisiunea sa accesati directorul cerut. + Nu este nici un document index sau directorul este protejat la citire. + + + + Nu aveti permisiunea sa accesati obiectul cerut. + Este protejat la citire sau nu poate fi citit de server. + + + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + + + ½ÕÜÐâÕ ÔÞ×ÒÞÛã ÔÐ ßàØáâãßØâÕ ×ÐåâÕÒÐÝÞÜ ÔØàÕÚâÞàØøãÜã. + ¼ÞÓãûÕ øÕ ÔÐ ÝÕÜÐ ØÝÔÕÚáÝÞÓ ÔÞÚãÜÕÝâÐ, ØÛØ ÔÐ øÕ ÔØàÕÚâÞàØøãÜ ×ÐèâØûÕÝ ÞÔ çØâÐúÐ. + + + + ½ÕÜÐâÕ ÔÞ×ÒÞÛã ÔÐ ßàØáâãßØâÕ ×ÐåâÕÒÐÝÞÜ ÞÑøÕÚâã. + ¼ÞÓãûÕ øÕ ÔÐ øÕ ×ÐèâØûÕÝ ÞÔ çØâÐúÐ, ØÛØ ÔÐ ÓÐ áÕàÒÕà ÝÕ ÜÞÖÕ ßàÞçØâÐâØ. + + + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + + + Du har inte tillräckliga rättigheter för att få + tillgång till den önskade katalogen. Det existerar inget + indexdokument eller så är katalogen lässkyddad. + + + + Du har inte tillräckliga rättigheter för att få + tillgång till det önskade objektet. Objektet är + lässkyddat eller inte läsbart för servern. + + + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + + + Talep ettiğiniz dizine erişim izniniz yok. + Ya belirteç doküman yok, ya da dizin okumaya karşı korumalı. + + + + Talep ettiğiniz dizine erişim izniniz yok. + Dizin, ya okumaya karşı korumalı, ya da sunucu taraf?ndan + okunamıyor. + + + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_GONE.html.var b/rubbos/app/apache2/error/HTTP_GONE.html.var new file mode 100644 index 00000000..65aa644e --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_GONE.html.var @@ -0,0 +1,422 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Po¾adované URL ji¾ není na tomto serveru k dispozici, ani není k dispozici + ¾ádná adresa k pøesmìrování. + + + + Informujte, prosím, autora + ">odkazující + stránky, ¾e odkaz je zastaralý. + + + + Pokud jste následovali odkaz z cizí stránky, kontaktujte, prosím, + jejího autora. + + + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der angeforderte URL existiert auf dem Server nicht mehr + und wurde dauerhaft entfernt. + Eine Weiterleitungsadresse ist nicht verfügbar. + + + + Bitte informieren Sie den Autor der + ">verweisenden + Seite, dass der Link nicht mehr aktuell ist. + + + + Falls Sie einem Link von einer anderen Seite gefolgt sind, + informieren Sie bitte den Autor dieser Seite hierüber. + + + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The requested URL is no longer available on this server and there is no + forwarding address. + + + + Please inform the author of the + ">referring + page that the link is outdated. + + + + If you followed a link from a foreign page, please contact the + author of this page. + + + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + Los recursos solicitados ya no están disponibles en + este servidor y no existe una dirección alternativa. + + + + Le solicitamos que comunique al autor de la + ">página referente que el enlace está obsoleto. + + + + Si usted siguió el enlace desde una página externa, + por favor contacte con el autor de esa página. + + + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + L'URL demandée n'est plus accessible sur ce serveur et il + n'y a pas d'adresse de suite. + + + + Nous vous prions d'informer l'auteur de + ">la + page en question que la référence n'est plus actuelle. + + + + Si vous avez suivi une référence issue d'une page autre, + veuillez contacter l'auteur de cette page. + + + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Níl an URL iarraithe ar fáil ar an fhreastalaí seo + a thuilleadh, agus níl aon seoladh nua ann dó. + + + + Cur in úil do úadar an + ">leathanach + thagarthach go bhfuil an nasc as-dáta, le do thoil. + + + + Má leanfá nasc ó leathanach iasachta, téigh i + dteaghmháil le úadar an leathanach sin, le do thoil. + + + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + L'URL richiesto non è più disponibile su questo server + e non esistono indirizzi verso i quali sia possibile inoltrare + la richiesta. + + + + Per favore, informa l'autore della + ">pagina + di provenienza che il link non è più valido. + + + + Se sei arrivato da una pagina esterna, informa l'autore della + pagina di provenienza che il link non è più valido. + + + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $BMW5a$5$l$?(B URL $B$O4{$KK\%5!<%P$G$OMxMQ$G$-$^$;$s$7!"(B + $B0\F0@h$b$o$+$j$^$;$s!#(B + + + + " + >$B;2>H85%Z!<%8(B$B$NCx + + $BB>$N%Z!<%8$+$i$N%j%s%/$rC)$C$F$-$?>l9g$O!"(B + $B$=$N%Z!<%8$NCx + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¿äûÇÑ URLÀº ´õ ÀÌ»ó ÀÌ ¼­¹ö¿¡ ³²¾ÆÀÖÁö ¾ÊÀ¸¸ç, + ±× °´Ã¼°¡ ¿Å°ÜÁø ´Ù¸¥ URL ¿ª½Ã ³²¾ÆÀÖÁö ¾Ê½À´Ï´Ù. + + + + ">ÀÌÀü + ÆäÀÌÁöÀÇ ¸¸µçÀÌ¿¡°Ô ÁÖ¼Ò°¡ À߸øµÇ¾ú´Ù°í ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù. + + + + ´Ù¸¥ ÆäÀÌÁöÀÇ ¸µÅ©¸¦ µû¶ó¿À¼Ì´Ù¸é, ±× ÆäÀÌÁöÀÇ ¸¸µçÀÌ¿¡°Ô ¿¬¶ôÀ» ÇϽñâ + ¹Ù¶ø´Ï´Ù. + + + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De gevraagde URL is niet langer beschikbaar op deze server en er is geen + doorverwijsadres. + + + + Gelieve aan de auteur van + ">deze pagina + te melden dat deze link niet langer actueel is. + + + + Indien u deze link hebt gekregen van een andere pagina, gelieve + de auteur van deze pagina te contacteren. + + + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Poszukiwany zasób nie jest ju¿ dostêpny na tym serwerze i nie + podano nowego adresu zasobu. + + + + Prosimy poinformowaæ autora + ">referuj±cej + strony o nieaktualnym linku. + + + + Je¶li pod±¿y³e¶ za linkiem z innej strony skontaktuj siê z jej + autorem. + + + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + A URL solicitada não está disponível neste servidor + e não existe um endereço alternativo. + + + + Por favor informe o autor da + ">página + referida que a URL está desatualizada. + + + + Se você seguiu um "link" de uma página externa, por favor + entre em contato com o autor desta página e o informe sobre a + mudança do "link". + + + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + URL-ul cerut nu mai este disponibil pe acest server si nu + exista o adresa de inaintare. + + + + Va rugam informati autorul + ">paginii + referite ca link-ul nu mai este de actualitate. + + + + Va rugam contactati autorul acestei pagini daca ati urmat + un link dintr-o pagina externa. + + + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ·ÐåâÕÒÐÝØ ÃÀ» ÝØøÕ ÒØèÕ ÔÞáâãßÐÝ ÝÐ ÞÒÞÜ áÕàÒÕàã Ø ÝÕÜÐ + ÐÔàÕáÕ ÝÐ ÚÞøã ÑØáâÕ ÜÞÓÛØ ÑØâØ ßàÞáÛÕòÕÝØ. + + + + ¼ÞÛØÜÞ ÞÑÐÒÕáâØâÕ ÐãâÞàÐ + ">ØáåÞÔØèÝÕ + áâàÐÝØæÕ ÔÐ øÕ ÒÕ×Ð ×ÐáâÐàÕÛÐ. + + + + °ÚÞ áâÕ ßàÐâØÛØ ÒÕ×ã áÐ áßÞùÝÕ áâàÐÝØæÕ, ÜÞÛØÜÞ ÞÑÐÒÕáâØâÕ + ÐãâÞàÐ âÕ áâàÐÝØæÕ. + + + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Den önskade adressen är inte längre tillgänglig hos + denna server och det finns inte någon adress för vidarebefodran. + + + + Vänligen informera författaren bakom + ">den aktuella + sidan att länken är inaktuell. + + + + Om du följde en länk från en extern sida, vänligen + kontakta författaren av den sidan. + + + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Talep ettiğiniz URL bu sunucu üzerinde barındırılmıyor + ve herhangi bir yöneltme de mevcut değil. + + + + Lütfen + ">referans sayfanın + yazarına, bu bağlantının güncel + olmadığını bildirin. + + + + Yabancı bir sayfadan bu bağlantıyı izlediyseniz, + lütfen sözkonusu sayfanın yazarı ile iletişime geçin. + + + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_INTERNAL_SERVER_ERROR.html.var b/rubbos/app/apache2/error/HTTP_INTERNAL_SERVER_ERROR.html.var new file mode 100644 index 00000000..5459f93b --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_INTERNAL_SERVER_ERROR.html.var @@ -0,0 +1,453 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + + + Nastala vnitøní chyba a server nebyl schopen + dokonèit Vá¹ po¾adavek. + + + + Chybová zpráva +
    + + + + Nastala vnitøní chyba a server nebyl schopen + dokonèit Vá¹ po¾adavek. Buï je server + pøetí¾en, nebo do¹lo k chybì v CGI skriptu. + + + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + + + Die Anfrage kann nicht beantwortet werden, da im Server + ein interner Fehler aufgetreten ist. + + + + Fehlermeldung: +
    + + + + Die Anfrage kann nicht beantwortet werden, da im Server + ein interner Fehler aufgetreten ist. + Der Server ist entweder überlastet oder ein Fehler in + einem CGI-Skript ist aufgetreten. + + + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + + + The server encountered an internal error and was + unable to complete your request. + + + + Error message: +
    + + + + The server encountered an internal error and was + unable to complete your request. Either the server is + overloaded or there was an error in a CGI script. + + + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + + + El servidor encontro un error interno y fue + imposible completar su solicitud. + + + + Mensaje de error: +
    + + + + El servidor encontro un error interno y fue + imposible completar su solicitud. + Existe tambien la posibilidad de que el servidor + este sobrecargado o de algún error en un + programa de CGI. + + + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + + + Le serveur a èté victime d'une erreur interne et n'a pas + été capable de faire aboutir votre requête. + + + + Message d'erreur: +
    + + + + Le serveur a èté victime d'une erreur interne et n'a pas + été capable de faire aboutir votre requête. + Soit le server est surchargé soit il s'agit d'une erreur dans + le script CGI. + + + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + + + Thit an freastalaí ar earráid inmheánach + agus theip air do chuid iarratais a comhlíonadh. + + + + Teachtaireacht earráide: +
    + + + + Thit an freastalaí ar earráid inmheánach + agus theip air do chuid iarratais a comhlíonadh. + Is féidir go bhfuil an freastalaí + rólóaidithe, nó go raibh earráid + i script CGI éigin. + + + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + + + Il server ha generato un errore interno e non è + in grado di soddisfare la richiesta. + + + + Messaggio di errore: +
    + + + + Il server ha generato un errore interno e non è + in grado di soddisfare la richiesta. Il server potrebbe + essere sovraccarico oppure si è verificato un + errore in uno script CGI. + + + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + + + $B%5!<%PFbIt$G>c32$,H/@8$7!"(B + $B%j%/%(%9%H$K1~$($k$3$H$,$G$-$^$;$s$G$7$?!#(B + + + + Error message: +
    + + + + $B%5!<%PFbIt$G>c32$,H/@8$7!"(B + $B%j%/%(%9%H$K1~$($k$3$H$,$G$-$^$;$s$G$7$?!#(B + $B%5!<%P$,2aIi2Y$G$"$k$+!"(B + CGI $B%9%/%j%W%H$K%(%i!<$,$"$j$^$9!#(B + + + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + + + ¼­¹ö¿¡ ³»ºÎ ¿À·ù°¡ ¹ß»ýÇÏ¿© ¿äûÀ» ³¡±îÁö ó¸®ÇÏÁö ¸øÇß½À´Ï´Ù. + + + + ¿À·ù ³»¿ë: +
    + + + + ¼­¹ö¿¡ ³»ºÎ ¿À·ù°¡ »ý°Ü ¿äûÀ» ³¡±îÁö ó¸®ÇÏÁö ¸øÇß½À´Ï´Ù. + ¼­¹ö¿¡ °úºÎÇÏ°¡ °É·È°Å³ª ¾Æ´Ï¸é CGI ÇÁ·Î±×·¥¿¡ ¿À·ù°¡ ÀÖ¾ú½À´Ï´Ù. + + + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + + + + + Foutbericht: +
    + + + + De server kreeg een interne fout en kon + uw vraag niet beantwoorden. De server is overbelast + of er was een fout in een CGI script. + + + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + + + Serwer napotka³ b³±d wewnêtrzny i nie jest w stanie + zrealizowaæ twojego ¿±dania. + + + + Informacja o b³êdzie: +
    + + + + Serwer napotka³ b³±d wewnêtrzny i nie jest w stanie + zrealizowaæ twojego ¿±dania. Serwer jest przeci±¿ony lub + napotka³ na b³±d w skrypcie CGI. + + + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + + + O servidor encontrou um erro interno e não pode + completar sua requisição. + + + + Mensagem de Erro: +
    + + + + O servidor encontrou um erro interno e não + foi possível completar sua requisição. + O servidor está sobrecarregado ou existe um + erro em um script CGI. + + + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + + + Serverul a intalnit o eroare interna si nu a + putut rezolva cererea dumneavoastra. + + + + Mesajul de eroare : +
    + + + + Serverul a intalnit o eroare interna si nu a + putut rezolva cererea dumneavoastra. Serverul este + supraincarcat sau a fost o eroare intr-un script CGI. + + + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + + + ÁÕàÒÕà øÕ ØÜÐÞ ãÝãâàÐèúã ÓàÕèÚã Ø ÝØøÕ ÑØÞ + ã ÜÞÓãûÝÞáâØ ÔÐ ØáßãÝØ ÒÐè ×ÐåâÕÒ. + + + + ¿ÞàãÚÐ Þ ÓàÕèæØ: +
    + + + + ÁÕàÒÕà øÕ ØÜÐÞ ãÝãâàÐèúã ÓàÕèÚã Ø ÝØøÕ ÑØÞ + ã ÜÞÓãûÝÞáâØ ÔÐ ØáßãÝØ ÒÐè ×ÐåâÕÒ. ¼ÞÓãûÕ øÕ ÔÐ øÕ áÕàÒÕà + ßàÕÞßâÕàÕûÕÝ, ØÛØ ÔÐ áÕ ÔÕáØÛÐ ÓàÕèÚÐ ã CGI áÚàØßâØ. + + + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + + + Servern råkade ut för ett internt fel och det var inte möjligt + att slutföra din begäran. + + + + Felmeddelande: +
    + + + + Servern råkade ut för ett internt fel och det var inte möjligt + att slutföra din begäran. Servern är antingen överbelastad + eller så innehåller CGI-skriptet fel. + + + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + + + Sunucu içine bir hata oluştu ve sunucu talebinize hizmet vermekte başarılı olamadı. + + + + Hata mesajı: +
    + + + + Sunucu içine bir hata oluştu ve sunucu talebinize hizmet vermekte başarılı olamadı. + Ya sunucuya çok yüklenildi, ya da CGI betiklerinde hata belirdi. + + + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_LENGTH_REQUIRED.html.var b/rubbos/app/apache2/error/HTTP_LENGTH_REQUIRED.html.var new file mode 100644 index 00000000..4d083fed --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_LENGTH_REQUIRED.html.var @@ -0,0 +1,222 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Po¾adavek metodou + vy¾aduje korektní hlavièku Content-Length. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Die Anfrage kann nicht beantwortet werden. + Bei Verwendung der -Methode + muß ein korrekter Content-Length-Header + angegeben werden. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + A request with the + method requires a valid Content-Length header. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + Una solicitud con el método + necesita una cabecera Content-Length válida. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Une requête utilisant la méthode nécessite un header valable + Content-Length (indiquant la longueur). + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Is gá go mbhéadh ceanntáisc + Content-Length + bhailí do iarratais faoin modh + . + + +----------ga-- + + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Una richiesta con il metodo + + richiede che venga specificato un header Content-Length + valido. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + + $B%a%=%C%I$N%j%/%(%9%H$G$O!"(B + $B@5$7$$(B Content-Length $B%X%C%@$,I,MW$K$J$j$^$9!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¹æ½ÄÀ» ¾²´Â + ¿äûÀº ¿Ã¹Ù¸¥ Content-Length Çì´õµµ ÇÔ²² º¸³»¾ß¸¸ ÇÕ´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + Een vraag met het + type methode heeft een correcte Content-Length lijn nodig. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + ¯±danie + wymaga poprawnego nag³ówka Content-Length. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + Uma requisição + do método + requer um cabeçalho Content-Length válido. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + O cerere cu metoda + necesita un header Content-Length valid. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ·ÐåâÕÒ áÐ + ÜÕâÞÔÞÜ ÜÞàÐ ØÜÐâØ ØáßàÐÒÝÞ Content-Length + (ÔãÖØÝÐ áÐÔàÖÐøÐ) ×ÐÓÛÐÒùÕ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + En förfrågan med + metoden kräver ett korrekt Content-Length huvud. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + metodunu kullanan bir talep + geçerli bir Content-Length (içerik uzunluğu) başlığı gerektirir. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_METHOD_NOT_ALLOWED.html.var b/rubbos/app/apache2/error/HTTP_METHOD_NOT_ALLOWED.html.var new file mode 100644 index 00000000..f2e1aa65 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_METHOD_NOT_ALLOWED.html.var @@ -0,0 +1,213 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Metoda + není pro po¾adované URL povolena. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Die -Methode + ist für den angeforderten URL nicht erlaubt. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The + method is not allowed for the requested URL. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El + método utilizado por su solicitud no está + permitido por el enlace. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + La méthode + n'est pas utilisable pour l'URL requise. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Níl cead an modh + + a úasáid leis an URL iarraithe. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il metodo + non è consentito per l'URL richiesto. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + + $B%a%=%C%I$O!"MW5a$5$l$?(B URL $B$KBP$7$F$O5v2D$5$l$F$$$^$;$s!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¹æ½ÄÀº + ¿äûÇÑ URL¿¡ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + Het + type methode is niet toegelaten voor de gevraagde URL. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Metoda + jest niedozwolona dla podanego URLa. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O método + não é permitido para a URL requisitada. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Metoda + nu este permisa pentru URL-ul cerut. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + + ÜÕâÞÔ ÝØøÕ ÔÞ×ÒÞùÕÝ ×Ð ×ÐåâÕÒÐÝØ ÃÀ». + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + + metoden är inte tillåten för den förfrågade + adressen. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + yöntemi talep ettiğiniz URL için kullanılamaz. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_NOT_FOUND.html.var b/rubbos/app/apache2/error/HTTP_NOT_FOUND.html.var new file mode 100644 index 00000000..58149171 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_NOT_FOUND.html.var @@ -0,0 +1,435 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Po¾adované URL nebylo na tomto serveru nalezeno. + + + + Zdá se, ¾e odkaz na + ">odkazující + stránce je chybný nebo zastaralý. Informujte, prosím, autora + ">této stránky + o chybì. + + + + Pokud jste zadal(a) URL ruènì, zkontrolujte, prosím, + zda jste zadal(a) URL správnì, a zkuste to znovu. + + + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der angeforderte URL konnte auf dem Server nicht gefunden werden. + + + + Der Link auf der + ">verweisenden + Seite scheint falsch oder nicht mehr aktuell zu sein. + Bitte informieren Sie den Autor + ">dieser Seite + über den Fehler. + + + + Sofern Sie den URL manuell eingegeben haben, + überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut. + + + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The requested URL was not found on this server. + + + + The link on the + ">referring + page seems to be wrong or outdated. Please inform the author of + ">that page + about the error. + + + + If you entered the URL manually please check your + spelling and try again. + + + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El enlace requerido no ha sido localizado en + este servidor. + + + + El enlace en la + ">página + referente parece tener algun error o ha expirado. Por favor + comunique al autor de + ">la + página el error. + + + + Si usted proporcionó el enlace de manera manual le solicitamos + que por favor revise los datos e intentelo de nuevo. + + + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + L'URL requise n'a pu etre trouvée sur ce serveur. + + + + La référence sur + ">la page + citée + semble être erronée ou perimée. Nous vous prions + d'informer l'auteur de + ">cette page + de cette erreur. + + + + Si vous avez tapé l'URL à la main, veuillez vérifier + l'orthographe et réessayer. + + + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Níor aimsigh an URL iarraithe ar an fhreastalaí seo. + + + + Is cosúil go bhfuil an nasc ar an + ">leathanach + thagarthach mícheart nó as dáta. + Cur in iúl d'úadar + " + >an leathanach sin go bhfuil earráid ann, le do thoil. + + + + Má chuir tú isteach an URL tú féin, deimhnigh + go bhfuil sé litrithe i gceart agat, agus déan iarracht eile + le do thoil. + + + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + L'URL richiesto non esiste su questo server. + + + + Il link della + ">pagina da cui + sei arrivato potrebbe essere errato o non essere più valido. + Per favore, informa dell'errore l'autore della + ">pagina. + + + + Se hai scritto l'URL a mano, per favore controlla che + non ci siano errori. + + + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $BMW5a$5$l$?(B URL $B$OK\%5!<%P$G$O8+$D$+$j$^$;$s$G$7$?!#(B + + + + "> + $B;2>H85%Z!<%8(B$B$N%j%s%/$,4V0c$C$F$$$k$+!"8E$/$J$C$F$7$^$C$F$$$k$h$&$G$9!#(B + " + >$B%Z!<%8(B$B$NCx + + $B$b$7l9g$O!"DV$j$r3NG'$7$F:FEY$*;n$72<$5$$!#(B + + + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¿äûÇÑ URLÀ» ÀÌ ¼­¹ö¿¡¼­ ãÀ» ¼ö ¾ø½À´Ï´Ù. + + + + ">ÀÌÀü + ÆäÀÌÁö¿¡ ÀÖ´Â ¸µÅ©°¡ À߸øµÇ¾ú°Å³ª ¿À·¡µÇ¾î ¾ø¾îÁø °Í °°½À´Ï´Ù. + ">±× ÆäÀÌÁö¸¦ + ¸¸µçÀÌ¿¡°Ô ÀÌ »ç½ÇÀ» ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù. + + + + URLÀ» Á÷Á¢ ÀÔ·ÂÇÏ¼Ì´Ù¸é ¹Ù¸£°Ô ÀÔ·ÂÇϼ̴ÂÁö È®ÀÎÇÏ½Ã°í ´Ù½Ã ½ÃµµÇϽñâ + ¹Ù¶ø´Ï´Ù. + + + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De gevraagde URL was niet gevonden op deze server. + + + + De link op + ">deze pagina + pagina is verkeerd of achterhaald. Gelieve de auteur van + ">die pagina + in te lichten over deze fout. + + + + Indien u de URL manueel hebt ingevuld, gelieve uw + spelling te controleren en probeer opnieuw. + + + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Nie znaleziono ¿±danego URLa na tym serwerze. + + + + Odno¶nik na + ">referuj±cej stronie + wydaje siê byæ nieprawid³owy lub nieaktualny. Poinformuj autora + ">tej strony + o problemie. + + + Je¶li wpisa³e¶ URLa rêcznie, sprawd¼, czy nie siê nie pomyli³e¶. + + + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + A URL requisitada não foi encontrada neste servidor. + + + + O link na + ">página + referida parece estar com algum erro ou desatualizado. Por favor informe o + autor ">desta + página sobre o erro. + + + + Se você digitou o endereço (URL) manualmente, + por favor verifique novamente a sintaxe do endereço. + + + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + URL-ul cerut nu a fost gasit pe acest server. + + + + Link-ul de pe + ">pagina + de unde ati venit pare a fi gresit sau invechit. Va rugam informati autorul + ">acestei pagini + despre eroare. + + + + Daca ati introdus URL-ul manual, va rugam verificati + corectitudinea si incercati din nou. + + + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ·ÐåâÕÒÐÝØ ÃÀ» ÝØøÕ ßàÞÝÐòÕÝ ÝÐ ÞÒÞÜ áÕàÒÕàã. + + + + ¸×ÓÛÕÔÐ ÔÐ øÕ ÒÕ×Ð ÝÐ + ">ØáåÞÔØèÝÞø + áâàÐÝØæØ ßÞÓàÕèÝÐ ØÛØ ×ÐáâÐàÕÛÐ. ¼ÞÛØÜÞ ÞÑÐÒÕáâØâÕ ÐãâÞàÐ + ">âÕ áâàÐÝØæÕ + Þ ÓàÕèæØ. + + + + ÃÚÞÛØÚÞ áâÕ ÃÀ» ãÝÕÛØ àãçÝÞ, ÜÞÛØÜÞ ßàÞÒÕàØâÕ ÜÞÓãûÕ + ÓàÕèÚÕ Ø ßàÞÑÐøâÕ ßÞÝÞÒÞ. + + + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Den efterfrågade adressen hittades inte på denna server. + + + + Länken på den + ">tidigare sidan + verkar vara felaktig eller inaktuell. Vänligen informera författaren av + ">sidan + om felet. + + + + Om du skrev in adressen manuellt så kontrollera din stavning och + försök igen. + + + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Talep ettiğiniz URL, sunucu üzerinde bulunmuyor. + + + + ">Referans sayfa + üzerindeki bağlantı güncel değil. + Lütfen ">referans sayfa'nın + yazarını konuyla ilgili bilgilendirin. + + + + URL'i kendiniz elle girdiyseniz, yazımınızı denetleyip tekrar deneyin. + + + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_NOT_IMPLEMENTED.html.var b/rubbos/app/apache2/error/HTTP_NOT_IMPLEMENTED.html.var new file mode 100644 index 00000000..8081d8e9 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_NOT_IMPLEMENTED.html.var @@ -0,0 +1,201 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Server nepodporuje akci po¾adovanou prohlí¾eèem. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Die vom Browser angeforderte Aktion wird vom Server + nicht unterstützt. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The server does not support the action requested by the browser. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El navegador está solicitando una acción + que no puede ser procesada. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Le serveur n'est pas en mesure d'effectuer l'action + requise par le navigateur. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Níl tacaíocht ag an fhreastalaí don gníomh + atá á iarraidh ag an mbrabhsálaí. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il server non supporta il tipo di azione richiesta dal browser. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%V%i%&%6$NMW5a$7$?%"%/%7%g%s$O!"%5%]!<%H$7$F$$$^$;$s!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ºê¶ó¿ìÀú°¡ º¸³½ ¿äûÀ» ÀÌ ¼­¹ö°¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De server ondersteunt de actie, gevraagd door de browser, niet. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Ten serwer nie obs³uguje ¿±dania przes³anego przez przegl±darkê. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O servidor não suporta a ação requisitada pelo + seu "browser". + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Serverul nu suporta actiunea ceruta de browser. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ÁÕàÒÕà ÝÕ ßÞÔàÖÐÒÐ ÐÚæØøã ÚÞøã øÕ çØâÐç ×ÐåâÕÒÐÞ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Servern stödjer inte den handling som önskades + av webbläsaren. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Sunucu, gezgin tarafından talep edilen yöntemi desteklemiyor. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_PRECONDITION_FAILED.html.var b/rubbos/app/apache2/error/HTTP_PRECONDITION_FAILED.html.var new file mode 100644 index 00000000..330b4431 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_PRECONDITION_FAILED.html.var @@ -0,0 +1,205 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Vstupní podmínka pro po¾adavek o zadané URL nesplnila pozitivní + vyhodnocení. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Die für den Abruf der angeforderten URL notwendige + Vorbedingung wurde nicht erfüllt. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The precondition on the request for the URL failed positive evaluation. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + La precondición para que exista una + conexión a la dirección solicitada es falsa. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + La précondition pour l'URL requise a été + évaluée négativement. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Theip meastóireacht an réamhchoinníoll + don iarratais den URL. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + I criteri di precondizione per consentire l'invio dell'URL + richiesto non sono stati soddisfatti. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B;XDj$5$l$?(B URL $B$X$N%j%/%(%9%H$K$*$1$k;vA0>r7o$,K~$?$5$l$^$;$s$G$7$?!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¹Ì¸® ÁÖ¾îÁø Á¶°ÇÀÌ ¸¸Á·µÇÁö ¾Ê¾Æ¼­ URL ¿äûÀ» ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + Een startvoorwaarde werd niet voldaan bij verwerking van de vraag naar de URL. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Warunek wstêpny dla URLa nie zosta³ spe³niony. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + A condição necessária para a + requisição da URL foi avaliada como falsa. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Preconditionarea pentru cererea URL-ului nu a fost evaluata pozitiv. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ¿àÕÔãáÛÞÒ ×Ð ×ÐåâÕÒ ÃÀ»-Ð ÝØøÕ ØáßãúÕÝ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Den nödvändiga förutsättningen för + adressförfrågan passerade inte utvärderingen + med acceptabelt resultat. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + URL talebinin önşartı, olumlu süreci + başarısızlıkla sonlandırdı. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var b/rubbos/app/apache2/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var new file mode 100644 index 00000000..0175cf56 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var @@ -0,0 +1,226 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Metoda + nedovoluje pøenos dat nebo objem dat + pøesahuje kapacitní limit. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Die bei der Anfrage übermittelten Daten sind für + die -Methode + nicht erlaubt oder die Datenmenge hat das Maximum überschritten. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The + method does not allow the data transmitted, or the data volume + exceeds the capacity limit. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + Los recursos establecidos no permiten peticiones con + el método + suministrado por su solicitud, o, la cantidad de datos + provistos exceden los límites de capacidad. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + La méthode + n'autorise pas le transfert de ces données ou bien le volume + des données excède la limite de capacité. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Ní ligeann an modh an + tarchur sonraíocht tríd, nó tá an méid + sonraíocht breis ar an teoireann cumas. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il metodo + non consente di trasferire dati, oppure la quantità di dati + richiesti è eccessiva. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + + $B%a%=%C%I$,%G!<%?$NAw?.$r5v2D$7$F$$$J$$$+!"(B + $B%G!<%?NL$,5vMFNL$rD6$($F$$$^$9!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¹æ½ÄÀÇ + ¿äûÀ¸·Î´Â ³»¿ëÀ» º¸³¾ ¼ö ¾ø°Å³ª, ¶Ç´Â º¸³»¿Â ³»¿ëÀÌ ±× ¹æ½Ä¿¡¼­ Çã¿ëÇÏ´Â + ÃÖ´ë ±æÀ̸¦ ³Ñ¾ú½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + Het type methode laat niet toe + data te versturen of het datavolume is groter dan maximaal toegelaten. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Metoda + nie zezwala na typ przesy³anych danych lub rozmiar danych przekracza + ustalony limit. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O método + não permite a transmissão dos dados, + ou o volume de dados excede a capacidade limite. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Metoda + nu permite transmiterea datelor, sau volumul de date + depaseste limita capacitatii. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + + ÜÕâÞÔ ÝÕ ÔÞ×ÒÞùÐÒÐ ßàÕÝÞá ÞÒØå ßÞÔÐâÐÚÐ, ØÛØ ÚÞÛØçØÝÐ ßÞÔÐâÐÚÐ + ßàÕÜÐèãøÕ ÞÓàÐÝØçÕúÐ ÜÞÓãûÝÞáâØ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + metoden tillåter + inte den skickade datan eller så överskrider datavolymen + kapacitetsnivån. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + yöntemi iletilen + veri tipini desteklemez, ya da veri hacmi kapasite limitlerini aşıyor. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_REQUEST_TIME_OUT.html.var b/rubbos/app/apache2/error/HTTP_REQUEST_TIME_OUT.html.var new file mode 100644 index 00000000..7582a0e7 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_REQUEST_TIME_OUT.html.var @@ -0,0 +1,217 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Server uzavøel sí»ové spojení, proto¾e prohlí¾eè + nedokonèil po¾adavek ve stanoveném èase. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der Server konnte nicht mehr länger auf die Beendigung + der Browseranfrage warten; die Netzwerkverbindung wurde + vom Server geschlossen. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The server closed the network connection because the browser + didn't finish the request within the specified time. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El servidor ha cerrado la conexión de red + debido a que el navegador no terminó la solicitud + dentro del tiempo especificado. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Le serveur a fermé la connection car le navigateur n'a pas + fini la requête dans le temps spécifié. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Dún an freastalaí an nasc líonra, + mar níor chríochnaidh an brabhsálaí + leis an iarratais, taobh istigh den am sonraithe. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il server ha chiuso la connessione in quanto è stato + superato il limite di tempo entro il quale il browser avrebbe + dovuto eseguire la richiesta. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%V%i%&%6$,;XDj;~4V0JFb$K%j%/%(%9%H$r40N;$7$J$+$C$?$N$G!"(B + $B%5!<%P$O@\B3$r@Z$j$^$7$?!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ºê¶ó¿ìÀú°¡ ³Ê¹« ¿À·§µ¿¾È ¿äûÀ» ³¡³»Áö ¾Ê¾Æ¼­ ¼­¹ö°¡ ³×Æ®¿öÅ© ¿¬°áÀ» + °­Á¦·Î ²÷¾ú½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De server heeft de netwerkverbinding gesloten omdat de browser + de vraag niet heeft beëindigd binnen een gestelde tijd. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Serwer zamkn±³ po³±czenie sieciowe poniewa¿ przegl±darka + nie zakoñczy³a operacji w przewidywanym czasie. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O servidor encerrou a conexão porque o "browser" + não finalizou a requisição dentro + do tempo limite. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Serverul a terminat conexiunea cu browserul pentru ca acesta + nu a terminat cererea in limita timpului specificat. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ÁÕàÒÕà øÕ ßàÕÚØÝãÞ ÒÕ×ã áÐ ÜàÕÖÞÜ øÕà çØâÐç + ÝØøÕ ×ÐÒàèØÞ ×ÐåâÕÒ ×Ð ÔÞ×ÒÞùÕÝÞ ÒàÕÜÕ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Servern stängde förbindelsen därför att + webbläsaren inte avslutade förfrågan inom + förbestämd tid. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Sunucu ağ bağlantısını kapattı çünkü gezgin + talebini belirlenmiş süre içinde tamamlayamadı. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_REQUEST_URI_TOO_LARGE.html.var b/rubbos/app/apache2/error/HTTP_REQUEST_URI_TOO_LARGE.html.var new file mode 100644 index 00000000..be73725d --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_REQUEST_URI_TOO_LARGE.html.var @@ -0,0 +1,217 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Délka po¾adovaného URL pøesahuje kapacitní limit tohoto + serveru. Po¾adavek nemù¾e být zpracován. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der bei der Anfrage übermittelte URI überschreitet + die maximale Länge. + Die Anfrage kann nicht ausgeführt werden. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The length of the requested URL exceeds the capacity limit for + this server. The request cannot be processed. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + Su solicitud no puede procesarse debido a que la + longitud del enlace excede la capacidad límite del + servidor. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + La longueur de l'URL demandée excède la limite de + capacitè pour ce serveur. Nous ne pouvons donner suite + à votre requête. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Tá faid an URL iarraithe breis ar an teorainn cumas don + freastalaí seo. Ní féidir an iarratas a + phróiseáil. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + La lunghezza dell'indirizzo (URL) trasmesso supera il + limite massimo imposto da questo server. + La richiesta non può essere soddisfatta. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%j%/%(%9%H$N(B URL $B$ND9$5$,!"07$($kD9$5$rD6$($F$$$^$9!#(B + $B%j%/%(%9%H$N=hM}$rB3$1$i$l$^$;$s!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¿äûÇÑ URLÀÌ ³Ê¹« ±æ¾î¼­ ÀÌ ¼­¹ö°¡ ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De lengte van de aangeboden URL overschreidt het maximum + voor deze server. De vraag kan niet verwerkt worden. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + D³ugo¶æ ¿±danego URLa przekracza limit ustanowiony dla tego + serwera. ¯±danie nie mo¿e zostaæ zrealizowane. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O tamanho do endereço (URL) excede a capacidade limite + desse servidor. A requisição não pode ser + processada. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Lungimea URL-ului cerut depaseste limita capacitatii pentru + acest server. Cererea nu poate fi procesata. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ´ãÖØÝÐ ×ÐåâÕÒÐÝÞÓ ÃÀ»-Ð ßàÕÜÐèãøÕ ÞÓàÐÝØçÕúÐ ÜÞÓãûÝÞáâØ + ÞÒÞÓ áÕàÒÕàÐ. ·ÐåâÕÒ ÝÕ ÜÞÖÕ ÑØâØ ÞÑàÐòÕÝ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Längden på adressen som efterfrågas överskrider + kapacitetsgränsen för denna server. Förfrågan kan + inte verkställas. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Talep edilen URL'nin uzunluğu, sunucunun kapasite limitlerini aşıyor. + Talep işlenemiyor. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_SERVICE_UNAVAILABLE.html.var b/rubbos/app/apache2/error/HTTP_SERVICE_UNAVAILABLE.html.var new file mode 100644 index 00000000..ebfb3685 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_SERVICE_UNAVAILABLE.html.var @@ -0,0 +1,233 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Server doèasnì nemù¾e zpracovat Vá¹ po¾adavek + kvùli údr¾bì nebo kapacitním problémùm. + Zkuste to, prosím, pozdìji. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der Server ist derzeit nicht in der Lage die Anfrage + zu bearbeiten. Entweder ist der Server derzeit überlastet + oder wegen Wartungsarbeiten nicht verfügbar. + Bitte versuchen Sie es später wieder. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The server is temporarily unable to service your + request due to maintenance downtime or capacity + problems. Please try again later. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El servidor no puede atender su solicitud por + el momento debido a problemas de mantenimiento + o de capacidad. + + Le solicitamos que por favor repita la operación + más tarde. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + En raison de travaux de maintenance ou de problèmes + de capacité le serveur n'est pas en mesure de répondre + à votre requête pour l'instant. Veuillez réessayer + plus tard. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Níl an freastalaí seo in ann do chuid + iarratais a líonadh ag an am seo, toisc + cóthábháil nó fhaidhbeanna cumas. + Déan iarracht eile níos déanaí, le do thoil. + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il server in questo momento non è in grado di + soddisfare la richiesta per motivi di manutenzione + o di sovraccarico del sistema. + Per favore, riprova più tardi. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%a%s%F%J%s%9$GDd;_Cf$+!"%5!<%P$N=hM}G=NO$NLdBj$N$?$a!"(B + $B8=:_%j%/%(%9%H$K1~$8$k$3$H$,$G$-$^$;$s!#(B + $B8e$[$I:FEY$*;n$72<$5$$!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + °ü¸® ÀÛ¾÷À̳ª ¿ë·® ¹®Á¦·Î ¼­¹ö°¡ Àá½Ãµ¿¾È ¿äûÀ» ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. + ³ªÁß¿¡ ´Ù½Ã ½ÃµµÇØÁֽñ⠹ٶø´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De server kan tijdelijk uw vraag niet verwerken + door onderhoud of problemen met de capaciteit van de server. + Gelieve later nog eens opnieuw te proberen. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Serwer nie mo¿e zrealizowaæ twojego ¿±dania + ze wzglêdu na konserwacjê lub zbyt du¿e obci±¿enie. + Prosimy spróbowaæ pó¼niej. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O servidor está temporariamente fora de serviço + para manutanção ou devido a problemas de capacidade. + Por favor tente acessar mais tarde. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Serverul nu poate, temporar, sa raspunda cererii + dumneavoastra datorita intretinerii acestuia sau a + unor probleme de capacitate. Va rugam incercati mai tarziu. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ÁÕàÒÕà âàÕÝãâÝÞ ÝØøÕ ã ÜÞÓãûÝÞáâØ ÔÐ ãáÛãÖØ ÒÐè + ×ÐåâÕÒ ßÞèâÞ øÕ ×ÐâÒÞàÕÝ ×ÑÞÓ ÞÔàÖÐÒÐúÐ ØÛØ ØÜÐ ÝÕÔÞÒÞùÐÝ + ÚÐßÐæØâÕâ. ¼ÞÛØÜÞ ßÞÚãèÐøâÕ ßÞÝÞÒÞ ÚÐáÝØøÕ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Servern är för tillfället oförmögen att + utföra din förfrågan på grund av underhåll + eller kapacitetsbegränsningar. Vänligen försök + igen senare. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Sunucu, kendi içindeki çeşitli sorunlardan ötürü, + bir süreliğine taleplerinize cevap veremeyecek. + Lütfen daha sonra tekrar deneyin. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_UNAUTHORIZED.html.var b/rubbos/app/apache2/error/HTTP_UNAUTHORIZED.html.var new file mode 100644 index 00000000..99576534 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_UNAUTHORIZED.html.var @@ -0,0 +1,337 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Server nemohl ovìøit, ¾e jste autorizován(a) k pøístupu + k URL "". + Buï jste dodal(a) neplatné povìøení (napø. chybné heslo) nebo Vá¹ + prohlí¾eè neumí dodat po¾adované ovìøení. + + + + V pøípadì, ¾e smíte po¾adovat tento dokument, zkontrolujte, prosím, + Va¹i u¾ivatelskou identifikaci a heslo a zkuste to znovu. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Der Server konnte nicht verifizieren, ob Sie autorisiert sind, + auf den URL "" zuzugreifen. + Entweder wurden falsche Referenzen (z.B. ein falsches Passwort) + angegeben oder ihr Browser versteht nicht, wie die geforderten + Referenzen zu übermitteln sind. + + + + Sofern Sie für den Zugriff berechtigt sind, überprüfen + Sie bitte die eingegebene User-ID und das Passwort und versuchen Sie + es erneut. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + This server could not verify that you are authorized to access + the URL "". + You either supplied the wrong credentials (e.g., bad password), or your + browser doesn't understand how to supply the credentials required. + + + + In case you are allowed to request the document, please + check your user-id and password and try again. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + El servidor no puede certificar que usted este autorizado + para acceder al enlace "". + Usted pudo suministrar información errónea accidentalmente + (ejem. una contraseña inválida) o, el navegador no sabe + como suministrar la información requerida. + + + + En caso de que a usted le este permitido el uso del + documento requerido, le solicitamos de la manera más atenta + que por favor vuelva a intentar la operación suministrando + nuevamente su identificador y su contraseña. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Ce server n'a pas été en mesure de vérifier que + vous êtes autorisé à accéder à cette + URL "". + + Vous avez ou bien fourni des coordonnées erronées + (p.ex. mot de passe inexact) ou bien votre navigateur ne parvient + pas à fournir les données exactes. + + + + Si vous êtez autorisé à requérir le document, + veuillez vérifier votre nom d'utilisateur et votre mot de passe + et réessayer. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Níorbh fhéidir leis an freastalaí a dheimhniú + go bhfuil an údaráis agat rochtain a dheanamh ar an URL + "". Is féidir go + soláthair tú faisnéis mícheart (m.s., + pasfhocail mícheart), nó nach dtuigeann do chuid + brabhsálaí conas an faisnéis is gá a + soláthair i gceart. + + + + Más é gur ceart go mbhéadh cead agat iarratais a + dheanamh don doiciméid, deimhnigh go bhfuil do chuid ainm + úsáideora agus pasfhocal i gceart, agus dean iarracht eile, + le do thoil. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Questo server non può verificare l'autorizzazione + all'accesso a "". + Questo errore potrebbe essere causato da credenziali errate + (nome utente o password errata) oppure da un browser che non + riesce a comunicare il nome utente e la password in modo corretto. + + + + Nel caso in cui ritieni di aver diritto ad accedere al documento, + controlla il nome utente e la password forniti e riprova. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + URL "" + $B$X$N%"%/%;%98"8B$,$"$k$3$H$r3NG'$G$-$^$;$s$G$7$?!#(B + $B4V0c$C$?;q3J>pJs(B ($BNc$($P!"8m$C$?%Q%9%o!<%I(B) $B$rF~NO$7$?$+!"(B + $B%V%i%&%6$,I,MW$J;q3J>pJs$rAw?.$9$kJ}K!$rM}2r$7$F$$$J$$$+$G$9!#(B + + + + $B%I%-%e%a%s%H$rMW5a$G$-$kH&$G$"$k>l9g$O!"(B + $B%f!<%6(B ID $B$H%Q%9%o!<%I$r:F3NG'$7$F2<$5$$!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ÀÌ ¼­¹ö°¡ "" URLÀ» + Á¢±ÙÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇÏÁö ¸øÇß½À´Ï´Ù. + À߸øµÈ ÀÎÁõ Á¤º¸(°¡·É, À߸øµÈ ¾ÏÈ£)¸¦ º¸³Â°Å³ª ¾Æ´Ï¸é + »ç¿ëÇϽô ºê¶ó¿ìÀú°¡ ÇÊ¿äÇÑ ÀÎÁõ Á¤º¸¸¦ ¾î¶»°Ô º¸³»´ÂÁö ¸ð¸£´Â °ÍÀÔ´Ï´Ù. + + + + ÀÌ ¹®¼­¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çã°¡¸¦ ¹Þ¾Ò´Âµ¥µµ ÀÌ·±´Ù¸é, + »ç¿ëÀÚ ID¿Í ¾ÏÈ£¸¦ È®ÀÎÇÏ½Ã°í ´Ù½Ã ½ÃµµÇϽñ⠹ٶø´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De server kon niet controleren of u gemachtigd bent om toegang te krijgen + tot de URL "". + U hebt zich onvoldoende geauthenticeerd ( vb : verkeerd paswoord ), of + uw browser is niet in staat de nodige authentificatiegegevens door te geven. + + + + Indien u toch gemachtigd bent toegang te krijgen tot het document, + controleer uw gebruikersnaam en paswoord en probeer opnieuw. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Serwer nie mo¿e zweryfikowaæ, ¿e masz uprawnienia dostêpu do + URLa "". + Nie poda³e¶ prawid³owych danych autoryzacyjnych (np. has³a), + lub twoja przegl±darka nie potrafi ich przes³aæ. + + + + Je¶li masz prawo dostêpu do ¿±danego dokumentu, sprad¼ + podan± nazwê u¿ytkownika i has³o. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + Este servidor não pode autorizar o seu acesso à URL + "". + Você deve ter fornecido dados incorretos (ex. senha errada), ou o seu + "browser" não fornece as credenciais necessárias. + + + + No caso de você realmente possuir permissão para este documento, + por favor checar seu login e sua senha e tentar novamente. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Acest server nu a putut verifica daca sunteti autorizat sa accesati + URL-ul "". + Ati furnizat parametrii de acreditare gresiti (ex: parola gresita), sau browserul + dumneavoastra nu poate furniza aceste detalii de acreditare. + + + + In cazul in care nu va este permis sa cereti un document, va rugam + sa va verificati numele de utilizator si parola si sa incercati din nou. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ¾ÒÐø áÕàÒÕà ÝØøÕ ÜÞÓÐÞ ÔÐ ßÞâÒàÔØ ÔÐ áâÕ ÞÒÛÐèûÕÝØ ÔÐ ßàØáâãßØâÕ + ÃÀ»-ã "". + ¼ÞÓãûÕ øÕ ØÛØ ÔÐ áâÕ ÝÐÒÕÛØ ßÞÓàÕèÝÕ ÛØçÝÕ ßÞÔÐâÚÕ (Ýßà. ÝÕâÐçÝã ÛÞ×ØÝÚã), ØÛØ ÔÐ + ÒÐè çØâÐç ÝÕ àÐ×ãÜÕ ÚÐÚÞ ÔÐ ßÞèÐùÕ ×ÐåâÕÒÐÝÕ ÛØçÝÕ ßÞÔÐâÚÕ. + + + + ÃÚÞÛØÚÞ ÒÐÜ øÕ ÔÞ×ÒÞùÕÝÞ ÔÐ ßàÕã×ØÜÐâÕ ÔÞÚãÜÕÝâ, ÜÞÛØÜÞ ÔÐ + ßàÞÒÕàØâÕ áÒÞøÕ ÚÞàØáÝØçÚÞ ØÜÕ Ø ÛÞ×ØÝÚã Ø ßàÞÑÐâÕ ßÞÝÞÒÞ. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Servern kunde inte verifiera att du har tillåtelse att besöka + adressen "". + Antingen angav du felaktiga uppgifter (ex. fel lösenord) eller så + stödjer inte din webbläsare detta autentiseringssätt. + + + + Om du har tillåtelse att besöka sidan, vänligen kontrollera ditt + användarnamn samt lösenord och försök igen. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Sunucu bu dokümana erişim izninizi doğrulayamadı. + Ya kimliğiniz doğrulanamadı (örneğin hatalı parola girdiniz), + ya da gezgininiz bu işlemi yerine getiremiyor. + + + + Eğer bu dokümana erişme izniniz varsa, lütfen kimliğinizi + ve parolanızı kontrol edip, tekrar deneyin. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var b/rubbos/app/apache2/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var new file mode 100644 index 00000000..675852c1 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var @@ -0,0 +1,201 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Server nepodporuje typ prostøedku (media) pøeneseného v po¾adavku. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Das bei der Anfrage übermittelte Format (Media Type) + wird vom Server nicht unterstützt. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + The server does not support the media type transmitted in the request. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + Los datos de su solicitud no se encuentran en + un formato aceptado por este recurso. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Le serveur ne supporte pas le type de média utilisé + dans votre requête. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Ní tachaíonn an fhreastalaí an cineáil + meán a sheoladh san iarratais. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Il server non è in grado di gestire il + tipo del formato dei dati trasmesso nella richiesta. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%j%/%(%9%H$G;XDj$5$l$?%a%G%#%"%?%$%W$O%5%]!<%H$5$l$F$$$^$;$s!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¿äûÀ¸·Î º¸³»¿Â ¹Ìµð¾î Çü½ÄÀ» ÀÌ ¼­¹ö°¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + De server ondersteunt het gevraagde formaat ( media type ) niet. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Serwer nie zna typu danych przes³anych w ¿±daniu. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + O servidor não suporta o tipo de mídia + transmitida nesta requisição. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + Serverul nu suporta tipul de date trimise in cerere. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ÁÕàÒÕà ÝÕ ßÞÔàÖÐÒÐ Òàáâã ÜÕÔØøÐ ßàÕÝÕáÕÝã ã ×ÐåâÕÒã. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + Servern stödjer inte den mediatyp som skickats i förfrågan. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Sunucu, talep içinde iletilen ortam türünü desteklemiyor. + + +----------tr-- diff --git a/rubbos/app/apache2/error/HTTP_VARIANT_ALSO_VARIES.html.var b/rubbos/app/apache2/error/HTTP_VARIANT_ALSO_VARIES.html.var new file mode 100644 index 00000000..ad2e5bd9 --- /dev/null +++ b/rubbos/app/apache2/error/HTTP_VARIANT_ALSO_VARIES.html.var @@ -0,0 +1,223 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- + + + Varianta po¾adované entity má sama více variant. Pøístup není mo¾ný. + + +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- + + + Ein Zugriff auf das angeforderte Objekt bzw. einer + Variante dieses Objektes ist nicht möglich, da es ebenfalls + ein variables Objekt darstellt. + + +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- + + + A variant for the requested entity + is itself a negotiable resource. + Access not possible. + + +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- + + + No es posible tener acceso debido a que + una variante de la solicitud es por si + misma un recurso negociable. + + +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- + + + Une variante pour l'entité requise + est elle-même une ressource négociable. + L'accès est impossible. + + +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- + + + Is é ceann de na athraithaí + don aonán iarraithe acmhainn + intráchta féin. + Rochtain dodhéanta. + + +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- + + + Non è possibile accedere all'entità + richiesta perché ` essa stessa + una risorsa negoziabile. + + +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- + + + $B%j%/%(%9%H$5$l$?$b$N$N(B variant + $B$O$=$l<+BN$b$^$?!"%M%4%7%(!<%7%g%s2DG=$J%j%=!<%9$G$9!#(B + $B%"%/%;%9$G$-$^$;$s$G$7$?!#(B + + +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- + + + ¿äûÇÑ °´Ã¼ÀÇ ÇüÅ ¶ÇÇÑ ¿©·¯ ÇüŸ¦ °¡Áö°í À־ + Á¢±ÙÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù. + + +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- + + + Een variant van het gevraagde object + is op zich ook een te onderhandelen variant. + Toegang is niet mogelijk. + + +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- + + + Wariant ¿±danego zasobu jest równie¿ zasobem negocjowalnym. + Dostêp jest niemo¿liwy. + + +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- + + + Uma variante da entidade de requisição + é por si mesma um recurso negociável. + Acesso não é possível. + + +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- + + + O varianta pentru entitatea ceruta + este ea insasi o resursa negociabila. + Accesul nu este posibil. + + +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- + + + ²ÐàØøÐÝâÐ ×ÐåâÕÒÐÝÞÓ ÕÝâØâÕâÐ + øÕ Ø áÐÜÐ àÕáãàá ÚÞøØ ßÞáâÞøØ ã ÒØèÕ ÒÐàØøÐÝâØ. + ¿àØáâãß ÝØøÕ ÜÞÓãû. + + +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- + + + En variant av den förfrågade enheten är i + sig själv en giltig resurs. Åtkomst är inte + möjlig. + + +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- + + + Talep edilen elemanın bir değişkeninin kendisi zaten paylaşılır bir kaynak. + Erişim mümkün değil. + + +----------tr-- diff --git a/rubbos/app/apache2/error/README b/rubbos/app/apache2/error/README new file mode 100644 index 00000000..5a589449 --- /dev/null +++ b/rubbos/app/apache2/error/README @@ -0,0 +1,36 @@ + + Multi Language Custom Error Documents + ------------------------------------- + + The 'error' directory contains HTTP error messages in multiple languages. + If the preferred language of a client is available it is selected + automatically via the MultiViews feature. This feature is enabled + by default via the Options, Language and ErrorDocument directives. + + You may configure the design and markup of the documents by modifying + the HTML files in the directory 'error/include'. + + Supported Languages: + + +-----------------------+------------------------------------------+ + | Language | Contributed by | + +-----------------------+------------------------------------------+ + | Brazilian (pt-br) | Ricardo Leite | + | Czech (cs) | Marcel Kolaja | + | Dutch (nl) | Peter Van Biesen | + | English (en) | Lars Eilebrecht | + | French (fr) | Cecile de Crecy | + | German (de) | Lars Eilebrecht | + | Italian (it) | Luigi Rosa | + | Korean (ko) | Jaeho Shin | + | Polish (pl) | Tomasz Kepczynski | + | Romanian (ro) | Andrei Besleaga | + | Serbian (sr) | Nikola Smolenski | + | Spanish (es) | Karla Quintero | + | Swedish (sv) | Thomas Sjögren | + | Turkish (tr) | Emre Sokullu | + | Irish (ga) | Noirin Plunkett | + +-----------------------+------------------------------------------+ + (Please see http://httpd.apache.org/docs-project/ if you would + like to contribute the pages in an additional language.) + diff --git a/rubbos/app/apache2/error/contact.html.var b/rubbos/app/apache2/error/contact.html.var new file mode 100644 index 00000000..8dc5581a --- /dev/null +++ b/rubbos/app/apache2/error/contact.html.var @@ -0,0 +1,120 @@ +Content-language: cs +Content-type: text/html; charset=ISO-8859-2 +Body:----------cs-- +Pokud si myslíte, ¾e toto je chyba serveru, kontaktujte, prosím, +">webmastera. +----------cs-- + +Content-language: de +Content-type: text/html; charset=ISO-8859-1 +Body:----------de-- +Sofern Sie dies für eine Fehlfunktion des Servers halten, +informieren Sie bitte den +">Webmaster +hierüber. +----------de-- + +Content-language: en +Content-type: text/html; charset=ISO-8859-1 +Body:----------en-- +If you think this is a server error, please contact +the ">webmaster. +----------en-- + +Content-language: es +Content-type: text/html; charset=ISO-8859-1 +Body:----------es-- +Por favor contacte con el +">webmaster +en caso de que usted crea que existe un error en el servidor. +----------es-- + +Content-language: fr +Content-type: text/html; charset=ISO-8859-1 +Body:----------fr-- +Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le +">gestionnaire du site. +----------fr-- + +Content-language: ga +Content-type: text/html; charset=ISO-8859-1 +Body:----------ga-- +Má cheapann tú gur earráid fhreastalaí í seo, +téigh i dteagmháil leis an +"> +stiúrthóir gréasáin, le do thoil. +----------ga-- + +Content-language: it +Content-type: text/html; charset=ISO-8859-1 +Body:----------it-- +Se pensi che questo sia un errore del server, per favore contatta il +">webmaster. +----------it-- + +Content-language: ja +Content-type: text/html; charset=ISO-2022-JP +Body:----------ja-- +$B%5!<%P!<$N>c32$H;W$o$l$k>l9g$O!"(B" +>$B%&%'%V4IM}$B$^$G$4O"Mm$/$@$5$$!#(B +----------ja-- + +Content-language: ko +Content-type: text/html; charset=EUC-KR +Body:----------ko-- +¸¸¾à ÀÌ°ÍÀÌ ¼­¹ö ¿À·ù¶ó°í »ý°¢µÇ¸é, +">À¥ °ü¸®ÀÚ¿¡°Ô ¿¬¶ôÇϽñ⠹ٶø´Ï´Ù. +----------ko-- + +Content-language: nl +Content-type: text/html; charset=ISO-8859-1 +Body:----------nl-- +Indien u van oordeel bent dat deze server in fout is, gelieve +de ">webmaster te contacteren. +----------nl-- + +Content-language: pl +Content-type: text/html; charset=ISO-8859-2 +Body:----------pl-- +Je¶li my¶lisz, ¿e jest to b³±d tego serwera, skontaktuj siê z +">administratorem. +----------pl-- + +Content-language: pt-br +Content-type: text/html; charset=ISO-8859-1 +Body:-------pt-br-- +Se você acredita ter encontrado um problema no servidor, +por favor entre em contato com o +">webmaster. +-------pt-br-- + +Content-language: ro +Content-type: text/html; charset=ISO-8859-1 +Body:----------ro-- +Va rugam sa il contactati pe +">webmaster +in cazul in care credeti ca aceasta este o eroare a serverului. +----------ro-- + +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +°ÚÞ ÜØáÛØâÕ ÔÐ øÕ ÞÒÞ ÓàÕèÚÐ áÕàÒÕàÐ, ÜÞÛØÜÞ ÞÑÐÒÕáâØâÕ +">ÒÕÑÜÐáâÕàÐ. +----------sr-- + +Content-language: sv +Content-type: text/html; charset=ISO-8859-1 +Body:----------sv-- +Om du tror att detta beror på ett serverfel, vänligen kontakta +">webbansvarig. +----------sv-- + +Content-language: tr +Content-type: text/html; charset=ISO-8859-9 +Body:----------tr-- +Bunun bir sunucu hatası olduğunu düşünüyorsanız, lütfen +">site +yöneticisi ile iletişime geçin. +----------tr-- diff --git a/rubbos/app/apache2/error/include/bottom.html b/rubbos/app/apache2/error/include/bottom.html new file mode 100644 index 00000000..e8522b6e --- /dev/null +++ b/rubbos/app/apache2/error/include/bottom.html @@ -0,0 +1,14 @@ +

    +

    + +

    + +

    Error

    +
    +
    + +
    +
    +
    + + diff --git a/rubbos/app/apache2/error/include/spacer.html b/rubbos/app/apache2/error/include/spacer.html new file mode 100644 index 00000000..7d5e5953 --- /dev/null +++ b/rubbos/app/apache2/error/include/spacer.html @@ -0,0 +1,2 @@ +

    +

    diff --git a/rubbos/app/apache2/error/include/top.html b/rubbos/app/apache2/error/include/top.html new file mode 100644 index 00000000..04b73b51 --- /dev/null +++ b/rubbos/app/apache2/error/include/top.html @@ -0,0 +1,24 @@ +"?> + +" xml:lang=""> + +<!--#echo encoding="none" var="TITLE" --> +" /> + + + + +

    +

    diff --git a/rubbos/app/apache2/htdocs/apache_pb.gif b/rubbos/app/apache2/htdocs/apache_pb.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a1c139fc4247ec7e770fdaab961fb3692c953fb GIT binary patch literal 2326 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 XqiYh{4~%{)S#O;4Fm;B(z`p+hpbw|G literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/htdocs/apache_pb2.png b/rubbos/app/apache2/htdocs/apache_pb2.png new file mode 100644 index 0000000000000000000000000000000000000000..28baa70fb8ce678b9e4a5eecb6697d43315f413a GIT binary patch literal 1463 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 + + +Pàgina de prova de la instal·lació d'Apache + + + +

    Si veieu això, la instal·lació del progamari +del servidor +web d'Apache al sistema ha tingut èxit. Ja podeu afegir +contingut al directori i substituir aquesta pàgina.

    + +
    +

    Veieu aquest text en comptes de la pàgina web que +cercàveu?

    + +

    Aquesta pàgina és aquí perquè l'administrador +del lloc ha canviat la configuració d'aquest servidor web. +Poseu-vos en contacte amb la persona responsable del manteniment +d'aquest servidor. +La Apache Software Foundation, que va escriure el programari del servidor web +que fa servir l'administrador d'aquest lloc, no té res a veure amb el +seu manteniment i no pot ajudar-vos a resoldre els problemes de configuració.

    + +
    +

    Aquesta distribució inclou la documentació +d'Apache.

    + +

    Podeu fer servir lliurement la imatge que surt a sota en un servidor web +que funcioni amb Apache. Gràcies per fer servir Apache!

    + +
    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.cz.iso8859-2 b/rubbos/app/apache2/htdocs/index.html.cz.iso8859-2 new file mode 100644 index 00000000..e0cd2ba6 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.cz.iso8859-2 @@ -0,0 +1,51 @@ + + + + + Testovací stránka instalace web serveru Apache + + + +

    + Funguje to! Na tomto serveru bì¾í Apache! +

    +

    + Pokud vidíte tuto zprávu, správce tohoto poèítaèe právì úspì¹nì + nainstaloval Apache web server. + Teï je¹tì musí doplnit obsah a nahradit tuto standardní uvítací + stránku, nebo pøesmìrovat server na skuteènou domovskou stránku. +

    +
    +
    + Pokud vidíte tuto zprávu místo oèekávané domovské stránky, + kontaktujte, prosím, správce pøíslu¹ného web + serveru. (Zkuste poslat e-mail na adresu + <Webmaster@domain>.) + Pøesto¾e tento server pou¾ívá program Apache, témìø jistì nemá nic + spoleèného s Apache Group, proto prosím neposílejte e-maily o tomto + serveru nebo jeho obsahu autorùm Apache. Pokud to udìláte, budeme + va¹e zprávy ignorovat. +
    +
    +

    + Zde najdete + dokumentaci + Apache (anglicky) obsa¾enou v této distribuci. +

    +

    + Následující logo mù¾e být pou¾ito bez omezení na web serveru s + programem Apache. Dìkujeme za pou¾ití Apache! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.de b/rubbos/app/apache2/htdocs/index.html.de new file mode 100644 index 00000000..cad034c0 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.de @@ -0,0 +1,61 @@ + + + + Testseite fuer die Apache-Installation auf dieser Website + + + + +

    + Es klappt! Der Apache-Webserver ist auf dieser Website installiert! +

    +

    + Wenn Sie diese Seite sehen, dann bedeutet das, dass die + Eigentümer dieser Domäne soeben einen neuen + Apache-Webserver + erfolgreich installiert haben. Jetzt muss noch der + richtige Webinhalt zugefügt und diese Platzhalterseite + ersetzt werden (oder der Webserver für den Zugriff auf den + richtigen Inhalt umkonfiguriert werden). +

    +
    +
    + Wenn Sie diese Seite an Stelle einer anderen erwarteten Website + sehen sollten, dann nehmen Sie bitte Kontakt mit dem + Eigentümer dieser Site auf (Versuchen Sie, eine E-Mail + an <Webmaster@domänenname> + zu senden)!
    +

    + Obwohl der Eigentümer dieser Domäne die Apache-Webserver-Software + verwendet, hat diese Website ziemlich sicher + keinerlei Verbindung mit der Apache Software Foundation + (die diese Software kostenlos vertreibt). Es besteht also + keinerlei Veranlassung, eine E-Mail an + die Entwickler der Software zu senden. Sollten Sie das dennoch + tun, wird Ihre E-Mail stillschweigend + ignoriert. +

    +
    +

    + Die englische Online-Dokumentation für die + Apache-Webserver-Software ist Bestandteil dieser + Software-Distribution. +

    +

    + Dem Webmaster dieser Website steht es frei, das + untenstehende "Powered by Apache"-Logo auf einem Apache-basierten + Webserver zu verwenden.
    + Vielen Dank, dass Sie Apache gewählt haben! +

    +
    + Powered by Apache! +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.dk b/rubbos/app/apache2/htdocs/index.html.dk new file mode 100644 index 00000000..cbe8aade --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.dk @@ -0,0 +1,47 @@ + + + + Prøveside for Apache installationen + + + +

    + Det virkede! Apache Webserveren er installeret på denne maskine! +

    +

    + Hvis du kan se denne side, så har dem som ejer dette domæne lige + installeret Apache Webserveren. + Du må nu placere web sider i dette directory og fjerne denne side, eller + konfigurere serveren til at anvende et andet directory. +

    +
    +
    + Hvis du ser denne side istedet for en anden forventet side, kontakt + venligst administratoren for den server du prøver at kontakte. + (Prøv at sende mail til <Webmaster@domain>.) + Apachegruppen har ikke noget at gøre med denne site, så det vil ikke + hjælpe at sende mail to Apache udviklerne angående denne site. +
    +
    +

    + Apache- + documentationen + er inkluderet med denne distribution. +

    +

    + Webmasteren af denne site må gerne bruge den følgende grafik + på en Apache-drevet webserver. Mange tak for at bruge Apache! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.ee b/rubbos/app/apache2/htdocs/index.html.ee new file mode 100644 index 00000000..7d8bc9c8 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ee @@ -0,0 +1,53 @@ + + + + Apache veebiserveri installatsiooni testlehekülg + + + + +

    + Kujuta pilti, käima läks! Apache veebiserver on installeeritud! +

    +

    + Kui Sa näed seda lehekülge, siis selle domeeni omanikud on + edukalt hakkama saanud Apache veebiserveri + installeerimisega. Järgmiseks peaks nad selle lehekülje asendama + misiganes materjaliga, mida nad oma veebisaidis näidata tahavad, + või siis juhatama veebiserverile kätte tegeliku materjali + asukoha. +

    +
    +
    + Kui Sa ootasid siin leheküljel näha hoopis midagi muud, + siis palun võta ühendust selle veebisaidi + administraatoriga. (Võid näiteks kirjutada aadressil + <Webmaster@domain>.) Kuigi see veebisait + kasutab Apache tarkvara, pole ta peaaegu kindlasti mitte Apache Group'iga + mingil muul moel seotud. Seega, palun ära kirjuta selle saidi + asjus Apache autoritele. Kui sa seda teed, siis sinu kirja + ignoreeritakse. +
    +
    +

    + Ka Apache + dokumentatsioon + on selles distributsioonis olemas. +

    +

    + Kohalik veebmeister võib vabalt kasutada allpool olevat + pilti oma Apache veebiserveril. Aitäh Apachet kasutamast! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.el b/rubbos/app/apache2/htdocs/index.html.el new file mode 100644 index 00000000..75c8737e --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.el @@ -0,0 +1,37 @@ + + + + ÄïêéìáóôéêÞ Óåëßäá ãéá ôçí ÅãêáôÜóôáóç ôïõ Apache + + + + + +

    +ÅÜí ìðïñåßôå íá äåßôå áõôÞ ôç óåëßäá, ôüôå ç åãêáôÜóôáóç ôïõ ëïãéóìéêïý ôïõ ÅîõðçñåôçôÞ WWW Apache óå áõôü ôï óýóôçìá Þôáí åðéôõ÷Þò. Ìðïñåßôå ôþñá íá ðñïóèÝóåôå ðåñéå÷üìåíï óå áõôü ôïí êáôÜëïãï êáé íá áíôéêáôáóôÞóåôå áõôÞ ôç óåëßäá. + +


    + +

    ÂëÝðåôå áõôÞ ôç óåëßäá áíôß ãéá ôï äéêôõáêü ôüðï ðïõ ðåñéìÝíáôå;

    + +

    +ÁõôÞ ç óåëßäá âñßóêåôáé åäþ ãéáôß ï äéá÷åéñéóôÞò áõôïý ôïõ äéêôõáêïý ôüðïõ ôñïðïðïßçóå ôéò ñõèìßóåéò óôïí åîõðçñåôçôÞ Apache. Ðáñáêáëþ åðéêïéíùíÞóôå ìå ôïí õðåýèõíï ãéá ôç äéá÷åßñéóç ôïõ ðáñüíôïò åîõðçñåôçôÞ. Ôï ºäñõìá Ëïãéóìéêïý Apache (The Apache Software Foundation) Ýãñáøå ôï ëïãéóìéêü ôïõ åîõðçñåôçôÞ WWW ôï ïðïßï ÷ñçóéìïðïéåß ï äéá÷åéñéóôÞò áõôïý ôïõ äéêôõáêïý ôüðïõ. Ôï ºäñõìá üìùò äåí Ý÷åé êáìéÜ áñìïäéüôçôá ó÷åôéêÞ ìå ôç äéá÷åßñéóç áõôïý ôïõ äéêôõáêïý ôüðïõ êáé äåí ìðïñåß íá âïçèÞóåé óôçí åðßëõóç èåìÜôùí ðïõ Ý÷ïõí ó÷Ýóç ìå ôéò ñõèìßóåéò ôïõ. + +


    + + +

    ôåêìçñßùóç ôïõ Apache Ý÷åé óõìðåñéëçöèåß óå áõôÞ ôç äéáíïìÞ. + +

    +Åßóôå åëåýèåñïò/ç íá ÷ñçóéìïðïéÞóåôå ôçí ðáñáêÜôù åéêüíá óå Ýíáí åîõðçñåôçôÞ ôïõ WWW ðïõ âáóßæåôáé óå Apache. Åõ÷áñéóôïýìå ðïõ ÷ñçóéìïðïéåßôå ôïí Apache! + +

    + + diff --git a/rubbos/app/apache2/htdocs/index.html.en b/rubbos/app/apache2/htdocs/index.html.en new file mode 100644 index 00000000..dc4c5182 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.en @@ -0,0 +1,38 @@ + + + +Test Page for Apache Installation + + + +

    If you can see this, it means that the installation of the Apache web +server software on this system was successful. You may now add +content to this directory and replace this page.

    + +
    +

    Seeing this instead of the website you +expected?

    + +

    This page is here because the site administrator has changed the +configuration of this web server. Please contact the person +responsible for maintaining this server with questions. +The Apache Software Foundation, which wrote the web server software +this site administrator is using, has nothing to do with +maintaining this site and cannot help resolve configuration +issues.

    + +
    +

    The Apache documentation has been included +with this distribution.

    + +

    You are free to use the image below on an Apache-powered web +server. Thanks for using Apache!

    + +
    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.es b/rubbos/app/apache2/htdocs/index.html.es new file mode 100644 index 00000000..5cbaffc4 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.es @@ -0,0 +1,51 @@ + + + + Página para probar la instalación de Apache + + + +

    + ¡Funcionó! ¡El Servidor de Red Apache ha sido instalado en ese sitio! +

    +

    + Si usted puede ver esta página, entonces los dueños de esta + máquina han instalado el Servidor de + Red Apache con éxito. Ahora deben añadir contenido a este directorio + y reemplazar esta página, ó apuntar este servidor al contenido real. +

    +
    +
    + Si usted esta leyendo esta página y no es lo que esperaba, por favor + contacte el administrador de este sitio. + (Trate de enviar correo electrónico a <Webmaster@domain>.) + Aunque este sitio esta utilizando el programa Apache es casi seguro + que no tiene ninguna conexión con el Apache Group, por eso favor de + no enviar correo sobre este sitio o su contenido a los autores de + Apache. Si lo hace, su mensaje sera + ignorado. +
    +
    +

    + La + documentación + de Apache ha sido incluida en esta distribución. +

    +

    + El administrador del sitio esta invitado a usar la siguiente + imagen para indicar que su sitio es servido por Apache. + ¡Gracias por usar Apache! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.et b/rubbos/app/apache2/htdocs/index.html.et new file mode 100644 index 00000000..99f2ce6b --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.et @@ -0,0 +1,53 @@ + + + + Apache veebiserveri installatsiooni testlehekülg + + + + +

    + Kujuta pilti, käima läks! Apache veebiserver on installeeritud! +

    +

    + Kui Sa näed seda lehekülge, siis selle domeeni omanikud on + edukalt hakkama saanud Apache veebiserveri + installeerimisega. Järgmiseks peaks nad selle lehekülje asendama + misiganes materjaliga, mida nad oma veebisaidis näidata tahavad, + või siis juhatama veebiserverile kätte tegeliku materjali + asukoha. +

    +
    +
    + Kui Sa ootasid siin leheküljel näha hoopis midagi muud, + siis palun võta ühendust selle veebisaidi + administraatoriga. (Võid näiteks kirjutada aadressil + <Webmaster@domain>.) Kuigi see veebisait + kasutab Apache tarkvara, pole ta peaaegu kindlasti mitte Apache Group'iga + mingil muul moel seotud. Seega, palun ära kirjuta selle saidi + asjus Apache autoritele. Kui sa seda teed, siis sinu kirja + ignoreeritakse. +
    +
    +

    + Ka Apache + dokumentatsioon + on selles distributsioonis olemas. +

    +

    + Kohalik veebmeister võib vabalt kasutada allpool olevat + pilti oma Apache veebiserveril. Aitäh Apachet kasutamast! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.fr b/rubbos/app/apache2/htdocs/index.html.fr new file mode 100644 index 00000000..98154f1e --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.fr @@ -0,0 +1,47 @@ + + + + + Page de test de l'installation d'Apache + + + + + +

    Si vous lisez cette page, c'est que les propriétaires de ce +domaine viennent d'installer le +serveur web Apache +avec succès. Ils doivent maintenant ajouter du contenu à ce +répertoire et remplacer cette page, ou bien faire pointer le serveur +vers l'endroit où se trouve le contenu réel du site.

    + +
    + +

    Vous voyez cette page au lieu du site attendu ?

    + +

    Vous voyez cette page parce que l'administrateur du site a modifié +la configuration de ce serveur Web. Veuillez contacter +l'administrateur du site concerné. La Fondation +Apache (Apache Software Foundation), qui produit le logiciel Apache +utilisé par ce site, n'a rien à voir avec la maintenance de ce +site et ne peut intervenir sur sa configuration.

    + +
    + +

    La documentation Apache est incluse dans cette +distribution.

    + +

    Le webmaster de ce site peut librement utiliser l'image ci-dessous sur un +site web utilisant le logiciel Apache. Merci d'avoir choisi Apache !

    + +
    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.he.iso8859-8 b/rubbos/app/apache2/htdocs/index.html.he.iso8859-8 new file mode 100644 index 00000000..7006856e --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.he.iso8859-8 @@ -0,0 +1,54 @@ + + + + + Apache-ä úøù úð÷úäì ïåéñð óã + + + + +
    +

    + +
    äæä ãåîòä úà äàåø äúà íà +
    Apache èðøèðéàä úøù ìù äð÷úääù øîåà äæ +
    !!!äçìöäá äøáò +
    êìù íéöá÷ä úà óéñåäì ìåëé äúà åéùëò +
    .äæä óãä úà óéìçäìå úàæä äöéçîì + + +


    + +

    ?úéôéöù øúàä íå÷îá úàæ äàåø

    +

    +
    äæä øúàä ìò éàøçàä éë ,ïàë àöîð äæä ãåîòä +
    .äæä èðøèðéàä úøù ìù äéöøåâéôðå÷ä úà äðéù +
    .úåìàù íò úøùä éàøçà íò øù÷ øåöéì àð +
    úà äøöé øùà Apache Software Foundation +
    úøùä ú÷åæçú ìò úéàøçà äðéà ,äæä úøùä úðëåú +
    äéöøåâéôðå÷ úåéòá ïåøúôá òééñì äìåëé äðéàå + .ïäùìë + +


    + +

    +
    êåúá íéòöîð äéöèðîå÷åãä éëîñî + .úøùä úðëåú úìéáç + + +

    +
    ãåîòä úéúçúá àöîðä ìîñá ùîúùäì éàùø äúà +
    .Apache é''ò ìòôåîù úøùä ìò ÷ø + + !!!Apache-á ùåîéùä ìò äãåú + +

    +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.hr.iso8859-2 b/rubbos/app/apache2/htdocs/index.html.hr.iso8859-2 new file mode 100644 index 00000000..b4103516 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.hr.iso8859-2 @@ -0,0 +1,35 @@ + + + + +Testna Stranica Apache Instalacije + + + +

    Èestitamo! Apache web poslu¾itelj funkcionira!

    +

    Ukoliko vidite ovu stranicu, to znaèi da je instalacija Apache web poslu¾itelja uspje¹no izvr¹ena na ovom raèunalu. +Sada mo¾ete dodati sadr¾aj u ovaj direktorij te promijeniti ovu stranicu.

    + +
    +

    Oèekivali ste neku drugu stranicu?

    + +

    Ovu stranica vidite stoga ¹to je administrator ovog poslu¾itelja promijenio +konfiguraciju. Apache Softver Fondacija napisala je softver koji koristi +administrator ovog web poslu¾itelja i nije odgovorna za njegovo odr¾avanje! Zbog toga vas molimo da se za +sva pitanja obratite administratoru ili osobi odgovornoj za odr¾avanje ovog poslu¾itelja.

    + +
    +

    Ovdje se nalazi Dokumentacija o Apache web poslu¾itelju +(engleski).

    + +

    Donju slièicu mo¾ete slobodno koristiti na stranicama ovog veb poslu¾itelja. +Hvala vam ¹to koristite Apache!

    + +
    Apache Web Poslu¾itelj
    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.it b/rubbos/app/apache2/htdocs/index.html.it new file mode 100644 index 00000000..e9ef9ed0 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.it @@ -0,0 +1,39 @@ + + + + + Pagina di prova dell'installazione di un sito Web con Apache + + + + +
    +

    +Funziona! Il Server Web Apache è stato installato su questo sito Web!

    +Se riuscite a vedere questa pagina, allora vuol dire che coloro che gestiscono +questo dominio hanno appena installato il software +Web Server +Apache correttamente. Ora è necessario aggiungere il vostro materiale +in questa directory e sostituire questa pagina di prova, oppure configurare +il server per far riferimento al vostro materiale se collocato altrove. +

    +


    +
    Se state vedendo questa pagina invece del sito che pensavate, +vi preghiamo di contattare l'amministratore del sito in questione. +(Provate ad inviare un email a <Webmaster@domain>.)  +Nonostante questo sito stia utilizzando il software Apache, questo non +vi garantisce nessun tipo di contatto diretto al Gruppo Apache, quindi +vi preghiamo di non inviare email riguardanti questo sito o il materiale +in esso contenuto agli autori di Apache. Ogni messaggio del genere verrà +ignorato.
    + +
    +
    La documentazione relativa di Apache +è inclusa nella distribuzione. +

    Il Webmaster di questo sito è libero di utilizzare l'immagine qui sotto +su qualsiasi Web server potenziato con Apache. Grazie per aver scelto Apache! +

    +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.ja.iso2022-jp b/rubbos/app/apache2/htdocs/index.html.ja.iso2022-jp new file mode 100644 index 00000000..ba3e736b --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ja.iso2022-jp @@ -0,0 +1,42 @@ + + + + + Apache $B%$%s%9%H!<%k;~$N%F%9%H%Z!<%8(B + + + + + +

    +$B$b$7$3$N%Z!<%8$,FI$a$?$N$G$"$l$P!"(BApache $B%&%'%V%5!<%P(B$B$N%$%s%9%H!<%k$,$3$N7W;;5!$GL5;v$K=*N;$7$?$3$H$r0UL#$7$^$9!#$"$J$?$O!"$3$N%G%#%l%/%H%j$KJ8=q$r2C$($?$j!"$3$N%Z!<%8$rCV$-$+$($k$3$H$,$G$-$^$9!#(B +

    +
    + +

    $B$"$J$?$NM=A[$KH?$7$F!"$3$N%Z!<%8$,8+$($F$$$k$G$7$g$&$+(B?

    + +

    +$B$3$N%Z!<%8$O!"%5%$%H4IM}$B$3$N%5!<%P$r4IM}$9$k@UG$$r;}$C$F$$$kJ}$KO"Mm$r$H$C$F(B$B$/$@$5$$!#$3$N%5%$%H4IM} +


    + + +

    +Apache $B$K4X$9$k(B$BJ8=q(B $B$O!"$3$N(B web $B%5!<%PG[I[J*$NCf$K4^$^$l$F$$$^$9!#(B +

    +

    +$B0J2<$N2hA|$O!"(BApache $B$rMxMQ$7$F$$$k(B web $B%5!<%P$G<+M3$K;H$&$3$H$,$G$-$^$9!#(BApache $B$r$4MxMQ$$$?$@$-!"$"$j$,$H$&$4$6$$$^$9(B! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.ko.euc-kr b/rubbos/app/apache2/htdocs/index.html.ko.euc-kr new file mode 100644 index 00000000..65e90d2e --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ko.euc-kr @@ -0,0 +1,37 @@ + + + + +¾ÆÆÄÄ¡ ¼³Ä¡ °Ë»ç¿ë ÆäÀÌÁö + + + + + +

    ÀÌ ÆäÀÌÁö°¡ º¸ÀÎ´Ù¸é ½Ã½ºÅÛ¿¡ +Apache À¥¼­¹ö +¼ÒÇÁÆ®¿þ¾î°¡ ¼º°øÀûÀ¸·Î ¼³Ä¡µÇ¾úÀ½À» ÀǹÌÇÕ´Ï´Ù. ÀÌÁ¦ ÀÌ µð·ºÅ丮¿¡ +³»¿ëÀ» Ãß°¡ÇÏ°í ÀÌ ÆäÀÌÁö¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

    + +
    +

    ¿¹»óÇÑ À¥»çÀÌÆ® ´ë½Å ÀÌ ÆäÀÌÁö°¡ º¸ÀԴϱî?

    + +

    »çÀÌÆ® °ü¸®ÀÚ°¡ À¥¼­¹ö ¼³Á¤À» º¯°æÇ߱⠶§¹®¿¡ ÀÌ ÆäÀÌÁö°¡ +º¸ÀÌ´Â °Í ÀÔ´Ï´Ù. Áú¹®»çÇ×Àº ÀÌ ¼­¹öÀÇ °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϽñæ +¹Ù¶ø´Ï´Ù. Apache Software FoundationÀº ÀÌ »çÀÌÆ® °ü¸®ÀÚ°¡ +»ç¿ëÇÏ´Â À¥¼­¹ö¸¦ ¸¸µç ´ÜüÀÏ »Ó, »çÀÌÆ® °ü¸®¿Í ¾Æ¹«·± °ü°è°¡ ¾ø°í +¼³Á¤¹®Á¦¿¡ °üÇÑ µµ¿òÀ» µå¸± ¼ö ¾ø½À´Ï´Ù.

    + +
    +

    ¾ÆÆÄÄ¡ ¹®¼­´Â ÀÌ ¹èÆ÷ÆÇ¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

    + +

    ¾ÆÆÄÄ¡¸¦ »ç¿ëÇÏ´Â À¥¼­¹ö¿¡¼­ ¾Æ·¡ À̹ÌÁö¸¦ »ç¿ëÇÏ´Â°Ç ¿©·¯ºÐÀÇ +ÀÚÀ¯ÀÔ´Ï´Ù. ¾ÆÆÄÄ¡¸¦ »ç¿ëÇØ Áּż­ °¨»çÇÕ´Ï´Ù!

    + +
    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.lb.utf8 b/rubbos/app/apache2/htdocs/index.html.lb.utf8 new file mode 100644 index 00000000..f98c8557 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.lb.utf8 @@ -0,0 +1,37 @@ + + + + + + Test Page for Apache Installation on Web Site + + + + +
    +

    +Et huet geklappt! Den Apache Web Server as op dëser 'Web Site' installeiert!

    +Wann Dir die heiten Sait gesit, dann hun d'Proprietairen vun dëser 'domain' +elo just d'Apache Web server software +mat succés installeiert. Sie mussen allerdengs nach des Decksait +remplaceieren oder awer de Server op eng aner Sait mat dem richtigen contenu +em-dirigeieren. +
    +
    +
    Wann Dir die heiten Sait anstell vun der site die Dir erwârt +hut gesitt, da contacteiert wannechglift den administrator vun dem betraffener +site. (Versicht én email no <Webmaster@domain> ze +schecken.) Obwuel den heiten site Apache software benotzt, as et +ball secher datt keng Verbindung mat der Apache Group existeiert, also scheckt +wannechglift keng email iwert desen site oder sein contenu zu den Apache +Autoren. Falls Dir dëst awer macht, get ären message  ignoreiert.
    + +
    +

    D'Apache documentation ass dëser Ausgab +beigefücht. +

    Dem Webmaster vun dem heitenen site steht et zou dest Bild ob engem +Apache-powered Web server ze presenteieren. Merci dat Dir Apache benotzt! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.nl b/rubbos/app/apache2/htdocs/index.html.nl new file mode 100644 index 00000000..fdd7ff93 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.nl @@ -0,0 +1,54 @@ + + + + Test Pagina voor de Apache Installatie op deze Web Site + + + + +

    + Alles Werkt! De Apache Web Server is geinstalleerd op deze Web Site +

    +

    + Mocht u deze pagina zien, dan betekent dat, dat de eigenaren van dit + domein zojuist een nieuwe Apache Web + Server hebben geinstalleerd. Nu moet men nog de echte inhoud gaan + toevoegen, en moet men deze pagina gaan vervangen door de echte web + site. +

    +
    +
    + Mocht u deze pagina zien, in plaats van de pagina of web site die u + verwachtte, neem dan contact op met de beheerder van + deze site. Bijvoorbeeld door een berichtje te sturen naar + <Webmaster@dit-domain>. +

    + Alhoewel deze web site gebruik maakt van de Apache Software is er + verder geen enkele relatie tussen de beheerders van deze web site en + de Apache Groep (die de web software geschreven heeft). Het heeft dus + absoluut + geen zin de web software auteurs een emailtje te sturen. Mocht u dat + toch doen, dan wordt uw bericht gewoon genegeerd. +

    +
    +

    + De + handleiding voor de apache web + server software maakt deel uit van deze distributie. +

    +

    + Als beheerder of webmaster is het u toegestaan het onderstaande + plaatje vrijelijk te gebruiken op uw 'Apache Powered' web site. Bedankt + voor het kiezen voor, en gebruiken van, Apache! +

    +
    + Klein 'Powered by Apache' Logotje +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.nn b/rubbos/app/apache2/htdocs/index.html.nn new file mode 100644 index 00000000..67db9570 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.nn @@ -0,0 +1,48 @@ + + + + Testside Apache-installasjon + + + +

    + Det gjekk bra! Apache er no installert på denne maskina! +

    +

    + Dersom du kan sjå denne sida, har den eller dei som driv denne nettstaden + installert Apache vevtenar. + No må denne testsida erstattast med verkeleg innhald. +

    +
    +
    + Dersom du hadde venta å sjå ei anna side enn denne, bør du + ta kontakt med den som er ansvarleg for denne nettstaden + (Prøv å sende e-post til <webmaster@domene>.) + Sjølv om denne nettstaden vert kjørt på Apache, har den ingen annan + tilknytning til Apache-gruppa, som har utvikla programvaren. + Ver snill og ikkje send e-post om denne nettstaden eller + innhaldet du finn her til utviklarane i Apache-gruppa. + I så tilfelle vil førespurnaden ignorerast. +
    +
    +

    + Dokumentasjon + for Apache er inkludert i denne pakka. +

    +

    + Logoen under kan brukast på kva som helst av maskiner som køyrer Apache. + Takk for at du nyttar Apache! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.no b/rubbos/app/apache2/htdocs/index.html.no new file mode 100644 index 00000000..d7553bce --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.no @@ -0,0 +1,48 @@ + + + + Testside Apache-installasjon + + + +

    + Det gikk bra! Apache er nå installert på denne maskinen! +

    +

    + Hvis du kan se denne siden har den eller de som driver dette nettstedet + installert Apache Web server. + Nå må denne testsiden erstattes med virkelig innhold. +

    +
    +
    + Hvis du hadde ventet å se en annen side enn denne bør du + ta kontakt med den som har ansvaret for nettstedet. + (Prøv å sende e-post til <webmaster@domene>.) + Selv om dette nettstedet kjøres på Apache, har det ingen annen + tilknytning til Apache-gruppen som har utviklet programvaren. + Vennligst ikke send post angående dette nettstedet eller dets + innhold til Apache-gruppens programmerere. I så fall vil din henvendelse + bli ignorert. +
    +
    +

    + Dokumentasjon + for Apache er inkludert i denne pakken. +

    +

    + Logoen under kan benyttes på en hvilken som helst maskin som kjører Apache. + Takk for at du benytter Apache! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.po.iso8859-2 b/rubbos/app/apache2/htdocs/index.html.po.iso8859-2 new file mode 100644 index 00000000..8b030bd6 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.po.iso8859-2 @@ -0,0 +1,40 @@ + + + + Strona testowa instalacji serwera Apache + + + + + + + +

    +Je¿eli strona ta jest widoczna, oznacza to poprawn± instalacjê serwera Apache. Mo¿na ju¿ zamieniæ zawarto¶æ tej witryny. + +


    + +

    Czy zamiast spodziewanej witryny WWW widoczna jest ta?

    + +

    +Strona ta jest widoczna, poniewa¿ administrator serwera WWW zmieni³ jego konfiguracjê. +Proszê skontaktowaæ siê z osob± odpowiedzialn± za zarz±dzanie tym serwerem. Apache Software Foundation, producent oprogramowania serwerowego Apache, nie administruje t± witryn± i nie jest w stanie pomóc w sprawach zwi±zanych z jej konfiguracj±. + +


    + + +

    +Do niniejszej dystrybucji serwera Apache do³±czono anglojêzyczn± dokumentacjê. + +

    +Poni¿sze logo, "Powered by Apache", mo¿na stosowaæ bez ograniczeñ. Dziêkujemy za wybranie Apache'a! + +

    + + diff --git a/rubbos/app/apache2/htdocs/index.html.pt b/rubbos/app/apache2/htdocs/index.html.pt new file mode 100644 index 00000000..dbeb5ed0 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.pt @@ -0,0 +1,42 @@ + + + + Página de teste da instalação do Apache Web Server + + + + + + +

    Se está a ver esta página significa que a instalação + do Apache Web Server foi efectuada + com sucesso. Pode agora adicionar conteúdo a esta directoria e substituir + esta página. +


    + +

    Está a ver esta página em vez do website que + esperava?

    + +

    Esta página está neste momento activa porque o administrador + deste site alterou a configuração do web server. Por favor contacte + a pessoa responsável pela manutenção deste servidor. + A Fundação Apache Software (Apache Software Foundation), apesar + de ter produzido o web server que o administrador deste site está a usar, + não tem qualquer tipo de responsabilidade pela manutenção + deste nem pode ajudar a resolver problemas de configuração. +


    + + +

    A documentação foi incluída + juntamente com esta distribuição. +

    A imagem abaixo pode ser usada livremente em qualquer site presente num servidor + com o Apache Web Server instalado. Obrigado por usar o Apache Web Server! +

    + + diff --git a/rubbos/app/apache2/htdocs/index.html.pt-br b/rubbos/app/apache2/htdocs/index.html.pt-br new file mode 100644 index 00000000..ece2a8a8 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.pt-br @@ -0,0 +1,47 @@ + + + + + + Página teste para a instalação do Apache no +Web Site + + + + + +
    +

    +Funcionou! O Apache Web Server foi instalado corretamente neste Web Site!

    +Se você está vendo esta página, isso quer dizer que o software +Apache +Web server foi instalado com sucesso. Agora, basta adicionar o conteúdo +ao diretório raiz e substituir esta página temporária, ou configurar o servidor +para o seu conteúdo real. +
    +
    +
    +
    +

    +Está vendo esta página em vez do site que esperava?

    +Esta página foi carregada, pois provavelmente, o administrador modificou as +configurações +deste servidor. Por favor, contate o administrador do site para esclarecimentos. +(Tente enviar um e-mail para <Webmaster@dominio>.) A Apache +Server Foundation, que desenvolveu o software (web server) utilizado pelo +administrador, não tem nenhuma responsabilidade sobre a manutenção desta +página e não poderá ajudar na resolução de problemas de +configuração.
    + +
    +

    A documentação do Apache foi incluída +com esta distribuição. +

    O Webmaster deste site é livre para utilizar a imagem abaixo num web +server utilizando o Apache. +

    Obrigado por utilizar o Apache! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.ru.cp-1251 b/rubbos/app/apache2/htdocs/index.html.ru.cp-1251 new file mode 100644 index 00000000..e9c51afb --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ru.cp-1251 @@ -0,0 +1,34 @@ + + + + + + Òåñòîâàÿ ñòðàíèöà óñòàíîâêè Apache + + + +Åñëè Âû ýòî âèäèòå, ýòî çíà÷èò, ÷òî óñòàíîâêà +ÏÎ âåá-ñåðâåðà Apache íà ýòîé +ñèñòåìå çàâåðøèëàñü óñïåøíî. Âû ìîæåòå òåïåðü äîáàâëÿòü ñîäåðæèìîå â ýòó +äèðåêòîðèþ è çàìåíèòü ýòó ñòðàíèöó. +

    +


    +
    +

    +Âû âèäèòå ýòî âìåñòî îæèäàåìîé ñòðàíèöû?

    +Ýòà ñòðàíèöà íàõîäèòñÿ çäåñü ïîòîìó, ÷òî àäìèíèñòðàòîð ñèñòåìû èçìåíèë +êîíôèãóðàöèþ ýòîãî âåá-ñåðâåðà. Ïîæàëóéñòà, ñâÿæèòåñü ñ ëèöîì, îòâåòñâåííûì +çà ïîääåðæêó ýòîãî ñåðâåðà äëÿ âûÿñíåíèÿ âàøèõ âîïðîñîâ. Apache Software +Foundation, àâòîð ÏÎ âåá-ñåðâåðà, êîòîðûì ïîëüçóåòñÿ àäìèíèñòðàòîð ýòîé +ñèñòåìû, íå ñâÿçàí ñ ïîääåðæêîé ýòîé ñèñòåìû è íå ìîæåò ïîìî÷ü Âàì +ðàçðåøèòü ïðîáëåìû êîíôèãóðàöèè. +

    +


    +

    Äîêóìåíòàöèÿ ïî âåá-ñåðâåðó Apache ïðèëàãàåòñÿ +ê êîìïëåêòó ÏÎ. +

    Âû ìîæåòå ñâîáîäíî èñïîëüçîâàòü ïèêòîãðàììó, íàõîäÿùóþñÿ íèæå, íà âåá-ñåðâåðå, +èñïîëüçóþùèì ÏÎ Apache. Ñïàñèáî çà èñïîëüçîâàíèå Apache! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.ru.cp866 b/rubbos/app/apache2/htdocs/index.html.ru.cp866 new file mode 100644 index 00000000..05fa119b --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ru.cp866 @@ -0,0 +1,34 @@ + + + + + + ’¥á⮢ ï áâà ­¨æ  ãáâ ­®¢ª¨ Apache + + + +…᫨ ‚ë íâ® ¢¨¤¨â¥, íâ® §­ ç¨â, çâ® ãáâ ­®¢ª  +Ž ¢¥¡-á¥à¢¥à  Apache ­  í⮩ +á¨á⥬¥ § ¢¥à訫 áì ãᯥ譮. ‚ë ¬®¦¥â¥ ⥯¥àì ¤®¡ ¢«ïâì ᮤ¥à¦¨¬®¥ ¢ íâã +¤¨à¥ªâ®à¨î ¨ § ¬¥­¨âì íâã áâà ­¨æã. +

    +


    +
    +

    +‚ë ¢¨¤¨â¥ íâ® ¢¬¥áâ® ®¦¨¤ ¥¬®© áâà ­¨æë?

    +â  áâà ­¨æ  ­ å®¤¨âáï §¤¥áì ¯®â®¬ã, çâ®  ¤¬¨­¨áâà â®à á¨áâ¥¬ë ¨§¬¥­¨« +ª®­ä¨£ãà æ¨î í⮣® ¢¥¡-á¥à¢¥à . ®¦ «ã©áâ , á¢ï¦¨â¥áì á «¨æ®¬, ®â¢¥âᢥ­­ë¬ +§  ¯®¤¤¥à¦ªã í⮣® á¥à¢¥à  ¤«ï ¢ëïá­¥­¨ï ¢ è¨å ¢®¯à®á®¢. Apache Software +Foundation,  ¢â®à Ž ¢¥¡-á¥à¢¥à , ª®â®àë¬ ¯®«ì§ã¥âáï  ¤¬¨­¨áâà â®à í⮩ +á¨á⥬ë, ­¥ á¢ï§ ­ á ¯®¤¤¥à¦ª®© í⮩ á¨áâ¥¬ë ¨ ­¥ ¬®¦¥â ¯®¬®ç젂 ¬ +à §à¥è¨âì ¯à®¡«¥¬ë ª®­ä¨£ãà æ¨¨. +

    +


    +

    „®ªã¬¥­â æ¨ï ¯® ¢¥¡-á¥à¢¥àã Apache ¯à¨« £ ¥âáï +ª ª®¬¯«¥ªâ㠏Ž. +

    ‚ë ¬®¦¥â¥ ᢮¡®¤­® ¨á¯®«ì§®¢ âì ¯¨ªâ®£à ¬¬ã, ­ å®¤ïéãîáï ­¨¦¥, ­  ¢¥¡-á¥à¢¥à¥, +¨á¯®«ì§ãî騬 Ž Apache. ‘¯ á¨¡® §  ¨á¯®«ì§®¢ ­¨¥ Apache! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.ru.iso-ru b/rubbos/app/apache2/htdocs/index.html.ru.iso-ru new file mode 100644 index 00000000..ef25c801 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ru.iso-ru @@ -0,0 +1,34 @@ + + + + + + ÂÕáâÞÒÐï áâàÐÝØæÐ ãáâÐÝÞÒÚØ Apache + + + +µáÛØ ²ë íâÞ ÒØÔØâÕ, íâÞ ×ÝÐçØâ, çâÞ ãáâÐÝÞÒÚÐ +¿¾ ÒÕÑ-áÕàÒÕàÐ Apache ÝÐ íâÞÙ +áØáâÕÜÕ ×ÐÒÕàèØÛÐáì ãáßÕèÝÞ. ²ë ÜÞÖÕâÕ âÕßÕàì ÔÞÑÐÒÛïâì áÞÔÕàÖØÜÞÕ Ò íâã +ÔØàÕÚâÞàØî Ø ×ÐÜÕÝØâì íâã áâàÐÝØæã. +

    +


    +
    +

    +²ë ÒØÔØâÕ íâÞ ÒÜÕáâÞ ÞÖØÔÐÕÜÞÙ áâàÐÝØæë?

    +ÍâÐ áâàÐÝØæÐ ÝÐåÞÔØâáï ×ÔÕáì ßÞâÞÜã, çâÞ ÐÔÜØÝØáâàÐâÞà áØáâÕÜë Ø×ÜÕÝØÛ +ÚÞÝäØÓãàÐæØî íâÞÓÞ ÒÕÑ-áÕàÒÕàÐ. ¿ÞÖÐÛãÙáâÐ, áÒïÖØâÕáì á ÛØæÞÜ, ÞâÒÕâáÒÕÝÝëÜ +×Ð ßÞÔÔÕàÖÚã íâÞÓÞ áÕàÒÕàÐ ÔÛï ÒëïáÝÕÝØï ÒÐèØå ÒÞßàÞáÞÒ. Apache Software +Foundation, ÐÒâÞà ¿¾ ÒÕÑ-áÕàÒÕàÐ, ÚÞâÞàëÜ ßÞÛì×ãÕâáï ÐÔÜØÝØáâàÐâÞà íâÞÙ +áØáâÕÜë, ÝÕ áÒï×ÐÝ á ßÞÔÔÕàÖÚÞÙ íâÞÙ áØáâÕÜë Ø ÝÕ ÜÞÖÕâ ßÞÜÞçì ²ÐÜ +àÐ×àÕèØâì ßàÞÑÛÕÜë ÚÞÝäØÓãàÐæØØ. +

    +


    +

    ´ÞÚãÜÕÝâÐæØï ßÞ ÒÕÑ-áÕàÒÕàã Apache ßàØÛÐÓÐÕâáï +Ú ÚÞÜßÛÕÚâã ¿¾. +

    ²ë ÜÞÖÕâÕ áÒÞÑÞÔÝÞ ØáßÞÛì×ÞÒÐâì ßØÚâÞÓàÐÜÜã, ÝÐåÞÔïéãîáï ÝØÖÕ, ÝÐ ÒÕÑ-áÕàÒÕàÕ, +ØáßÞÛì×ãîéØÜ ¿¾ Apache. ÁßÐáØÑÞ ×Ð ØáßÞÛì×ÞÒÐÝØÕ Apache! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.ru.koi8-r b/rubbos/app/apache2/htdocs/index.html.ru.koi8-r new file mode 100644 index 00000000..db6ee830 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ru.koi8-r @@ -0,0 +1,34 @@ + + + + + + ôÅÓÔÏ×ÁÑ ÓÔÒÁÎÉÃÁ ÕÓÔÁÎÏ×ËÉ Apache + + + +åÓÌÉ ÷Ù ÜÔÏ ×ÉÄÉÔÅ, ÜÔÏ ÚÎÁÞÉÔ, ÞÔÏ ÕÓÔÁÎÏ×ËÁ +ðï ×ÅÂ-ÓÅÒ×ÅÒÁ Apache ÎÁ ÜÔÏÊ +ÓÉÓÔÅÍÅ ÚÁ×ÅÒÛÉÌÁÓØ ÕÓÐÅÛÎÏ. ÷Ù ÍÏÖÅÔÅ ÔÅÐÅÒØ ÄÏÂÁ×ÌÑÔØ ÓÏÄÅÒÖÉÍÏÅ × ÜÔÕ +ÄÉÒÅËÔÏÒÉÀ É ÚÁÍÅÎÉÔØ ÜÔÕ ÓÔÒÁÎÉÃÕ. +

    +


    +
    +

    +÷Ù ×ÉÄÉÔÅ ÜÔÏ ×ÍÅÓÔÏ ÏÖÉÄÁÅÍÏÊ ÓÔÒÁÎÉÃÙ?

    +üÔÁ ÓÔÒÁÎÉÃÁ ÎÁÈÏÄÉÔÓÑ ÚÄÅÓØ ÐÏÔÏÍÕ, ÞÔÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÓÉÓÔÅÍÙ ÉÚÍÅÎÉÌ +ËÏÎÆÉÇÕÒÁÃÉÀ ÜÔÏÇÏ ×ÅÂ-ÓÅÒ×ÅÒÁ. ðÏÖÁÌÕÊÓÔÁ, Ó×ÑÖÉÔÅÓØ Ó ÌÉÃÏÍ, ÏÔ×ÅÔÓ×ÅÎÎÙÍ +ÚÁ ÐÏÄÄÅÒÖËÕ ÜÔÏÇÏ ÓÅÒ×ÅÒÁ ÄÌÑ ×ÙÑÓÎÅÎÉÑ ×ÁÛÉÈ ×ÏÐÒÏÓÏ×. Apache Software +Foundation, Á×ÔÏÒ ðï ×ÅÂ-ÓÅÒ×ÅÒÁ, ËÏÔÏÒÙÍ ÐÏÌØÚÕÅÔÓÑ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÜÔÏÊ +ÓÉÓÔÅÍÙ, ÎÅ Ó×ÑÚÁÎ Ó ÐÏÄÄÅÒÖËÏÊ ÜÔÏÊ ÓÉÓÔÅÍÙ É ÎÅ ÍÏÖÅÔ ÐÏÍÏÞØ ÷ÁÍ +ÒÁÚÒÅÛÉÔØ ÐÒÏÂÌÅÍÙ ËÏÎÆÉÇÕÒÁÃÉÉ. +

    +


    +

    äÏËÕÍÅÎÔÁÃÉÑ ÐÏ ×ÅÂ-ÓÅÒ×ÅÒÕ Apache ÐÒÉÌÁÇÁÅÔÓÑ +Ë ËÏÍÐÌÅËÔÕ ðï. +

    ÷Ù ÍÏÖÅÔÅ Ó×ÏÂÏÄÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÉËÔÏÇÒÁÍÍÕ, ÎÁÈÏÄÑÝÕÀÓÑ ÎÉÖÅ, ÎÁ ×ÅÂ-ÓÅÒ×ÅÒÅ, +ÉÓÐÏÌØÚÕÀÝÉÍ ðï Apache. óÐÁÓÉÂÏ ÚÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ Apache! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.ru.utf8 b/rubbos/app/apache2/htdocs/index.html.ru.utf8 new file mode 100644 index 00000000..fc6694f6 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.ru.utf8 @@ -0,0 +1,34 @@ + + + + + + Тестовая страница установки Apache + + + +Если Вы это видите, это значит, что установка +ПО веб-сервера Apache на этой +системе завершилась успешно. Вы можете теперь добавлять содержимое в эту +директорию и заменить эту страницу. +

    +


    +
    +

    +Вы видите это вместо ожидаемой страницы?

    +Эта страница находится здесь потому, что администратор системы изменил +конфигурацию этого веб-сервера. Пожалуйста, свяжитесь с лицом, ответсвенным +за поддержку этого сервера для выяснения ваших вопросов. Apache Software +Foundation, автор ПО веб-сервера, которым пользуется администратор этой +системы, не связан с поддержкой этой системы и не может помочь Ð’ам +разрешить проблемы конфигурации. +

    +


    +

    Документация по веб-серверу Apache прилагается +к комплекту ПО. +

    Вы можете свободно использовать пиктограмму, находящуюся ниже, на веб-сервере, +использующим ПО Apache. Спасибо за использование Apache! +

    + + + diff --git a/rubbos/app/apache2/htdocs/index.html.sv b/rubbos/app/apache2/htdocs/index.html.sv new file mode 100644 index 00000000..377307f5 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.sv @@ -0,0 +1,43 @@ + + + + Testsida för Apache-installationen + + + +

    + Det fungerade! Apache är installerad på denna maskin! +

    +

    + Om du kan se denna sida så har ägaren till denna maskin installerat + webbserverprogramvaran Apache.
    + Denne måste nu placera webbsidor i detta bibliotek och ändra på denna sida, eller + peka servern mot ett annat bibliotek. +

    +
    +
    + Om du förväntat dig att se något helt annat här än denna sida, kontakta + vänligen administratören för den webbserver du försöker komma i kontakt med. + (Försök att skicka ett brev till <webmaster@domain>.) + Apache Software Foundation har inget med denna webbplats att göra, så det är ingen idé + att skicka mail till författarna av Apache rörande denna webbplats. +
    +
    +

    + Apache-dokumentationen är inkluderad i denna distribution. +

    +

    + Administratören av denna webbplats får gärna använda följande bild till en webbplats som använder Apache.
    + Tack för att ni använder Apache! +

    +
    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.var b/rubbos/app/apache2/htdocs/index.html.var new file mode 100644 index 00000000..0b20007f --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.var @@ -0,0 +1,123 @@ +URI: index.html.ca +Content-language: ca +Content-type: text/html + +URI: index.html.cz.iso8859-2 +Content-language: cs +Content-type: text/html;charset=ISO-8859-2 + +URI: index.html.de +Content-language: de +Content-type: text/html + +URI: index.html.dk +Content-language: da +Content-type: text/html + +URI: index.html.ee +Content-language: ee +Content-type: text/html + +URI: index.html.el +Content-language: el +Content-type: text/html + +URI: index.html.en +Content-language: en +Content-type: text/html + +URI: index.html.es +Content-language: es +Content-type: text/html + +URI: index.html.et +Content-language: et +Content-type: text/html + +URI: index.html.fr +Content-language: fr +Content-type: text/html + +URI: index.html.he.iso8859-8 +Content-language: he +Content-type: text/html;charset=ISO-8859-8 + +URI: index.html.hr.iso8859-2 +Content-language: hr +Content-type: text/html;charset=ISO-8859-2 + +URI: index.html.it +Content-language: it +Content-type: text/html + +URI: index.html.ja.iso2022-jp +Content-language: ja +Content-type: text/html;charset=ISO-2022-JP + +URI: index.html.ko.euc-kr +Content-language: ko +Content-type: text/html;charset=EUC-KR + +URI: index.html.ltz.utf8 +Content-language: ltz +Content-type: text/html;charset=UTF-8 + +URI: index.html.lu.utf8 +Content-language: lu +Content-type: text/html;charset=UTF-8 + +URI: index.html.nl +Content-language: nl +Content-type: text/html + +URI: index.html.nn +Content-language: nn +Content-Type: text/html + +URI: index.html.no +Content-language: no +Content-type: text/html + +URI: index.html.po.iso8859-2 +Content-language: pl +Content-type: text/html;charset=ISO-8859-2 + +URI: index.html.pt +Content-language: pt +Content-type: text/html + +URI: index.html.pt-br +Content-language: pt-br +Content-type: text/html + +URI: index.html.ru.cp-1251 +Content-language: ru +Content-type: text/html;charset=WINDOWS-1251 + +URI: index.html.ru.cp866 +Content-language: ru +Content-type: text/html;charset=CP866 + +URI: index.html.ru.iso-ru +Content-language: ru +Content-type: text/html;charset=ISO-8859-5 + +URI: index.html.ru.koi8-r +Content-language: ru +Content-type: text/html;charset=KOI8-r + +URI: index.html.ru.utf8 +Content-language: ru +Content-type: text/html;charset=UTF-8 + +URI: index.html.sv +Content-language: sv +Content-type: text/html + +URI: index.html.zh-cn.gb2312 +Content-language: zh-CN +Content-type: text/html;charset=GB2312 + +URI: index.html.zh-tw.big5 +Content-language: tw, zh-TW +Content-type: text/html;charset=Big5 diff --git a/rubbos/app/apache2/htdocs/index.html.zh-cn.gb2312 b/rubbos/app/apache2/htdocs/index.html.zh-cn.gb2312 new file mode 100644 index 00000000..b31d07da --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.zh-cn.gb2312 @@ -0,0 +1,29 @@ + + + +°²×°ApacheµÄ²âÊÔÒ³Ãæ + + + +

    ÄúÄÜ¿´¼ûÕâ¸öÒ³Ã棬˵Ã÷Apache web +server ÒѾ­°²×°³É¹¦¡£Äú¿ÉÒÔÔÚÕâ¸öĿ¼ÖÐÔö¼ÓÄÚÈÝ£¬»òÕß°ÑÕâ¸öÒ³ÃæÌæ»»µô¡£

    + +
    +

    Õâ²»ÊÇÄãÏë¿´¼ûµÄÒ³Ãæ°É?

    + +

    Ö®ËùÒԻῴ¼ûÕâ¸öÒ³Ã棬ÊÇÒòΪÍøÕ¾¹ÜÀíÔ±¸Ä±äÁËÕâ¸öÕ¾µãµÄÉèÖᣠ+Èç¹ûÓÐÒÉÎÊ£¬Çë×Éѯά»¤´ËÕ¾µãµÄÈËÔ±¡£ +ApacheÈí¼þ»ù½ð»á, ¼´´ËÕ¾µãËùʹÓõÄÍøÕ¾·þÎñÆ÷Èí¼þµÄ¿ª·¢Õߣ¬ +²»¸ºÔð´ËÕ¾µãµÄά»¤¹¤×÷£¬Ò²ÎÞ·¨ÎªÄú½â¾öÉèÖÃÉϵÄÎÊÌâ¡£

    + +
    +

    Apache ÎĵµÒѾ­°üº¬ÔÚ´Ë·¢ÐаæÖС£

    + +

    Äú¿ÉÒÔÔÚʹÓÃApacheµÄÍøÕ¾·þÎñÆ÷ÉÏ£¬×ÔÓɵØʹÓÃÏÂÃæµÄͼƬ¡£¸ÐлʹÓÃApache£¡

    + +
    + + diff --git a/rubbos/app/apache2/htdocs/index.html.zh-tw.big5 b/rubbos/app/apache2/htdocs/index.html.zh-tw.big5 new file mode 100644 index 00000000..1ca02124 --- /dev/null +++ b/rubbos/app/apache2/htdocs/index.html.zh-tw.big5 @@ -0,0 +1,46 @@ + + + + ¦w¸Ë Apache ªº´ú¸Õºô­¶ + + + + + +

    +¦pªG§A¥i¥H¬Ý¨£¦¹­¶¡A³oªí¥Ü§Aªº +Apache Web Server +¤w¸g¦w¸Ë¦¨¥\¡C +§A¥i¥H¼W¥[¤º®e¨ì³o­Ó¥Ø¿ý¡A©Î§â³o­Óºô­¶´«±¼¡C

    + +


    + +

    ¨S¦³¬Ý¨ì§A·Q¬Ýªººô¯¸¶Ü ?

    + +

    +³o­Óºô­¶¤§©Ò¥H·|¦b³oùØ¡A¨º¬O¦]¬°ºô¯¸ºÞ²zªÌ¤w¸g§ó§ï³o­Óºô¯¸ªº³]©w¡C +­Y¦³°ÝÃD, ½Ð»P ºûÅ@³o­Ó¦øªA¾¹ªº¤H­ûÁpµ¸¡C +Apache ³nÅé°òª÷·|¡A¤]´N¬O¶}µo³o®M³nÅ骺³æ¦ì¡A»P¦¹ºô¯¸¨ÃµL¥ô¦óÃö«Y¡A +¦Ó¥B¤]µLªkÀ°§A¸Ñ¨M³]©w¤Wªº°ÝÃD¡C + +


    + +

    +Apache ªº +¤å¥ó +¤w¸g¥]§t¦b¸Óª©¥»¤¤¡C + +

    +§A¥i¥H¦b¨Ï¥Î Apache ªººô¯¸¦øªA¾¹¤W¡A¦Û¥Ñªº¨Ï¥Î¤U­±¤§¹Ï¥Ü¡A +·PÁ±z¨Ï¥Î Apache¡I +

    +

    + + + diff --git a/rubbos/app/apache2/htdocs/rubbos/RUBBoS_logo.jpg b/rubbos/app/apache2/htdocs/rubbos/RUBBoS_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1d15f9cf5ef253bda039066d0932451690ee686 GIT binary patch literal 9724 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 H$Ho5!P1~oq literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/htdocs/rubbos/author.html b/rubbos/app/apache2/htdocs/rubbos/author.html new file mode 100644 index 00000000..72a07f4f --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/author.html @@ -0,0 +1,70 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +

    Are you really an author ?

    + +
    + +
    + + +
    Your nick name:
    Your password:
    + +
    +

    +
      +
    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/browse.html b/rubbos/app/apache2/htdocs/rubbos/browse.html new file mode 100644 index 00000000..2b9dae8f --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/browse.html @@ -0,0 +1,68 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +
    +

    +What kind of browsing do you want ?

    + +

      +

    Browse all stories in a category +
    Browse stories of the day +
    Browse older stories +
    +
      +


    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/header.html b/rubbos/app/apache2/htdocs/rubbos/header.html new file mode 100644 index 00000000..0e67c13a --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/header.html @@ -0,0 +1,53 @@ + + + + + + + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    diff --git a/rubbos/app/apache2/htdocs/rubbos/index.html b/rubbos/app/apache2/htdocs/rubbos/index.html new file mode 100644 index 00000000..426528c3 --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/index.html @@ -0,0 +1,82 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +
    +

    +Welcome to RUBBoS's home page !

    + +


    RUBBoS is a bulletin board system prototype that is used to evaluate the +bottlenecks of such application. +
    This version is the servlet/edu.rice.rubbos.servlets implementation of RUBBoS. +
      +
      +

    +How to use RUBBoS

    +RUBBoS can be used from a web browser for testing purposes or with the provided +benchmarking tools. +
    Here is how to use RUBBoS from your web browser : +

    1. If you are lost, at any time just click on the Home +link that brings you back to this page. +
    2. You first have to register yourself as a new user by selecting +Register +
    3. You can browse the stories and comments using Browse or Search. +
    4. Select Submit a story if you want to submit a new story. +
    5. The Author link gives you a report of your personal +information and the current items you are selling or bidding on. +

    Good luck ! +

    +


    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/register.html b/rubbos/app/apache2/htdocs/rubbos/register.html new file mode 100644 index 00000000..0e3de534 --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/register.html @@ -0,0 +1,95 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +

    Welcome to RUBBoS online registration

    + +


    +

    + +It's completely free !!! +Just fill the following form to register and get your account ! + + + + +
    +First Name: + + +
    +Last Name: + + +
    +Nick Name: + + +
    +Password: + + +
    +Email address: + + +
    +
    +
    +
    +

    + +


    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/rubbos_html/RUBBoS_logo.jpg b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/RUBBoS_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1d15f9cf5ef253bda039066d0932451690ee686 GIT binary patch literal 9724 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 H$Ho5!P1~oq literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/htdocs/rubbos/rubbos_html/author.html b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/author.html new file mode 100644 index 00000000..72a07f4f --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/author.html @@ -0,0 +1,70 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +

    Are you really an author ?

    + + + +
    + + +
    Your nick name:
    Your password:
    + +
    +

    +
      +
    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/rubbos_html/browse.html b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/browse.html new file mode 100644 index 00000000..2b9dae8f --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/browse.html @@ -0,0 +1,68 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +
    +

    +What kind of browsing do you want ?

    + +

      +

    Browse all stories in a category +
    Browse stories of the day +
    Browse older stories +
    +
      +


    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/rubbos_html/header.html b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/header.html new file mode 100644 index 00000000..0e67c13a --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/header.html @@ -0,0 +1,53 @@ + + + + + + + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    diff --git a/rubbos/app/apache2/htdocs/rubbos/rubbos_html/index.html b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/index.html new file mode 100644 index 00000000..426528c3 --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/index.html @@ -0,0 +1,82 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +
    +

    +Welcome to RUBBoS's home page !

    + +


    RUBBoS is a bulletin board system prototype that is used to evaluate the +bottlenecks of such application. +
    This version is the servlet/edu.rice.rubbos.servlets implementation of RUBBoS. +
      +
      +

    +How to use RUBBoS

    +RUBBoS can be used from a web browser for testing purposes or with the provided +benchmarking tools. +
    Here is how to use RUBBoS from your web browser : +

    1. If you are lost, at any time just click on the Home +link that brings you back to this page. +
    2. You first have to register yourself as a new user by selecting +Register +
    3. You can browse the stories and comments using Browse or Search. +
    4. Select Submit a story if you want to submit a new story. +
    5. The Author link gives you a report of your personal +information and the current items you are selling or bidding on. +

    Good luck ! +

    +


    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/htdocs/rubbos/rubbos_html/register.html b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/register.html new file mode 100644 index 00000000..0e3de534 --- /dev/null +++ b/rubbos/app/apache2/htdocs/rubbos/rubbos_html/register.html @@ -0,0 +1,95 @@ + + + + + + + RUBBoS: Rice University Bulletin Board System + + +  +
    + + + + + + + + + + + + + + + +
    +

    Servlets version
    +
    +
    +

    +Home

    +
    +
    +

    +Register

    +
    +
    +

    +Browse

    +
    +
    +

    +Search

    +
    +
    +

    +Submit a story

    +
    +
    +

    +Author

    +
    +
    +

    Welcome to RUBBoS online registration

    + +


    +

    + +It's completely free !!! +Just fill the following form to register and get your account ! + + + + +
    +First Name: + + +
    +Last Name: + + +
    +Nick Name: + + +
    +Password: + + +
    +Email address: + + +
    +
    +
    +
    +

    + +


    +
    RUBBoS (C) 2001 - Rice University/INRIA + + diff --git a/rubbos/app/apache2/icons/README b/rubbos/app/apache2/icons/README new file mode 100644 index 00000000..48250d59 --- /dev/null +++ b/rubbos/app/apache2/icons/README @@ -0,0 +1,166 @@ +Public Domain Icons + + These icons were originally made for Mosaic for X and have been + included in the NCSA httpd and Apache server distributions in the + past. They are in the public domain and may be freely included in any + application. The originals were done by Kevin Hughes (kevinh@kevcom.com). + Andy Polyakov tuned the icon colors and added a few new images. + + If you'd like to contribute additions to this set, contact the httpd + documentation project . + + Almost all of these icons are 20x22 pixels in size. There are + alternative icons in the "small" directory that are 16x16 in size, + provided by Mike Brown (mike@hyperreal.org). + +Suggested Uses + +The following are a few suggestions, to serve as a starting point for ideas. +Please feel free to tweak and rename the icons as you like. + + a.gif + This might be used to represent PostScript or text layout + languages. + + alert.black.gif, alert.red.gif + These can be used to highlight any important items, such as a + README file in a directory. + + back.gif, forward.gif + These can be used as links to go to previous and next areas. + + ball.gray.gif, ball.red.gif + These might be used as bullets. + + binary.gif + This can be used to represent binary files. + + binhex.gif + This can represent BinHex-encoded data. + + blank.gif + This can be used as a placeholder or a spacing element. + + bomb.gif + This can be used to represent core files. + + box1.gif, box2.gif + These icons can be used to represent generic 3D applications and + related files. + + broken.gif + This can represent corrupted data. + + burst.gif + This can call attention to new and important items. + + c.gif + This might represent C source code. + + comp.blue.gif, comp.gray.gif + These little computer icons can stand for telnet or FTP + sessions. + + compressed.gif + This may represent compressed data. + + continued.gif + This can be a link to a continued listing of a directory. + + down.gif, up.gif, left.gif, right.gif + These can be used to scroll up, down, left and right in a + listing or may be used to denote items in an outline. + + dir.gif + Identical to folder.gif below. + + diskimg.gif + This can represent floppy disk storage. + + dvi.gif + This can represent DVI files. + + f.gif + This might represent FORTRAN or Forth source code. + + folder.gif, folder.open.gif, folder.sec.gif + The folder can represent directories. There is also a version + that can represent secure directories or directories that cannot + be viewed. + + generic.gif, generic.sec.gif, generic.red.gif + These can represent generic files, secure files, and important + files, respectively. + + hand.right.gif, hand.up.gif + These can point out important items (pun intended). + + image1.gif, image2.gif, image3.gif + These can represent image formats of various types. + + index.gif + This might represent a WAIS index or search facility. + + layout.gif + This might represent files and formats that contain graphics as + well as text layout, such as HTML and PDF files. + + link.gif + This might represent files that are symbolic links. + + movie.gif + This can represent various movie formats. + + p.gif + This may stand for Perl or Python source code. + + pie0.gif ... pie8.gif + These icons can be used in applications where a list of + documents is returned from a search. The little pie chart images + can denote how relevant the documents may be to your search + query. + + patch.gif + This may stand for patches and diff files. + + portal.gif + This might be a link to an online service or a 3D world. + + pdf.gif, ps.gif, quill.gif + These may represent PDF and PostScript files. + + screw1.gif, screw2.gif + These may represent CAD or engineering data and formats. + + script.gif + This can represent any of various interpreted languages, such as + Perl, python, TCL, and shell scripts, as well as server + configuration files. + + sound1.gif, sound2.gif + These can represent sound files. + + sphere1.gif, sphere2.gif + These can represent 3D worlds or rendering applications and + formats. + + tar.gif + This can represent TAR archive files. + + tex.gif + This can represent TeX files. + + text.gif + This can represent generic (plain) text files. + + transfer.gif + This can represent FTP transfers or uploads/downloads. + + unknown.gif + This may represent a file of an unknown type. + + uu.gif, uuencoded.gif + This can stand for uuencoded data. + + world1.gif, world2.gif + These can represent 3D worlds or other 3D formats. diff --git a/rubbos/app/apache2/icons/README.html b/rubbos/app/apache2/icons/README.html new file mode 100644 index 00000000..a8b82b99 --- /dev/null +++ b/rubbos/app/apache2/icons/README.html @@ -0,0 +1,815 @@ + + + + + +

    Public Domain Icons

    + +

    These icons were originally made for Mosaic for X and have been +included in the NCSA httpd and Apache server distributions in the +past. They are in the public domain and may be freely included in any +application. The originals were done by Kevin Hughes (kevinh@kevcom.com). +Andy Polyakov tuned the icon colors and added few new images.

    + +

    If you'd like to contribute additions to this set, contact the httpd +documentation project http://httpd.apache.org/docs-project/.

    + +

    Almost all of these icons are 20x22 pixels in size. There are +alternative icons in the "small" directory that are 16x16 in size, +provided by Mike Brown (mike@hyperreal.org).

    + +

    Suggested Uses

    + +

    The following are a few suggestions, to serve as a starting point for ideas. +Please feel free to tweak and rename the icons as you like.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + a.gif +
    a.png
    This might be used to represent PostScript or text layout +languages.
    + alert.black.gif +
    alert.black.png
    + alert.red.gif +
    alert.red.png
    These can be used to highlight any important items, +such as a README file in a directory.
    + back.gif +
    back.png
    + forward.gif +
    forward.png
    + small.gif +
    small/back.png
    + small/forward.gif +
    small/forward.png
    These can be used as links to go to previous and next +areas.
    + ball.gray.gif +
    ball.gray.png
    + ball.red.gif +
    ball.red.png
    These might be used as bullets.
    + binary.gif +
    binary.png
    + small/binary.gif +
    small/binary.png
    This can be used to represent binary files.
    + binhex.gif +
    binhex.png
    + small/binhex.gif +
    small/binhex.png
    This can represent BinHex-encoded data.
    + blank.gif +
    blank.png
    + small/blank.gif +
    small/blank.png
    This can be used as a placeholder or a spacing +element.
    + bomb.gif +
    bomb.png
    This can be used to represent core files.
    + box1.gif +
    box1.png
    + box2.gif +
    box2.png
    These icons can be used to represent generic 3D +applications and related files.
    + broken.gif +
    broken.png
    + small/broken.gif +
    small/broken.png
    This can represent corrupted data.
    + burst.gif +
    burst.png
    + small/burst.gif +
    small/burst.png
    This can call attention to new and important items.
    + c.gif +
    c.png
    This might represent C source code.
    + comp.blue.gif +
    comp.blue.png
    + comp.gray.gif +
    comp.gray.png
    + small/comp1.gif +
    small/comp1.png
    + small/comp2.gif +
    small/comp2.png
    These little computer icons can stand for telnet or FTP +sessions.
    + compressed.gif +
    compressed.png
    + small/compressed.gif +
    small/compressed.png
    This may represent compressed data.
    + continued.gif +
    continued.png
    + small/continued.gif +
    small/continued.png
    This can be a link to a continued listing of a +directory.
    + down.gif +
    down.png
    + up.gif +
    up.png
    + left.gif +
    left.png
    + right.gif +
    right.png
    These can be used to scroll up, down, left and right in a +listing or may be used to denote items in an outline.
    + dir.gif +
    dir.png
    Identical to folder.gif (.png) below.
    + diskimg.gif +
    diskimg.png
    This can represent floppy disk storage.
    + small/doc.gif +
    small/doc.png
    This can represent document files.
    + dvi.gif +
    dvi.png
    This can represent DVI files.
    + f.gif +
    f.png
    This might represent FORTRAN or Forth source code.
    + folder.gif +
    folder.png
    + folder.open.gif +
    folder.open.png
    + folder.sec.gif +
    folder.sec.png
    + small/folder.gif +
    small/folder.png
    + small/folder2.gif +
    small/folder2.png
    The folder can represent directories. There is also a +version that can represent secure directories or directories that cannot +be viewed.
    + generic.gif +
    generic.png
    + generic.sec.gif +
    generic.sec.png
    + generic.red.gif +
    generic.red.png
    + small/generic.gif +
    small/generic.png
    + small/generic2.gif +
    small/generic2.png
    + small/generic3.gif +
    small/generic3.png
    These can represent generic files, secure files, and +important files, respectively.
    + hand.right.gif +
    hand.right.png
    + hand.up.gif +
    hand.up.png
    These can point out important items (pun intended).
    + image1.gif +
    image1.png
    + image2.gif +
    image2.png
    + image3.gif +
    image3.png
    + small/image.gif +
    small/image.png
    + small/image2.gif +
    small/image2.png
    These can represent image formats of various types.
    + index.gif +
    index.png
    + small/index.gif +
    small/index.png
    This might represent a WAIS index or search facility.
    + small/key.gif +
    small/key.png
    This might represent a locked file.
    + layout.gif +
    layout.png
    This might represent files and formats that contain +graphics as well as text layout, such as HTML and PDF files.
    + link.gif +
    link.png
    This might represent files that are symbolic links.
    + movie.gif +
    movie.png
    + small/movie.gif +
    small/movie.png
    This can represent various movie formats.
    + p.gif +
    p.png
    This may stand for Perl or Python source code.
    + pie0.gif +
    pie0.png
    + pie1.gif +
    pie1.png
    + pie2.gif +
    pie2.png
    + pie3.gif +
    pie3.png
    + pie4.gif +
    pie4.png
    + pie5.gif +
    pie5.png
    + pie6.gif +
    pie6.png
    + pie7.gif +
    pie7.png
    + pie8.gif +
    pie8.png
    These icons can be used in applications where a list of +documents is returned from a search. The little pie chart images +can denote how relevant the documents may be to your search query.
    + patch.gif +
    patch.png
    + small/patch.gif +
    small/patch.png
    This may stand for patches and diff files.
    + portal.gif +
    portal.png
    This might be a link to an online service or a 3D +world.
    + pdf.gif +
    pdf.png
    + ps.gif +
    ps.png
    + quill.gif +
    quill.png
    + small/ps.gif +
    small/ps.png
    These may represent PDF and PostScript files.
    + screw1.gif +
    screw1.png
    + screw2.gif +
    screw2.png
    These may represent CAD or engineering data and +formats.
    + script.gif +
    script.png
    This can represent any of various interpreted languages, +such as Perl, python, TCL, and shell scripts, as well as server configuration +files.
    + sound1.gif +
    sound1.png
    + sound2.gif +
    sound2.png
    + small/sound.gif +
    small/sound.png
    + small/sound2.gif +
    small/sound2.png
    These can represent sound files.
    + sphere1.gif +
    sphere1.png
    + sphere2.gif +
    sphere2.png
    These can represent 3D worlds or rendering applications and +formats.
    + tar.gif +
    tar.png
    + small/tar.gif +
    small/tar.png
    This can represent TAR archive files.
    + tex.gif +
    tex.png
    This can represent TeX files.
    + text.gif +
    text.png
    + small/text.gif +
    small/text.png
    This can represent generic (plain) text files.
    + transfer.gif +
    transfer.png
    + small/transfer.gif +
    small/transfer.png
    This can represent FTP transfers or uploads/downloads.
    + unknown.gif +
    unknown.png
    + small/unknown.gif +
    small/unknown.png
    This may represent a file of an unknown type.
    + uu.gif +
    uu.png
    + uuencoded.gif +
    uuencoded.png
    + small/uu.gif +
    small/uu.png
    This can stand for uuencoded data.
    + world1.gif +
    world1.png
    + world2.gif +
    world2.png
    These can represent 3D worlds or other 3D formats.
    + + diff --git a/rubbos/app/apache2/icons/a.gif b/rubbos/app/apache2/icons/a.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb23d971f4ce99b43dcadc7179deab4e3f55d2fd GIT binary patch literal 246 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2nHIbDd^F&3SUp#HU#9hW!Rw()J9@9Pc4|E2W2srx z@ZjD%n_KH1+_viO4gW0IG)3`1D5IB^&A~|*Z0siQ)e*Jc?U}v(RZqm-rsn%xldEMP i9?8v^arV~QxusXc{Vzw0+BY`Y83|alcZ6{=SOWlx{aaiB literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/a.png b/rubbos/app/apache2/icons/a.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd63a95872ca46d01f5f073f0451f887a825de7 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4_j7XnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2sTRBTd^F&3SUp#HU#9hW!Eiwp#*PQqrY@^+(mQa9 zIq>=_)6J=N(?l8rJU#@b9ZU?|#8k#|TH+FuDboTL$LCUaCvA&aeP+vAqk{>XuXw(F ebwjlD^Y4U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4qYm+ zOp%Hf4U3qkeEK$j<-vZfEnogwwFop_I<=~c#Xm)G=VXx+i~6md*OpFtqHyNXlZ_mE zB-Xb-{FC(h{h?#I<(neT&kyPQ!p87k)F%Ddw?iNsN?apKlJj$OQ}ap~LNYRo6%va| z6o6D_ozopr0J|M+7XSbN literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/alert.red.gif b/rubbos/app/apache2/icons/alert.red.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4238940433deedd024eb0cada54be82e8f47db0 GIT binary patch literal 247 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 XqiYh{4~%{)S#O;4Fm;B(z`p+hpbw|G literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/apache_pb2.png b/rubbos/app/apache2/icons/apache_pb2.png new file mode 100644 index 0000000000000000000000000000000000000000..1237499fe8fe75f387a43e6c4a18e556ec927055 GIT binary patch literal 2175 zcmeHI`!m!F6#rr^vDnnDmB$hjlI(iz&7;;@AzLJ^tViGRC=qHs3YXZ2w}cepN@iUY z;d(@L?UHEG$~$aITJnCkO5dv=?|*QA=*(x%oX?z@GiN?C=W`Mr&REMx9gqS5K*rXF z=m-EJVmq~}P$*si426y1$) z-S3l{@%n-;t4hB<&N{Q`)n`Y=MCn;GxA9NHlvs{Ub`f^w`R?h`a$IXfZ?1rL_F&kR zt-ky#0fOcn>_mT4LEyx`+>?iBM-OG|${P|TQONE|a|D8*Icd{`vU_U43s%|Umw3#^ z?k0SwJa=mJq;W-}(!0TnByZJa8d}u4@$d)AZF<~|!#5?kt3**!;AFTu{aQ6*wOj5G zvrZ3NNsgrnn@6Vxf2-(m@9V&`>)rpN$I~8V1g9E#h#qMt%U4?&V1}RO7)zT2x}x9P zG1+E~Ws&w+kO00!esUpuSNJBiHw4#^+r$mc#k?|}J>wjX&c1XsVdCk8X?t^y0gnVb z#1v|~yE!ujsI^k*p|^%QU@bS#lA@}@yR~2v1RKiWe+ie~&(4M!h(;7KhK#D@7*(|5HbC|^N=lGDDk(9t{l!R*tA`3b0-Jjs2|tUdHKM+Z z@hkcVhgd5%jvI9yN>Z%74pwF+j+NF3039hfOv{kTRm;>}``|2C_o+(7aN7*(aflV` zdWp>0t!0%f&%(7=^Fv+k6?++WIMFP-eLEcVV$^mKW}=2dpO%-o1W|r)n)Npl;K?>Y z)(EUpbeAKT6G#h;o*(t0L!&Z7p9jPx zV>d3=O?jvwD(#3HmNMFK06Q6T6Hf#+xVi7xRJheBeD5X}q}I-9*O9Z5TaLAm?~kC< z1We_4?WtWG*b|##rcGhf!XSTiJrrapb^lVw^8=xU@c59ANE`1b3Zdk-N?(oEN5^pd zG0T`^cJXC8$Rq`Z{r;=5EVH2bVY%MPzBmh0%#z~s)|LbIQY|g6E!6#_l#t@OLTdZR zoB^ZwWcNM+)2~9D2)nORhbZghj9wp>F^)&(tIV&qZGKB<3q|N@tnsL5&}76BN>qbK zxosRtPkt+ga&aO(bSR`Xl7(EKL^kHyoQUS7OWk0Wk{CS$O&MvGB7m3&E1jEDdnM+h z;Cja`8??}?dA1hm-o$>l^(VtDoqhOT*PJaSMG`-g&t@%PZVl%Qupk)z&;qtpXn156{D;)uXzu zo3X*iu(Se}f;a*ZUwJk#qEsp5ps!U4dYB-R2unwye~)-?sY=6=J|oK>gcef$P5Iz8 zv-~&?Qh}JCFvI8f)3^QK?2*}9y&BM!+;WipLrd}{Qt>pnTk%VBTnL`zd;CtxmI=q* zIVQb$AjKjyz+kFwBRroyCOkgF^#4;`W=_rXf~v^{rEt|O<@FdPPkk8d{I0*h zpCj*KxFS3c-py3jl$86zQHS59U7qEfmLId%(R0!?0g#smN`hMpBrTV~ek=Da$X3?v zyASiSnbHDgI8f>lA@0Rw);7EIcsJ9}k+hL(Q^+iT1RXt#CJcQcIt*WhLr<*&6 tU2oX_qv}M(@Hf+Yo13H{co1Ci8@kXwe_E$Y&SA$Z0b8px#0mmP`xnAUXRH7K literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/apache_pb2_ani.gif b/rubbos/app/apache2/icons/apache_pb2_ani.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc41c03610c1f56d4e2ce3c9750cbe27e5d96886 GIT binary patch literal 2160 zcmY*ac~lek8vSLPNl4fs38BD95LA|eQiRezLqIAX)EpmFz$Zaj$|mvz5f@^>D61Hw z0tOUBfk1+S-~x&SL~C3SM3!QOXpu#$q^Jl_P2Pa#lysIef84qE`|kbbeDjl^ue--q z90ma$VD4B%r@H`6NJvOH(8R^XB_$;Z1cDNvsi>%E*=W$xa;LNNPG3dm(7vIeTEW=b z$uU96B+yK*&70g9K3T%n0J;W*Ye0zxRbkUL0-)(cFSJI6A0+jVXo3#O+Zj1 zNPa}jndq7e@vm z%UKo4E?(^-jvl||cBj)>DrrnGhyny+R!-SPJmufdn#`T0c?8|79Wgxx)B3-yi2rW& z>p}&k{9s#O(5If<;%ARm>6wvjl?Ov5X{)hNHU`(K-v~u>knQMx7DKT>oO7E3a3_?S`)65Tg-T4pZ( z3DN<;pLH?02Mdi9=CInI2=TI8TcEnM%==JQjGA-C(6{OF&_NeI#&@sGE0CM~c-I5w#?rjvV$Cn)}x4_9-eO^a7ghYm?CQv)A7BAVS`Z-{#R)Sz61^o1`wj^qI<=nfK#iyh*|qVvEGBOsiO)ZY|7`j)ulDklXZ)e=@-Y1>4<(x$U0Gcz)^n9- z;0!uQZDfj%f!EKekB!ocZCzPyr6xbf+i_EOnG%wzP0e_Dp3~m(op2X+o2P5eNNE5) z;b-yT4`)-Vxw2Yjk>|S6a$Hr?&8E>B=~Q+*eoM+ktd8zTjQtOW?}MWu6H0R&WEYUA ztm~kD8sBN|vuq-;_6x!2NYVP>JC%Xzx3@PHxUzFu7_0V!0~lJK*{ztH(qy}Ai` z^Pg9WD^D%yST-rMi-;U+nelbT5LC__HttYJ*J~ZYTgIPt`Zh9EJLO&72$(XNd49C> zN?++Nw>ur~bY=+Lzk16Z8J7;=sZJ@@k44D)=2 z!OHDk>D0Ov_s^emds@-3C}vOnnlxSKrl74J8TZGmT{%wu)SI%86OxAN=0B9JmY$CG zKB}=Z&2Pm!@D$pAl1c5B1H5*1%_Y{QtN0Rk$2vo||N2eE!i7Ohx|0PziTHUCQa`6R z9lIaG=@wpo|M>f+7Dq@*E`{vEu-7a2+(!Cfci!~Bj5_pbey6%Hu8Dl^E_g$r+0c2P z0G8pGi(u;~2G&#M0Sl$;bcrv9GUz_A4+ogKJ|l32UKDUFi$mFl-*(%}Xdo`_=L3Ya1-npB~|tkM=t|3B1_0%uEQ21F|4W1Sol|gPS1I#-HQ96|C=h5Q!1S^{rq1F(0%;(a#jEW zfB_C&&SXTm-v$wlXY>4s3-|+o2hcpO6E=0kDopfpcJZPGxEqBD0E^NgrCpAkC|H1c zQE2W21QMb;GEyiUgSF6sc_M_O`iRhmHJfIWSZ-g_yp4ffPMdZJ_ZUJleOyfNHx#z(&2@S$Iz7E`4{xi`G#AItUyU@aig}AF;wB}7)a8 zTBKlTX=%!!_>+Z^fq{`h2V@1vb_Ql|iCuU8DGPkc5-<+lz3AMXubFeq{lvP)Ggp6^Q($uOC~PM5!3Knu5hd8zzVA-2Z^g;lkQyz{qtht`EC{l FYXAcbPG|rC literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/back.png b/rubbos/app/apache2/icons/back.png new file mode 100644 index 0000000000000000000000000000000000000000..27d4dc7a2ae582c9c161af73e0e3e4d26a1bb53a GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}YX=!Q3 z#>PNl2zc{A@CA^?R1)MD{GZ|Jb^|XUk1@&H-G!lpRn`N@N%C}Y4B@!$+kcw#fB}#5 z-X?Cj1s7P2oVs>9bbgCp8faHmYS7=#w<*J=qKiH5ovBV`^!F`sm#d!lN`jBehsZ vAsfWYa7fK8(E}QxqY#{0P?DOPlv<=EJ?%lg*&YaoN(UF#x78)9AY;4Sc4JiKe3(3eV zR!A%=Q2NWsw3(v(5*CkrD310#bD$U2a#7+72kPI#`~Yw`N*?)jcGYB&?6 zl*5^v5@j;O_zpaf^Qf7s_EE`__xyKmPTmvoe(9bH{5w=PbF!#4X}t_l`&F_3!G;Q* IP6h^R09S}j761SM literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/ball.gray.png b/rubbos/app/apache2/icons/ball.gray.png new file mode 100644 index 0000000000000000000000000000000000000000..cac2ce0bc769b4d2914a2c3e55e0c01910e1a887 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DT4r?5ZC|z|DOS(GiP@1-aT{X z%#MzZw6wI)&`@JzW1tdD5OyR*5-7@4666>BpW*3t11}(tG0EHAg`tC0)&t1#_H=O! z;kceG(8A0XG}Ac!(2PlXdBO|NX!;~h6%o~% zeKQ4?J?QB>=Qm^LTx0d5TW;&B6&V;FILc=bP0l+XkK*P&^V literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/ball.red.gif b/rubbos/app/apache2/icons/ball.red.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8425cb574b1e4250b8cd35656432245cf4b51c8 GIT binary patch literal 205 zcmZ?wbhEHb6k!l!IK;s49|&g7{BLZ0=KudR1_V(2=NFQZS*(y)RH6W+GV>HlGEx-^ zN|SOjlND0(a}zW3^c1{P%YYIdrRf=|#X1VvAYO(;YG#REa(=FkLU3w9NosCVYLSAW zrKKr@;!hSv1_ovZ9grm;+ZmW0EOy=bXK>1Mb*$?2=q7RLtBj2b0*O~xQ!1DFD^5{O pJnUyaTmRk(8|hQW8HD_tlL9-OLb*IseTr8`t-rA*Y$5}LH2|rsMHm18 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/ball.red.png b/rubbos/app/apache2/icons/ball.red.png new file mode 100644 index 0000000000000000000000000000000000000000..9c19b94176016840998837f5cb33eb66fa6cf7e9 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eFmvXAW8*Xb|EB>3 zVSw`*CnJ!}QWE4B3{=A4ptbS~kk6Rp?e4{W(%6RaG}An zl?wt4rbwPx@q{aJ7MBs%N*3oCU0qsw0m~*#n4~>r<&q~%=~g>ioMs$T)LXaCpg7jK z*)Ui6`d$GBhCe|%rxZ&bcmjEJ%$YNdjg1*#K=GenNJeI{LSj*g0+7ngQz*$u zRVXM;%E?StNXgGl%*@kM@J=lQN_do}XQUSEC}e|p84jtLC3?yExjG8LsRbpexk;%- z3Wk=JrVNTdSr{1@7#VaxR)B10V9xZ|wdbROfWzv!D*Gb21Y#8#gjW{Ev9DOlxiI_H z)^#HHvm9UiDQlh^nDJt>gl6-T1rM0J@~%VW#e jit!gMUf+_g-~76GhV}Y)-JD*HO`g_*&g~t+oD9|gOVnOa literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/binary.png b/rubbos/app/apache2/icons/binary.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0c6608253e5d0377c75d9945749dc38062b11b GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DOS(GiPSboM~)q z3>1cdz8zO;fh?wyAiv=M3{STkcma8gN#5=*3>~bp9zaf#r;B3<$MxDiN3I3~9u{$5 z`3dqBA6b`{bH9yk`TIY-Cv!nuiQnN(kxkD+LXR>!ADPOn?^x=q&T4e^(ZZGA-9$j$c-TRx->E(J`Y&NJ*ZM?UxMzQRC&EEMy+rmm*BTAC< zb8}PkN*F>iGK&=wi%JxLRA!z+Nk*zdL1|J>X0k#`er{rBo}PktY8g<%qclAuwOB_X u8^p_SNX;zK0~(>D5S&_2lA4>8TBKlTX=z&a?fo2}4Gf;HelF{r5}E*))^imA literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/binhex.gif b/rubbos/app/apache2/icons/binhex.gif new file mode 100644 index 0000000000000000000000000000000000000000..62d0363108d2585b7574f1eafa0749ae48e15f5b GIT binary patch literal 246 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIWsLS&DhwO0R|NR`GsU;7Aqtcl_&tI%shpX zj8uh!(xjZsWQCOc+{Da0Jq7R7GN6P8 zTBKlTX=%!!_>+Z^fq{`h2V@1vb_V85k6n8{8VES7o~yDia@YFk=4>QQyf+b%kUIiE6v`j kq<41P{%f~vu3nm((IxdxXZmdxm!@WCGePSPUrq*V0OwX&D*ylh literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/binhex.png b/rubbos/app/apache2/icons/binhex.png new file mode 100644 index 0000000000000000000000000000000000000000..df267fb1992f00f606ac637996a61e8b28bd0519 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}YX=!Q3 z#>PNl2zc{A@CA^?R1)MD{GZ|Jb^|XUk1@&H-G!lpRn`N@$@X+{4B@z*+INxjfC7(8 zzYzNgHrIldf7&nhi){L@<-6#r6F*b`@j{lX!80T!rIg$+3Y>ELnLP{co`0-Xz$Dz$zw-23{>5{)-0I$ZZ_jW3Hcv(dYXE)}F?;|3 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/blank.png b/rubbos/app/apache2/icons/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..33e6477046d06b58cd58e7dbd853a6284c3f6fdb GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zYJCr;B3<$Ms|mR>n3)RmSY;D(#yu&H4+J z2`h1pC`r!G%}vcKVF<~{ELKP?Dp3GZnRyB&8L0{drAaxN$qFg?xrv#1dJ5jDWk3m! z()5hfVjYES5HG_aHM2wyXoQYJaB4wGYHm_$k%FP6rD@r>_j73>ZN1pI=Bu zX0bwIQHcVO%FI(J$w*ZwC{4=AOjbzA&rQtC(^K$HEdxq;l%{8-7V9WvgLoMZshK5u z$@#fD3c;xbC8@bdsYMEgmX@Xria%Kx85o!tbU=22T*biBZ*bCc`Hl#c1H12gmgUBI zw%rtC;M!28($IJJckPX3ES?w2x?Bo89C=txUT3k?l5HZ}&TLIXOUtBwPOm`j5Eg8%<#xPFS)5y)js@^*J&=wOxg0CFaK zx;Tb#Tz5UUk@t{+0P6*PMU^+Fc)2T@u7vbBBr8TJC{JM3a1y=rQ%gC8HP7qZH`hO} zUcRnLKQilPbw8(2^1mZ7FD41ky0z<)SMSTOJ{w#@ZrLWx+<7K#=8d-OOkULmh0{B& zLvEe^`zNf<@9*N(E_UCNgW43err-9^Za;C#S>;mtZ2i|pE3XUd9+HT9GI^fqKlTbs zM+2Q}7PUaNWsw3(zNW``#C@x7(8A5 KT-G@yGywqB$&x4l literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/box1.gif b/rubbos/app/apache2/icons/box1.gif new file mode 100644 index 0000000000000000000000000000000000000000..65dcd002eafc0513dd4e7f6d54ca1d82345aa4be GIT binary patch literal 251 zcmZ?wbhEHb6k!l!IK;s4|Ns9pKy>EJ%$YNdjg1**8Z)FBGcYhH{__jT$ShV!EGkg| zQki)QB^jv-1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz!(9+VBLGdRGBLf2?gAUMi29WIx%y|;K?))=oQ+_D9Ws|kbwV3Cb!G;~l zr6S87EaNL&_a?hVeW3t@!}Ye?nKK^#j99avpyTG(I#$(nk_Jvoof)on^{`p)&3!-P v58tszhQ3zU#BLwgx4CO~=RuzOzlQVSzZ;^Bd|G^1jC6sd%8G=a9l4vw~(vB zK&18IY@e<~_ho@^^ZaH&Tb>YW#b(Yq% zTQ1&AcawjV68=8A*Y9YAAan80 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/box2.gif b/rubbos/app/apache2/icons/box2.gif new file mode 100644 index 0000000000000000000000000000000000000000..c43bc4faecfbfc27d83c6ba936a39ae65c42a251 GIT binary patch literal 268 zcmZ?wbhEHb6k!l!IK;s4|Ns9pKy>EJ%$YNdjg1**8Z)FBGcYhH{__jT$ShV!EGkg| zQki)QB^jv-1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz!(9+VBLGdRGBLf2?gAUMi29WIx%=I3-_IxxDa9BN8WnZTCdBN+UN;`V5 zvvyudlx5MGf7Niu+lB8<68M>}CwT0+Sa%>{VugiRTa(75mo;unPcK^%`XY`u`0=&t zU!@MXG|VX05I^^VF*R2EaBhQ*t$*G8!m22pl=_-R+Zy(Sw)W(nhPLXS$-P|O(_IV& Nt>?_0!_UcJ4FEU+X8-^I literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/box2.png b/rubbos/app/apache2/icons/box2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3812ebd99e690c6fc0ba82095df795d03a1ca0 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DOS(GiPSboM~)q z%rMiKAjC7HdAc};a9npiXUNrH zAmDOQlPUVWXi$ds%|l_19_uSuFSEH6)tajr?yvGOy|FJW?HJS98GdW#E(?BshU3${ z^h-QmnyL5nx=yT7DNKI+@J(!`m9^PBGn0AF6IOoWYVxr;wQ|A~jU&ZJ-7akm`v1q} zp_;1g$(6_SlXX-KCh~f12f84v#5JNMIX^cyHLrvrBqOs}A+e}L0Z3)$DU@WSDio9^ zFVdQ&MBb@0JXPywEzGB literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/broken.gif b/rubbos/app/apache2/icons/broken.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f8cbe9f7604077bbd3a2bc8bc3a5bb5f569b838 GIT binary patch literal 247 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2Sr)tYd^F&3SUp#HU#9hW!Rw()J9@9Pc4`>z_|O^T zk}LelhjUMZx0Uz%<6KNN%O7PlP1)n6a$s{L_l_mk)%DU^kLsajo literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/broken.png b/rubbos/app/apache2/icons/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..44ab15d709bf5fa3f5341b57fda3d499fbbb3f98 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4*6H|MKXqB;}U=--3bfV^jhcEZNeTZJhgR&y2f&pGrJd?ECy(NIt1( zXUEp_SFapRJlefGQ|HEF_kd)c#f4@%-pkaa7P$udr|sSP`)AVTdD^$0RvfaQ5g;;c z-TAfCfL4ct@0IAG8g_4X^g@V$goXli}l>FSp%sf2> z@6XnDYZz!(9+Vh?A!Y}KpPl5UHx3v IIVCg!0QdlSqyPW_ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/burst.gif b/rubbos/app/apache2/icons/burst.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbdcf575f78a5ebbd3eeac5bbd9f963962ab664f GIT binary patch literal 235 zcmZ?wbhEHb6k!l!IK;s49|+DEpZWiPW*S3UTAH!3F#{MV{__jT$ShV!EGkg|Qki)Q zB^jv-1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXn zDYZz!(9+VBLGdRGBLf2ygAT}iknIf2aT>es{4+SUl4tW3o}3LYCJ5%-`ZlvqY)y_i zON{zvlk8Qc_r#nUUz;+oS7*8wAfNp1ThKa>J&QI6cbF|deBP(?&CiC}j@vi=I#{!y ctx@66$5l65-@mTg36FLd3o%#&030@6>Hq)$ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/burst.png b/rubbos/app/apache2/icons/burst.png new file mode 100644 index 0000000000000000000000000000000000000000..fd504ee331cd9cf0a886255f33b29011b389a5f4 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eaK`w||Nk@77}C6lL6aP_=9~n|@l~ zSr4UiD*A4uC5uo9hUYM`8!!i_aF4Xx5#~) zMqJd@=X<*j*UP`^-od!YT%{@`wOs?~kgyWhh?3;|+}zZ>5{8hB%wmPaq7nrlm6@kd zl98%VP@0sJnXHhKpPQJOr>EeZS_YKxC{52uE!I)U2Jtc+QZq~RfJW#j1g931q~<22 a7AY87TAG%9dp`$g1B0ilpUXO@geCwuj(dy% literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/c.gif b/rubbos/app/apache2/icons/c.gif new file mode 100644 index 0000000000000000000000000000000000000000..7555b6c164fc1b4fd61b082d8077fa9d91df56f2 GIT binary patch literal 242 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2sTRBTd^F&3SUp#HU#9hWL3V*Bp^eh6>z=a~rmo~; z@m;PwF+98fv}{9yhQgnc16&t10u@Ug6@{;Ldlgz{Obt2`rF%DR+wn(!`wtpSjoH_A d@zm!TvfmF~E%;F4@aA{Bxj;^{Ha{nWH2?tDSDF9- literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/c.png b/rubbos/app/apache2/icons/c.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fef3e3b41052a1646558216a4ee5818d914aa9 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e44m9jEKEtCvC1{ew?3kpTk)DBDcXYgZr|+5f>fXhw zEeG0PY!tYXceSMd`X`3}TTkAc_hRy~j@Vfz#bZuR4hQgf41ixdnkEltb5y`KZLfx*+&&t;ucLK6TtZE%CMz{sEjG@SutI|Fl`#I8I43{F+7+RH9?U^n~B&57a> z9SY`avJ)3cpWb!+X3wWT_Y&^C>j_NskYN&^eSY~d0}D@y<%x+OBE#9DLr=Z++8Ul6 x7HBJQ=EA9jH5MFGT$gJ@mp5m{0_#-#wxuc*35QMb=U457e-D7YXCOLU#$QD literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/comp.blue.png b/rubbos/app/apache2/icons/comp.blue.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7e006f6591e40f045f279e8bf0fa136c5204b7 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}YX=nbY zrKK4g8#AQM1WGzp|DO+}m`Z~Dg8wr--EQCoIR&0Bjv*Y^OV8SJ zH5l-;J>++_D!;H!?-66ySB}`V4@7r`Ux>S}_Lbf7{!7IcmQQ^3Js}EO0Zp12S~9{> z{OYIMe@*t*GM4wwvDts4cF{S>_G3ThRQtMTXIciXt6A6~v}*3kmHZK_`?SrDtmge% z^o-B>ptkz%ma_&xyTeLcBTACiGK&=wi%JxLRA!z+Nk*zdL1|J>X0k#` zer{rBo}PktY8g<%qclAuwOB_X8^p_SNX;zK0~(>D5S&_2lA4>8TBKlTX=z&a?fo2} O4Gf;HelF{r5}E+j4t6O3 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/comp.gray.gif b/rubbos/app/apache2/icons/comp.gray.gif new file mode 100644 index 0000000000000000000000000000000000000000..7664cd03649021707e088ea934495978fb0d2656 GIT binary patch literal 246 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIWz6de`8}~1{hHM=NFQZS*(y)RH6W+GV>Hl zGEx-^N|SOjlND0(a}zW3^c1{P%YYIdrRf=|#X1VvAYO(;YG#REa(=FkLU3w9NosCV zYLSAWrKKr@;!hSv1_nk39gr0u+ZmWMC3fBUXK*TF)m~Py1H0L0ZcY^U=uj|Uqn)@& z`t+`&H+w$)xtDP7U5{X*hYXYW?DNZyDNHgr!s_U-Hfnv#g)JxEX01=i4l~r{ICH)$ lVU2;d{qukWdt+~JZ}<_zu;TaoO4H0{QT5pN7)DM8YXGT7UX1_% literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/comp.gray.png b/rubbos/app/apache2/icons/comp.gray.png new file mode 100644 index 0000000000000000000000000000000000000000..8f620bddc2087d00b58793a89f8728221347129f GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}YX=nZ$ z8yf?KA>gsa)f^y;sU*lR_&>wb?FL>z9%GWXy9+}HtE>l*ljZ5+7{YPA^lTtkg91;( z!^BDk$NS1(SjrlDVjV92j$fJ^C3xlk7sF$0&-nh`*m0)hK<2_{EB%~03Z>`B9rIVZ zdb3|p_f&V+k*&{-Bl`FLnbjsxF*BnpCg5yCG+!RSx=^^_HF>nQKM z3A8n=#5JNMIX^cyHLrvrBqOs}A+e}L0Z3)$DU@WSDio9^FVdQ&MBb@ E09xjB*#H0l literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/compressed.gif b/rubbos/app/apache2/icons/compressed.gif new file mode 100644 index 0000000000000000000000000000000000000000..39e732739f562920d69e21b9d5f766103225471e GIT binary patch literal 1038 zcmbu8%S)7D6vm%!Ft{kRtWAqgQ<5~hoFu0y(5j?VVxWbZa?#}6Rb z^C4&mE(8ey7I`1M2JeEG;9*JiK{cogDnVhj&IhN#x!@!?SgZIT8pH*WAfQr!56}P? zAOQ@hO=)Venboj4_SAdly?75B%ShF$^D16p6ihnx&Uq)^!Jt?x>cx2xFCZgZJ=DW_ zhzF;Vnqq_|C9#;}U}{sET5N_bWHFyp6;;@N9LvZ#b)pWoE-9E4ry?rg_Jm@s!YM?- z_2>sN*-bmRKOwjwsVPQiQnHjB987IWQw!#tr5W>yb1);hAICBhaRU0vbxFabgE-Jf zI!yz}#c~?WZD}R_ASSzM2bs7qHzYO12+dAnk%NP&O=;MPteR=YeBi}sB=_T3Mgsdd z%-8tdmW)qmHpf@7+Sq7wJ@(F8V>|2!@rI@pL)%Sa4ik>0`8n`PG>cNN~PuHj#2TU&K?b$PjISFN2mlgUm*z2muv zKiQEemq|xslYK+k{%BxyxHmh}7Dc}w4}4S#{SXahUj#9ESDbc zOOHnflF24it!!Ke)S!Xtuzwj6iq1sMV&VMamBiM~1Dk->?y_AKLvKGkd3CL_zUO(} z{{Gh4ox9inc{4lTIae9-XIHj->p*v3PgZ}I-!Gd(0R3W>2Z59 z@wZv>Co5WRejm!z{yeqNojm@2_0WZ-{JG+hhh&B-mUxe ZEb;5(orN8>^?I=Ddd=ePr!Oz#=sza7#nJ!( literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/compressed.png b/rubbos/app/apache2/icons/compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..1959b85a1a10b80a8a5cacab276459f287dbb2f3 GIT binary patch literal 1108 zcmbu8%}bO~6vj_!A%?_YR+PodL@q*vIBIG1CGY5nV&lh1%lvqcGt{W*tJ5L~T+|q0 zv}kc6C|VTFqM%hUiwdIEg^Zw(m=+P#YJwsoTHK!d{sS$#;0%Xz?{j|7bH?S=Ku=xm zu393h>rMJY_}+%U?KM^S{B@_lm8gnR{UZtMjHgAa+NXGs5N2@TSKm?#;RHs zt8A6rT`^YFidbPQ zH7Z8gC^-r=MU99NHbM>xcUcXKVKz))#8X3RNDQ$dOa(Q>01ZlDp@+fHhBUPBn4BS3 zBzF!~y?+fJ0D24A7v&Rd8T1 zv>^>Ga>=JKD3J#+@fvY}35MYi z)DQzSUIGgo7z}MllUtFyjW%i=!p0CJ{9!CA#t$X>H8{J`g0WGz&uB>wD$3ohH;U3R zM(Mb1M}{48g1_NA4>PcIzUc%$G~-}^M!`nh{_vT-W@Bfj~`vE|(l8-9NLa%k)N zvrDU&-*-Rg{P4BqWnFe}ecO?Gj2;aWr^AVvTrQXnX(W@K_r~Tz4`117FU$nq?85lD z?1VQtlN-xUw|ITQA{xnssZ226?45O0=0uPUTOiTw4F|JfkQ)!?yn`JbZHw#QZes%V MCI8 zTBKlTX=%!!_>+Z^fq{`h2V@1vb_QloiCuU88JzN5z4yk{OJ&c!6gd(UCY?Un$r?Nn?=Lqvv3P#w6Kw&mW_iT|AE}uhs$W)G1T8PNl2zc{A@CA^?R1)MD{GZ|Jb^|XUk1@&H-G!lpRn`N@3GsAs4B@!G_S{C^1_J@- zKyB%WQ(s>Ms5wX~2=NrSZ~CvbBdKXe<$jYN{L)1e#Y7DF(-u1{x*6!C(0$2SVejnu ziXUP&@2lmwV*0~}>x0_s1qaSemVYiO?l7nR_YR=>VI{5+CCT}@xv6<23?Uhr#R`c< zB?>?)Gf$x;BUPcGG$|)DSs^7qH!(9$Pr*C23@G7Inx2tbtfP<(;$=9bW|rsyjnGjD hPAw=&%}q)zQZTf%G%fq~eh$zE22WQ%mvv4FO#rYIXIlUO literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/dir.gif b/rubbos/app/apache2/icons/dir.gif new file mode 100644 index 0000000000000000000000000000000000000000..48264601ae0655bbb5b5539e54ab9c4c52c0ca96 GIT binary patch literal 225 zcmZ?wbhEHb6k!l!IK;s49|+FOJoEqm%rs*lV1NO|e|{kunZ*i;MI{PADl<=^BqLR! zpfo8bGg%=eKQ}QmPfx)+wG1fXQJS8STCAgx4dP`uq-K`rCFkerCyg@&WtvAFs%+oyn@vrAN+!2FgA&7LgdM$msG{jgj*VKw;b&W_&MNEp LeCV-eWUvMRho4eP literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/dir.png b/rubbos/app/apache2/icons/dir.png new file mode 100644 index 0000000000000000000000000000000000000000..971ac3f4b491e9b463b7e97e843548375093f295 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eaAxM2|Nm#E83O@O z7y|T+mOlfsm`j5Eg8%<#xPFS)5y)js@^*J&=wOxg0CIvnT^vI=t|tdHF|!>y6QIyw z5X#!9z;T9$#n9E+xp|62lcSHb0>4HU4~xUR0s$9B0g2s*W*%A>A|~3#6wVf!%wbTN z8o*W9*dV~BdNqKffQg}wLE)(0KRFek>0u?V5hcm_xw)x%B@7`MnZ*i;MI{PADl<=^ zBqLR!pfo8bGg%=eKQ}QmPfx)+wG1fXQJS8STCAgx4dP`uq-K`r0gcd62u>|1NzF}4 aEmAPFv@|XI_I?h~1_n=8KbLh*2~7Y;lv+^$ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/diskimg.gif b/rubbos/app/apache2/icons/diskimg.gif new file mode 100644 index 0000000000000000000000000000000000000000..49b12a8d1ae0b5b0725ff2310c6373aa4e983fa9 GIT binary patch literal 167 zcmZ?wbhEHb6k!l!SoELaz<~pDEG+;3|KGoV|IC>)8yXsnjg1)?7!-f9FajwC9S{Lh z>%g3ov1`u<0SU!(nu}i;Yy3QD%o~;&6sNIJ$7<(=jB`2*wc^*kKX!MUzH`b~=d*lv zms~enUYT?*-b7U^DmQd>f|AU>HTUzbRT)eKynygkW{*rDjP6lfL{kKE1 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/diskimg.png b/rubbos/app/apache2/icons/diskimg.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f04c219db1484926ab80d6e5b2654b1a7f9d29 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5Z40-4#=^v{Qv)d|Ni|m zXU=SBXfQT521*u$Z_ol#j3q&S!3+-1Zlr-YN#5=*>|%)>uYsHdPZ!4!j_bAO47nN% zcv>IMd8+t!UB~7N+9m7x%Jh_W?#o=vCirK0zkpLlw(6uXk8_d}d(K51@3njWRIPYt zhu#^d`kq4f$0{iflJc9rq}qP-zAd{Xj`QtV-HcBv8^d0(+^sS&p0-2hBG4`dPgg&e IbxsLQ0FN?F#sB~S literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/down.gif b/rubbos/app/apache2/icons/down.gif new file mode 100644 index 0000000000000000000000000000000000000000..a354c871cd0b1871aea54b437a9fcd88608b6945 GIT binary patch literal 163 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz@*gEzw-23{>5`lI=eR?ORw&$xvkW+W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$Tr;B3<$Ms|mRz|j@6Kg_OhpkQNV4CDD zd8pw@NLzpc=ajQiTZKH_)<$uu91inkT^Y}MZK~&-lMH1x+AqzW*6#$G5mw?FQIedW zo12?S*(y)RH6W+GV>HlGEx-^N|SOjlND0(a}zW3^c1{P%YYIdrRf=|#X1Vv uAYO(;YG#QZ&XnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2i59!|d^F&3SUp#HpXaXk2Sl>&JZ}wUn<}Oew2Ebh zy5WrhZnywi7`v{UmEc1RMWQW;i796*RD-1HnCY( abURyR&WU;9JD3;O#qV)F(-6+dU=09`UszZG literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/dvi.png b/rubbos/app/apache2/icons/dvi.png new file mode 100644 index 0000000000000000000000000000000000000000..e77b282100ba3fa52140d88b271727264e7609d5 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4m%Z0^- zjcXM67QA3sn(}{UmD;6gK`&};`-5G+n}oWuDnBxDyO7rI=MwBGy=jNv7 zl`w>4WELwV7L_Ofsmwful8jV^g3_d%%w&a>{M^LMJUs>P)H0xiM`?OSYO#(&Hi(zu rkeXSd2Q)%QAvm?5BsDiFwMfCx($ci-+xs~{8yGxY{an^LB{Ts5T6t== literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/f.gif b/rubbos/app/apache2/icons/f.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbe353c28223f727deb5144a964b67aa52081e42 GIT binary patch literal 236 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2@fN%Gd^F&3SUp#HU#9hW!Rw()I|5y1O%gw{Qrk-4 za}Co**45@VTn>y2mrF4=IdgU;Y~koUdn&jyIjm;NN)0XFePuTmPrrRp@1UjePH&g! XquWjAXkF)P`eAc{t#G$ICxbNr*wRvL literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/f.png b/rubbos/app/apache2/icons/f.png new file mode 100644 index 0000000000000000000000000000000000000000..876e1c9c64072999de61734ea029af72d837dd51 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4=IEHXsUwUpM?*RoKmIL8u znBo`>9RzqL9Qu8JiaFa(kD2THrl1;VI{5+CCT}@xv6<23?Uhr#R`c< zB?>?)Gf$x;BUPcGG$|)DSs^7qH!(9$Pr*C23@G7Inx2tbtfP<(;$=9bW|rsyjnGjD hPAw=&%}q)zQZTf%G%fq~eh$zE22WQ%mvv4FO#o2!Wc&aC literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/folder.gif b/rubbos/app/apache2/icons/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..48264601ae0655bbb5b5539e54ab9c4c52c0ca96 GIT binary patch literal 225 zcmZ?wbhEHb6k!l!IK;s49|+FOJoEqm%rs*lV1NO|e|{kunZ*i;MI{PADl<=^BqLR! zpfo8bGg%=eKQ}QmPfx)+wG1fXQJS8STCAgx4dP`uq-K`rCFkerCyg@&WtvAFs%+oyn@vrAN+!2FgA&7LgdM$msG{jgj*VKw;b&W_&MNEp LeCV-eWUvMRho4eP literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/folder.open.gif b/rubbos/app/apache2/icons/folder.open.gif new file mode 100644 index 0000000000000000000000000000000000000000..30979cb52855157110d56344ce09ff29ad726585 GIT binary patch literal 242 zcmZ?wbhEHblx7fPIK;s49|+FOJoEqm?%lg*rWpeP0~jd&^9#wyELKP?Dp3GZnRyB& z8L0{drAaxN$qFg?xrv#1dJ5jDWk3m!()5hfVjYES5HG_aHM2x7IX_oNAvm?5BsDiF zwMfCx($bVc@h1x-0|OI-4#<3v?F`JR8oTcNGdShBI#=y=&2-5G4yn89^Q6URrb|x} zc)e?b^5WuCck>TOH!hekVIgPfp~Qt9URLv4mOfysiDC|%v8Jjt&35m)a4xxmqX+dL h7rU*#p8HYSdByGb--d-u#V zV;}&^0Kw1W8{Ppa=8_=4;Q#*_uAky{1acXZyxmp64?ja}#B<8N_j^S4bY6<*OLKeEw&(NG zm>Duvj8iKYFJ=7UeWO8&LE{jQRQ;)kW|3CKQ$Kyunz<}x)})SQPdfR0ull#`_A2O; z4_w4-ck8Xi;$Jr{8-ezRmAFQfBy6QIyw z5X#!9z;T9$#n9E+xp|62lcSHb0>4HU4~xUR0s$9B0g2s*W*%A>A|~3#6wVf!%wbTN z8o*W9*dV~BdNqKffQg}wLE)(0KRFek>0u?V5hcm_xw)x%B@7`MnZ*i;MI{PADl<=^ zBqLR!pfo8bGg%=eKQ}QmPfx)+wG1fXQJS8STCAgx4dP`uq-K`r0gcd62u>|1NzF}4 aEmAPFv@|XI_I?h~1_n=8KbLh*2~7Y;lv+^$ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/folder.sec.gif b/rubbos/app/apache2/icons/folder.sec.gif new file mode 100644 index 0000000000000000000000000000000000000000..75332d9e59bf1b7d40d5a82279bfeea18611db90 GIT binary patch literal 243 zcmZ?wbhEHb6k!l!IK;s49|+FO{BLZ0=KuehX~t;`493RB3=9m4|NKHSGK&=wi%JxL zRA!z+Nk*zdL1|J>X0k#`er{rBo}PktY8g<%qclAuwOB_X8^p_SNX;zKOU}>LQ3y^g zC`rvtN-a__w6rv3Q2fcl$iTqNpaV3W0c1M^bDG7jJO2z$dEVUl?ms=DL1^Wsd7qggEnTi zLuZN<8Vt^|HZJh+lsuusV%Rz*q`Ozr%fUxoHMDTS3T^=gSJ$qGTrrm(`b;d*>h5A- zbh#pvVt9c!?t@0IAG8g_4X^g@V$goXli}l>FSp%sf2>@6XnDYZz!(9+Vh?A!Y}KpPl5UHx3vIVCg!0QSvkV*mgE literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/forward.gif b/rubbos/app/apache2/icons/forward.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2959b4c85c612f74f3ed207b3c8e09ce906fd70 GIT binary patch literal 219 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIWsLS&DhwO0R|NR`GsU;7Aqtcl_&tI%shpX zj8uh!(xjZsWQCOc+{Da0Jq7R7GN6P8 zTBKlTX=%!!_>+Z^fq{`h2V@1vb_QlYiCuU8wX}SU+2eAh_5B^k_ROg-0w+{X^b?$Q zKX`{e+d0=|9tjPPcd_Mu)Ml%7PAUBP*kHbKD+5<3&kBD{#@jg@+pgRzznQIiy36?2 ILPNl2zc{A@CA^?R1)MD{GZ|Jb^|XUk1@&H-G!lpRn`N@N$_-W4B@!$+Ix|=!GOah z^5Gip884LD_#7U+-QOjkvA6%(*Fr`|_eU24D^~66^gC@el{YeM`_^2^r*}@jw|dQT zG9zjc|A9jtj?a=#T#h>C#Px350mIeOrynPG$}PHRR#le}sBW?S-JjV&yTVFbBTAC< zb8}PkN*F>iGK&=wi%JxLRA!z+Nk*zdL1|J>X0k#`er{rBo}PktY8g<%qclAuwOB_X u8^p_SNX;zK0~(>D5S&_2lA4>8TBKlTX=z&a?fo2}4Gf;HelF{r5}E)EfpWV5 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/generic.gif b/rubbos/app/apache2/icons/generic.gif new file mode 100644 index 0000000000000000000000000000000000000000..de60b2940f90cc3bef3e16e2d20b39aa00807327 GIT binary patch literal 221 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf20T#RVd^F&3SUp#HU#9hW!Rw()J9@9Pc4`>z_|O^T zk}LelhjUMZx0Uz%<6KNNmX9Z{SfkK*HucgE9k$hhnp--1%Xa$c7hcewUAg{5?%98; H3=Gx)qghVl literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/generic.png b/rubbos/app/apache2/icons/generic.png new file mode 100644 index 0000000000000000000000000000000000000000..2c75bde9a166aebf0dde88a64658194fb1ac8ecf GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4EIff%WAGPNs%Fk&;FxM}|~R zzL1?;ANl}I3oCJrC`r!G%}vcKVF<~{ELKP?Dp3GZnRyB&8L0{drAaxN$qFg?xrv#1 zdJ5jDWk3m!()5hfVjYES5HG_aHM2wyXoQYJaB4wGYHm_$k%FP6rD@r>_j7vky)&eSX80_q%!jq zN-|Ov3QCi5GLscj@^ce2^Yj$FQ_Fx79;N9Ssl_@9*&tqqLuzJ;UUGh}jzVy1K}l+E zQfiTcp{1oMgW^vXMg|6E1|5+3Aln(3{XKT=`CK62xLURGi22&%H?LKSN;oNN&RD)A zj7{+T9dF5syeno$->jSG&*;OMYO`?t3LV4QtJ8%g=XgyGN!I7?Roi$yd81>RNCW@e KDqbH325SH#15FnI literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/generic.red.png b/rubbos/app/apache2/icons/generic.red.png new file mode 100644 index 0000000000000000000000000000000000000000..2fcb057c7bd15e07e04e8e7b7febf3fabb8a82d5 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eFmvYrw6rt-|EDo9 z7#kY{Wq_bTO40^~C$dAqwXbg;^L069*cE{-7_*OLnvnbVV# zliAc&6#@hu4Or(2`UtWJYw#ql+PQP*!5NvEnE}ftb#eQIcye~GbSYoPEz%-sEV10N z(U4*GBu(i_8QWI^O$#e=jVMXZ&&^HED`5!9$ShV!EGkg|Qki)QB^jv-1*J(jnaK(% z`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^4`_srLU3w9NosCVYLSAWrKM@vxA${^ PHZXX)`njxgN@xNA`n_22 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/generic.sec.gif b/rubbos/app/apache2/icons/generic.sec.gif new file mode 100644 index 0000000000000000000000000000000000000000..88d5240c3c3ee7aba7e51be6e49516277cd2c024 GIT binary patch literal 249 zcmZ?wbhEHb6k!l!IK;s49|(+%&;0*CbLPx61_oneV+Jr#{O1>vky)&eSX80_q%!jq zN-|Ov3QCi5GLscj@^ce2^Yj$FQ_Fx79;N9Ssl_@9*&tqqLuzJ;UUGh}jzVy1K}l+E zQfiTcp{1oMgW^vXMg|5Z1|5+3Aln(3b0VTHIq;y*eT9 pbHuxO``>OATea-a%QUllYxjTS@>KR}wi0z>>0oj07UpEI1^}8@T=4(^ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/generic.sec.png b/rubbos/app/apache2/icons/generic.sec.png new file mode 100644 index 0000000000000000000000000000000000000000..229ddbfe1ed56f42cbc6f50a6434503a4a704e22 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eU~GKm|NogYXQnYQ z7#kY{Wq`oQW;;kTb4ie2@c;h|*H7^}0=bMy-tI089jvk*K#sqsi(?4K^<)lSQIQf} z-k_kMB#s0Dk&=W|R|Cl=0iQ4yVGW+dO|7l12WMnvW(KG+Z{8@`bF$$`$^vWSD-i(~ zZr->d@xo*277_97CKHqyPhXYYwb#{65omN+iEBhja(-@ZYF-ILNJeI{LSj*g0+7ng zQz*$uRVXM;%E?StNXgGl%*@kM@J=lQN_do}XQUSEC}e|p84jtLC3-+3bQFS93rbRR clTwQm3@t59%f7vz1GIs`)78&qol`;+0I+voH2?qr literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/hand.right.gif b/rubbos/app/apache2/icons/hand.right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5cdbc7206da8856227e36b9d8f1fe5668e162607 GIT binary patch literal 217 zcmZ?wbhEHb6k!l!IK;s49|+FOJoEqm%rs*LB%t`uFC-(gSRt{fL;*-;<|&k9q$(7Y zCgo%%E2QM-CT8a8DR`%r0VO<2(=$?wbriBeybOob%o4ri{9GM{;M9VW)ZC=hA_YTB zOH&5LpDc_F3``6 z1P@2d%A8Z(d*Iop;+0_slQ(LVa73?qy!_*&UOA1|IbCl>b_(7P3tlzje1;bjgEav1 C5>Ye& literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/hand.right.png b/rubbos/app/apache2/icons/hand.right.png new file mode 100644 index 0000000000000000000000000000000000000000..88efd6f8880a14bb2a189ec808200f5bad054b9d GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eaAxM2|Nm#E83V=O zp#EgI36R5F666>B|3Aa^Q@oBqE@P6ny9+}HtE>l*lkVx_7{YPAxBs-@0R;}1%tUsr zf=dm}ycsX{FVlHad{Xh_fjt+GH(i>iY;T~XcZXrkp%I*1zk#mZ&PQ z@Tx|d^#xnOdydM7dumrHPjp;?)Gf$x;BUPcGG$|)DSs^7qH!(9$Pr*C23@G7Inx2tb xtfP<(;$=9bW|rsyjnGjDPAw=&%}q)zQZTf%G%fq~eh$zE22WQ%mvv4FO#raza>oDw literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/hand.up.gif b/rubbos/app/apache2/icons/hand.up.gif new file mode 100644 index 0000000000000000000000000000000000000000..85a5d683177b439d3bd52a5fbe4f4b88e6b36a51 GIT binary patch literal 223 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 b@W92JKaW1W`t|JFyMGTqzWn*9LI40ePu4mb literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/icon.sheet.png b/rubbos/app/apache2/icons/icon.sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2a2013f480eaea48e022834e72a618889cc744 GIT binary patch literal 9018 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 C?(#YS literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/image1.gif b/rubbos/app/apache2/icons/image1.gif new file mode 100644 index 0000000000000000000000000000000000000000..01e442bfa92332ec1c6f6a3a1310a41da8be5cb4 GIT binary patch literal 274 zcmZ?wbhEHb6k!l!c+9}?9|+DE|4&Oh1EkNKnF$1G493RB3^;(|KfjQS%wmPaq7nrl zm6@kdl98%VP@0sJnXHhKpPQJOr>EeZS_YKxC{52uE!I)U2Jtc+QZq~RlJj$Q6oOL= zN>X!^Qi~J}EiFwM6o0ZXGB7YR=zwelxr%`$x8Q`Q<}TB46{|}Ro;FH4vD|TwVqCRu z(oHG-o-GnG^BH|*TNeaW6tnVAVoo@j5?96H;J7r$On>@QlgzzoTd%A$K6Qt0Rl^Fa tT+{HAkBVmGwl?ql^5gHGE#Ge!M>NIeRkegTICnX-n>O`N&=O>@1_0HcVjBPe literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/image1.png b/rubbos/app/apache2/icons/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..c56991b4dbc00f1c9640c9bcf8edc6bfce24f4fa GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DT4r?5ZC`eaK`w5TG|;Pedf$e zAV^~{HZ}&zV+FIMp6&rku#^P(1p~D*IB2c>0^~C$dAqwXbg;^L06FQNE{-7_*K5xy z@--Onv_4edI3rc6b^Xkz0^Bl;or((P5}y6O&XI+GUU^?OVa==&3R(ENw|!$p^0!iR zo^v;h_UgRViCH}5uc?rj$D2zbCk>YM2dH`8e6aFU{i!0+GM}BUxzo@8=*?r9WT|1NzF}4EmAPFv@|XI_I?h~1_n=8KbLh* G2~7YNT6o(4 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/image2.gif b/rubbos/app/apache2/icons/image2.gif new file mode 100644 index 0000000000000000000000000000000000000000..751faeea3644ec77fc2758b18522443c86e11e88 GIT binary patch literal 309 zcmZ?wbhEHb6k!l!c+9}?9|(+%&;0*?=FFLyGiRm&0Rw}vu`$EUGYm708H|BE6rlLe zFC-(gSRt{fL;*-;<|&k9q$(7YCgo%%E2QM-CT8a8DR`%r0VO<2(=$?wbriBeybOob z%o4ri{9GM{;M9VW)ZC=hA_YTBOH&5LpDc_F3``6AFlZ-6WvSM=7VP{@&>xS8Bwhc1-A7qQa*6llSbi$3t0`pjwvYB~D2%9p5teUK9 z!JHj-nw2N%{)ee19sAhWn7?J+(8*}hLs;X|rU4J$iGeWf`wdw5G*d!uZZa9_W^ ocG{GwRjPF}8>Y#Xb1hynfA)0M4)%aGYyBN0JvVI*5@fIj0DN?8ZvX%Q literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/image2.png b/rubbos/app/apache2/icons/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..532432c9f45dc31b04807a505f63ec88c69ee6c5 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DT4r?5ZC`eU~GKm|Nk>*&di)S zGYtqB7>tdL8D^egm}$&l4CJ8z&!2T`fdb4WL4Lvi|1(@a#p?*~PNLcK zx$cwp|FXE+=v{iIM{Jg%_Qka(6R+Jm%4j4Pj!W&1uJWXdQYrBzht{jo6nqBdtnouJvvJ~wX=O*&YCmtNx&of2a#6Z{FU3H zf$j<`ag8WR&d<$F%`0ID$;d2LNGvK*08*KG3MCn-3I(M}Ihn}{DfzjHnR$8&-l=6k z36IkBjMQQsg=`Qn!yz@ZL=R|$jzVy1K}l+EQfiTcp{1p1*|+y|fHp9Ay85}Sb4q9e E08#vlg8%>k literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/image3.gif b/rubbos/app/apache2/icons/image3.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f30484ff64db93ee44ed0a9ad7ee2ddee74b3ff GIT binary patch literal 286 zcmZ?wbhEHb6k!l!c+9}?9|(+%&;0*CbLPx61_oneV}_Y$7-kwX7z24&fZ{*Dkc`Y? zg~Xx~1t67~r%;lSs!&jxl#`jPkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZS zb9EGgQwvH`bCXhw6bvmbO&Jt_vM@3*Ffr(WYy-K9fu(Z83D4y_B18`CzVBL=8|T?3 z8Cj-fRpz22to2}(%Yyfw7ys+~3he!($l^D4LHYfmjv4i)2j@WJuw z(xQEj48%`M?cSeKc2$dA;a$a_s7`|)|JgXI)5;nenzd@X8XG%`OT79!SOcd{3$T;) Lm^~+0kii-Nb17t& literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/image3.png b/rubbos/app/apache2/icons/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..903732455cdf5740564ee14f034be0909c50ca85 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DT4r?5ZC`eU~GKm|NogYXQnYQ z7#kZi%sj&|)0n{+$io62H9da`6lN|7@(cd|pW*r`UPmC8G0EHAg`tC0)&s~X^mK6y z;kcf9&XBJ`fyd#Zo=n5Vt>FnpCXf6)IueVM%92x!;u>#9d4~%9|8i+brecAd;6cWv zSKL3yi(Zb}&CuI9`I>Xj$HcW$JN^ZyM_7Ltm1b&xHV^Po1q>m)juWZxUa|5 z`?pRfM14^SR4hQgf41ixdnk WEltb5y`KZLfx*+&&t;ucLK6UpQhM9~ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/index.gif b/rubbos/app/apache2/icons/index.gif new file mode 100644 index 0000000000000000000000000000000000000000..162478fb3a7f690884b1527488a27a9d34ab497b GIT binary patch literal 268 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIWz6de`8}~1{hHM=NFQZS*(y)RH6W+GV>Hl zGEx-^N|SOjlND0(a}zW3^c1{P%YYIdrRf=|#X1VvAYO(;YG#REa(=FkLU3w9NosCV zYLSAWrKKr@;!hSv1_nk39gr0u+ZmYaJ$CK+XdvLQdala8OzZQ4*F%+d^j>G}%y8WC zp)<%eSG-8|P1Cu@LU&KQy{J}XRik+(=tTM=GYuMB5h}jym8(tr{ zTHty08q@pqX@{qpFA8HkpSQf;)z`l$D#)_MC9vJG&E2N2-g4rU9gsa)f^y;sU*lR_&>wb?FL>z9%GWXy9+}HtE>l*Q{n027{YNq^xQ?>76Xok z#79>dZ#-x!Ykb7;YAUN<>i|1nMJie!A zYSlN-EA>B^?H%QfJb6_<0o@Q*;u=wsoS&PUnpeUQl95@gkXTfr0HiYW6iPBu6$(m| zax#+@Qu1>XGxPKmyi?175+0@L8L7oO3fUlDhC^y*i5}1h9fjc3f|AtSq|_n>LrY83 UvTyI_0BvCKboFyt=akR{02;)6r2qf` literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/layout.gif b/rubbos/app/apache2/icons/layout.gif new file mode 100644 index 0000000000000000000000000000000000000000..c96338a15228f70b4fa5753ff93db7d70f1123cc GIT binary patch literal 276 zcmZ?wbhEHb6k!l!c+9}?9|+DE|2H;1^Z)-$AV@P#I|JkyGvEM<|NKHSGK&=wi%JxL zRA!z+Nk*zdL1|J>X0k#`er{rBo}PktY8g<%qclAuwOB_X8^p_SNX;zKOU}>LQ3y^g zC`rvtN-a__w6rv3Q2fcl$iTqNpaZfI}mo*BX ubMM=^lVvk>^@~}aS-AV^f3&VBD9tXZudR+|59;m-w3jTH=pio1U=0AHb6^Gl literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/layout.png b/rubbos/app/apache2/icons/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3bbd25c5eb9c5027a768af71cbaecb0408da2e GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DT4r?5ZC`eaK`w*vGJMz|7QY0 znsM40AkP>mj}=Uwa8C^=!BP_B7Yx+O;Gnhg3y{y4JDV#4EjHg_Woqa%dDp;{%uueQKiMYt=RTl) zVI{5+CCT}@xv6<23?Uhr#R`c?)Gf$x;BUPcGG$|)DSs^7qH!(9$Pr*C23@G7I znx2tbtfP<(;$=9bW|rsyjnGjDPAw=&%}q)zQZTf%G%fq~eh$zE22WQ%mvv4FO#r7# BZbAS6 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/left.gif b/rubbos/app/apache2/icons/left.gif new file mode 100644 index 0000000000000000000000000000000000000000..279e6710d4961d7644ea2e3e39e6afd300147aa8 GIT binary patch literal 172 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz@**Nzw-3iM{+%$5nXSNI_AHs_0#Z5ammWC>ec*qNb!1QNo>>3 NI{94w6cGjnYXFzvI#mDw literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/left.png b/rubbos/app/apache2/icons/left.png new file mode 100644 index 0000000000000000000000000000000000000000..fa19fd66f065175f76e7e7b2466623e0bb68f5c1 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$nr;B3<$Ms|mRz^09nOthqn@$)QNV2MJ zKJY|KK$1;u@qrXEA<0%1?m*6~qOB=XM^aYk8dNj380+kQ{{QP!pb23mt`Q~4`MJ5N zc_j=X8JWcjiA5y}Kq@m&p(G@q literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/link.gif b/rubbos/app/apache2/icons/link.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5b6889a76d72a1f052d2885a725e7065344ee9b GIT binary patch literal 249 zcmZ?wbhEHb6k!l!IK;s49|(+%&;0*CbLPx61_oneV+Jr#{O1>vky)&eSX80_q%!jq zN-|Ov3QCi5GLscj@^ce2^Yj$FQ_Fx79;N9Ssl_@9*&tqqLuzJ;UUGh}jzVy1K}l+E zQfiTcp{1oMgW^vXMg|5Z1|5+3Aln(3b0T)_`4k}HuzIfQzD(=$g4aWpcJy9n?OYMK z<3neVTdwpcAKpI=-d5i4k8cuSl8s+i>=HJ`A>=Y=gWs~oHDDMmIS(lC zv_0gHstzk?TBGnKXCbqQqkF-BL89s~?`{sP!B__UCuDe?|jZe95(yN|2g%{GN=FLcZ2ed7$#5JNM zIX^cyHLrvrBqOs}A+e}L0Z3)$DU@WSDio9^FVdQ&MBb@05+UzQUCw| literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/movie.gif b/rubbos/app/apache2/icons/movie.gif new file mode 100644 index 0000000000000000000000000000000000000000..003518377414735b97dd78c435daa795c9136526 GIT binary patch literal 243 zcmZ?wbhEHb6k!l!IK;s4|Ns9pKy>EJ%$YOO($b8LjTyi|@tVo`|#kjl(c zD9K1wC@4+J$xK#A$0Aq je4J*Rr#@1aJXdjR@wJsoZ!aBYW^HV0ZfO+YWUvMRZ1!36 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/movie.png b/rubbos/app/apache2/icons/movie.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9c9e4d59f1f4396c1e629556e1c1ba28bfdc32 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DOS(GiPSboSBxE zW^8N>lmUXD2QT>oDW;Mjzu^B2Pq!O*0eOr`-tI089jvk*K#rxSi(?4K^<3c1XTSjlmH^f-Tba&@@U}8JGNjHlc`5Sf ziY3sHuoBmZlH~l{+|;}hhLDWRVui$_5(OZYnWs>ak*ZKonv|27tdNqQo0yrWr{JAh z29)q9P0vUz)=|g?@iH7zGfVVnwEWgKL=<7gQu&X%Q~lo FCIEG3SL^@) literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/p.gif b/rubbos/app/apache2/icons/p.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b917b4e91e8004d40241f2c031016f3cb414caa GIT binary patch literal 237 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf22^PEdd^F&3SUp#HU#9hWLHC{`p^eh6ea~4tRaf(| z_%3JAe*U`SyKG~C!;gtpQxXFgX({TuJQm*75*apCqqytJp{nC4Q*X#X Y_^R}pPJ1}};XQE`%{%V$b23;10Di_)fB*mh literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/p.png b/rubbos/app/apache2/icons/p.png new file mode 100644 index 0000000000000000000000000000000000000000..99bca2c851a34635d8afcd47ab4aaec47c96b110 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4vky)&eSX80_q%!jq zN-|Ov3QCi5GLscj@^ce2^Yj$FQ_Fx79;N9Ssl_@9*&tqqLuzJ;UUGh}jzVy1K}l+E zQfiTcp{1oMgW^vXMg|5Z1|5+3Aln(3^CEWb`4k}HuzIfQzD(=$g4aWpcJy9n?OYMK z<3neVTdwpcAKpI=-eOD+8f(7P$v8QjjESn*)KFqotJLnbYDxf$LnDLk)v8Bb)9>m( q*HL9Yo3!quRNC&zr)@sV$^5d;vQo}swQXy+(HAuD>9yx%um%8r)mtS1 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/patch.png b/rubbos/app/apache2/icons/patch.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a7abd8fe554947b696d429578f99f5e2d46a45 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`ekd}7l|NogYXQnYQ z7#kY{Wq@FfhuJEal|aee8zjl2y8 zJT4cVExvfnJfQ8eXjuY-h^FMh-~9(v`M7NNR~02nFP$DLY97Hc`NZVJNy*Q{vTHNb znj)KGF*?!soGXI&f@V)Ng}zWVR1%gWxLek{4=A@8dtz4KPGfF#hSuoBmZlH~l{ z+|;}hhLDWRVui$_5(OZYnWs>ak*ZKonv|27tdNqQo0yrWr{JAh29)q9P0vUz)=|g? t@iH7zGfVVnwEWgKL=<7gQu&X%Q~loCID6zYN!AJ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pdf.gif b/rubbos/app/apache2/icons/pdf.gif new file mode 100644 index 0000000000000000000000000000000000000000..c88fd777c4b2a85b930eb4a6b68440c88536289a GIT binary patch literal 249 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2ITpM2d^F&3SUp#HpXaXk2Sl>&JZ}wU>twhgl(8#J z&4;IaU+5wAJaJ`3 kwKt!oQbM;s-=_PA@BRCyb&avi?yYTZ7J^Yx{G1Hd067U;U;qFB literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pdf.png b/rubbos/app/apache2/icons/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..dd478cc52e45b5476b215c245dcda6d2062fe393 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4qYm{ z#x)9j0T&s&_WVuH>RG6{^!saxo{l_I!GoN-s>)ki#C*yc171~3Jd@mW^wi9+FZ3U1 zT)o~Pp2#A1Y|Es}op;N1J8J$KUTfO>=F4O!|GYESQXVmTrLBQhg_XEQlqBcp=BDPA zFoa}e7Aqtcl_&tI%shpXj8uh!(xjZsWQCOc+{Da0Jq7R7GN6PNWsw3(zNW``#C@x7(8A5T-G@yGywqC3~iVI literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie0.gif b/rubbos/app/apache2/icons/pie0.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f7a0ae7a703000c365896477c32f9f1434d14ca GIT binary patch literal 188 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz+~Oizw-23{>3JXu0=Fn+uq4rbVj_b$!S{Jq*b>ox4e@+uPSrG fY~A@idsi_sTAZ5D!6YVVJJJ1GWyGRRCI)K&$B{!c literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie0.png b/rubbos/app/apache2/icons/pie0.png new file mode 100644 index 0000000000000000000000000000000000000000..0418fd5eef1527cef14e757220b522a000f9249f GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$Tr;B3<$Ms|mRz|itDL1qPW**!i;$db` z&}P(PXkgH4pGwBJm`?D?Sr`GI)qe9yhqZZVu3luoBmZlH~l{ z+|;}hhLDWRVui$_5(OZYnWs>ak*ZKonv|27tdNqQo0yrWr{JAh29)q9P0vUz)=|g? s@iH7zGfVVnwEWg53+&5)78&qol`;+07I2fCIA2c literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie1.gif b/rubbos/app/apache2/icons/pie1.gif new file mode 100644 index 0000000000000000000000000000000000000000..03aa6be71eb2efded05e937f1ad79549ca2d56bd GIT binary patch literal 198 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz~tJ~zw-23{>3JXu0=3z*v`4OaPFr@>FpEKG8&zNm_A7^cehR7 q{3odT-{ZSYE(_O7ykRZyxV`aZjoH-0n$0tdUlfJ#w+AvXSOWl+b4fP< literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie1.png b/rubbos/app/apache2/icons/pie1.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec6d610e12cc60f3c2e3061e447775ccd2b7681 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$dr;B3<$Ms|mRz|itDL1qPW-i<+;$fDt zmM4`X`9hS)DS?9vt{RBC82O}nBwR=cV4cL3Fp06Zhhb9i!W0Q+X5kYuY}AMC$n&g#HDJWxnU))5hcm_xw)x%B@7`MnZ*i;MI{PADl<=^BqLR!pfo8bGg%=e zKQ}QmPfx)+wG1fXQJS8STCAgx4dP`uq-K`r0gcd62u>|1NzF}4EmAPFv@|XI_I?h~ O1_n=8KbLh*2~7YfKUY@( literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie2.gif b/rubbos/app/apache2/icons/pie2.gif new file mode 100644 index 0000000000000000000000000000000000000000..b04c5e090868dbcea50043700d52179ba99e89a4 GIT binary patch literal 198 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz~tJ~zw-23{>3JXu0=3z*v`4OaPFtZ*%}klI+l54ZqwVk=`G`N qqqzCzcVC|^a=f79z@jnzl=39bRIB-cn#w!p?CVf&?+9dIum%8pzDGL% literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie2.png b/rubbos/app/apache2/icons/pie2.png new file mode 100644 index 0000000000000000000000000000000000000000..b74fc71958260d3d73181ccb3121f26e18a8584c GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$(r;B3<$Ms|mRz|itDL1qPW-i<+;$fDt zmM4`X`9hTFDFH^6vw+Q8uH>gTe~ HDWM4f*CACg literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie3.gif b/rubbos/app/apache2/icons/pie3.gif new file mode 100644 index 0000000000000000000000000000000000000000..4db9d023eda78f499c5e5efb7d6739d0d450652d GIT binary patch literal 191 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz+~6czw-23{>3JXu0=3z*v`4OaPFtZ*%}klI+l54ZqwVk=`G`N iqqzCzcW*N`uLwVHCM7ial+@(%Il4wxJnexD4AuaG3PW-L literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie3.png b/rubbos/app/apache2/icons/pie3.png new file mode 100644 index 0000000000000000000000000000000000000000..cad281a228053840f63b0c283064be9c44eb85ba GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$#r;B3<$Ms|mRz|itDL1qPW-i<+;$fDt zmM4`X`9hTFDFH^6-Xz~s==zw-23{>3JXu0=3z*v`4OaPFtZ*%}klI+l54ZqwVk=`G`N kqqzCzv6IghDLmwE@Ojtg`DD^c7sH|;f6tbO23!o*02@O^$p8QV literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie4.png b/rubbos/app/apache2/icons/pie4.png new file mode 100644 index 0000000000000000000000000000000000000000..e6d01d2d01bdf41abe184915a573a6c275785bf7 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc${r;B3<$Ms|mRz|itDL1qPW-i<+;$fDt zmM4`X`9hTFDFH^6GaR^l2_lANEL zo0?a`5R#EutdLk#q5z~a^At)lQWXkHlX5bX6;kqZ6EpMl6ueW*fD#_1=^3fTIttk! tUWP+zW{Doq2pxss)Pj=K+@#bZ1w%_q)3R^x=KyVB@O1TaS?83{1OSu$Q1$=- literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie5.gif b/rubbos/app/apache2/icons/pie5.gif new file mode 100644 index 0000000000000000000000000000000000000000..57aee93f0707a6fea58637c351c4ac1dae6459cf GIT binary patch literal 189 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz+}_Yzw-23{>3JXu0=3z*v`4OaPFtZ*%}klI+l54ZqwVk=`G`N gqqzCzdnff4?UOy9X2YesW54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$lr;B3<$Mw=P8+jWXc$g1#ObXo8zgS;W zFn9xt@{$9=`*dqtTe?^0u+RCiHRF6v<@4?p9!hOB)7szkZ<#G?eb*;?$u@nLP{co`0-Xz+~Cezw-23{>3JXu0=3z*v`4OaPFtZ*%}klI+l54ZqwVk=`G`N dBfa+_^}iWi*Dq8}v{CBqS-80Up#c|zH2^QW54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$pr;B3<$Ms|mRz|itDL1qPW-i<+;$fDt zmM4`X`9hTFDFH^6b#r4pxiY|r$Ajr?zl>|EmIi!g{2!%1 z@qK}fJr>mdK II;Vst02x_Vd;kCd literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie7.gif b/rubbos/app/apache2/icons/pie7.gif new file mode 100644 index 0000000000000000000000000000000000000000..8661337f067f9933eb0ef9bb4ccd77dd8bdb0b10 GIT binary patch literal 185 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz+}3JXu0=3z*v`4OaPFkWM->GJsune#*ygc&t5eqP cin@0;&wnp$nZ|PQtB_G$pA6d$4F(2l04BFX#Q*>R literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie7.png b/rubbos/app/apache2/icons/pie7.png new file mode 100644 index 0000000000000000000000000000000000000000..242957ea6823db7e14ce8103eb6682a36e2b9e0b GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$Vr;B3<$Mw=P8+i{H@Gv``JzTrQNtk8c zA@3dj$_fvsEM%B|PCR^HW%_=$+uW+^aocAsh`#q=Q_U^M4J!T1Vs20PHR0Efgt!0M zf5sZSzHN;&2bvjH;u=wsoS&PUnpeUQl95@gkXTfr0HiYW6iPBu6$(m|ax#+@Qu1>X zGxPKmyi?175+0@L8L7oO3fUlDhC^y*i5}1h9fjc3f|AtSq|_n>LrY83vTyI_0BvCK MboFyt=akR{0NW{H4*&oF literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie8.gif b/rubbos/app/apache2/icons/pie8.gif new file mode 100644 index 0000000000000000000000000000000000000000..59ddb34ce0f42f40fc010aa2bcf059d891fccadf GIT binary patch literal 173 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk?9f#N^Ekc`Y?g~Xx~1t67~r%;lSs!&jxl#`jP zkdmL9n3<=i;GJ3ql<+7`&qyuSQOE}IG8|GfOZ1ZSb9EGgQwvH`bCXhw6bvmbO&Jt_ zvM@3*Ff!-Xz@*dDzw-23{>3JXu4R1A-L;ud>%okkhl!IyUaie(+qXfR+ave> Q)*p2%lMkH{VP&ue01>A?od5s; literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/pie8.png b/rubbos/app/apache2/icons/pie8.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f2d0d58b26475b86aea4c3f13cfe778ae0e310 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$Tr;B3<$Ms|mRz|itDL1qPW^T>WoDj1$ zD^5{8hB%wmPaq7nrlm6@kdl98%VP@0sJnXHhKpPQJOr>EeZS_YKxC{52uE!I)U u2Jtc+QZq~RfJW#j1g931q~<227AY87TAG%9dp`$g1B0ilpUXO@geCwmHB*oP literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/portal.gif b/rubbos/app/apache2/icons/portal.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e6e506e004caddde40da13470f5b566c4ebd3e4 GIT binary patch literal 254 zcmZ?wbhEHb6k!l!IK;s49|+DEp8*m;Fw=PE%$df<#taM$ivRpVGBS%55{pU{fK+Cl zLP!lN`jBehsZAsfWYa7fK8(M!(H)lmpeEhtIN zO-e0NFtoHZWl;Rd!pOkD#GnH-odIM!19M@xy5abNeolJ^dKQ(i&E!y0oZhYAIz1P__bl`CXaRbu>JEQyKU^X{_%FW>4o vqif4-qpv>D{n{&Y@SNJoYRRp?C?q>{ z(=wSm`Cg}T-=EdE&em-+r>>TN-?sFgix%^Z*40I3sLprU_JJ{fy4kCT>5G$q_Jx(W zMwBGy=jNv7l`w>4WELwV7L_Ofsmwful8jV^g3_d%%w&a>{M^LMJUs>P)H0xiM`?OS zYO#(&Hi(zukeXSd2Q)%QAvm?5BsDiFwMfCx($ci-+xs~{8yGxY{an^LB{Ts5TK9Cy literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/ps.gif b/rubbos/app/apache2/icons/ps.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f565bc1db7ebc72bc372381239f378780df5487 GIT binary patch literal 244 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2=@z^8d^F&3SUp#HpXaXk2Sl>&JZ}wU>twhgl(8#J z&4;IaU+5wAJ;6lrj$UyQTKrXC=eAut`Q_@GqDYq{i?eZ? fuRb@A(YSxU1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e46TGNoH(jrZ0oE4pl1vr0?PWvPm!=#_p|@s5NZbvky)&eSX80_ zq%!jqN-|Ov3QCi5GLscj@^ce2^Yj$FQ_Fx79;N9Ssl_@9*&tqqLuzJ;UUGh}jzVy1 zK}l+EQfiTcp{1oMgW^vXMg|5(1|6X33?SPXnCmij?fGaR;jntH+P+NdaQBLW*w$93 zLXW4dLa(j`>C2pYt0=I?YR#HS>z@C9sN+1ND~Ts;Qmd-42b05628YQhH#GTgelWA? zX*ztBpW*3t11}(tG0EHAg`tC0)&t1N_jGX#;kfR4%9^i1 zL7?T~$_4kV*IZK*i(}|d$f#Ahp{4fjtEgDvD*bvk#e7AjGZpD){8=Wh_bL|S`duU- z=bCx*r=#TE5>4HHxl`tHr(~vPcb%G%wCtgXajv#TjCswT-KV&x9`_Gvi`y>jaq0!5 zkG9H(wp1ZYpw(d|t`Q~4`MJ5Nc_j=X8JWcjiA5y}Kq@m&p(G-Xz@**Nzw)%~qgf4szES6oR(^g_8+4;}QR+O8Rat3Y55;}UDY3n~ OBkprQ{}oXN25SJW54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc$NWsw3(zNW``#C@x7(8A5T-G@yGywp`=uVFS literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/screw1.gif b/rubbos/app/apache2/icons/screw1.gif new file mode 100644 index 0000000000000000000000000000000000000000..af6ba2b097bda90209dd1d3d392fccdb7bcfa629 GIT binary patch literal 258 zcmZ?wbhEHb6k!l!IK;s4|Ns9pKy>EJ%$YNdjg1*#K=GenNJeI{LSj*g0+7ngQz*$u zRVXM;%E?StNXgGl%*@kM@J=lQN_do}XQUSEC}e|p84jtLC3?yExjG8LsRbpexk;%- z3Wk=JrVNTdSr{1@7#VaxR)B10U@n!|b?2W!n^SiVYewRG7AFm!*eRWl9lSzTtP=4S z(YLfe5`E@s3_lC21cdz8zO;fh?wyAiv=M3{STkcma8gN#5=*3>~bp9zafsr;B3<$Mw*2hFnJ!1X>@q zpO!nI^w%g(;lq~c8NX6a-ubU3D9ikFb^ZfU=Kn3`q3Ys0E?0CcIe66bf#nZ=pJQ|P zSaIuLEpzSf$zOZCePyueo{?ItqmT{aWjLf}mgoVE&`}6ZEhtINO-e0NFtoHZE&KL<4$uY$ MPgg&ebxsLQ05A7?c>n+a literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/screw2.gif b/rubbos/app/apache2/icons/screw2.gif new file mode 100644 index 0000000000000000000000000000000000000000..06dccb3e44c66d18be8e7c0a3da2413d3644b3c8 GIT binary patch literal 263 zcmZ?wbhEHb6k!l!IK;s4|Ns9pKy>EJ%$YNdjg1*#K=GenNJeI{LSj*g0+7ngQz*$u zRVXM;%E?StNXgGl%*@kM@J=lQN_do}XQUSEC}e|p84jtLC3?yExjG8LsRbpexk;%- z3Wk=JrVNTdSr{1@7#VaxR)B10V6O7mwdbROfWzv!D*H06&kJ4;Roc;eowd{9p;(CH zi7%4jOn=^)>HKMOOmxr@^Rrv9(Zj|os#X5-Q4yu|;5S>$t1~+pUK<~i5YtS$=vU@u yeU(L%F~&2zjqBi^) literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/screw2.png b/rubbos/app/apache2/icons/screw2.png new file mode 100644 index 0000000000000000000000000000000000000000..3f4c5a28527ff1a5ae5c6c23e26e415d503508bf GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DOS(GiPSboM~)q z3>1cdz8zO;fh?wyAiv=M3{STkcma8gN#5=*3>~bp9zaf|r;B3<$930phJ1$=cv=&+ zo0tolPvw@WOy4{4Odr$xf8i^Ig+Kbwzn^kxxAIaK`%O*}OOg$BZsqi3Y`j*r@uD1~ z#N%V{^@4hOBfErkn4Z4~T4fw|W2*k80O^-%1}fI<^{sPa?JGZtEIldv{BUnPzwP3# zbbqxom*iJ9D6(z2IC%-s5n&~+5hcm_xw)x%B@7`MnZ*i;MI{PADl<=^BqLR!pfo8b zGg%=eKQ}QmPfx)+wG1fXQJS8STCAgx4dP`uq-K`r0gcd62u>|1NzF}4EmAPFv@|XI S_I?h~1_n=8KbLh*2~7YVFnWdn literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/script.gif b/rubbos/app/apache2/icons/script.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8a853bc5828cf534c4c46a0efbf4b1d7d3c52fc GIT binary patch literal 242 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2sTRBTd^F&3SUp#HU#9hW!Rw()J3?6|OcFmLXwbvQ z;yXWN*R#T&@77%j8VV0WP6%GqkhE;|xp+C~4`X#h&eoZ4tM=c%ZhDQk{(Ri#ES<}4 d7Yj^x^9CF~_};qCSmD=yXLEt#WPVNtYXEP%SK9yp literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/script.png b/rubbos/app/apache2/icons/script.png new file mode 100644 index 0000000000000000000000000000000000000000..8064d073d0edccac77dff8d3b7ced395aa02a1aa GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4-Z z9K{$$&W#N6-{LP<1`52JTiMIZog^=2oP0=8>!{Y!#jDoMGu$n?t0U#>!Kno$skuq1 aMGA(NmZoLj-p>Krz~JfX=d#Wzp$P!oo?)c` literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/back.gif b/rubbos/app/apache2/icons/small/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..e331454726bbc19cdcdd3867ffcae217a0fde8f6 GIT binary patch literal 129 zcmZ?wbhEHb6krfwSoEJkQBl#*&@d`0s->l+r>Ez@fddR+p!k!8k%57gK?lSGsbyex zi`aFC_kd@D&y?=4?(Pes3MEI<1Y!g8G%~jxUU1@6RIiH;$6BEo^BN2cqBwk-7hXtI c(vnrUxMBN-xh<~83yn{BaU>KdGcs5M0L&38p8x;= literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/back.png b/rubbos/app/apache2/icons/small/back.png new file mode 100644 index 0000000000000000000000000000000000000000..e339315a9e8fe07293e14f20fb615cddd13c89b6 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z@)A5<977~7_ntq adiFKl^)qAtbj}0X#o+1c=d#Wzp$Pz9wLIwn literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/binary.gif b/rubbos/app/apache2/icons/small/binary.gif new file mode 100644 index 0000000000000000000000000000000000000000..995f79b9b10d5a49fd6e6d9f641d3bb65cfffa02 GIT binary patch literal 134 zcmV;10D1pMNk%w1VGsZi0HXf@|Ns9vIXP=4 o#kZK`47H){6`LuGH;j-%Jne!zs_mH6LPMOYA{Q)|S&IY!JF>VnX#fBK literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/binary.png b/rubbos/app/apache2/icons/small/binary.png new file mode 100644 index 0000000000000000000000000000000000000000..b836c7c04e7e18480e6a18f99602587e8b8d6b24 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z^1?k`977~7_nte*d%%E$`M{d1Gxu;g8!~1av~_b#&|3dXxP(j0d;J=@B?o61 zPUns=O4znt>W2%LNM46~AcMHT5`F>B9D#~I{~StXUhw^UKO-l=QC+{5aZ2?ezucYc Rdx2Ikc)I$ztaD0e0szpRHdp`v literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/binhex.gif b/rubbos/app/apache2/icons/small/binhex.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d54a5458e6edfde1f60b8a35d549e3af1552ffd GIT binary patch literal 131 zcmV-}0DS*PNk%w1VGsZi0HXf@|Ns9vIXP=NV?p<;}t+_F|n1vIhdG61y)fInX+{xz%o-MD*`-pgKX5xCVZ_5 lPsPf~hJ=DqCWLWTOyuOYZ1$d>Ba9hs3zyD%`U z>Qy!Z@?t$*977~7m-ZdxJ)pqD9I0)bD#|~Va}Qhc4qgGriLcn5j^A8#bZVHm$O5+; zfd`BhiFqErq>#Rv=V@i0hoBwfJ$03r+%vk(WbR8_FlMDlZ}E4H=&gTzi=!g-&lg7F XnL8tk7PWE%En@I=^>bP0l+XkK%~m)) literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/blank.gif b/rubbos/app/apache2/icons/small/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..606787a8399e939a2691a76e3edb3897037b2daa GIT binary patch literal 55 zcmZ?wbhEHb6krfwX!y@?;J^U}1_s5SEQ~;kK?g*DWEhzETKZR>e#^gj&X!xzyD%`U t>Qy!Z^7uVn977~7CtEbINw{reU|{Duz^KT3KLRMl;OXk;vd$@?2>{}078w8l literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/broken.gif b/rubbos/app/apache2/icons/small/broken.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bcc57f25c59044e6af6f09d0fc46dbd0bdafd66 GIT binary patch literal 139 zcmV;60CfLHNk%w1VGsZi0HXf@|Ns9vIXP=ZAVnu4@CeN-d>06V1HFU9}> literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/broken.png b/rubbos/app/apache2/icons/small/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6b2db8c6389f9dc1cd3232df39db91bf2db032 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z@{&DW977~7$DU*4Wl-c`4alDOGW_R44+q|)f{udOM&=KE4=(jzqiK;4n0StT z(Np%#pR*KH9ybLX<$cI55*NFmQG`9_z`TW;4FWUI^PZh_GyUDdeFtya-;UnncVzcA e$IecvUyN4n`zQA&mnQ1H|FoGC5AOfV8f!UQ~ z*PVX`hZb>6bP*BCs6S}H;Vd99C5S^ubKfnY9r=Gl6W4NkFT36}`PFx$95FVrz#Gvo Z(|nHUXljWp;?_Q1GLa!b)18UI8UVh_DDeOQ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/burst.png b/rubbos/app/apache2/icons/small/burst.png new file mode 100644 index 0000000000000000000000000000000000000000..1155c67651bf00792c0148b9161085609738a6f1 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUJ#gTFrlLTUm&E_)mUHGT z_3{GA0Kxgaf$M-2V@Z%-FoVOh8)+a;lDE4HTVmRdS|BId)5S4_<9c$!0rm*V7zLi? z0)fXE1e|Z22w*wE5fo%*X2xXH($jcA;6wq7VUK8om*bX+9L&xJ9TQ(2I52@FB%4Ph xp@7w>#es)yp~~X`1LZ4$7Z{URy)`;m7;G2uzA^OWxDB+1!PC{xWt~$(69CLzJ~{vZ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/comp1.gif b/rubbos/app/apache2/icons/small/comp1.gif new file mode 100644 index 0000000000000000000000000000000000000000..712f36afdb27370918ce1eb008be6073aba769e6 GIT binary patch literal 130 zcmV-|0Db>QNk%w1VGsZi0HXf@|NsA#l$5~0z$qaZT4Q55rOtD`-T(jqA^8LW00062 zEC2ui01yBW0009=D7xJKFt$LdB@lxJ4RqIg#Z8m literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/comp1.png b/rubbos/app/apache2/icons/small/comp1.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc3d0ec062b13b6afab59d34bb5ac2befae7c37 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~^}lqpjV95|qB|3Aa^Q@oBqE@P6ny9>KmV#jMBC*IS=F@)oKazGOk zn+}hlxVX5%Vb6eo6C6hh1WO9FSd6b+YEtOgV6xC@g%qQJv*?PGM@3I~`111d`j!SI zd2q8bDmaG*uxh9;IikR16fda}#1Zr+V#SdMc|0u7{Ja>ZGDw~@`fXhdw2Hyg)z4*} HQ$iB}>>xrj literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/comp2.gif b/rubbos/app/apache2/icons/small/comp2.gif new file mode 100644 index 0000000000000000000000000000000000000000..7759eb11f95a4bb3803ca55eae6c3ff8fd100b96 GIT binary patch literal 131 zcmV-}0DS*PNk%w1VGsZi0HXf@|Ns9O7#M_vgsrWuz`(##T3U0)=KufzA^8LW000C4 zEC2ui01yBW0009>NV?qqFg8)DEpK4KIl+xqbkqNgD~s^aKww; lWe8G`jyjbQNm3FtI?)idj0B1>qD63^77l^1cw9^X06XYXE$jdQ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/comp2.png b/rubbos/app/apache2/icons/small/comp2.png new file mode 100644 index 0000000000000000000000000000000000000000..8243345e4b86c73b0e7c376cc969b48b62981ff7 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~^JgoH#(OUv4|YY!Ya z5EK0ArH3y9>KmV#jMBC&tsoF@)oKazP^# zn-0&_3l{Q9noG{?xWz9|wU}C&1 zpy4cf!XVU))oUe#tHU#ECf63ntmdv5i9@W83P)HO^mfRve6(x|$WjJRS3j3^P6^H7 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/compressed.gif b/rubbos/app/apache2/icons/small/compressed.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3b156072ac0b62c0248694d2d05791379e34927 GIT binary patch literal 128 zcmZ?wbhEHb6krfwSoELa|NsBl+1YdE%sFu2!277EYykl;1`tsE$->CMz|5cn;(*jL zFuPjpx+AC8q?t7P$~sH6D{%rMQ(HBiPS!|-)_OUXyj2ijRTh5h@?e)dzw#N~vZiai c6)G%M%rgTM8yr{}o0lx>>ev_S%EVv|0H!@EhyVZp literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/compressed.png b/rubbos/app/apache2/icons/small/compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..c7856f736268627016b0f0bb84dec16577e94f8c GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~@ec6RohIdcviIPg9y zDqBFn3n<0FVCC3!3`nt*1o;I6)i5|{t^5MyGbVYvyReHTcDx31qC8z3LpZJ{8?-U8 zB_}&;9By!wJeJU8G()mQk;m|;7%PM|whF~X2*V%{U5E|8iMaEOD$ U0n_;{NXL`HRB1Y&&_@CQJD2_|n*aa+ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/continued.png b/rubbos/app/apache2/icons/small/continued.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a7c09cf86aeb11efe4c1b72e44f19ad11a1e60 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z^87qq977~7ukCXbJmA2?w6Rrfje-_e(&LmZA9C(bXV00zDSRfsKz+gElp{F@ ze3hbaPG|lt$>%?#IwvB`A|#R5(oleNTZrz|s8!kX>z=c!N3T}P49{2#G?~HE)z4*} HQ$iB}3R*Iz literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/dir.gif b/rubbos/app/apache2/icons/small/dir.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b37b099177d12b3f6ee7056c03d992b09e7fee1 GIT binary patch literal 132 zcmZ?wbhEHb6krfwSoELa|Gl;U@2op;;J}Urwc*~@+N!b)V4(Pug^_`Qi9rX%1F2&GNR2Uen0VOOkQ~&?~ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/dir.png b/rubbos/app/apache2/icons/small/dir.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd6256bdbb781ad96d26b02870c8dabb1622f5f GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZJ#gT_|2ymc-&?z5L2bCV zwYI7(P$v7ROxnB?v5!j_n}qZY{V@N{tuskoJUY@=v{0SD`W_*6!7548*XJ9zi% zGyU#Q;FuCu+Mq0HYu{RTEKU4Vh0?||QA_tvUAX_^>Py$klAL*~Lv|O7nuyn2n47&`btTS3j3^P6t>yewCRwrrVbz0%P@q&p!pQbR!HK;_&hjwjs0n_k|_ba-tRk+K#r}ai(^Q|t>gp+CIe|{=?xYPl4^Q-=h_Z2^6;EG zc1*3$Xu1{p00i_>zopr E0QN;PK>z>% literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/doc.gif b/rubbos/app/apache2/icons/small/doc.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fcf18db2a89a540716c06e734cc564cdf08375a GIT binary patch literal 191 zcmZ?wbhEHb6krfw_{0DLmX?;;+1WikJ?GAyd;a|S|NsAif{H&`7#SGY85IA?BvmT- zCKi=s=IMDCC8p-47CHDPXXpj{dFr{OGU$Lz0GV|Nmr2Y%6}#@Zv(3<4F35AuIl!xvcWvVE3&b1Cxh RG|&8^tTFrSX;&r&YXB6~L|Om< literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/doc.png b/rubbos/app/apache2/icons/small/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..994726817c6dd07b7d6caa9636a4feb0a988c144 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6n3BBRT^Rni_n+Ahj7wM%5HxH}lt zq~v(6pNN|CKedf{&z2}#g_AaE>)SZqNKVt^<2+GSy5rn|P1Yw8|IBo}9u+*tw=DJ) z=MwQo0Y0FWDkZKFCCT}@xv6<23`vy=zKKO8nR$BNMTx1osYMRH$r*aVex7zyD%`U z>Qy!Z@*+K5977~7$My&EIv8>=Zw&R_8Wb4Zu#7$WM)Dp0lY$yIZvD`DBjV-D!7!Ua z?xBoRutA7L=#-N>zvgXl5!z{FQs{8(lj*c_Ucu9yW}E7Z?=JoNv^UoN_XhquQH{FB TXI6d!TEgJz>gTe~DWM4fT+})= literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/generic.gif b/rubbos/app/apache2/icons/small/generic.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8da6ff92c3103d440aa34c842efce51ddd2d55c GIT binary patch literal 116 zcmV-)0E_=eNk%w1VGsZi0HXf@|Ns9vIXP=zyD%`U z>Qy!Z@*F%}977~7CtEbINhI{h%{Z|0e?q~#O8!{~>Q`{YJh)@op*Q0|y|;pc;E(zT t4rZ$k{D1y}>Hka3f(7c*YzOpM85ZbWUQl7!y&7m1gQu&X%Q~loCII;;F&zK^ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/generic2.gif b/rubbos/app/apache2/icons/small/generic2.gif new file mode 100644 index 0000000000000000000000000000000000000000..992f13331bba69df688a1c52eee270449974f51d GIT binary patch literal 127 zcmZ?wbhEHb6krfwSoELa|NsBl+1YdE%sFu2!277EYykl;1`tsE$->CMz|5cn;(*jL zFuPc2E&As#5ERnD*ARJtfp=NqymCk7r`R;qn=&`p03mVwz!V%Hr- z1E&XvCVaS5R(RiAy>mgUql=e;(y~pho8&ujXu&V@o)YW0l^; H!e9*mJvSwK literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/generic3.png b/rubbos/app/apache2/icons/small/generic3.png new file mode 100644 index 0000000000000000000000000000000000000000..3874aa3eddee0ee3ae1dfae10c1d6541828e1904 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU&Cbp~aNxlEsHkiK0WY8+ z3{1bE*bihgl?3?(|7Uo*-2f!XnB?v5!ulis<#8a#*we)^gyVX$KnoL_szL&bVb7E) zQ$!PZCJ3}FWJuK5xx+zH%b;x%SI)78&qol`;+ E05sk&P5=M^ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/image.gif b/rubbos/app/apache2/icons/small/image.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc3d95ced763c4a905d8ceee4b2550e2131fd42f GIT binary patch literal 126 zcmZ?wbhEHb6krfwSoELa|NsBl+1WikJqHdPcpnwjl5F_?nk54RgW^vXMg|6E1|1+9 zs8RsPcDC4c=iE~pb*_oUQ#(Fu98;_~oS3sjVNNUao_t9rW#;4UEG%bvrx?u3by&?> e&3OOfw2*gItqmas!g_N~w>q49yG@Lf!5RRR*e}ok literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/image.png b/rubbos/app/apache2/icons/small/image.png new file mode 100644 index 0000000000000000000000000000000000000000..50fbb847cb5727548fb50d41db39eb7850c205ba GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~@ec6N48PtSn^2i`|T zwImz9zh()P?DW*T45U~}g8YJkY8V`}R(=8U8I!!-UD(AEJ6;1h-kvUwAsp9}4ceI4 z1QMfoQdjJ9mR$HWz%4?sC2^h77X z?dh2k6ch!N6x~&(4y2e$g8YL2Gd$gH;05F{CV9KNu!|*jyasZDJzX3_IIbrPv@o#= z2y!HG7#J9I9g^T_G-#9PSh(a|z%;&8gH4T+FIVy;xXpB^Vwj3D(p|kciQwwv=*SD=E*UavEfBiRQ*3l=rYRr9(D-;_T7S<>HSZIIXy9bWcQd>9NLBk23BTCV4IS`26S=t)(iTdBwL$+N}S-D%%k z#wa;mSK3`9k(pCGM`QUUra7VZmHVu_rmbdA-1QFo2l NCU4lW(}RJ*8UX)gL+=0p literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/key.png b/rubbos/app/apache2/icons/small/key.png new file mode 100644 index 0000000000000000000000000000000000000000..44760746b98c7aba84b5ce03ba86ff6890fcc84a GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6n3BBRT^Rni_n+Ah|?^VD-m%}_r25~!ZR)78&qol`;+ E0Eodxg8%>k literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/movie.gif b/rubbos/app/apache2/icons/small/movie.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b4a42e7a0eec8e4508903e9bd49cd966e966e21 GIT binary patch literal 134 zcmZ?wbhEHb6krfwSoEL4($X?JJG-Z+=fHsj=gysb{`@%u7%2W^VPs%nX3zogKx!G7 zy*+mMeAYkV+1#MabHG}Fse$nzdz^H8ru>rzC6{fBxi)IB^anlsy)r`O#>SQkwF`?k i-+B_~9;vx~3vcGG7n{Cov&^1%&M%y6veyh225SHs|1u2# literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/movie.png b/rubbos/app/apache2/icons/small/movie.png new file mode 100644 index 0000000000000000000000000000000000000000..87adc23cf6724585a4ce30a8140d377103ac2b0b GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z^1M7<977~7CtI{Lusbv;N;6g|FtO_>E?9nCNGD+?Z^}0Y)y5@qM?_dLQ2fn#$nm>gTe~DWM4f DT~{!$ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/patch.gif b/rubbos/app/apache2/icons/small/patch.gif new file mode 100644 index 0000000000000000000000000000000000000000..100484e59822e79e22ab469fecd4a39052a66875 GIT binary patch literal 182 zcmZ?wbhEHb6krfw_{6|qX=$0Ao!!&ZbMD-^=g*)2|Nox>3>1H|FfuT(F)03%Nvc%v zO)M(O%+vEON=(g7EpqTp&d>|?^VD-mWzYes2AOpTmr2ad8N2S7sdgD9bMoA>*d;jA zG*oa~#%+fN-d&UbmoOzWDQ=H%vd&w!B)VFLkdaBw?!43!up=C9V-A z$@#gtsd*&~NtFt|iA5!ud3xSOiK)4%MGn5n8G6Bfo_a2+8Oldr0@X8ky85}Sb4q9e E0Blc7X#fBK literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/ps.gif b/rubbos/app/apache2/icons/small/ps.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa4bcfce30f5fb3f62e65f0c989ac15be60a49b9 GIT binary patch literal 184 zcmZ?wbhEHb6krfw_{0DLmX?;;+1WikJ?GAyd;a|S|NsAif{H&`7#SGY85IA?BvmT- zCKi=s=IMDCC8p-47CHDPXXpj{dFr{OGU$Lz0GV|Nmr2a76}#@ZALB7tB+7HkIql96D6GMaovr)0~p+w&0R?vcik1 Ky{BB67_0$$w?x1I literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/ps.png b/rubbos/app/apache2/icons/small/ps.png new file mode 100644 index 0000000000000000000000000000000000000000..23e42ad426d063d98c8a16613d843af5b46c14ef GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6n3BBRT^Rni_n+AhwvbYl(FVdQ&MBb@03M-EWdHyG literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/rainbow.gif b/rubbos/app/apache2/icons/small/rainbow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8216b89bade87b795a7345329da487735f3e07eb GIT binary patch literal 3811 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 YQf)BD<7dvMP-NGBf&PAQ3ILe=54mLULI3~& literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/rainbow.png b/rubbos/app/apache2/icons/small/rainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..16e63fa6fb985a6921b8a2f8f7c6785c993283a5 GIT binary patch literal 2427 zcmX9<2~<;88om(rMFANS5QR$7Xe}>V=m15^YJyk_NGq+9L@G8eWdM~VB25BBqaXp7 z3F1-&(P&###2VR>QgC8}G$0m4U<3t&EMZZ&5b`?rb>2JYzW;vz_x;oVW9wJNv$eAP*Ku+-G0D8g_08n&K2t5%J0-#WcgdqTg zzz{+Stq3R40f7EQGwAgPz#jrOglq&-U=aXC5Kthb05uU-O|;#Ocx)ZP0e_nV`|sLj%{1-l6Cxu z)k53C$$cCS!}oos6DbKEoaKjH&IVoBx|&snoBN3_3#&h`em3^0e1BI}AALpHkr06> zFjU+Yb|uZ#Z^MSEHT#x!)^_#u1lp96elD*PP9#0pep~@)`_-BYe)*bjU!_>^&tJTw zI5cD}E6CM6^&QAj1(~x;i)DK(WixA=QZ&C-F5v}4Fbmz;g%pZ6sda_LwO3%K+k8*1 z(Dk6mbvHZKto0+)%_oHCz1hA#V5>84o^m)XfK)%W3foraA}e%%S-m^m^%l(swAzC` z=6rrldAbSv_xr^%{;NtZb0$YoAI@CaxJ*GwcA$8hUXu#rY(T|Te!9d_MRjGb{yVEX zse+$Ao)Tg5BurJ*;JIPG-eUEW$l09ct4~}gyD%HF*=q4B_SrfPJ8Zn=MU%?Y$Ewv7 z9LyKSDLiR zxvkR~&06-q1G|~Rk}Z*>gL{KonQrHlXRRs!VQQ1?Xe&`V)6Hm52j;%}A%*RXnqCHG z@gqt}prLqpE8vm4A&{bWkp?n`Udl$vjTSw6@)CfxgxBF#O;zpx|5 zJ=>F6x>kDax;@RAzQdh+w+|yWL;uboGRAy@q4tuqAxcT`Ahu^ zyIE?cME3DuHJS zK9(EeNaeNT$1J08YwPLEKfWt}JE$z$G~EdRnoq7C?IyLYm&KaAp+ zy6REPnO>_ZQbK;s@SlAymXubnB<@UV-}tN{U+p!4t&;xI^d?oyGUZ1YBZuPF)=b(6 z=0o3!7bAy@r^uLet6*xHy6(+{kYqPpe6ubfj(dC&Up38Xc_*v3EU2oxMn3%To^v0uB36Dj&#&opRC~R_)=3rm zlXz3MY`9om;UI|OFr5;(h6C>Ai{8uoS#o{3(%Ba?f5!THE~4*Jh5u9AgI z%f-#PHwLkcnCta;HI)}&H%0zL&UN<5jI}g+*C=&CPR5~<&`kvjMQ-V$*kJoE=^2W5 zGT@ZOwicE`>FXvqFU#tI(M2-7D71l~^~}j8@s5KII_#-s@l#>^~vINDQJT?a6c5*YOsQ4=R5!b7!S;2W zmUVNyVkqwkH=u~AH4a@h=rTfKzV+4iFR$wt3=(0nvE^;wFOO8gZ!+f`=kw3dKYzxG zuT~zIH&)(MHs4TM3D%x(-0?hk-4Wbr03Te)ukVT^8N~~!h6J{UeSkq?Y#DC1AH{~M z?@G`9s>U-GgSYVT(^m=2^n$J4YXr;mmjou-$lpBwUL$)?99upZW;p-RzZEtnT) zqm%xqqGzuCt~R?FUp4Fa*lPfLPcOW9P!NYFi_&ejzG(bFf4D)E)i*_CdtC7s-{UKR zqd_8aM0NQ5z|A%2mOrleadv2p)PdBSM$^aNIHlyq?$vLjRy z;xx6@jbY)@h01~_=>Ad18b|w)Wd2cb#zNIy>FIkDUV6OAATdQNk%w1VGsZi0HXf@|NsAUb92DJz}B3c_ZS$h0022kN&o-=A^8LW00062 zEC2ui01yBW0009=D7xJKa0M|0iNY9L?>oRm4WtwVAYcqvtDHa_pF~g>Zy?Whj|;FJ k&6i_@dN;{osSB_y&_-ah8I>H<4WSc3QKFczSdah!J59YUXaE2J literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/sound.png b/rubbos/app/apache2/icons/small/sound.png new file mode 100644 index 0000000000000000000000000000000000000000..1bbc5825f5918b349c96317e10e074a28f52afc9 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~@eadGj10|&0nne$yj zVl4xMrI!~_GVHi@FOXs`3Gxg6|DWOdDPBh)modrP-GyB&vEwz6#8+N4>m~ ovJ&1pG$*oYbsk>huvL~}9FVdQ&MBb@0QToVY5)KL literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/sound2.gif b/rubbos/app/apache2/icons/small/sound2.gif new file mode 100644 index 0000000000000000000000000000000000000000..07706e07b86d25525e8e7fcb8cd2d8b10c235d49 GIT binary patch literal 119 zcmZ?wbhEHb6krfwSoEL4($X?JJG-Z+=fHsj=gysDfC0syEQ|~c%nUjp0gze-W*duL zK7aHX7^e#>G_TrlZjM+_!c@ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/sound2.png b/rubbos/app/apache2/icons/small/sound2.png new file mode 100644 index 0000000000000000000000000000000000000000..06a6c879c16becdd5fe03c62a7bcee6b0ba324e1 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z^1?h_977~7r}iHdWKiT_&h4IciOV(6F-u6)@m+<*rqc@~ryZ^Bd!rcDu*n!t;CEs%Gpc5 Q18rdNboFyt=akR{0MrmSl>h($ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/tar.gif b/rubbos/app/apache2/icons/small/tar.gif new file mode 100644 index 0000000000000000000000000000000000000000..59c3ffb9a5f0dcbcc0052a6dc8b428f4b033d316 GIT binary patch literal 132 zcmV-~0DJ#ONk%w1VGsZi0HXf@|Ns9vIXP=H^|M=26Efy0jDoCS8nDw3MpHX8$hcs!0R5&$~~!7=6l literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/tar.png b/rubbos/app/apache2/icons/small/tar.png new file mode 100644 index 0000000000000000000000000000000000000000..66ee8a2b095e9fb00ed73e69f9cb814259d1f1ba GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*B6H{m$P3;w5>zyD%`U z>Qy!Z@*+H4977~7xAt8WJz&7%x;9m9wZtiw{NA30T308{-^XA0ZYSeS!BuYD2aF@E z9BlYI``$6!*ng^^&qR5{%sp(HuCYeEL7D<;z<5S%P>S%fZDrUCEXNey i3D;T)3BKR#h$zyD%`U z>Qy!Z^87qq977~7FYOEDWl-Q?U7M=5N}!A7io&trfH|LD*BX>ro6Qo5(wpNXxS~+- z#xstqrKYasNqLEU3Qqov5_en8{T~KuzFBUeqv+#VW5sZD-?lAWduDY5O=j?P^>bP0 Hl+XkKe_=6y literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/transfer.gif b/rubbos/app/apache2/icons/small/transfer.gif new file mode 100644 index 0000000000000000000000000000000000000000..d460d3fffe6c7cf99f9928a6304bd6067fa6f03d GIT binary patch literal 124 zcmZ?wbhEHb6krfwSoELa|NsBl+1YdE%sFu2!26b#_fb*V0s;&S42nNl7#SFt8FYYb zph}<+v!lhXJ92tWnn|;-tg}?R5+@)rwN=wel2yVXs`a9jYseiJzdNRf|2w!nNYjwY cpMNxNV?p<;}t+_F|o}`C)Qk76hx+MVW0-gHlm8q0>wI1hP+I5AqX7Z lsY3_=D?$QFWeCnFftzz@X-zyD%`U z>Qy!Z^1?k`977~7x1PHwctC-JIpBJcT3Din+6k#1$6)TNPnT;7`43yJNxiawwL^4= zS;rLK1J|`WPKp$G8%|~^ST17EFmb!;?xfFba$ne_%nv+%?yBavbW`0g2Ct6eYYars R+y`30;OXk;vd$@?2>>PoIFtYY literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/small/uu.gif b/rubbos/app/apache2/icons/small/uu.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c793f8a7f98188fd983b21a7c89ecd79f0ef0fa GIT binary patch literal 125 zcmV-@0D}KVNk%w1VGsZi0HXf@|Ns9vIXP=@K f4p@7|h&zyD%`U z>Qy!Z@&Y|w977~7x1Kx5d%%E$*t3D$8qVP9 L>gTe~DWM4f`=2&l literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sound1.gif b/rubbos/app/apache2/icons/sound1.gif new file mode 100644 index 0000000000000000000000000000000000000000..8efb49f55d6a370df44ad6e3269f6f966ffe25f6 GIT binary patch literal 248 zcmZ?wbhEHb6k!l!IK;s49|(+%&;0*?=FFLyGiRnTFc=#fGcYhH{__jT$ShV!EGkg| zQki)QB^jv-1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz!(9+VBLGdRGBLf2ygAUMi29WIx%-I^d?))<_JM1*!l}uu2Kl{c)an9BQ z8Fjp~isqGPnlRppzAozM@n_rZ?DB^@TMqI1Z!lq-XpvS})uOfhlGZ1!vqC)g^DkYQ rbCHkPIiy`w;vU-;D{*7rCt7AIb`rH-)ly|T)gs(25}jS#oD9|g^MhHm literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sound1.png b/rubbos/app/apache2/icons/sound1.png new file mode 100644 index 0000000000000000000000000000000000000000..16bb332cec4c84778f0a9d3bb26e6334aecce283 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eU~GKm|Nk>*&di)S zGmU}4*w`2-xmW+*5g^4}666>B|3Aa^Q@oBqE@P6ny9+}HtE>l*Q{d_17{YPAxBnpL z0Rz#+3skNo}yIc&w4#yC28SaljZIT|MxSjZ8V?P5_WO3;^G?;y0;qb z3?z@TDC6OT9rv^%WCHKHUrKQ}iuuY@5aBePf`v8Y4=NM+_Jlw_nT6qF|AWF{-5 zvw P+Q8uH>gTe~DWM4fDPwt= literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sound2.gif b/rubbos/app/apache2/icons/sound2.gif new file mode 100644 index 0000000000000000000000000000000000000000..48e6a7fb2faeb6ba254a87945246f5ca5980583b GIT binary patch literal 221 zcmZ?wbhEHb6k!l!IK;s4|Ns9pKy>EJ%$YOO($b8LjTyi|@tVo`|#kjl(c zD9K1wC@4+J$xK#A$~K Lz}Ywz1_o;YcDqp^ literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sound2.png b/rubbos/app/apache2/icons/sound2.png new file mode 100644 index 0000000000000000000000000000000000000000..0b11d761706477c3cc2a3ffadedb0059e758f02d GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DOS(GiPSboSBxE zW^8N>lmUXD2QT>oDW;Mjzu^B2Pq!O*0eOr`-tI089jvk*Ku)Tsi(?4K_0aQ%d<_O1 ztQXX58JlI6vKt(m%lO>t%l-cxm$+OaD-`VoxKc&m?`S?yz_eW0V$QO=%)ySAMHw@K zTIXtsi2O1z=lDKtP4+2+eT-M8h9>79JNs>FrS~81V;qxS{Wo9Den4Gwe~EJMN}z>d zC9V-A$@#gtsd*&~AsLy)3W-G}3P36|PoX3uRiU6XDJL^oAtgUIF*8q3!8^4KDB)3> zo{?ItqmT{aWjLf}mgoVE&`}6ZEhtINO-e0NFtoHZE&KL<4$uY$Pgg&ebxsLQ0Ic+H AasU7T literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sphere1.gif b/rubbos/app/apache2/icons/sphere1.gif new file mode 100644 index 0000000000000000000000000000000000000000..7067070da2786b9842212ff1ce2307fb404407ce GIT binary patch literal 285 zcmZ?wbhEHb6k!l!c+9}?9|&g7{BLZ0=KudQXU@!=IWvuc!PwZC0S8e0=NFQZS*(y) zRH6W+GV>HlGEx-^N|SOjlND0(a}zW3^c1{P%YYIdrRf=|#X1VvAYO(;YG#REa(=Fk zLU3w9NosCVYLSAWrKKr@;!hSv1_ovZ9gvM6S23_u6rAu}z1QM(uhlIPp`JtRT@DHy zZ8JL^S8aON%CRcz&DRnUR>3@1XNE@hlZ*^I1j}_C#yT z68XztxyIW*eK)gq&Gg$oObhE&HaxGaZep#g4-2m9Y;B7#>??2R@5{BXndV`dHEXt- HAcHjk`1fN- literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sphere1.png b/rubbos/app/apache2/icons/sphere1.png new file mode 100644 index 0000000000000000000000000000000000000000..5dddd042f0d7353e473885c6ba79485385dfef61 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DT4r?5ZC`eFmvXAW8*Xb|DQQ? zX6DS9X$%a;#>PN-tYCS$YCcecr6kBN7^s!OL2Km~AfGYG+uensgH_f8$f@ykaSY+O zUV6@utHFTB;Ub4@%v;_!4_J3uSY46c^5RW^(XNg@ufU=l?_gH;|6e#bS-wdBne-wt z`s9R45w4lJp(oS~Uhn$Yd0J!Xq078d&w@1jt$R8rtEVGrYPK@aQWzrMg4Co zves;^bdo{?ItqmT{aWjLf}mgoVE&`}6Z gEhtINO-e0NFtoHZE&KL<4$uY$Pgg&ebxsLQ05^4kZU6uP literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sphere2.gif b/rubbos/app/apache2/icons/sphere2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9e462a377c8d451bd0c0d07a47035bd44caf57e GIT binary patch literal 264 zcmZ?wbhEHb6k!l!IK;s49|&g7{BLZ021L(HV_+~gHfCU8Q2gf?l95@gkXTfr0HiYW z6iPBu6$(m|ax#+@Qu1>XGxPKmyi?175+0@L8L7oO3fUlDhC^y*iC%Jku8u-*YC%bA zZc=KIf}y3QDTCrq7DfgJW(FOg=?oy-8JMdxcJ29GAmOljuG+p#>+^!wLzQ;)UT5um zk+|bSXOMfYd{L=zjsF9o(~1rvGBq{}GB`LmSXvkRdn%jF4af{C6R?=uy5ZaLzjm9G zwH8$Kxi4iXD)_78aNoVF=4GE7r)afPMP*}_m05#Wld*D7Z?_kl#}r$ALGzij95@-Q E0diYklmGw# literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/sphere2.png b/rubbos/app/apache2/icons/sphere2.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb64debccb4706429972b6070ea08fb4da4bba6 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eFmvXAW8*U*dS)5} zgR!wOP?B>o&mthjQWE4B3{=A4ptbS~kk6Rp?e4mjXzbutT^+DtbHK^3y}nC-EO&2HDcEMDbck`1Ve{U7WG~8yuhh5Zb<@7 z`xV^^pIq^?J6sl`b?E$;oi=gneQc#~{w%G2Eo$=bQcK8x IUrq*V0QdG)RsaA1 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/tar.png b/rubbos/app/apache2/icons/tar.png new file mode 100644 index 0000000000000000000000000000000000000000..533fd6f0996aa2f31b4566e448d8d4c01fc70fc2 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|L@ z=H@_Q2$-~-Eg8s)^mK6y;kcgLbCCCd0?!e@M%GP^tq~2Pm)_V1uUFw%c}2h2$ZYH;6HOFo#tW9U|d0Maat!vk<0G6*D)1I~FC*(bEjSuzz z!uW8#SXSV-f{d`es+N|N()b5rw57(y~Kixo1H^Yauybe=*XnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2c^13&d^F&3SUp#HU#6xa!*tin>9Z0|^A1!l(>hWb zZ!PfsEZ4Gxo$}LGGYd#m9-20(LPaIeg)1oN=Z{6M>Y}HwOe>foy~6k})9y8|ETZxl nuQycuR$g`V{oCDj`rkkOugz?zPGxp)?{Kpc$nTBfWUvMReehfo literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/tex.png b/rubbos/app/apache2/icons/tex.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8e789327931161a1dadef7768291e26132e396 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4NF;Wp9j|CK7s)@ZhJRTqtQqVAVZ&a z@bLvnE7vz@-)Pf|S=-S%iQ`grZuIuD>WAUCw?0t6D))tLS%U=MnNH)oKnuf4Tq8=7 z^K)}k^GX;(GBS%55{pU{fK+ClLP!lN`jBehsZ vAsfWYa7fK8(E}QxqY#{0P?DOPlv<=XnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf25f;1ld^F&3SUp#HU#9hW!Rw()J9@9P7P`C+IwEjh zoojbq@AhdAxLane{lx8+w_BW5Lq@1~%@UylHdfUEOTOIP6XtsB<@c_)dDA0}cD??? QSNCCuzu3fEy_^iz0A2r7i2wiq literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/text.png b/rubbos/app/apache2/icons/text.png new file mode 100644 index 0000000000000000000000000000000000000000..ad068b901da8c1424ff1157cdf3769788b50f2ad GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC|z|DXB)f9A}Y#>U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4f$>K*Qi7~KWOaBQpJFLVtq9i##H#aq}gdrp&vsfXqs6+usW#%cA zWTYw-lqTh5CM%@m=O$+6=_z=pmH{O^O4Bn^i**#TLA(ry)XWk+pb!Kno$skuq1 aMGA(NmZoLj-p>Krz~JfX=d#Wzp$Pz}ykg@3 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/transfer.gif b/rubbos/app/apache2/icons/transfer.gif new file mode 100644 index 0000000000000000000000000000000000000000..33697dbb667a8c898bc501cedd8039a3e9e04272 GIT binary patch literal 242 zcmZ?wbhEHb6k!l!IK;s49|(+%&;0*CbLPx61_oneV+Jr#{O1>vky)&eSX80_q%!jq zN-|Ov3QCi5GLscj@^ce2^Yj$FQ_Fx79;N9Ssl_@9*&tqqLuzJ;UUGh}jzVy1K}l+E zQfiTcp{1oMgW^vXMg|5Z1|5+3Aln(3Q#G`%?loA)#Gq@m*=ucI?DJZ$h{7jq60EN$ z%~d?lR>S0McO~B8j-}Ir=et8&oIMkM8Y@liURvT6>$dvF%11Mo3W@nQRp?BsQ#|oZ hcdptv6Cq9pYXE?dSF`{C literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/transfer.png b/rubbos/app/apache2/icons/transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4f325f401d7a7bfdd3905cc8efd3427833dc60 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!VDyh@)w!{DTx4|5ZC`eU~GKm|NogYXQnYQ z7#kY{Wq`oQW;;kTb4ie2@c;h|*H7^}0=bMy-tI089jvk*Ku(#bi(?4K_0)4`IU5Xk zSRb$ly`QL;P|)1)-HT0Nq3pun{Ry+8sy@uM6Z*vbY>s>$<7e4JD)UYnynK3W>lCAi z?7tnZ=gx6>6uom>vUcK}lshZalP_>YuU0qW>smGI#iorXGxPKmyi?175+0@L8L7oO3fUlDhC^y*i5}1h9fjc3f|AtSq|_n>LrY83 UvTyI_0BvCKboFyt=akR{0B+!YjsO4v literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/unknown.gif b/rubbos/app/apache2/icons/unknown.gif new file mode 100644 index 0000000000000000000000000000000000000000..32b1ea23fb6f6195f1bb17adf9c3cb2cc29dfefa GIT binary patch literal 245 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf285XU1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4Y;+RL=hu*&4sPawMR^6$%b-JRV zXXXC~Vz*`HcG|FS<>_YZp0TCoR{g#*b?-M9m0OjIm_uhu>SYD^@BwWLD{+k|NzTvB zP0cG|2+7DSR!A%=Q2-Xz@*&Mzw-23{>5{AIi%LijXHkMRw1HyNzyFOS#mnvM?d*oFAHE` Gum%9J?KeFD literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/up.png b/rubbos/app/apache2/icons/up.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d32f58bbf779841d34c194abd34c585e9798b0 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKad9mLQMOP z11YAGAiv=M3{STkcma8gN#5=*3>~bp9zc${r;B3<$MxPbhKvjb9Lxu2EMeyBl2XnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2@fN%Gd^F&3SUp#HpJvB@7K6@PEKNyM9n&%bmCrCe zcjss6%XbLBY-{hkn53brAS;k_~V>SO;rqEX_zty4nJbR|}ofI+Ll^r*| X^U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4=IEHXsUwW>QlR=S(`M`(L z#&rs^4i^P?{r8Dap3nDz@gc{;j-x)IM;%;ROv=U2IIFkXFuT;=-uC@mZufNY4<)C? z6y~-(ZSB7rC20EN?A827lV3^JG9K3vyE8F!n<~(XuoBmZlH~l{+|;}hhLDWRVui$_ z5(OZYnWs>ak*ZKonv|27tdNqQo0yrWr{JAh29)q9P0vUz)=|g?@iH7zGfVVnwEWgKL=<7gQu&X%Q~loCIGg{XVd@y literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/uuencoded.gif b/rubbos/app/apache2/icons/uuencoded.gif new file mode 100644 index 0000000000000000000000000000000000000000..4387d529f69f77810347be63429d13ff38bcb2c1 GIT binary patch literal 236 zcmZ?wbhEHb6k!l!IK;s4|Ns9p|NqaNIn&tKm;nhW{__jT$ShV!EGkg|Qki)QB^jv- z1*J(jnaK(%`MHUid3p-osbxS3kJ9vv)M6clY!ENQAvLo^FF8L~MXnDYZz! z(9+VBLGdRGBLf2?gAT|RknIf2@fN%Gd^F&3SUp#HpJvB@7K6@PEKNyM9n&%bmCrCe zcjss6%XbLBY-{hkn53brAS;k_~V>SO;rqEX_zty4nJbR|}ofI+Ll^r*| X^U1# zF*w-HF-s80VJZpo3;xgWbi08UkjI$h?e4=IEHXsUwW>QlR=S(`M`(L z#&rs^4i^P?{r8Dap3nDz@gc{;j-x)IM;%;ROv=U2IIFkXFuT;=-uC@mZufNY4<)C? z6y~-(ZSB7rC20EN?A827lV3^JG9K3vyE8F!n<~(XuoBmZlH~l{+|;}hhLDWRVui$_ z5(OZYnWs>ak*ZKonv|27tdNqQo0yrWr{JAh29)q9P0vUz)=|g?@iH7zGfVVnwEWgKL=<7gQu&X%Q~loCIGg{XVd@y literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/world1.gif b/rubbos/app/apache2/icons/world1.gif new file mode 100644 index 0000000000000000000000000000000000000000..05b4ec205884f16202e290b83db7c36ec660a73e GIT binary patch literal 228 zcmZ?wbhEHb6k!l!SjfQe|Ns9p|Nk@0G-hC6Q2gf?l95@gkXTfr0HiYW6iPBu6$(m| zax#+@Qu1>XGxPKmyi?175+0@L8L7oO3fUlDhC^y*iC%Jku8u-*YC%bAZc=KIf}y3Q zDTCrq7DfgJMg|?A=?own8JLoL`d3=Lojq&DmV<08H)chf_{g}X9%4v)7BSC#N7g2- z#f}=s?(`k{vcq_8jpbY)WyV!4N-Aq^MwZQ4x?oEC?F~i2;bkXPZnEj*mSpYLJUDmD atT54C`TIV6aAK=hU_0K-zaxNw!5RQ*npTkj literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/icons/world1.png b/rubbos/app/apache2/icons/world1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbe0167e9a82ba1408b3f24c49fc45a9955e0216 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0#0(_&>W54PQak}ZA+G=b|3CBpKf_F8pny)- znwLO|sU*lR_&>wb?FL>z9%GWXy9+}HtE>l*Q|Ia87{YNqnS+(F?ZSuu;f*PGSM6QM z^HAMl$9kh9rfZ|NOjTUgoqaT{t;^NRYZp(buPoPI9)2qmkuYPMhy@onN_d#94N9xH za`ec;GatG*UG^nJ9bI@f;ON1vS-Q>#x%l{E+a!4T_=4LcmWswiOCFNXSiA3(K-A&{ z?(Kps4EBAxw(EP1+kq|#D{+k|NzTvBP0cG|2+7DSR!A%=Q2EJ%$YM8W*Rf388d)^;y=HTjLc$%#G(=fAeEV? zP?C|VP*9qblbNiLlAoKHnWv}VomvKz@F-2sNG;Y;$OiE;98xn&^pf*)brgbA3rbRR zlTwQm3@t5985DoAFfuSOGU$NJ2ieZRTp_XR&O5bJ*Ohi!T+-@^=jL?!gy~R6SmeCA7ufyx{6*ATcJslr}J44o^Chr0`eG>yxmBhx5d?9$7It{-{#a{#Eb8rq%twkbmz+qE1iw4WUUu_l1?X zMwBGy=jNv7l`w>4WELwV7L_Ofsmwful8jV^g3_d%%w&a>{M^LMJUs>P)H0xiM`?OS zYO#(&Hi(zukeXSd2Q)%QAvm?5BsDiFwMfCx($ci-+xs~{8yGxY{an^LB{Ts5X{(KK literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/include/ap_compat.h b/rubbos/app/apache2/include/ap_compat.h new file mode 100644 index 00000000..4985bc4d --- /dev/null +++ b/rubbos/app/apache2/include/ap_compat.h @@ -0,0 +1,28 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_COMPAT_H +#define AP_COMPAT_H + +/* Drag in apu (and therefore apr) renamed symbols */ +#include "apu_compat.h" + +/* redefine 1.3.x symbols to the new symbol names */ + +#define MODULE_VAR_EXPORT AP_MODULE_DECLARE_DATA +#define ap_send_http_header(r) ; + +#endif /* AP_COMPAT_H */ diff --git a/rubbos/app/apache2/include/ap_config.h b/rubbos/app/apache2/include/ap_config.h new file mode 100644 index 00000000..9d8db24b --- /dev/null +++ b/rubbos/app/apache2/include/ap_config.h @@ -0,0 +1,256 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_CONFIG_H +#define AP_CONFIG_H + +#include "apr.h" +#include "apr_hooks.h" +#include "apr_optional_hooks.h" + +/** + * @file ap_config.h + * @brief Symbol export macros and hook functions + */ + +/* Although this file doesn't declare any hooks, declare the hook group here */ +/** @defgroup hooks Apache Hooks */ + +#ifdef DOXYGEN +/* define these just so doxygen documents them */ + +/** + * AP_DECLARE_STATIC is defined when including Apache's Core headers, + * to provide static linkage when the dynamic library may be unavailable. + * + * @see AP_DECLARE_EXPORT + * + * AP_DECLARE_STATIC and AP_DECLARE_EXPORT are left undefined when + * including Apache's Core headers, to import and link the symbols from the + * dynamic Apache Core library and assure appropriate indirection and calling + * conventions at compile time. + */ +# define AP_DECLARE_STATIC +/** + * AP_DECLARE_EXPORT is defined when building the Apache Core dynamic + * library, so that all public symbols are exported. + * + * @see AP_DECLARE_STATIC + */ +# define AP_DECLARE_EXPORT + +#endif /* def DOXYGEN */ + +#if !defined(WIN32) +/** + * Apache Core dso functions are declared with AP_DECLARE(), so they may + * use the most appropriate calling convention. Hook functions and other + * Core functions with variable arguments must use AP_DECLARE_NONSTD(). + * @code + * AP_DECLARE(rettype) ap_func(args) + * @endcode + */ +#define AP_DECLARE(type) type + +/** + * Apache Core dso variable argument and hook functions are declared with + * AP_DECLARE_NONSTD(), as they must use the C language calling convention. + * @see AP_DECLARE + * @code + * AP_DECLARE_NONSTD(rettype) ap_func(args [...]) + * @endcode + */ +#define AP_DECLARE_NONSTD(type) type + +/** + * Apache Core dso variables are declared with AP_MODULE_DECLARE_DATA. + * This assures the appropriate indirection is invoked at compile time. + * + * @note AP_DECLARE_DATA extern type apr_variable; syntax is required for + * declarations within headers to properly import the variable. + * @code + * AP_DECLARE_DATA type apr_variable + * @endcode + */ +#define AP_DECLARE_DATA + +#elif defined(AP_DECLARE_STATIC) +#define AP_DECLARE(type) type __stdcall +#define AP_DECLARE_NONSTD(type) type +#define AP_DECLARE_DATA +#elif defined(AP_DECLARE_EXPORT) +#define AP_DECLARE(type) __declspec(dllexport) type __stdcall +#define AP_DECLARE_NONSTD(type) __declspec(dllexport) type +#define AP_DECLARE_DATA __declspec(dllexport) +#else +#define AP_DECLARE(type) __declspec(dllimport) type __stdcall +#define AP_DECLARE_NONSTD(type) __declspec(dllimport) type +#define AP_DECLARE_DATA __declspec(dllimport) +#endif + +#if !defined(WIN32) || defined(AP_MODULE_DECLARE_STATIC) +/** + * Declare a dso module's exported module structure as AP_MODULE_DECLARE_DATA. + * + * Unless AP_MODULE_DECLARE_STATIC is defined at compile time, symbols + * declared with AP_MODULE_DECLARE_DATA are always exported. + * @code + * module AP_MODULE_DECLARE_DATA mod_tag + * @endcode + */ +#if defined(WIN32) +#define AP_MODULE_DECLARE(type) type __stdcall +#else +#define AP_MODULE_DECLARE(type) type +#endif +#define AP_MODULE_DECLARE_NONSTD(type) type +#define AP_MODULE_DECLARE_DATA +#else +/** + * AP_MODULE_DECLARE_EXPORT is a no-op. Unless contradicted by the + * AP_MODULE_DECLARE_STATIC compile-time symbol, it is assumed and defined. + * + * The old SHARED_MODULE compile-time symbol is now the default behavior, + * so it is no longer referenced anywhere with Apache 2.0. + */ +#define AP_MODULE_DECLARE_EXPORT +#define AP_MODULE_DECLARE(type) __declspec(dllexport) type __stdcall +#define AP_MODULE_DECLARE_NONSTD(type) __declspec(dllexport) type +#define AP_MODULE_DECLARE_DATA __declspec(dllexport) +#endif + +/** + * Declare a hook function + * @param ret The return type of the hook + * @param name The hook's name (as a literal) + * @param args The arguments the hook function takes, in brackets. + */ +#define AP_DECLARE_HOOK(ret,name,args) \ + APR_DECLARE_EXTERNAL_HOOK(ap,AP,ret,name,args) + +/** @internal */ +#define AP_IMPLEMENT_HOOK_BASE(name) \ + APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ap,AP,name) + +/** + * Implement an Apache core hook that has no return code, and + * therefore runs all of the registered functions. The implementation + * is called ap_run_name. + * + * @param name The name of the hook + * @param args_decl The declaration of the arguments for the hook, for example + * "(int x,void *y)" + * @param args_use The arguments for the hook as used in a call, for example + * "(x,y)" + * @note If IMPLEMENTing a hook that is not linked into the Apache core, + * (e.g. within a dso) see APR_IMPLEMENT_EXTERNAL_HOOK_VOID. + */ +#define AP_IMPLEMENT_HOOK_VOID(name,args_decl,args_use) \ + APR_IMPLEMENT_EXTERNAL_HOOK_VOID(ap,AP,name,args_decl,args_use) + +/** + * Implement an Apache core hook that runs until one of the functions + * returns something other than ok or decline. That return value is + * then returned from the hook runner. If the hooks run to completion, + * then ok is returned. Note that if no hook runs it would probably be + * more correct to return decline, but this currently does not do + * so. The implementation is called ap_run_name. + * + * @param ret The return type of the hook (and the hook runner) + * @param name The name of the hook + * @param args_decl The declaration of the arguments for the hook, for example + * "(int x,void *y)" + * @param args_use The arguments for the hook as used in a call, for example + * "(x,y)" + * @param ok The "ok" return value + * @param decline The "decline" return value + * @return ok, decline or an error. + * @note If IMPLEMENTing a hook that is not linked into the Apache core, + * (e.g. within a dso) see APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL. + */ +#define AP_IMPLEMENT_HOOK_RUN_ALL(ret,name,args_decl,args_use,ok,decline) \ + APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap,AP,ret,name,args_decl, \ + args_use,ok,decline) + +/** + * Implement a hook that runs until a function returns something other than + * decline. If all functions return decline, the hook runner returns decline. + * The implementation is called ap_run_name. + * + * @param ret The return type of the hook (and the hook runner) + * @param name The name of the hook + * @param args_decl The declaration of the arguments for the hook, for example + * "(int x,void *y)" + * @param args_use The arguments for the hook as used in a call, for example + * "(x,y)" + * @param decline The "decline" return value + * @return decline or an error. + * @note If IMPLEMENTing a hook that is not linked into the Apache core + * (e.g. within a dso) see APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST. + */ +#define AP_IMPLEMENT_HOOK_RUN_FIRST(ret,name,args_decl,args_use,decline) \ + APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ap,AP,ret,name,args_decl, \ + args_use,decline) + +/* Note that the other optional hook implementations are straightforward but + * have not yet been needed + */ + +/** + * Implement an optional hook. This is exactly the same as a standard hook + * implementation, except the hook is optional. + * @see AP_IMPLEMENT_HOOK_RUN_ALL + */ +#define AP_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ret,name,args_decl,args_use,ok, \ + decline) \ + APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ap,AP,ret,name,args_decl, \ + args_use,ok,decline) + +/** + * Hook an optional hook. Unlike static hooks, this uses a macro instead of a + * function. + */ +#define AP_OPTIONAL_HOOK(name,fn,pre,succ,order) \ + APR_OPTIONAL_HOOK(ap,name,fn,pre,succ,order) + +#include "os.h" +#if !defined(WIN32) && !defined(NETWARE) +#include "ap_config_auto.h" +#include "ap_config_layout.h" +#endif +#if defined(NETWARE) +#define AP_NONBLOCK_WHEN_MULTI_LISTEN 1 +#endif + +/* TODO - We need to put OS detection back to make all the following work */ + +#if defined(SUNOS4) || defined(IRIX) || defined(NEXT) || defined(AUX3) \ + || defined (UW) || defined(LYNXOS) || defined(TPF) +/* These systems don't do well with any lingering close code; I don't know + * why -- manoj */ +#define NO_LINGCLOSE +#endif + +/* If APR has OTHER_CHILD logic, use reliable piped logs. */ +#if APR_HAS_OTHER_CHILD +#define AP_HAVE_RELIABLE_PIPED_LOGS TRUE +#endif + +#if APR_CHARSET_EBCDIC && !defined(APACHE_XLATE) +#define APACHE_XLATE +#endif + +#endif /* AP_CONFIG_H */ diff --git a/rubbos/app/apache2/include/ap_config_auto.h b/rubbos/app/apache2/include/ap_config_auto.h new file mode 100644 index 00000000..701a99e1 --- /dev/null +++ b/rubbos/app/apache2/include/ap_config_auto.h @@ -0,0 +1,250 @@ +/* include/ap_config_auto.h. Generated from ap_config_auto.h.in by configure. */ +/* include/ap_config_auto.h.in. Generated from configure.in by autoheader. */ +/* Define this if struct tm has a field tm_gmtoff */ +#define HAVE_GMTOFF 1 + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Location of the source for the current MPM */ +#define APACHE_MPM_DIR "server/mpm/worker" + +/* SuExec root directory */ +/* #undef AP_DOC_ROOT */ + +/* Allow modules to run hook after a fatal exception */ +/* #undef AP_ENABLE_EXCEPTION_HOOK */ + +/* Allow IPv4 connections on IPv6 listening sockets */ +#define AP_ENABLE_V4_MAPPED 1 + +/* Minimum allowed GID */ +/* #undef AP_GID_MIN */ + +/* User allowed to call SuExec */ +/* #undef AP_HTTPD_USER */ + +/* SuExec log file */ +/* #undef AP_LOG_EXEC */ + +/* Listening sockets are non-blocking when there are more than 1 */ +#define AP_NONBLOCK_WHEN_MULTI_LISTEN 1 + +/* safe shell path for SuExec */ +/* #undef AP_SAFE_PATH */ + +/* Signal used to gracefully restart */ +#define AP_SIG_GRACEFUL SIGUSR1 + +/* Signal used to gracefully restart (without SIG prefix) */ +#define AP_SIG_GRACEFUL_SHORT USR1 + +/* Signal used to gracefully restart (as a quoted string) */ +#define AP_SIG_GRACEFUL_STRING "SIGUSR1" + +/* umask for suexec'd process */ +/* #undef AP_SUEXEC_UMASK */ + +/* Location of the MIME types config file, relative to the Apache root + directory */ +#define AP_TYPES_CONFIG_FILE "conf/mime.types" + +/* Minimum allowed UID */ +/* #undef AP_UID_MIN */ + +/* byte order is unknown due to cross-compilation */ +/* #undef AP_UNKNOWN_BYTE_ORDER */ + +/* User subdirectory */ +/* #undef AP_USERDIR_SUFFIX */ + +/* Using autoconf to configure Apache */ +#define AP_USING_AUTOCONF 1 + +/* Define to 1 if you have the `bindprocessor' function. */ +/* #undef HAVE_BINDPROCESSOR */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_BSTRING_H */ + +/* Define to 1 if you have the `getgrnam' function. */ +#define HAVE_GETGRNAM 1 + +/* Define to 1 if you have the `getpwnam' function. */ +#define HAVE_GETPWNAM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_GRP_H 1 + +/* Define to 1 if you have the `initgroups' function. */ +#define HAVE_INITGROUPS 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `killpg' function. */ +#define HAVE_KILLPG 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `prctl' function. */ +#define HAVE_PRCTL 1 + +/* Define to 1 if you have the `pthread_kill' function. */ +#define HAVE_PTHREAD_KILL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define to 1 if you have the `setsid' function. */ +#define HAVE_SETSID 1 + +/* Define to 1 if you have the `SSL_set_cert_store' function. */ +/* #undef HAVE_SSL_SET_CERT_STORE */ + +/* Define to 1 if you have the `SSL_set_state' function. */ +/* #undef HAVE_SSL_SET_STATE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `syslog' function. */ +#define HAVE_SYSLOG 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IPC_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PRCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCESSOR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SEM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the `timegm' function. */ +#define HAVE_TIMEGM 1 + +/* Define to 1 if you have the `times' function. */ +#define HAVE_TIMES 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ZUTIL_H */ + +/* Root directory of the Apache install area */ +#define HTTPD_ROOT "/bottlenecks/rubbos/app/apache2" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Location of the config file, relative to the Apache root directory */ +#define SERVER_CONFIG_FILE "conf/httpd.conf" + +/* This platform doesn't suffer from the thundering herd problem */ +/* #undef SINGLE_LISTEN_UNSERIALIZED_ACCEPT */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Path to suexec binary */ +/* #undef SUEXEC_BIN */ + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to 'int' if doesn't define it for us */ +/* #undef rlim_t */ diff --git a/rubbos/app/apache2/include/ap_config_layout.h b/rubbos/app/apache2/include/ap_config_layout.h new file mode 100644 index 00000000..968d8f34 --- /dev/null +++ b/rubbos/app/apache2/include/ap_config_layout.h @@ -0,0 +1,59 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_CONFIG_LAYOUT_H +#define AP_CONFIG_LAYOUT_H + +/* Configured Apache directory layout */ +#define DEFAULT_PREFIX "/bottlenecks/rubbos/app/apache2" +#define DEFAULT_EXP_EXEC_PREFIX "/bottlenecks/rubbos/app/apache2" +#define DEFAULT_REL_EXEC_PREFIX "" +#define DEFAULT_EXP_BINDIR "/bottlenecks/rubbos/app/apache2/bin" +#define DEFAULT_REL_BINDIR "bin" +#define DEFAULT_EXP_SBINDIR "/bottlenecks/rubbos/app/apache2/bin" +#define DEFAULT_REL_SBINDIR "bin" +#define DEFAULT_EXP_LIBEXECDIR "/bottlenecks/rubbos/app/apache2/modules" +#define DEFAULT_REL_LIBEXECDIR "modules" +#define DEFAULT_EXP_MANDIR "/bottlenecks/rubbos/app/apache2/man" +#define DEFAULT_REL_MANDIR "man" +#define DEFAULT_EXP_SYSCONFDIR "/bottlenecks/rubbos/app/apache2/conf" +#define DEFAULT_REL_SYSCONFDIR "conf" +#define DEFAULT_EXP_DATADIR "/bottlenecks/rubbos/app/apache2" +#define DEFAULT_REL_DATADIR "" +#define DEFAULT_EXP_INSTALLBUILDDIR "/bottlenecks/rubbos/app/apache2/build" +#define DEFAULT_REL_INSTALLBUILDDIR "build" +#define DEFAULT_EXP_ERRORDIR "/bottlenecks/rubbos/app/apache2/error" +#define DEFAULT_REL_ERRORDIR "error" +#define DEFAULT_EXP_ICONSDIR "/bottlenecks/rubbos/app/apache2/icons" +#define DEFAULT_REL_ICONSDIR "icons" +#define DEFAULT_EXP_HTDOCSDIR "/bottlenecks/rubbos/app/apache2/htdocs" +#define DEFAULT_REL_HTDOCSDIR "htdocs" +#define DEFAULT_EXP_MANUALDIR "/bottlenecks/rubbos/app/apache2/manual" +#define DEFAULT_REL_MANUALDIR "manual" +#define DEFAULT_EXP_CGIDIR "/bottlenecks/rubbos/app/apache2/cgi-bin" +#define DEFAULT_REL_CGIDIR "cgi-bin" +#define DEFAULT_EXP_INCLUDEDIR "/bottlenecks/rubbos/app/apache2/include" +#define DEFAULT_REL_INCLUDEDIR "include" +#define DEFAULT_EXP_LOCALSTATEDIR "/bottlenecks/rubbos/app/apache2" +#define DEFAULT_REL_LOCALSTATEDIR "" +#define DEFAULT_EXP_RUNTIMEDIR "/bottlenecks/rubbos/app/apache2/logs" +#define DEFAULT_REL_RUNTIMEDIR "logs" +#define DEFAULT_EXP_LOGFILEDIR "/bottlenecks/rubbos/app/apache2/logs" +#define DEFAULT_REL_LOGFILEDIR "logs" +#define DEFAULT_EXP_PROXYCACHEDIR "/bottlenecks/rubbos/app/apache2/proxy" +#define DEFAULT_REL_PROXYCACHEDIR "proxy" + +#endif /* AP_CONFIG_LAYOUT_H */ diff --git a/rubbos/app/apache2/include/ap_listen.h b/rubbos/app/apache2/include/ap_listen.h new file mode 100644 index 00000000..291b8266 --- /dev/null +++ b/rubbos/app/apache2/include/ap_listen.h @@ -0,0 +1,119 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_LISTEN_H +#define AP_LISTEN_H + +#include "apr_network_io.h" +#include "httpd.h" +#include "http_config.h" + +/** + * @package Apache Listeners Library + */ + +typedef struct ap_listen_rec ap_listen_rec; +typedef apr_status_t (*accept_function)(void **csd, ap_listen_rec *lr, apr_pool_t *ptrans); + +/** + * Apache's listeners record. These are used in the Multi-Processing Modules + * to setup all of the sockets for the MPM to listen to and accept on. + */ +struct ap_listen_rec { + /** + * The next listener in the list + */ + ap_listen_rec *next; + /** + * The actual socket + */ + apr_socket_t *sd; + /** + * The sockaddr the socket should bind to + */ + apr_sockaddr_t *bind_addr; + /** + * The accept function for this socket + */ + accept_function accept_func; + /** + * Is this socket currently active + */ + int active; +/* more stuff here, like which protocol is bound to the port */ +}; + +/** + * The global list of ap_listen_rec structures + */ +AP_DECLARE_DATA extern ap_listen_rec *ap_listeners; + +/** + * Setup all of the defaults for the listener list + */ +void ap_listen_pre_config(void); +#if !defined(SPMT_OS2_MPM) +/** + * Loop through the global ap_listen_rec list and create all of the required + * sockets. This executes the listen and bind on the sockets. + * @param s The global server_rec + * @return The number of open sockets. + * @warning This function is not available to Windows platforms, or the + * Prefork or SPMT_OS2 MPMs. + */ +int ap_setup_listeners(server_rec *s); +#endif +/* Split into two #if's to make the exports scripts easier. + */ +#if defined(SPMT_OS2_MPM) +/** + * Create and open a socket on the specified port. This includes listening + * and binding the socket. + * @param process The process record for the currently running server + * @param port The port to open a socket on. + * @return The number of open sockets + * @warning This function is only available to Windows platforms, or the + * Prefork or SPMT_OS2 MPMs. + */ +int ap_listen_open(process_rec *process, apr_port_t port); +#endif + +/* Although these functions are exported from libmain, they are not really + * public functions. These functions are actually called while parsing the + * config file, when one of the LISTEN_COMMANDS directives is read. These + * should not ever be called by external modules. ALL MPMs should include + * LISTEN_COMMANDS in their command_rec table so that these functions are + * called. + */ +const char *ap_set_listenbacklog(cmd_parms *cmd, void *dummy, const char *arg); +const char *ap_set_listener(cmd_parms *cmd, void *dummy, const char *ips); +const char *ap_set_send_buffer_size(cmd_parms *cmd, void *dummy, + const char *arg); +AP_DECLARE_NONSTD(const char *) ap_set_receive_buffer_size(cmd_parms *cmd, + void *dummy, + const char *arg); + +#define LISTEN_COMMANDS \ +AP_INIT_TAKE1("ListenBacklog", ap_set_listenbacklog, NULL, RSRC_CONF, \ + "Maximum length of the queue of pending connections, as used by listen(2)"), \ +AP_INIT_TAKE1("Listen", ap_set_listener, NULL, RSRC_CONF, \ + "A port number or a numeric IP address and a port number"), \ +AP_INIT_TAKE1("SendBufferSize", ap_set_send_buffer_size, NULL, RSRC_CONF, \ + "Send buffer size in bytes"), \ +AP_INIT_TAKE1("ReceiveBufferSize", ap_set_receive_buffer_size, NULL, \ + RSRC_CONF, "Receive buffer size in bytes") + +#endif diff --git a/rubbos/app/apache2/include/ap_mmn.h b/rubbos/app/apache2/include/ap_mmn.h new file mode 100644 index 00000000..a3704803 --- /dev/null +++ b/rubbos/app/apache2/include/ap_mmn.h @@ -0,0 +1,127 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_AP_MMN_H +#define APACHE_AP_MMN_H + +/** + * @package Module Magic Number + */ + +/* + * MODULE_MAGIC_NUMBER_MAJOR + * Major API changes that could cause compatibility problems for older modules + * such as structure size changes. No binary compatibility is possible across + * a change in the major version. + * + * MODULE_MAGIC_NUMBER_MINOR + * Minor API changes that do not cause binary compatibility problems. + * Should be reset to 0 when upgrading MODULE_MAGIC_NUMBER_MAJOR. + * + * See the MODULE_MAGIC_AT_LEAST macro below for an example. + */ + +/* + * 20010224 (2.0.13-dev) MODULE_MAGIC_COOKIE reset to "AP20" + * 20010523 (2.0.19-dev) bump for scoreboard structure reordering + * 20010627 (2.0.19-dev) more API changes than I can count + * 20010726 (2.0.22-dev) more big API changes + * 20010808 (2.0.23-dev) dir d_is_absolute bit introduced, bucket changes, etc + * 20010825 (2.0.25-dev) removed d_is_absolute, introduced map_to_storage hook + * 20011002 (2.0.26-dev) removed 1.3-depreciated request_rec.content_language + * 20011127 (2.0.29-dev) bump for postconfig hook change, and removal of socket + * from connection record + * 20011212 (2.0.30-dev) bump for new used_path_info member of request_rec + * 20011218 (2.0.30-dev) bump for new sbh member of conn_rec, different + * declarations for scoreboard, new parameter to + * create_connection hook + * 20020102 (2.0.30-dev) bump for changed type of limit_req_body in + * core_dir_config + * 20020109 (2.0.31-dev) bump for changed shm and scoreboard declarations + * 20020111 (2.0.31-dev) bump for ETag fields added at end of cor_dir_config + * 20020114 (2.0.31-dev) mod_dav changed how it asks its provider to fulfill + * a GET request + * 20020118 (2.0.31-dev) Input filtering split of blocking and mode + * 20020127 (2.0.31-dev) bump for pre_mpm hook change + * 20020128 (2.0.31-dev) bump for pre_config hook change + * 20020218 (2.0.33-dev) bump for AddOutputFilterByType directive + * 20020220 (2.0.33-dev) bump for scoreboard.h structure change + * 20020302 (2.0.33-dev) bump for protocol_filter additions. + * 20020306 (2.0.34-dev) bump for filter type renames. + * 20020318 (2.0.34-dev) mod_dav's API for REPORT generation changed + * 20020319 (2.0.34-dev) M_INVALID changed, plus new M_* methods for RFC 3253 + * 20020327 (2.0.35-dev) Add parameter to quick_handler hook + * 20020329 (2.0.35-dev) bump for addition of freelists to bucket API + * 20020329.1 (2.0.36) minor bump for new arg to opt fn ap_cgi_build_command + * 20020506 (2.0.37-dev) Removed r->boundary in request_rec. + * 20020529 (2.0.37-dev) Standardized the names of some apr_pool_*_set funcs + * 20020602 (2.0.37-dev) Bucket API change (metadata buckets) + * 20020612 (2.0.38-dev) Changed server_rec->[keep_alive_]timeout to apr time + * 20020625 (2.0.40-dev) Changed conn_rec->keepalive to an enumeration + * 20020628 (2.0.40-dev) Added filter_init to filter registration functions + * 20020903 (2.0.41-dev) APR's error constants changed + * 20020903.2 (2.0.46-dev) add ap_escape_logitem + * 20020903.3 (2.0.46-dev) allow_encoded_slashes added to core_dir_config + * 20020903.4 (2.0.47-dev) add ap_is_recursion_limit_exceeded() + * 20020903.5 (2.0.49-dev) add ap_escape_errorlog_item() + * 20020903.6 (2.0.49-dev) add insert_error_filter hook + * 20020903.7 (2.0.49-dev) added XHTML Doctypes + * 20020903.8 (2.0.50-dev) export ap_set_sub_req_protocol and + * ap_finalize_sub_req_protocol on Win32 and NetWare + * 20020903.9 (2.0.51-dev) create pcommands and initialize arrays before + * calling ap_setup_prelinked_modules + * 20020903.10 (2.0.55-dev) add ap_log_cerror() + * 20020903.11 (2.0.55-dev) added trace_enable to core_server_config + * 20020903.12 (2.0.56-dev) added ap_get_server_revision / ap_version_t + * 20020903.13 (2.0.62-dev) Add *ftp_directory_charset to proxy_dir_conf + * 20020903.14 (2.0.64-dev) added ap_vhost_iterate_given_conn + */ + +#define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */ + +#ifndef MODULE_MAGIC_NUMBER_MAJOR +#define MODULE_MAGIC_NUMBER_MAJOR 20020903 +#endif +#define MODULE_MAGIC_NUMBER_MINOR 14 /* 0...n */ + +/** + * Determine if the server's current MODULE_MAGIC_NUMBER is at least a + * specified value. + *
    + * Useful for testing for features.
    + * For example, suppose you wish to use the apr_table_overlap
    + *    function.  You can do this:
    + * 
    + * #if AP_MODULE_MAGIC_AT_LEAST(19980812,2)
    + *     ... use apr_table_overlap()
    + * #else
    + *     ... alternative code which doesn't use apr_table_overlap()
    + * #endif
    + * 
    + * @param major The major module magic number + * @param minor The minor module magic number + * @deffunc AP_MODULE_MAGIC_AT_LEAST(int major, int minor) + */ +#define AP_MODULE_MAGIC_AT_LEAST(major,minor) \ + ((major) < MODULE_MAGIC_NUMBER_MAJOR \ + || ((major) == MODULE_MAGIC_NUMBER_MAJOR \ + && (minor) <= MODULE_MAGIC_NUMBER_MINOR)) + +/** @deprecated present for backwards compatibility */ +#define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR +#define MODULE_MAGIC_AT_LEAST old_broken_macro_we_hope_you_are_not_using + +#endif /* !APACHE_AP_MMN_H */ diff --git a/rubbos/app/apache2/include/ap_mpm.h b/rubbos/app/apache2/include/ap_mpm.h new file mode 100644 index 00000000..9e41e904 --- /dev/null +++ b/rubbos/app/apache2/include/ap_mpm.h @@ -0,0 +1,176 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_MPM_H +#define AP_MPM_H + +#include "apr_thread_proc.h" + +/** + * @package Multi-Processing Module library + */ + +/* + The MPM, "multi-processing model" provides an abstraction of the + interface with the OS for distributing incoming connections to + threads/process for processing. http_main invokes the MPM, and + the MPM runs until a shutdown/restart has been indicated. + The MPM calls out to the apache core via the ap_process_connection + function when a connection arrives. + + The MPM may or may not be multithreaded. In the event that it is + multithreaded, at any instant it guarantees a 1:1 mapping of threads + ap_process_connection invocations. + + Note: In the future it will be possible for ap_process_connection + to return to the MPM prior to finishing the entire connection; and + the MPM will proceed with asynchronous handling for the connection; + in the future the MPM may call ap_process_connection again -- but + does not guarantee it will occur on the same thread as the first call. + + The MPM further guarantees that no asynchronous behaviour such as + longjmps and signals will interfere with the user code that is + invoked through ap_process_connection. The MPM may reserve some + signals for its use (i.e. SIGUSR1), but guarantees that these signals + are ignored when executing outside the MPM code itself. (This + allows broken user code that does not handle EINTR to function + properly.) + + The suggested server restart and stop behaviour will be "graceful". + However the MPM may choose to terminate processes when the user + requests a non-graceful restart/stop. When this occurs, the MPM kills + all threads with extreme prejudice, and destroys the pchild pool. + User cleanups registered in the pchild apr_pool_t will be invoked at + this point. (This can pose some complications, the user cleanups + are asynchronous behaviour not unlike longjmp/signal... but if the + admin is asking for a non-graceful shutdown, how much effort should + we put into doing it in a nice way?) + + unix/posix notes: + - The MPM does not set a SIGALRM handler, user code may use SIGALRM. + But the preferred method of handling timeouts is to use the + timeouts provided by the BUFF abstraction. + - The proper setting for SIGPIPE is SIG_IGN, if user code changes it + for any of their own processing, it must be restored to SIG_IGN + prior to executing or returning to any apache code. + TODO: add SIGPIPE debugging check somewhere to make sure it's SIG_IGN +*/ + +/** + * This is the function that MPMs must create. This function is responsible + * for controlling the parent and child processes. It will run until a + * restart/shutdown is indicated. + * @param pconf the configuration pool, reset before the config file is read + * @param plog the log pool, reset after the config file is read + * @param server_conf the global server config. + * @return 1 for shutdown 0 otherwise. + * @deffunc int ap_mpm_run(apr_pool_t *pconf, apr_pool_t *plog, server_rec *server_conf) + */ +AP_DECLARE(int) ap_mpm_run(apr_pool_t *pconf, apr_pool_t *plog, server_rec *server_conf); + +/** + * predicate indicating if a graceful stop has been requested ... + * used by the connection loop + * @return 1 if a graceful stop has been requested, 0 otherwise + * @deffunc int ap_graceful_stop_signalled(*void) + */ +AP_DECLARE(int) ap_graceful_stop_signalled(void); + +/** + * Spawn a process with privileges that another module has requested + * @param r The request_rec of the current request + * @param newproc The resulting process handle. + * @param progname The program to run + * @param const_args the arguments to pass to the new program. The first + * one should be the program name. + * @param env The new environment apr_table_t for the new process. This + * should be a list of NULL-terminated strings. + * @param attr the procattr we should use to determine how to create the new + * process + * @param p The pool to use. + */ +AP_DECLARE(apr_status_t) ap_os_create_privileged_process( + const request_rec *r, + apr_proc_t *newproc, + const char *progname, + const char * const *args, + const char * const *env, + apr_procattr_t *attr, + apr_pool_t *p); + +/* Subtypes/Values for AP_MPMQ_IS_THREADED and AP_MPMQ_IS_FORKED */ +#define AP_MPMQ_NOT_SUPPORTED 0 /* This value specifies whether */ + /* an MPM is capable of */ + /* threading or forking. */ +#define AP_MPMQ_STATIC 1 /* This value specifies whether */ + /* an MPM is using a static # */ + /* threads or daemons. */ +#define AP_MPMQ_DYNAMIC 2 /* This value specifies whether */ + /* an MPM is using a dynamic # */ + /* threads or daemons. */ + +/* Values returned for AP_MPMQ_MPM_STATE */ +#define AP_MPMQ_STARTING 0 +#define AP_MPMQ_RUNNING 1 +#define AP_MPMQ_STOPPING 2 + +#define AP_MPMQ_MAX_DAEMON_USED 1 /* Max # of daemons used so far */ +#define AP_MPMQ_IS_THREADED 2 /* MPM can do threading */ +#define AP_MPMQ_IS_FORKED 3 /* MPM can do forking */ +#define AP_MPMQ_HARD_LIMIT_DAEMONS 4 /* The compiled max # daemons */ +#define AP_MPMQ_HARD_LIMIT_THREADS 5 /* The compiled max # threads */ +#define AP_MPMQ_MAX_THREADS 6 /* # of threads/child by config */ +#define AP_MPMQ_MIN_SPARE_DAEMONS 7 /* Min # of spare daemons */ +#define AP_MPMQ_MIN_SPARE_THREADS 8 /* Min # of spare threads */ +#define AP_MPMQ_MAX_SPARE_DAEMONS 9 /* Max # of spare daemons */ +#define AP_MPMQ_MAX_SPARE_THREADS 10 /* Max # of spare threads */ +#define AP_MPMQ_MAX_REQUESTS_DAEMON 11 /* Max # of requests per daemon */ +#define AP_MPMQ_MAX_DAEMONS 12 /* Max # of daemons by config */ +#define AP_MPMQ_MPM_STATE 13 /* starting, running, stopping */ + +/** + * Query a property of the current MPM. + * @param query_code One of APM_MPMQ_* + * @param result A location to place the result of the query + * @return APR_SUCCESS or APR_ENOTIMPL + * @deffunc int ap_mpm_query(int query_code, int *result) + */ +AP_DECLARE(apr_status_t) ap_mpm_query(int query_code, int *result); + +/* Defining GPROF when compiling uses the moncontrol() function to + * disable gprof profiling in the parent, and enable it only for + * request processing in children (or in one_process mode). It's + * absolutely required to get useful gprof results under linux + * because the profile itimers and such are disabled across a + * fork(). It's probably useful elsewhere as well. + */ +#ifdef GPROF +extern void moncontrol(int); +#define AP_MONCONTROL(x) moncontrol(x) +#else +#define AP_MONCONTROL(x) +#endif + +#if AP_ENABLE_EXCEPTION_HOOK +typedef struct ap_exception_info_t { + int sig; + pid_t pid; +} ap_exception_info_t; + +AP_DECLARE_HOOK(int,fatal_exception,(ap_exception_info_t *ei)) +#endif /*AP_ENABLE_EXCEPTION_HOOK*/ + +#endif diff --git a/rubbos/app/apache2/include/ap_provider.h b/rubbos/app/apache2/include/ap_provider.h new file mode 100644 index 00000000..e9045bae --- /dev/null +++ b/rubbos/app/apache2/include/ap_provider.h @@ -0,0 +1,54 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_PROVIDER_H +#define AP_PROVIDER_H + +#include "ap_config.h" + +/** + * @package Provider API + */ + +/** + * This function is used to register a provider with the global + * provider pool. + * @param pool The pool to create any storage from + * @param provider_group The group to store the provider in + * @param provider_name The name for this provider + * @param provider_version The version for this provider + * @param provider Opaque structure for this provider + * @return APR_SUCCESS if all went well + */ +AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool, + const char *provider_group, + const char *provider_name, + const char *provider_version, + const void *provider); + +/** + * This function is used to retrieve a provider from the global + * provider pool. + * @param provider_group The group to look for this provider in + * @param provider_name The name for the provider + * @param provider_version The version for the provider + * @return provider pointer to provider if found, NULL otherwise + */ +AP_DECLARE(void *) ap_lookup_provider(const char *provider_group, + const char *provider_name, + const char *provider_version); + +#endif diff --git a/rubbos/app/apache2/include/ap_regkey.h b/rubbos/app/apache2/include/ap_regkey.h new file mode 100644 index 00000000..d3f41297 --- /dev/null +++ b/rubbos/app/apache2/include/ap_regkey.h @@ -0,0 +1,218 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_REGKEY_H +#define AP_REGKEY_H + +#if defined(WIN32) || defined(DOXYGEN) + +#include "apr.h" +#include "apr_pools.h" +#include "ap_config.h" /* Just for AP_DECLARE */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ap_regkey_t ap_regkey_t; + +/* Used to recover AP_REGKEY_* constants + */ +AP_DECLARE(const ap_regkey_t *) ap_regkey_const(int i); + +/** + * @file ap_regkey.h + * @brief APR-style Win32 Registry Manipulation + */ + +/** + * Win32 Only: Constants for ap_regkey_open() + */ +#define AP_REGKEY_CLASSES_ROOT ap_regkey_const(0) +#define AP_REGKEY_CURRENT_CONFIG ap_regkey_const(1) +#define AP_REGKEY_CURRENT_USER ap_regkey_const(2) +#define AP_REGKEY_LOCAL_MACHINE ap_regkey_const(3) +#define AP_REGKEY_USERS ap_regkey_const(4) +#define AP_REGKEY_PERFORMANCE_DATA ap_regkey_const(5) +#define AP_REGKEY_DYN_DATA ap_regkey_const(6) + +/** + * Win32 Only: Flags for ap_regkey_value_set() + */ +#define AP_REGKEY_EXPAND 0x0001 + +/** + * Win32 Only: Open the specified registry key. + * @param newkey The opened registry key + * @param parentkey The open registry key of the parent, or one of + *
    + *           AP_REGKEY_CLASSES_ROOT
    + *           AP_REGKEY_CURRENT_CONFIG
    + *           AP_REGKEY_CURRENT_USER
    + *           AP_REGKEY_LOCAL_MACHINE
    + *           AP_REGKEY_USERS
    + *           AP_REGKEY_PERFORMANCE_DATA 
    + *           AP_REGKEY_DYN_DATA 
    + * 
    + * @param keyname The path of the key relative to the parent key + * @param flags Or'ed value of: + *
    + *           APR_READ             open key for reading
    + *           APR_WRITE            open key for writing
    + *           APR_CREATE           create the key if it doesn't exist
    + *           APR_EXCL             return error if APR_CREATE and key exists
    + * 
    + * @param pool The pool in which newkey is allocated + */ +AP_DECLARE(apr_status_t) ap_regkey_open(ap_regkey_t **newkey, + const ap_regkey_t *parentkey, + const char *keyname, + apr_int32_t flags, + apr_pool_t *pool); + +/** + * Win32 Only: Close the registry key opened or created by ap_regkey_open(). + * @param key The registry key to close + */ +AP_DECLARE(apr_status_t) ap_regkey_close(ap_regkey_t *key); + +/** + * Win32 Only: Remove the given registry key. + * @param parentkey The open registry key of the parent, or one of + *
    + *           AP_REGKEY_CLASSES_ROOT
    + *           AP_REGKEY_CURRENT_CONFIG
    + *           AP_REGKEY_CURRENT_USER
    + *           AP_REGKEY_LOCAL_MACHINE
    + *           AP_REGKEY_USERS
    + *           AP_REGKEY_PERFORMANCE_DATA 
    + *           AP_REGKEY_DYN_DATA 
    + * 
    + * @param keyname The path of the key relative to the parent key + * @param pool The pool used for temp allocations + * @remark ap_regkey_remove() is not recursive, although it removes + * all values within the given keyname, it will not remove a key + * containing subkeys. + */ +AP_DECLARE(apr_status_t) ap_regkey_remove(const ap_regkey_t *parent, + const char *keyname, + apr_pool_t *pool); + +/** + * Win32 Only: Retrieve a registry value string from an open key. + * @param result The string value retrieved + * @param key The registry key to retrieve the value from + * @param valuename The named value to retrieve (pass "" for the default) + * @param pool The pool used to store the result + * @remark There is no toggle to prevent environment variable expansion + * if the registry value is set with AP_REG_EXPAND (REG_EXPAND_SZ), such + * expansions are always performed. + */ +AP_DECLARE(apr_status_t) ap_regkey_value_get(char **result, + ap_regkey_t *key, + const char *valuename, + apr_pool_t *pool); + +/** + * Win32 Only: Store a registry value string into an open key. + * @param key The registry key to store the value into + * @param valuename The named value to store (pass "" for the default) + * @param value The string to store for the named value + * @param flags The option AP_REGKEY_EXPAND or 0, where AP_REGKEY_EXPAND + * values will find all %foo% variables expanded from the environment. + * @param pool The pool used for temp allocations + */ +AP_DECLARE(apr_status_t) ap_regkey_value_set(ap_regkey_t *key, + const char *valuename, + const char *value, + apr_int32_t flags, + apr_pool_t *pool); + +/** + * Win32 Only: Retrieve a raw byte value from an open key. + * @param result The raw bytes value retrieved + * @param resultsize Pointer to a variable to store the number raw bytes retrieved + * @param key The registry key to retrieve the value from + * @param valuename The named value to retrieve (pass "" for the default) + * @param pool The pool used to store the result + */ +AP_DECLARE(apr_status_t) ap_regkey_value_raw_get(void **result, + apr_size_t *resultsize, + apr_int32_t *resulttype, + ap_regkey_t *key, + const char *valuename, + apr_pool_t *pool); + +/** + * Win32 Only: Store a raw bytes value into an open key. + * @param key The registry key to store the value into + * @param valuename The named value to store (pass "" for the default) + * @param value The bytes to store for the named value + * @param valuesize The number of bytes for value + * @param valuetype The + * values will find all %foo% variables expanded from the environment. + * @param pool The pool used for temp allocations + */ +AP_DECLARE(apr_status_t) ap_regkey_value_raw_set(ap_regkey_t *key, + const char *valuename, + const void *value, + apr_size_t valuesize, + apr_int32_t valuetype, + apr_pool_t *pool); + +/** + * Win32 Only: Retrieve a registry value string from an open key. + * @param result The string elements retrieved from a REG_MULTI_SZ string array + * @param key The registry key to retrieve the value from + * @param valuename The named value to retrieve (pass "" for the default) + * @param pool The pool used to store the result + */ +AP_DECLARE(apr_status_t) ap_regkey_value_array_get(apr_array_header_t **result, + ap_regkey_t *key, + const char *valuename, + apr_pool_t *pool); + +/** + * Win32 Only: Store a registry value string array into an open key. + * @param key The registry key to store the value into + * @param valuename The named value to store (pass "" for the default) + * @param nelts The string elements to store in a REG_MULTI_SZ string array + * @param elts The number of elements in the elts string array + * @param pool The pool used for temp allocations + */ +AP_DECLARE(apr_status_t) ap_regkey_value_array_set(ap_regkey_t *key, + const char *valuename, + int nelts, + const char * const * elts, + apr_pool_t *pool); + +/** + * Win32 Only: Remove a registry value from an open key. + * @param key The registry key to remove the value from + * @param valuename The named value to remove (pass "" for the default) + * @param pool The pool used for temp allocations + */ +AP_DECLARE(apr_status_t) ap_regkey_value_remove(const ap_regkey_t *key, + const char *valuename, + apr_pool_t *pool); + +#ifdef __cplusplus +} +#endif + +#endif /* def WIN32 || def DOXYGEN */ + +#endif /* AP_REGKEY_H */ diff --git a/rubbos/app/apache2/include/ap_release.h b/rubbos/app/apache2/include/ap_release.h new file mode 100644 index 00000000..9fee3f4f --- /dev/null +++ b/rubbos/app/apache2/include/ap_release.h @@ -0,0 +1,56 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_RELEASE_H +#define AP_RELEASE_H + +#include "apr_general.h" /* stringify */ + +#define AP_SERVER_COPYRIGHT \ + "Copyright 2009 The Apache Software Foundation." + +/* + * The below defines the base string of the Server: header. Additional + * tokens can be added via the ap_add_version_component() API call. + * + * The tokens are listed in order of their significance for identifying the + * application. + * + * "Product tokens should be short and to the point -- use of them for + * advertizing or other non-essential information is explicitly forbidden." + * + * Example: "Apache/1.1.0 MrWidget/0.1-alpha" + */ +#define AP_SERVER_BASEVENDOR "Apache Software Foundation" +#define AP_SERVER_BASEPRODUCT "Apache" + +#define AP_SERVER_MAJORVERSION_NUMBER 2 +#define AP_SERVER_MINORVERSION_NUMBER 0 +#define AP_SERVER_PATCHLEVEL_NUMBER 64 +#define AP_SERVER_ADD_STRING "" + +/* keep old macros as well */ +#define AP_SERVER_MAJORVERSION APR_STRINGIFY(AP_SERVER_MAJORVERSION_NUMBER) +#define AP_SERVER_MINORVERSION APR_STRINGIFY(AP_SERVER_MINORVERSION_NUMBER) +#define AP_SERVER_PATCHLEVEL APR_STRINGIFY(AP_SERVER_PATCHLEVEL_NUMBER) \ + AP_SERVER_ADD_STRING + +#define AP_SERVER_MINORREVISION AP_SERVER_MAJORVERSION "." AP_SERVER_MINORVERSION +#define AP_SERVER_BASEREVISION AP_SERVER_MINORREVISION "." AP_SERVER_PATCHLEVEL +#define AP_SERVER_BASEVERSION AP_SERVER_BASEPRODUCT "/" AP_SERVER_BASEREVISION +#define AP_SERVER_VERSION AP_SERVER_BASEVERSION + +#endif diff --git a/rubbos/app/apache2/include/apr.h b/rubbos/app/apache2/include/apr.h new file mode 100644 index 00000000..276e0ab6 --- /dev/null +++ b/rubbos/app/apache2/include/apr.h @@ -0,0 +1,414 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef APR_H +#define APR_H + +/* GENERATED FILE WARNING! DO NOT EDIT apr.h + * + * You must modify apr.h.in instead. + * + * And please, make an effort to stub apr.hw and apr.hnw in the process. + */ + +/** + * @file apr.h + * @brief APR Platform Definitions + * @remark This is a generated header generated from include/apr.h.in by + * ./configure, or copied from include/apr.hw or include/apr.hnw + * for Win32 or Netware by those build environments, respectively. + */ + +/** + * @defgroup APR Apache Portability Runtime library + * @{ + */ +/** + * @defgroup apr_platform Platform Definitions + * @{ + * @warning + * The actual values of macros and typedefs on this page
    + * are platform specific and should NOT be relied upon!
    + */ + +/* So that we can use inline on some critical functions, and use + * GNUC attributes (such as to get -Wall warnings for printf-like + * functions). Only do this in gcc 2.7 or later ... it may work + * on earlier stuff, but why chance it. + * + * We've since discovered that the gcc shipped with NeXT systems + * as "cc" is completely broken. It claims to be __GNUC__ and so + * on, but it doesn't implement half of the things that __GNUC__ + * means. In particular it's missing inline and the __attribute__ + * stuff. So we hack around it. PR#1613. -djg + */ +#if !defined(__GNUC__) || __GNUC__ < 2 || \ + (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\ + defined(NEXT) +#ifndef __attribute__ +#define __attribute__(__x) +#endif +#define APR_INLINE +#define APR_HAS_INLINE 0 +#else +#define APR_INLINE __inline__ +#define APR_HAS_INLINE 1 +#endif + +#define APR_HAVE_ARPA_INET_H 1 +#define APR_HAVE_CONIO_H 0 +#define APR_HAVE_CRYPT_H 1 +#define APR_HAVE_CTYPE_H 1 +#define APR_HAVE_DIRENT_H 1 +#define APR_HAVE_ERRNO_H 1 +#define APR_HAVE_FCNTL_H 1 +#define APR_HAVE_IO_H 0 +#define APR_HAVE_LIMITS_H 1 +#define APR_HAVE_NETDB_H 1 +#define APR_HAVE_NETINET_IN_H 1 +#define APR_HAVE_NETINET_SCTP_H 0 +#define APR_HAVE_NETINET_SCTP_UIO_H 0 +#define APR_HAVE_NETINET_TCP_H 1 +#define APR_HAVE_PTHREAD_H 1 +#define APR_HAVE_SEMAPHORE_H 1 +#define APR_HAVE_SIGNAL_H 1 +#define APR_HAVE_STDARG_H 1 +#define APR_HAVE_STDINT_H 1 +#define APR_HAVE_STDIO_H 1 +#define APR_HAVE_STDLIB_H 1 +#define APR_HAVE_STRING_H 1 +#define APR_HAVE_STRINGS_H 1 +#define APR_HAVE_SYS_IOCTL_H 1 +#define APR_HAVE_SYS_SENDFILE_H 1 +#define APR_HAVE_SYS_SIGNAL_H 1 +#define APR_HAVE_SYS_SOCKET_H 1 +#define APR_HAVE_SYS_SOCKIO_H 0 +#define APR_HAVE_SYS_SYSLIMITS_H 0 +#define APR_HAVE_SYS_TIME_H 1 +#define APR_HAVE_SYS_TYPES_H 1 +#define APR_HAVE_SYS_UIO_H 1 +#define APR_HAVE_SYS_UN_H 1 +#define APR_HAVE_SYS_WAIT_H 1 +#define APR_HAVE_TIME_H 1 +#define APR_HAVE_UNISTD_H 1 + +/** @} */ + +/* We don't include our conditional headers within the doxyblocks + * or the extern "C" namespace + */ + +#if APR_HAVE_SYS_TYPES_H +#include +#endif + +#if APR_HAVE_SYS_SOCKET_H +#include +#endif + +#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) +/* C99 7.18.4 requires that stdint.h only exposes INT64_C + * and UINT64_C for C++ implementations if this is defined: */ +#define __STDC_CONSTANT_MACROS +#endif + +#if APR_HAVE_STDINT_H +#include +#endif + +#if APR_HAVE_SYS_WAIT_H +#include +#endif + +#ifdef OS2 +#define INCL_DOS +#define INCL_DOSERRORS +#include +#endif + +/* header files for PATH_MAX, _POSIX_PATH_MAX */ +#if APR_HAVE_LIMITS_H +#include +#else +#if APR_HAVE_SYS_SYSLIMITS_H +#include +#endif +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup apr_platform + * @ingroup APR + * @{ + */ + +#define APR_HAVE_SHMEM_MMAP_TMP 1 +#define APR_HAVE_SHMEM_MMAP_SHM 1 +#define APR_HAVE_SHMEM_MMAP_ZERO 1 +#define APR_HAVE_SHMEM_SHMGET_ANON 1 +#define APR_HAVE_SHMEM_SHMGET 1 +#define APR_HAVE_SHMEM_MMAP_ANON 1 +#define APR_HAVE_SHMEM_BEOS 0 + +#define APR_USE_SHMEM_MMAP_TMP 0 +#define APR_USE_SHMEM_MMAP_SHM 0 +#define APR_USE_SHMEM_MMAP_ZERO 0 +#define APR_USE_SHMEM_SHMGET_ANON 0 +#define APR_USE_SHMEM_SHMGET 1 +#define APR_USE_SHMEM_MMAP_ANON 1 +#define APR_USE_SHMEM_BEOS 0 + +#define APR_USE_FLOCK_SERIALIZE 0 +#define APR_USE_SYSVSEM_SERIALIZE 1 +#define APR_USE_POSIXSEM_SERIALIZE 0 +#define APR_USE_FCNTL_SERIALIZE 0 +#define APR_USE_PROC_PTHREAD_SERIALIZE 0 +#define APR_USE_PTHREAD_SERIALIZE 1 + +#define APR_HAS_FLOCK_SERIALIZE 1 +#define APR_HAS_SYSVSEM_SERIALIZE 1 +#define APR_HAS_POSIXSEM_SERIALIZE 0 +#define APR_HAS_FCNTL_SERIALIZE 1 +#define APR_HAS_PROC_PTHREAD_SERIALIZE 1 +#define APR_HAS_RWLOCK_SERIALIZE 0 + +#define APR_PROCESS_LOCK_IS_GLOBAL 0 + +#define APR_HAVE_CORKABLE_TCP 1 +#define APR_HAVE_GETRLIMIT 1 +#define APR_HAVE_IN_ADDR 1 +#define APR_HAVE_INET_ADDR 1 +#define APR_HAVE_INET_NETWORK 1 +#define APR_HAVE_IPV6 1 +#define APR_HAVE_MEMMOVE 1 +#define APR_HAVE_SETRLIMIT 1 +#define APR_HAVE_SIGACTION 1 +#define APR_HAVE_SIGSUSPEND 1 +#define APR_HAVE_SIGWAIT 1 +#define APR_HAVE_STRCASECMP 1 +#define APR_HAVE_STRDUP 1 +#define APR_HAVE_STRICMP 0 +#define APR_HAVE_STRNCASECMP 1 +#define APR_HAVE_STRNICMP 0 +#define APR_HAVE_STRSTR 1 +#define APR_HAVE_MEMCHR 1 +#define APR_HAVE_STRUCT_RLIMIT 1 +#define APR_HAVE_UNION_SEMUN 0 +#define APR_HAVE_SCTP 0 + +/* APR Feature Macros */ +#define APR_HAS_SHARED_MEMORY 1 +#define APR_HAS_THREADS 1 +#define APR_HAS_SENDFILE 1 +#define APR_HAS_MMAP 1 +#define APR_HAS_FORK 1 +#define APR_HAS_RANDOM 1 +#define APR_HAS_OTHER_CHILD 1 +#define APR_HAS_DSO 1 +#define APR_HAS_SO_ACCEPTFILTER 0 +#define APR_HAS_UNICODE_FS 0 +#define APR_HAS_PROC_INVOKED 0 +#define APR_HAS_USER 1 +#define APR_HAS_LARGE_FILES 0 +#define APR_HAS_XTHREAD_FILES 0 +#define APR_HAS_OS_UUID 0 + +/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible + * to poll on files/pipes. On such a system, the application can + * call apr_socket_from_file() to get an APR socket representation and + * then pass the socket representation to apr_poll_socket_add(). + */ +#define APR_FILES_AS_SOCKETS 1 + +/* Not all platforms have a real INADDR_NONE. This macro replaces INADDR_NONE + * on all platforms. + */ +#define APR_INADDR_NONE INADDR_NONE + +/* This macro indicates whether or not EBCDIC is the native character set. + */ +#define APR_CHARSET_EBCDIC 0 + +/* If we have a TCP implementation that can be "corked", what flag + * do we use? + */ +#define APR_TCP_NOPUSH_FLAG TCP_CORK + +/* Is the TCP_NODELAY socket option inherited from listening sockets? +*/ +#define APR_TCP_NODELAY_INHERITED 1 + +/* Is the O_NONBLOCK flag inherited from listening sockets? +*/ +#define APR_O_NONBLOCK_INHERITED 0 + +/* Typedefs that APR needs. */ + +typedef unsigned char apr_byte_t; + +typedef short apr_int16_t; +typedef unsigned short apr_uint16_t; + +typedef int apr_int32_t; +typedef unsigned int apr_uint32_t; + +typedef long apr_int64_t; +typedef unsigned long apr_uint64_t; + +typedef size_t apr_size_t; +typedef ssize_t apr_ssize_t; +typedef off_t apr_off_t; +typedef socklen_t apr_socklen_t; + +typedef unsigned long apr_ino_t; + +#define APR_SIZEOF_VOIDP 8 + +/* Mechanisms to properly type numeric literals */ +#define APR_INT64_C(val) INT64_C(val) + +/* Definitions that APR programs need to work properly. */ + +/** + * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, + * so that they follow the platform's calling convention. + * @example + */ +/** void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); + */ +#define APR_THREAD_FUNC + +/** + * The public APR functions are declared with APR_DECLARE(), so they may + * use the most appropriate calling convention. Public APR functions with + * variable arguments must use APR_DECLARE_NONSTD(). + * + * @remark Both the declaration and implementations must use the same macro. + * @example + */ +/** APR_DECLARE(rettype) apr_func(args) + * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA + * @remark Note that when APR compiles the library itself, it passes the + * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) + * to export public symbols from the dynamic library build.\n + * The user must define the APR_DECLARE_STATIC when compiling to target + * the static APR library on some platforms (e.g. Win32.) The public symbols + * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n + * By default, compiling an application and including the APR public + * headers, without defining APR_DECLARE_STATIC, will prepare the code to be + * linked to the dynamic library. + */ +#define APR_DECLARE(type) type + +/** + * The public APR functions using variable arguments are declared with + * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. + * @see APR_DECLARE @see APR_DECLARE_DATA + * @remark Both the declaration and implementations must use the same macro. + * @example + */ +/** APR_DECLARE_NONSTD(rettype) apr_func(args, ...); + */ +#define APR_DECLARE_NONSTD(type) type + +/** + * The public APR variables are declared with AP_MODULE_DECLARE_DATA. + * This assures the appropriate indirection is invoked at compile time. + * @see APR_DECLARE @see APR_DECLARE_NONSTD + * @remark Note that the declaration and implementations use different forms, + * but both must include the macro. + * @example + */ +/** extern APR_DECLARE_DATA type apr_variable;\n + * APR_DECLARE_DATA type apr_variable = value; + */ +#define APR_DECLARE_DATA + +/* Define APR_SSIZE_T_FMT. + * If ssize_t is an integer we define it to be "d", + * if ssize_t is a long int we define it to be "ld", + * if ssize_t is neither we declare an error here. + * I looked for a better way to define this here, but couldn't find one, so + * to find the logic for this definition search for "ssize_t_fmt" in + * configure.in. + */ +#define APR_SSIZE_T_FMT "ld" + +/* And APR_SIZE_T_FMT */ +#define APR_SIZE_T_FMT "ld" + +/* And APR_OFF_T_FMT */ +#define APR_OFF_T_FMT "ld" + +/* And APR_PID_T_FMT */ +#define APR_PID_T_FMT "d" + +/* And APR_INT64_T_FMT */ +#define APR_INT64_T_FMT "ld" +#define APR_INT64_T_FMT_LEN 2 + +/* And APR_UINT64_T_FMT */ +#define APR_UINT64_T_FMT "lu" +#define APR_UINT64_T_FMT_LEN 2 + +/* And APR_UINT64_T_HEX_FMT */ +#define APR_UINT64_T_HEX_FMT "lx" +#define APR_UINT64_T_HEX_FMT_LEN (sizeof(APR_UINT64_T_HEX_FMT) - 1) + +/* Deal with atoi64 variables ... these should move to apr_private.h */ +#define APR_HAVE_INT64_STRFN 1 +#define APR_INT64_STRFN strtol + +/* are we going to force the generic atomic operations */ +#define APR_FORCE_ATOMIC_GENERIC 1 + +/* Does the proc mutex lock threads too */ +#define APR_PROC_MUTEX_IS_GLOBAL 0 + +/* Local machine definition for console and log output. */ +#define APR_EOL_STR "\n" + + +#if APR_HAVE_SYS_WAIT_H +#ifdef WEXITSTATUS +#define apr_wait_t int +#else +#define apr_wait_t union wait +#define WEXITSTATUS(status) (int)((status).w_retcode) +#define WTERMSIG(status) (int)((status).w_termsig) +#endif /* !WEXITSTATUS */ +#endif /* HAVE_SYS_WAIT_H */ + +#if defined(PATH_MAX) +#define APR_PATH_MAX PATH_MAX +#elif defined(_POSIX_PATH_MAX) +#define APR_PATH_MAX _POSIX_PATH_MAX +#else +#error no decision has been made on APR_PATH_MAX for your platform +#endif + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* APR_H */ diff --git a/rubbos/app/apache2/include/apr_allocator.h b/rubbos/app/apache2/include/apr_allocator.h new file mode 100644 index 00000000..b880c4e2 --- /dev/null +++ b/rubbos/app/apache2/include/apr_allocator.h @@ -0,0 +1,170 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_ALLOCATOR_H +#define APR_ALLOCATOR_H + +/** + * @file apr_allocator.h + * @brief APR Internal Memory Allocation + */ + +#include "apr.h" +#include "apr_errno.h" +#define APR_WANT_MEMFUNC /**< For no good reason? */ +#include "apr_want.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup apr_allocator Internal Memory Allocation + * @ingroup APR + * @{ + */ + +/** the allocator structure */ +typedef struct apr_allocator_t apr_allocator_t; +/** the structure which holds information about the allocation */ +typedef struct apr_memnode_t apr_memnode_t; + +/** basic memory node structure */ +struct apr_memnode_t { + apr_memnode_t *next; /**< next memnode */ + apr_memnode_t **ref; /**< reference to self */ + apr_uint32_t index; /**< size */ + apr_uint32_t free_index; /**< how much free */ + char *first_avail; /**< pointer to first free memory */ + char *endp; /**< pointer to end of free memory */ +}; + +/** The base size of a memory node - aligned. */ +#define APR_MEMNODE_T_SIZE APR_ALIGN_DEFAULT(sizeof(apr_memnode_t)) + +/** Symbolic constants */ +#define APR_ALLOCATOR_MAX_FREE_UNLIMITED 0 + +/** + * Create a new allocator + * @param allocator The allocator we have just created. + * + */ +APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator); + +/** + * Destroy an allocator + * @param allocator The allocator to be destroyed + * @remark Any memnodes not given back to the allocator prior to destroying + * will _not_ be free()d. + */ +APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator); + +/** + * Allocate a block of mem from the allocator + * @param allocator The allocator to allocate from + * @param size The size of the mem to allocate (excluding the + * memnode structure) + */ +APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator, + apr_size_t size); + +/** + * Free a block of mem, giving it back to the allocator + * @param allocator The allocator to give the mem back to + * @param memnode The memory node to return + */ +APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator, + apr_memnode_t *memnode); + +#include "apr_pools.h" + +/** + * Set the owner of the allocator + * @param allocator The allocator to set the owner for + * @param pool The pool that is to own the allocator + * @remark Typically pool is the highest level pool using the allocator + */ +/* + * XXX: see if we can come up with something a bit better. Currently + * you can make a pool an owner, but if the pool doesn't use the allocator + * the allocator will never be destroyed. + */ +APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator, + apr_pool_t *pool); + +/** @deprecated @see apr_allocator_owner_set */ +APR_DECLARE(void) apr_allocator_set_owner(apr_allocator_t *allocator, + apr_pool_t *pool); + +/** + * Get the current owner of the allocator + * @param allocator The allocator to get the owner from + */ +APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator); + +/** @deprecated @see apr_allocator_owner_get */ +APR_DECLARE(apr_pool_t *) apr_allocator_get_owner( + apr_allocator_t *allocator); + +/** + * Set the current threshold at which the allocator should start + * giving blocks back to the system. + * @param allocator The allocator the set the threshold on + * @param size The threshold. 0 == unlimited. + */ +APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator, + apr_size_t size); + +/** @deprecated @see apr_allocator_max_free_set */ +APR_DECLARE(void) apr_allocator_set_max_free(apr_allocator_t *allocator, + apr_size_t size); + +#include "apr_thread_mutex.h" + +#if APR_HAS_THREADS +/** + * Set a mutex for the allocator to use + * @param allocator The allocator to set the mutex for + * @param mutex The mutex + */ +APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator, + apr_thread_mutex_t *mutex); + +/** @deprecated @see apr_allocator_mutex_set */ +APR_DECLARE(void) apr_allocator_set_mutex(apr_allocator_t *allocator, + apr_thread_mutex_t *mutex); + +/** + * Get the mutex currently set for the allocator + * @param allocator The allocator + */ +APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get( + apr_allocator_t *allocator); + +/** @deprecated @see apr_allocator_mutex_get */ +APR_DECLARE(apr_thread_mutex_t *) apr_allocator_get_mutex( + apr_allocator_t *allocator); + +#endif /* APR_HAS_THREADS */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APR_ALLOCATOR_H */ diff --git a/rubbos/app/apache2/include/apr_anylock.h b/rubbos/app/apache2/include/apr_anylock.h new file mode 100644 index 00000000..6b724de2 --- /dev/null +++ b/rubbos/app/apache2/include/apr_anylock.h @@ -0,0 +1,128 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file apr_anylock.h + * @brief APR-Util transparent any lock flavor wrapper + */ +#ifndef APR_ANYLOCK_H +#define APR_ANYLOCK_H + +#include "apr_proc_mutex.h" +#include "apr_thread_mutex.h" +#include "apr_thread_rwlock.h" + +/** Structure that may contain any APR lock type */ +typedef struct apr_anylock_t { + /** Indicates what type of lock is in lock */ + enum tm_lock { + apr_anylock_none, /**< None */ + apr_anylock_procmutex, /**< Process-based */ + apr_anylock_threadmutex, /**< Thread-based */ + apr_anylock_readlock, /**< Read lock */ + apr_anylock_writelock /**< Write lock */ + } type; + /** Union of all possible APR locks */ + union apr_anylock_u_t { + apr_proc_mutex_t *pm; /**< Process mutex */ +#if APR_HAS_THREADS + apr_thread_mutex_t *tm; /**< Thread mutex */ + apr_thread_rwlock_t *rw; /**< Read-write lock */ +#endif + } lock; +} apr_anylock_t; + +#if APR_HAS_THREADS + +/** Lock an apr_anylock_t structure */ +#define APR_ANYLOCK_LOCK(lck) \ + (((lck)->type == apr_anylock_none) \ + ? APR_SUCCESS \ + : (((lck)->type == apr_anylock_threadmutex) \ + ? apr_thread_mutex_lock((lck)->lock.tm) \ + : (((lck)->type == apr_anylock_procmutex) \ + ? apr_proc_mutex_lock((lck)->lock.pm) \ + : (((lck)->type == apr_anylock_readlock) \ + ? apr_thread_rwlock_rdlock((lck)->lock.rw) \ + : (((lck)->type == apr_anylock_writelock) \ + ? apr_thread_rwlock_wrlock((lck)->lock.rw) \ + : APR_EINVAL))))) + +#else /* APR_HAS_THREADS */ + +#define APR_ANYLOCK_LOCK(lck) \ + (((lck)->type == apr_anylock_none) \ + ? APR_SUCCESS \ + : (((lck)->type == apr_anylock_procmutex) \ + ? apr_proc_mutex_lock((lck)->lock.pm) \ + : APR_EINVAL)) + +#endif /* APR_HAS_THREADS */ + +#if APR_HAS_THREADS + +/** Try to lock an apr_anylock_t structure */ +#define APR_ANYLOCK_TRYLOCK(lck) \ + (((lck)->type == apr_anylock_none) \ + ? APR_SUCCESS \ + : (((lck)->type == apr_anylock_threadmutex) \ + ? apr_thread_mutex_trylock((lck)->lock.tm) \ + : (((lck)->type == apr_anylock_procmutex) \ + ? apr_proc_mutex_trylock((lck)->lock.pm) \ + : (((lck)->type == apr_anylock_readlock) \ + ? apr_thread_rwlock_tryrdlock((lck)->lock.rw) \ + : (((lck)->type == apr_anylock_writelock) \ + ? apr_thread_rwlock_trywrlock((lck)->lock.rw) \ + : APR_EINVAL))))) + +#else /* APR_HAS_THREADS */ + +#define APR_ANYLOCK_TRYLOCK(lck) \ + (((lck)->type == apr_anylock_none) \ + ? APR_SUCCESS \ + : (((lck)->type == apr_anylock_procmutex) \ + ? apr_proc_mutex_trylock((lck)->lock.pm) \ + : APR_EINVAL)) + +#endif /* APR_HAS_THREADS */ + +#if APR_HAS_THREADS + +/** Unlock an apr_anylock_t structure */ +#define APR_ANYLOCK_UNLOCK(lck) \ + (((lck)->type == apr_anylock_none) \ + ? APR_SUCCESS \ + : (((lck)->type == apr_anylock_threadmutex) \ + ? apr_thread_mutex_unlock((lck)->lock.tm) \ + : (((lck)->type == apr_anylock_procmutex) \ + ? apr_proc_mutex_unlock((lck)->lock.pm) \ + : ((((lck)->type == apr_anylock_readlock) || \ + ((lck)->type == apr_anylock_writelock)) \ + ? apr_thread_rwlock_unlock((lck)->lock.rw) \ + : APR_EINVAL)))) + +#else /* APR_HAS_THREADS */ + +#define APR_ANYLOCK_UNLOCK(lck) \ + (((lck)->type == apr_anylock_none) \ + ? APR_SUCCESS \ + : (((lck)->type == apr_anylock_procmutex) \ + ? apr_proc_mutex_unlock((lck)->lock.pm) \ + : APR_EINVAL)) + +#endif /* APR_HAS_THREADS */ + +#endif /* !APR_ANYLOCK_H */ diff --git a/rubbos/app/apache2/include/apr_atomic.h b/rubbos/app/apache2/include/apr_atomic.h new file mode 100644 index 00000000..87889292 --- /dev/null +++ b/rubbos/app/apache2/include/apr_atomic.h @@ -0,0 +1,314 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_ATOMIC_H +#define APR_ATOMIC_H + +/** + * @file apr_atomic.h + * @brief APR Atomic Operations + */ + +#include "apr.h" +#include "apr_pools.h" + +/* Platform includes for atomics */ +#if defined(NETWARE) || defined(__MVS__) /* OS/390 */ +#include +#elif defined(__FreeBSD__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup apr_atomic Atomic Operations + * @ingroup APR + * @{ + */ + +/* easiest way to get these documented for the moment */ +#if defined(DOXYGEN) +/** + * structure for holding a atomic value. + * this number >only< has a 24 bit size on some platforms + */ +typedef apr_atomic_t; + +/** + * this function is required on some platforms to initialize the + * atomic operation's internal structures + * @param p pool + * @return APR_SUCCESS on successful completion + */ +apr_status_t apr_atomic_init(apr_pool_t *p); +/** + * read the value stored in a atomic variable + * @param mem the pointer + * @warning on certain platforms this number is not stored + * directly in the pointer. in others it is + */ +apr_uint32_t apr_atomic_read(volatile apr_atomic_t *mem); +/** + * set the value for atomic. + * @param mem the pointer + * @param val the value + */ +void apr_atomic_set(volatile apr_atomic_t *mem, apr_uint32_t val); +/** + * Add 'val' to the atomic variable + * @param mem pointer to the atomic value + * @param val the addition + */ +void apr_atomic_add(volatile apr_atomic_t *mem, apr_uint32_t val); + +/** + * increment the atomic variable by 1 + * @param mem pointer to the atomic value + */ +void apr_atomic_inc(volatile apr_atomic_t *mem); + +/** + * decrement the atomic variable by 1 + * @param mem pointer to the atomic value + * @return zero if the value is zero, otherwise non-zero + */ +int apr_atomic_dec(volatile apr_atomic_t *mem); + +/** + * compare the atomic's value with cmp. + * If they are the same swap the value with 'with' + * @param mem pointer to the atomic value + * @param with what to swap it with + * @param cmp the value to compare it to + * @return the old value of the atomic + * @warning do not mix apr_atomic's with the CAS function. + * on some platforms they may be implemented by different mechanisms + */ +apr_uint32_t apr_atomic_cas(volatile apr_uint32_t *mem, long with, long cmp); + +/** + * compare the pointer's value with cmp. + * If they are the same swap the value with 'with' + * @param mem pointer to the pointer + * @param with what to swap it with + * @param cmp the value to compare it to + * @return the old value of the pointer + */ +void *apr_atomic_casptr(volatile void **mem, void *with, const void *cmp); +#else /* !DOXYGEN */ + +/* The following definitions provide optimized, OS-specific + * implementations of the APR atomic functions on various + * platforms. Any atomic operation that isn't redefined as + * a macro here will be declared as a function later, and + * apr_atomic.c will provide a mutex-based default implementation. + */ + +#if defined(WIN32) + +#define apr_atomic_t LONG + +#define apr_atomic_add(mem, val) InterlockedExchangeAdd(mem,val) +#define apr_atomic_dec(mem) InterlockedDecrement(mem) +#define apr_atomic_inc(mem) InterlockedIncrement(mem) +#define apr_atomic_set(mem, val) InterlockedExchange(mem, val) +#define apr_atomic_read(mem) (*mem) +#define apr_atomic_cas(mem,with,cmp) InterlockedCompareExchange(mem,with,cmp) +#define apr_atomic_init(pool) APR_SUCCESS +#define apr_atomic_casptr(mem,with,cmp) InterlockedCompareExchangePointer(mem,with,cmp) + +#elif defined(NETWARE) + +#define apr_atomic_t unsigned long + +#define apr_atomic_add(mem, val) atomic_add(mem,val) +#define apr_atomic_inc(mem) atomic_inc(mem) +#define apr_atomic_set(mem, val) (*mem = val) +#define apr_atomic_read(mem) (*mem) +#define apr_atomic_init(pool) APR_SUCCESS +#define apr_atomic_cas(mem,with,cmp) atomic_cmpxchg((unsigned long *)(mem),(unsigned long)(cmp),(unsigned long)(with)) + +int apr_atomic_dec(apr_atomic_t *mem); +void *apr_atomic_casptr(void **mem, void *with, const void *cmp); +#define APR_OVERRIDE_ATOMIC_DEC 1 +#define APR_OVERRIDE_ATOMIC_CASPTR 1 + +inline int apr_atomic_dec(apr_atomic_t *mem) +{ + return (atomic_xchgadd(mem, 0xFFFFFFFF) - 1); +} + +inline void *apr_atomic_casptr(void **mem, void *with, const void *cmp) +{ + return (void*)atomic_cmpxchg((unsigned long *)mem,(unsigned long)cmp,(unsigned long)with); +} + +#elif defined(__FreeBSD__) + +#define apr_atomic_t apr_uint32_t +#define apr_atomic_add(mem, val) (atomic_add_int(mem,val),mem) +#define apr_atomic_dec(mem) (atomic_subtract_int(mem,1),mem) +#define apr_atomic_inc(mem) (atomic_add_int(mem,1),mem) +#define apr_atomic_set(mem, val) (atomic_set_int(mem, val),mem) +#define apr_atomic_read(mem) (*mem) + +#elif (defined(__linux__) || defined(__EMX__)) && defined(__i386__) && !APR_FORCE_ATOMIC_GENERIC + +#define apr_atomic_t apr_uint32_t +#define apr_atomic_cas(mem,with,cmp) \ +({ apr_atomic_t prev; \ + asm volatile ("lock; cmpxchgl %1, %2" \ + : "=a" (prev) \ + : "r" (with), "m" (*(mem)), "0"(cmp) \ + : "memory"); \ + prev;}) + +#define apr_atomic_add(mem, val) \ +({ register apr_atomic_t last; \ + do { \ + last = *(mem); \ + } while (apr_atomic_cas((mem), last + (val), last) != last); \ + }) + +#define apr_atomic_dec(mem) \ +({ register apr_atomic_t last; \ + do { \ + last = *(mem); \ + } while (apr_atomic_cas((mem), last - 1, last) != last); \ + (--last != 0); }) + +#define apr_atomic_inc(mem) \ +({ register apr_atomic_t last; \ + do { \ + last = *(mem); \ + } while (apr_atomic_cas((mem), last + 1, last) != last); \ + }) + +#define apr_atomic_set(mem, val) (*(mem) = val) +#define apr_atomic_read(mem) (*(mem)) +#define apr_atomic_init(pool) APR_SUCCESS + +#elif defined(__MVS__) /* OS/390 */ + +#define apr_atomic_t cs_t + +apr_int32_t apr_atomic_add(volatile apr_atomic_t *mem, apr_int32_t val); +apr_uint32_t apr_atomic_cas(volatile apr_atomic_t *mem, apr_uint32_t swap, + apr_uint32_t cmp); +#define APR_OVERRIDE_ATOMIC_ADD 1 +#define APR_OVERRIDE_ATOMIC_CAS 1 + +#define apr_atomic_inc(mem) apr_atomic_add(mem, 1) +#define apr_atomic_dec(mem) apr_atomic_add(mem, -1) +#define apr_atomic_init(pool) APR_SUCCESS + +/* warning: the following two operations, _read and _set, are atomic + * if the memory variables are aligned (the usual case). + * + * If you try really hard and manage to mis-align them, they are not + * guaranteed to be atomic on S/390. But then your program will blow up + * with SIGBUS on a sparc, or with a S0C6 abend if you use the mis-aligned + * variables with other apr_atomic_* operations on OS/390. + */ + +#define apr_atomic_read(p) (*p) +#define apr_atomic_set(mem, val) (*mem = val) + +#endif /* end big if-elseif switch for platform-specifics */ + + +/* Default implementation of the atomic API + * The definitions above may override some or all of the + * atomic functions with optimized, platform-specific versions. + * Any operation that hasn't been overridden as a macro above + * is declared as a function here, unless APR_OVERRIDE_ATOMIC_[OPERATION] + * is defined. (The purpose of the APR_OVERRIDE_ATOMIC_* is + * to allow a platform to declare an apr_atomic_*() function + * with a different signature than the default.) + */ + +#if !defined(apr_atomic_t) +#define apr_atomic_t apr_uint32_t +#endif + +#if !defined(apr_atomic_init) && !defined(APR_OVERRIDE_ATOMIC_INIT) +apr_status_t apr_atomic_init(apr_pool_t *p); +#endif + +#if !defined(apr_atomic_read) && !defined(APR_OVERRIDE_ATOMIC_READ) +#define apr_atomic_read(p) *p +#endif + +#if !defined(apr_atomic_set) && !defined(APR_OVERRIDE_ATOMIC_SET) +void apr_atomic_set(volatile apr_atomic_t *mem, apr_uint32_t val); +#define APR_ATOMIC_NEED_DEFAULT_INIT 1 +#endif + +#if !defined(apr_atomic_add) && !defined(APR_OVERRIDE_ATOMIC_ADD) +void apr_atomic_add(volatile apr_atomic_t *mem, apr_uint32_t val); +#define APR_ATOMIC_NEED_DEFAULT_INIT 1 +#endif + +#if !defined(apr_atomic_inc) && !defined(APR_OVERRIDE_ATOMIC_INC) +void apr_atomic_inc(volatile apr_atomic_t *mem); +#define APR_ATOMIC_NEED_DEFAULT_INIT 1 +#endif + +#if !defined(apr_atomic_dec) && !defined(APR_OVERRIDE_ATOMIC_DEC) +int apr_atomic_dec(volatile apr_atomic_t *mem); +#define APR_ATOMIC_NEED_DEFAULT_INIT 1 +#endif + +#if !defined(apr_atomic_cas) && !defined(APR_OVERRIDE_ATOMIC_CAS) +apr_uint32_t apr_atomic_cas(volatile apr_uint32_t *mem,long with,long cmp); +#define APR_ATOMIC_NEED_DEFAULT_INIT 1 +#endif + +#if !defined(apr_atomic_casptr) && !defined(APR_OVERRIDE_ATOMIC_CASPTR) +#if APR_SIZEOF_VOIDP == 4 +#define apr_atomic_casptr(mem, with, cmp) (void *)apr_atomic_cas((apr_uint32_t *)(mem), (long)(with), (long)cmp) +#else +void *apr_atomic_casptr(volatile void **mem, void *with, const void *cmp); +#define APR_ATOMIC_NEED_DEFAULT_INIT 1 +#endif +#endif + +#ifndef APR_ATOMIC_NEED_DEFAULT_INIT +#define APR_ATOMIC_NEED_DEFAULT_INIT 0 +#endif + +/* If we're using the default versions of any of the atomic functions, + * we'll need the atomic init to set up mutexes. If a platform-specific + * override above has replaced the atomic_init with a macro, it's an error. + */ +#if APR_ATOMIC_NEED_DEFAULT_INIT +#if defined(apr_atomic_init) || defined(APR_OVERRIDE_ATOMIC_INIT) +#error Platform has redefined apr_atomic_init, but other default default atomics require a default apr_atomic_init +#endif +#endif /* APR_ATOMIC_NEED_DEFAULT_INIT */ + +#endif /* !DOXYGEN */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APR_ATOMIC_H */ diff --git a/rubbos/app/apache2/include/apr_base64.h b/rubbos/app/apache2/include/apr_base64.h new file mode 100644 index 00000000..f37614dc --- /dev/null +++ b/rubbos/app/apache2/include/apr_base64.h @@ -0,0 +1,112 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * The apr_vsnprintf/apr_snprintf functions are based on, and used with the + * permission of, the SIO stdio-replacement strx_* functions by Panos + * Tsirigotis for xinetd. + */ + +/** + * @file apr_base64.h + * @brief APR-UTIL Base64 Encoding + */ +#ifndef APR_BASE64_H +#define APR_BASE64_H + +#include "apu.h" +#include "apr_general.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup APR_Util_Base64 Base64 Encoding + * @ingroup APR_Util + * @{ + */ + +/* Simple BASE64 encode/decode functions. + * + * As we might encode binary strings, hence we require the length of + * the incoming plain source. And return the length of what we decoded. + * + * The decoding function takes any non valid char (i.e. whitespace, \0 + * or anything non A-Z,0-9 etc as terminal. + * + * plain strings/binary sequences are not assumed '\0' terminated. Encoded + * strings are neither. But probably should. + * + */ + +/** + * Given the length of an un-encrypted string, get the length of the + * encrypted string. + * @param len the length of an unencrypted string. + * @return the length of the string after it is encrypted + */ +APU_DECLARE(int) apr_base64_encode_len(int len); + +/** + * Encode a text string using base64encoding. + * @param coded_dst The destination string for the encoded string. + * @param plain_src The original string in plain text + * @param len_plain_src The length of the plain text string + * @return the length of the encoded string + */ +APU_DECLARE(int) apr_base64_encode(char * coded_dst, const char *plain_src, + int len_plain_src); + +/** + * Encode an EBCDIC string using base64encoding. + * @param coded_dst The destination string for the encoded string. + * @param plain_src The original string in plain text + * @param len_plain_src The length of the plain text string + * @return the length of the encoded string + */ +APU_DECLARE(int) apr_base64_encode_binary(char * coded_dst, + const unsigned char *plain_src, + int len_plain_src); + +/** + * Determine the maximum buffer length required to decode the plain text + * string given the encoded string. + * @param coded_src The encoded string + * @return the maximum required buffer length for the plain text string + */ +APU_DECLARE(int) apr_base64_decode_len(const char * coded_src); + +/** + * Decode a string to plain text + * @param plain_dst The destination string for the plain text + * @param coded_src The encoded string + * @return the length of the plain text string + */ +APU_DECLARE(int) apr_base64_decode(char * plain_dst, const char *coded_src); + +/** + * Decode an EBCDIC string to plain text + * @param plain_dst The destination string for the plain text + * @param coded_src The encoded string + * @return the length of the plain text string + */ +APU_DECLARE(int) apr_base64_decode_binary(unsigned char * plain_dst, + const char *coded_src); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_BASE64_H */ diff --git a/rubbos/app/apache2/include/apr_buckets.h b/rubbos/app/apache2/include/apr_buckets.h new file mode 100644 index 00000000..7f1b05ff --- /dev/null +++ b/rubbos/app/apache2/include/apr_buckets.h @@ -0,0 +1,1495 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file apr_buckets.h + * @brief APR-UTIL Buckets/Bucket Brigades + */ + +#ifndef APR_BUCKETS_H +#define APR_BUCKETS_H + +#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG) +#define APR_RING_DEBUG +#endif + +#include "apu.h" +#include "apr_network_io.h" +#include "apr_file_io.h" +#include "apr_general.h" +#include "apr_mmap.h" +#include "apr_errno.h" +#include "apr_ring.h" +#include "apr.h" +#if APR_HAVE_SYS_UIO_H +#include /* for struct iovec */ +#endif +#if APR_HAVE_STDARG_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup APR_Util_Bucket_Brigades Bucket Brigades + * @ingroup APR_Util + * @{ + */ + +/** default bucket buffer size - 8KB minus room for memory allocator headers */ +#define APR_BUCKET_BUFF_SIZE 8000 + +/** Determines how a bucket or brigade should be read */ +typedef enum { + APR_BLOCK_READ, /**< block until data becomes available */ + APR_NONBLOCK_READ /**< return immediately if no data is available */ +} apr_read_type_e; + +/** + * The one-sentence buzzword-laden overview: Bucket brigades represent + * a complex data stream that can be passed through a layered IO + * system without unnecessary copying. A longer overview follows... + * + * A bucket brigade is a doubly linked list (ring) of buckets, so we + * aren't limited to inserting at the front and removing at the end. + * Buckets are only passed around as members of a brigade, although + * singleton buckets can occur for short periods of time. + * + * Buckets are data stores of various types. They can refer to data in + * memory, or part of a file or mmap area, or the output of a process, + * etc. Buckets also have some type-dependent accessor functions: + * read, split, copy, setaside, and destroy. + * + * read returns the address and size of the data in the bucket. If the + * data isn't in memory then it is read in and the bucket changes type + * so that it can refer to the new location of the data. If all the + * data doesn't fit in the bucket then a new bucket is inserted into + * the brigade to hold the rest of it. + * + * split divides the data in a bucket into two regions. After a split + * the original bucket refers to the first part of the data and a new + * bucket inserted into the brigade after the original bucket refers + * to the second part of the data. Reference counts are maintained as + * necessary. + * + * setaside ensures that the data in the bucket has a long enough + * lifetime. Sometimes it is convenient to create a bucket referring + * to data on the stack in the expectation that it will be consumed + * (output to the network) before the stack is unwound. If that + * expectation turns out not to be valid, the setaside function is + * called to move the data somewhere safer. + * + * copy makes a duplicate of the bucket structure as long as it's + * possible to have multiple references to a single copy of the + * data itself. Not all bucket types can be copied. + * + * destroy maintains the reference counts on the resources used by a + * bucket and frees them if necessary. + * + * Note: all of the above functions have wrapper macros (apr_bucket_read(), + * apr_bucket_destroy(), etc), and those macros should be used rather + * than using the function pointers directly. + * + * To write a bucket brigade, they are first made into an iovec, so that we + * don't write too little data at one time. Currently we ignore compacting the + * buckets into as few buckets as possible, but if we really want good + * performance, then we need to compact the buckets before we convert to an + * iovec, or possibly while we are converting to an iovec. + */ + +/* + * Forward declaration of the main types. + */ + +/** @see apr_bucket_brigade */ +typedef struct apr_bucket_brigade apr_bucket_brigade; +/** @see apr_bucket */ +typedef struct apr_bucket apr_bucket; +/** @see apr_bucket_alloc_t */ +typedef struct apr_bucket_alloc_t apr_bucket_alloc_t; + +/** @see apr_bucket_type_t */ +typedef struct apr_bucket_type_t apr_bucket_type_t; + +/** + * Basic bucket type + */ +struct apr_bucket_type_t { + /** + * The name of the bucket type + */ + const char *name; + /** + * The number of functions this bucket understands. Can not be less than + * five. + */ + int num_func; + /** + * Whether the bucket contains metadata (ie, information that + * describes the regular contents of the brigade). The metadata + * is not returned by apr_bucket_read() and is not indicated by + * the ->length of the apr_bucket itself. In other words, an + * empty bucket is safe to arbitrarily remove if and only if it + * contains no metadata. In this sense, "data" is just raw bytes + * that are the "content" of the brigade and "metadata" describes + * that data but is not a proper part of it. + */ + enum { + /** This bucket type represents actual data to send to the client. */ + APR_BUCKET_DATA = 0, + /** This bucket type represents metadata. */ + APR_BUCKET_METADATA = 1 + } is_metadata; + /** + * Free the private data and any resources used by the bucket (if they + * aren't shared with another bucket). This function is required to be + * implemented for all bucket types, though it might be a no-op on some + * of them (namely ones that never allocate any private data structures). + * @param data The private data pointer from the bucket to be destroyed + */ + void (*destroy)(void *data); + + /** + * Read the data from the bucket. This is required to be implemented + * for all bucket types. + * @param b The bucket to read from + * @param str A place to store the data read. Allocation should only be + * done if absolutely necessary. + * @param len The amount of data read. + * @param block Should this read function block if there is more data that + * cannot be read immediately. + */ + apr_status_t (*read)(apr_bucket *b, const char **str, apr_size_t *len, + apr_read_type_e block); + + /** + * Make it possible to set aside the data for at least as long as the + * given pool. Buckets containing data that could potentially die before + * this pool (e.g. the data resides on the stack, in a child pool of + * the given pool, or in a disjoint pool) must somehow copy, shift, or + * transform the data to have the proper lifetime. + * @param e The bucket to convert + * @remark Some bucket types contain data that will always outlive the + * bucket itself. For example no data (EOS and FLUSH), or the data + * resides in global, constant memory (IMMORTAL), or the data is on + * the heap (HEAP). For these buckets, apr_bucket_setaside_noop can + * be used. + */ + apr_status_t (*setaside)(apr_bucket *e, apr_pool_t *pool); + + /** + * Split one bucket in two at the specified position by duplicating + * the bucket structure (not the data) and modifying any necessary + * start/end/offset information. If it's not possible to do this + * for the bucket type (perhaps the length of the data is indeterminate, + * as with pipe and socket buckets), then APR_ENOTIMPL is returned. + * @param e The bucket to split + * @param point The offset of the first byte in the new bucket + */ + apr_status_t (*split)(apr_bucket *e, apr_size_t point); + + /** + * Copy the bucket structure (not the data), assuming that this is + * possible for the bucket type. If it's not, APR_ENOTIMPL is returned. + * @param e The bucket to copy + * @param c Returns a pointer to the new bucket + */ + apr_status_t (*copy)(apr_bucket *e, apr_bucket **c); + +}; + +/** + * apr_bucket structures are allocated on the malloc() heap and + * their lifetime is controlled by the parent apr_bucket_brigade + * structure. Buckets can move from one brigade to another e.g. by + * calling APR_BRIGADE_CONCAT(). In general the data in a bucket has + * the same lifetime as the bucket and is freed when the bucket is + * destroyed; if the data is shared by more than one bucket (e.g. + * after a split) the data is freed when the last bucket goes away. + */ +struct apr_bucket { + /** Links to the rest of the brigade */ + APR_RING_ENTRY(apr_bucket) link; + /** The type of bucket. */ + const apr_bucket_type_t *type; + /** The length of the data in the bucket. This could have been implemented + * with a function, but this is an optimization, because the most + * common thing to do will be to get the length. If the length is unknown, + * the value of this field will be (apr_size_t)(-1). + */ + apr_size_t length; + /** The start of the data in the bucket relative to the private base + * pointer. The vast majority of bucket types allow a fixed block of + * data to be referenced by multiple buckets, each bucket pointing to + * a different segment of the data. That segment starts at base+start + * and ends at base+start+length. + * If the length == (apr_size_t)(-1), then start == -1. + */ + apr_off_t start; + /** type-dependent data hangs off this pointer */ + void *data; + /** + * Pointer to function used to free the bucket. This function should + * always be defined and it should be consistent with the memory + * function used to allocate the bucket. For example, if malloc() is + * used to allocate the bucket, this pointer should point to free(). + * @param e Pointer to the bucket being freed + */ + void (*free)(void *e); + /** The freelist from which this bucket was allocated */ + apr_bucket_alloc_t *list; +}; + +/** A list of buckets */ +struct apr_bucket_brigade { + /** The pool to associate the brigade with. The data is not allocated out + * of the pool, but a cleanup is registered with this pool. If the + * brigade is destroyed by some mechanism other than pool destruction, + * the destroying function is responsible for killing the cleanup. + */ + apr_pool_t *p; + /** The buckets in the brigade are on this list. */ + /* + * The apr_bucket_list structure doesn't actually need a name tag + * because it has no existence independent of struct apr_bucket_brigade; + * the ring macros are designed so that you can leave the name tag + * argument empty in this situation but apparently the Windows compiler + * doesn't like that. + */ + APR_RING_HEAD(apr_bucket_list, apr_bucket) list; + /** The freelist from which this bucket was allocated */ + apr_bucket_alloc_t *bucket_alloc; +}; + + +/** + * Function called when a brigade should be flushed + */ +typedef apr_status_t (*apr_brigade_flush)(apr_bucket_brigade *bb, void *ctx); + +/* + * define APR_BUCKET_DEBUG if you want your brigades to be checked for + * validity at every possible instant. this will slow your code down + * substantially but is a very useful debugging tool. + */ +#ifdef APR_BUCKET_DEBUG + +#define APR_BRIGADE_CHECK_CONSISTENCY(b) \ + APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link) + +#define APR_BUCKET_CHECK_CONSISTENCY(e) \ + APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link) + +#else +/** + * checks the ring pointers in a bucket brigade for consistency. an + * abort() will be triggered if any inconsistencies are found. + * note: this is a no-op unless APR_BUCKET_DEBUG is defined. + * @param b The brigade + */ +#define APR_BRIGADE_CHECK_CONSISTENCY(b) +/** + * checks the brigade a bucket is in for ring consistency. an + * abort() will be triggered if any inconsistencies are found. + * note: this is a no-op unless APR_BUCKET_DEBUG is defined. + * @param e The bucket + */ +#define APR_BUCKET_CHECK_CONSISTENCY(e) +#endif + + +/** + * Wrappers around the RING macros to reduce the verbosity of the code + * that handles bucket brigades. + */ +/** + * The magic pointer value that indicates the head of the brigade + * @remark This is used to find the beginning and end of the brigade, eg: + *
    + *      while (e != APR_BRIGADE_SENTINEL(b)) {
    + *          ...
    + *          e = APR_BUCKET_NEXT(e);
    + *      }
    + * 
    + * @param b The brigade + * @return The magic pointer value + */ +#define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link) + +/** + * Determine if the bucket brigade is empty + * @param b The brigade to check + * @return true or false + */ +#define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link) + +/** + * Return the first bucket in a brigade + * @param b The brigade to query + * @return The first bucket in the brigade + */ +#define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list) +/** + * Return the last bucket in a brigade + * @param b The brigade to query + * @return The last bucket in the brigade + */ +#define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list) + +/** + * Iterate through a bucket brigade + * @param e The current bucket + * @param b The brigade to iterate over + * @remark This is the same as either: + *
    + *	e = APR_BRIGADE_FIRST(b);
    + * 	while (e != APR_BRIGADE_SENTINEL(b)) {
    + *	    ...
    + * 	    e = APR_BUCKET_NEXT(e);
    + * 	}
    + *  OR
    + * 	for (e = APR_BRIGADE_FIRST(b);
    + *           e != APR_BRIGADE_SENTINEL(b);
    + *           e = APR_BUCKET_NEXT(e)) {
    + *	    ...
    + * 	}
    + * 
    + * @warning Be aware that you cannot change the value of e within + * the foreach loop, nor can you destroy the bucket it points to. + * Modifying the prev and next pointers of the bucket is dangerous + * but can be done if you're careful. If you change e's value or + * destroy the bucket it points to, then APR_BRIGADE_FOREACH + * will have no way to find out what bucket to use for its next + * iteration. The reason for this can be seen by looking closely + * at the equivalent loops given in the tip above. So, for example, + * if you are writing a loop that empties out a brigade one bucket + * at a time, APR_BRIGADE_FOREACH just won't work for you. Do it + * by hand, like so: + *
    + *      while (!APR_BRIGADE_EMPTY(b)) {
    + *          e = APR_BRIGADE_FIRST(b);
    + *          ...
    + *          apr_bucket_delete(e);
    + *      }
    + * 
    + * @deprecated This macro causes more headaches than it's worth. Use + * one of the alternatives documented here instead; the clarity gained + * in what's really going on is well worth the extra line or two of code. + * This macro will be removed at some point in the future. + */ +#define APR_BRIGADE_FOREACH(e, b) \ + APR_RING_FOREACH((e), &(b)->list, apr_bucket, link) + +/** + * Insert a list of buckets at the front of a brigade + * @param b The brigade to add to + * @param e The first bucket in a list of buckets to insert + */ +#define APR_BRIGADE_INSERT_HEAD(b, e) do { \ + apr_bucket *ap__b = (e); \ + APR_RING_INSERT_HEAD(&(b)->list, ap__b, apr_bucket, link); \ + APR_BRIGADE_CHECK_CONSISTENCY((b)); \ + } while (0) + +/** + * Insert a list of buckets at the end of a brigade + * @param b The brigade to add to + * @param e The first bucket in a list of buckets to insert + */ +#define APR_BRIGADE_INSERT_TAIL(b, e) do { \ + apr_bucket *ap__b = (e); \ + APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \ + APR_BRIGADE_CHECK_CONSISTENCY((b)); \ + } while (0) + +/** + * Concatenate brigade b onto the end of brigade a, leaving brigade b empty + * @param a The first brigade + * @param b The second brigade + */ +#define APR_BRIGADE_CONCAT(a, b) do { \ + APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \ + APR_BRIGADE_CHECK_CONSISTENCY((a)); \ + } while (0) + +/** + * Prepend brigade b onto the beginning of brigade a, leaving brigade b empty + * @param a The first brigade + * @param b The second brigade + */ +#define APR_BRIGADE_PREPEND(a, b) do { \ + APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \ + APR_BRIGADE_CHECK_CONSISTENCY((a)); \ + } while (0) + +/** + * Insert a list of buckets before a specified bucket + * @param a The bucket to insert before + * @param b The buckets to insert + */ +#define APR_BUCKET_INSERT_BEFORE(a, b) do { \ + apr_bucket *ap__a = (a), *ap__b = (b); \ + APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \ + APR_BUCKET_CHECK_CONSISTENCY(ap__a); \ + } while (0) + +/** + * Insert a list of buckets after a specified bucket + * @param a The bucket to insert after + * @param b The buckets to insert + */ +#define APR_BUCKET_INSERT_AFTER(a, b) do { \ + apr_bucket *ap__a = (a), *ap__b = (b); \ + APR_RING_INSERT_AFTER(ap__a, ap__b, link); \ + APR_BUCKET_CHECK_CONSISTENCY(ap__a); \ + } while (0) + +/** + * Get the next bucket in the list + * @param e The current bucket + * @return The next bucket + */ +#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link) +/** + * Get the previous bucket in the list + * @param e The current bucket + * @return The previous bucket + */ +#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link) + +/** + * Remove a bucket from its bucket brigade + * @param e The bucket to remove + */ +#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link) + +/** + * Initialize a new bucket's prev/next pointers + * @param e The bucket to initialize + */ +#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link) + +/** + * Determine if a bucket contains metadata. An empty bucket is + * safe to arbitrarily remove if and only if this is false. + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata) + +/** + * Determine if a bucket is a FLUSH bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush) +/** + * Determine if a bucket is an EOS bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos) +/** + * Determine if a bucket is a FILE bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file) +/** + * Determine if a bucket is a PIPE bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe) +/** + * Determine if a bucket is a SOCKET bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket) +/** + * Determine if a bucket is a HEAP bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap) +/** + * Determine if a bucket is a TRANSIENT bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient) +/** + * Determine if a bucket is a IMMORTAL bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal) +#if APR_HAS_MMAP +/** + * Determine if a bucket is a MMAP bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap) +#endif +/** + * Determine if a bucket is a POOL bucket + * @param e The bucket to inspect + * @return true or false + */ +#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool) + +/* + * General-purpose reference counting for the various bucket types. + * + * Any bucket type that keeps track of the resources it uses (i.e. + * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to + * attach a reference count to the resource so that it can be freed + * when the last bucket that uses it goes away. Resource-sharing may + * occur because of bucket splits or buckets that refer to globally + * cached data. */ + +/** @see apr_bucket_refcount */ +typedef struct apr_bucket_refcount apr_bucket_refcount; +/** + * The structure used to manage the shared resource must start with an + * apr_bucket_refcount which is updated by the general-purpose refcount + * code. A pointer to the bucket-type-dependent private data structure + * can be cast to a pointer to an apr_bucket_refcount and vice versa. + */ +struct apr_bucket_refcount { + /** The number of references to this bucket */ + int refcount; +}; + +/* ***** Reference-counted bucket types ***** */ + +/** @see apr_bucket_heap */ +typedef struct apr_bucket_heap apr_bucket_heap; +/** + * A bucket referring to data allocated off the heap. + */ +struct apr_bucket_heap { + /** Number of buckets using this memory */ + apr_bucket_refcount refcount; + /** The start of the data actually allocated. This should never be + * modified, it is only used to free the bucket. + */ + char *base; + /** how much memory was allocated */ + apr_size_t alloc_len; + /** function to use to delete the data */ + void (*free_func)(void *data); +}; + +/** @see apr_bucket_pool */ +typedef struct apr_bucket_pool apr_bucket_pool; +/** + * A bucket referring to data allocated from a pool + */ +struct apr_bucket_pool { + /** The pool bucket must be able to be easily morphed to a heap + * bucket if the pool gets cleaned up before all references are + * destroyed. This apr_bucket_heap structure is populated automatically + * when the pool gets cleaned up, and subsequent calls to pool_read() + * will result in the apr_bucket in question being morphed into a + * regular heap bucket. (To avoid having to do many extra refcount + * manipulations and b->data manipulations, the apr_bucket_pool + * struct actually *contains* the apr_bucket_heap struct that it + * will become as its first element; the two share their + * apr_bucket_refcount members.) + */ + apr_bucket_heap heap; + /** The block of data actually allocated from the pool. + * Segments of this block are referenced by adjusting + * the start and length of the apr_bucket accordingly. + * This will be NULL after the pool gets cleaned up. + */ + const char *base; + /** The pool the data was allocated from. When the pool + * is cleaned up, this gets set to NULL as an indicator + * to pool_read() that the data is now on the heap and + * so it should morph the bucket into a regular heap + * bucket before continuing. + */ + apr_pool_t *pool; + /** The freelist this structure was allocated from, which is + * needed in the cleanup phase in order to allocate space on the heap + */ + apr_bucket_alloc_t *list; +}; + +#if APR_HAS_MMAP +/** @see apr_bucket_mmap */ +typedef struct apr_bucket_mmap apr_bucket_mmap; +/** + * A bucket referring to an mmap()ed file + */ +struct apr_bucket_mmap { + /** Number of buckets using this memory */ + apr_bucket_refcount refcount; + /** The mmap this sub_bucket refers to */ + apr_mmap_t *mmap; +}; +#endif + +/** @see apr_bucket_file */ +typedef struct apr_bucket_file apr_bucket_file; +/** + * A bucket referring to an file + */ +struct apr_bucket_file { + /** Number of buckets using this memory */ + apr_bucket_refcount refcount; + /** The file this bucket refers to */ + apr_file_t *fd; + /** The pool into which any needed structures should + * be created while reading from this file bucket */ + apr_pool_t *readpool; +#if APR_HAS_MMAP + /** Whether this bucket should be memory-mapped if + * a caller tries to read from it */ + int can_mmap; +#endif /* APR_HAS_MMAP */ +}; + +/** @see apr_bucket_structs */ +typedef union apr_bucket_structs apr_bucket_structs; +/** + * A union of all bucket structures so we know what + * the max size is. + */ +union apr_bucket_structs { + apr_bucket b; /**< Bucket */ + apr_bucket_heap heap; /**< Heap */ + apr_bucket_pool pool; /**< Pool */ +#if APR_HAS_MMAP + apr_bucket_mmap mmap; /**< MMap */ +#endif + apr_bucket_file file; /**< File */ +}; + +/** + * The amount that apr_bucket_alloc() should allocate in the common case. + * Note: this is twice as big as apr_bucket_structs to allow breathing + * room for third-party bucket types. + */ +#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs)) + +/* ***** Bucket Brigade Functions ***** */ +/** + * Create a new bucket brigade. The bucket brigade is originally empty. + * @param p The pool to associate with the brigade. Data is not allocated out + * of the pool, but a cleanup is registered. + * @param list The bucket allocator to use + * @return The empty bucket brigade + */ +APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p, + apr_bucket_alloc_t *list); + +/** + * destroy an entire bucket brigade. This includes destroying all of the + * buckets within the bucket brigade's bucket list. + * @param b The bucket brigade to destroy + */ +APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b); + +/** + * empty out an entire bucket brigade. This includes destroying all of the + * buckets within the bucket brigade's bucket list. This is similar to + * apr_brigade_destroy(), except that it does not deregister the brigade's + * pool cleanup function. + * @param data The bucket brigade to clean up + * @remark Generally, you should use apr_brigade_destroy(). This function + * can be useful in situations where you have a single brigade that + * you wish to reuse many times by destroying all of the buckets in + * the brigade and putting new buckets into it later. + */ +APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data); + +/** + * Split a bucket brigade into two, such that the given bucket is the + * first in the new bucket brigade. This function is useful when a + * filter wants to pass only the initial part of a brigade to the next + * filter. + * @param b The brigade to split + * @param e The first element of the new brigade + * @return The new brigade + */ +APU_DECLARE(apr_bucket_brigade *) apr_brigade_split(apr_bucket_brigade *b, + apr_bucket *e); + +/** + * Partition a bucket brigade at a given offset (in bytes from the start of + * the brigade). This is useful whenever a filter wants to use known ranges + * of bytes from the brigade; the ranges can even overlap. + * @param b The brigade to partition + * @param point The offset at which to partition the brigade + * @param after_point Returns a pointer to the first bucket after the partition + */ +APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b, + apr_off_t point, + apr_bucket **after_point); + +#if APR_NOT_DONE_YET +/** + * consume nbytes from beginning of b -- call apr_bucket_destroy as + * appropriate, and/or modify start on last element + * @param b The brigade to consume data from + * @param nbytes The number of bytes to consume + */ +APU_DECLARE(void) apr_brigade_consume(apr_bucket_brigade *b, + apr_off_t nbytes); +#endif + +/** + * Return the total length of the brigade. + * @param bb The brigade to compute the length of + * @param read_all Read unknown-length buckets to force a size + * @param length Returns the length of the brigade, or -1 if the brigade has + * buckets of indeterminate length and read_all is 0. + */ +APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb, + int read_all, + apr_off_t *length); + +/** + * Take a bucket brigade and store the data in a flat char* + * @param bb The bucket brigade to create the char* from + * @param c The char* to write into + * @param len The maximum length of the char array. On return, it is the + * actual length of the char array. + */ +APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb, + char *c, + apr_size_t *len); + +/** + * Creates a pool-allocated string representing a flat bucket brigade + * @param bb The bucket brigade to create the char array from + * @param c On return, the allocated char array + * @param len On return, the length of the char array. + * @param pool The pool to allocate the string from. + */ +APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb, + char **c, + apr_size_t *len, + apr_pool_t *pool); + +/** + * Split a brigade to represent one LF line. + * @param bbOut The bucket brigade that will have the LF line appended to. + * @param bbIn The input bucket brigade to search for a LF-line. + * @param block The blocking mode to be used to split the line. + * @param maxbytes The maximum bytes to read. If this many bytes are seen + * without a LF, the brigade will contain a partial line. + */ +APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut, + apr_bucket_brigade *bbIn, + apr_read_type_e block, + apr_off_t maxbytes); + +/** + * create an iovec of the elements in a bucket_brigade... return number + * of elements used. This is useful for writing to a file or to the + * network efficiently. + * @param b The bucket brigade to create the iovec from + * @param vec The iovec to create + * @param nvec The number of elements in the iovec. On return, it is the + * number of iovec elements actually filled out. + */ +APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b, + struct iovec *vec, int *nvec); + +/** + * This function writes a list of strings into a bucket brigade. + * @param b The bucket brigade to add to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param va A list of strings to add + * @return APR_SUCCESS or error code. + */ +APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b, + apr_brigade_flush flush, + void *ctx, + va_list va); + +/** + * This function writes a string into a bucket brigade. + * @param b The bucket brigade to add to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param str The string to add + * @param nbyte The number of bytes to write + * @return APR_SUCCESS or error code + */ +APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b, + apr_brigade_flush flush, void *ctx, + const char *str, apr_size_t nbyte); + +/** + * This function writes multiple strings into a bucket brigade. + * @param b The bucket brigade to add to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param vec The strings to add (address plus length for each) + * @param nvec The number of entries in iovec + * @return APR_SUCCESS or error code + */ +APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b, + apr_brigade_flush flush, + void *ctx, + const struct iovec *vec, + apr_size_t nvec); + +/** + * This function writes a string into a bucket brigade. + * @param bb The bucket brigade to add to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param str The string to add + * @return APR_SUCCESS or error code + */ +APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb, + apr_brigade_flush flush, void *ctx, + const char *str); + +/** + * This function writes a character into a bucket brigade. + * @param b The bucket brigade to add to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param c The character to add + * @return APR_SUCCESS or error code + */ +APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b, + apr_brigade_flush flush, void *ctx, + const char c); + +/** + * This function writes an unspecified number of strings into a bucket brigade. + * @param b The bucket brigade to add to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param ... The strings to add + * @return APR_SUCCESS or error code + */ +APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b, + apr_brigade_flush flush, + void *ctx, ...); + +/** + * Evaluate a printf and put the resulting string at the end + * of the bucket brigade. + * @param b The brigade to write to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param fmt The format of the string to write + * @param ... The arguments to fill out the format + * @return APR_SUCCESS or error code + */ +APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b, + apr_brigade_flush flush, + void *ctx, + const char *fmt, ...) + __attribute__((format(printf,4,5))); + +/** + * Evaluate a printf and put the resulting string at the end + * of the bucket brigade. + * @param b The brigade to write to + * @param flush The flush function to use if the brigade is full + * @param ctx The structure to pass to the flush function + * @param fmt The format of the string to write + * @param va The arguments to fill out the format + * @return APR_SUCCESS or error code + */ +APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b, + apr_brigade_flush flush, + void *ctx, + const char *fmt, va_list va); + +/* ***** Bucket freelist functions ***** */ +/** + * Create a bucket allocator. + * @param p This pool's underlying apr_allocator_t is used to allocate memory + * for the bucket allocator. When the pool is destroyed, the bucket + * allocator's cleanup routine will free all memory that has been + * allocated from it. + * @remark The reason the allocator gets its memory from the pool's + * apr_allocator_t rather than from the pool itself is because + * the bucket allocator will free large memory blocks back to the + * allocator when it's done with them, thereby preventing memory + * footprint growth that would occur if we allocated from the pool. + * @warning The allocator must never be used by more than one thread at a time. + */ +APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p); + +/** + * Create a bucket allocator. + * @param allocator This apr_allocator_t is used to allocate both the bucket + * allocator and all memory handed out by the bucket allocator. The + * caller is responsible for destroying the bucket allocator and the + * apr_allocator_t -- no automatic cleanups will happen. + * @warning The allocator must never be used by more than one thread at a time. + */ +APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex(apr_allocator_t *allocator); + +/** + * Destroy a bucket allocator. + * @param list The allocator to be destroyed + */ +APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list); + +/** + * Allocate memory for use by the buckets. + * @param size The amount to allocate. + * @param list The allocator from which to allocate the memory. + */ +APU_DECLARE_NONSTD(void *) apr_bucket_alloc(apr_size_t size, apr_bucket_alloc_t *list); + +/** + * Free memory previously allocated with apr_bucket_alloc(). + * @param block The block of memory to be freed. + */ +APU_DECLARE_NONSTD(void) apr_bucket_free(void *block); + + +/* ***** Bucket Functions ***** */ +/** + * Free the resources used by a bucket. If multiple buckets refer to + * the same resource it is freed when the last one goes away. + * @see apr_bucket_delete() + * @param e The bucket to destroy + */ +#define apr_bucket_destroy(e) do { \ + (e)->type->destroy((e)->data); \ + (e)->free(e); \ + } while (0) + +/** + * Delete a bucket by removing it from its brigade (if any) and then + * destroying it. + * @remark This mainly acts as an aid in avoiding code verbosity. It is + * the preferred exact equivalent to: + *
    + *      APR_BUCKET_REMOVE(e);
    + *      apr_bucket_destroy(e);
    + * 
    + * @param e The bucket to delete + */ +#define apr_bucket_delete(e) do { \ + APR_BUCKET_REMOVE(e); \ + apr_bucket_destroy(e); \ + } while (0) + +/** + * read the data from the bucket + * @param e The bucket to read from + * @param str The location to store the data in + * @param len The amount of data read + * @param block Whether the read function blocks + */ +#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block) + +/** + * Setaside data so that stack data is not destroyed on returning from + * the function + * @param e The bucket to setaside + * @param p The pool to setaside into + */ +#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p) + +/** + * Split one bucket in two. + * @param e The bucket to split + * @param point The offset to split the bucket at + */ +#define apr_bucket_split(e,point) (e)->type->split(e, point) + +/** + * Copy a bucket. + * @param e The bucket to copy + * @param c Returns a pointer to the new bucket + */ +#define apr_bucket_copy(e,c) (e)->type->copy(e, c) + +/* Bucket type handling */ + +/** + * This function simply returns APR_SUCCESS to denote that the bucket does + * not require anything to happen for its setaside() function. This is + * appropriate for buckets that have "immortal" data -- the data will live + * at least as long as the bucket. + * @param data The bucket to setaside + * @param pool The pool defining the desired lifetime of the bucket data + * @return APR_SUCCESS + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data, + apr_pool_t *pool); + +/** + * A place holder function that signifies that the setaside function was not + * implemented for this bucket + * @param data The bucket to setaside + * @param pool The pool defining the desired lifetime of the bucket data + * @return APR_ENOTIMPL + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data, + apr_pool_t *pool); + +/** + * A place holder function that signifies that the split function was not + * implemented for this bucket + * @param data The bucket to split + * @param point The location to split the bucket + * @return APR_ENOTIMPL + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data, + apr_size_t point); + +/** + * A place holder function that signifies that the copy function was not + * implemented for this bucket + * @param e The bucket to copy + * @param c Returns a pointer to the new bucket + * @return APR_ENOTIMPL + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e, + apr_bucket **c); + +/** + * A place holder function that signifies that this bucket does not need + * to do anything special to be destroyed. That's only the case for buckets + * that either have no data (metadata buckets) or buckets whose data pointer + * points to something that's not a bucket-type-specific structure, as with + * simple buckets where data points to a string and pipe buckets where data + * points directly to the apr_file_t. + * @param data The bucket data to destroy + */ +APU_DECLARE_NONSTD(void) apr_bucket_destroy_noop(void *data); + +/** + * There is no apr_bucket_destroy_notimpl, because destruction is required + * to be implemented (it could be a noop, but only if that makes sense for + * the bucket type) + */ + +/* There is no apr_bucket_read_notimpl, because it is a required function + */ + + +/* All of the bucket types implemented by the core */ +/** + * The flush bucket type. This signifies that all data should be flushed to + * the next filter. The flush bucket should be sent with the other buckets. + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_flush; +/** + * The EOS bucket type. This signifies that there will be no more data, ever. + * All filters MUST send all data to the next filter when they receive a + * bucket of this type + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_eos; +/** + * The FILE bucket type. This bucket represents a file on disk + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_file; +/** + * The HEAP bucket type. This bucket represents a data allocated from the + * heap. + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_heap; +#if APR_HAS_MMAP +/** + * The MMAP bucket type. This bucket represents an MMAP'ed file + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_mmap; +#endif +/** + * The POOL bucket type. This bucket represents a data that was allocated + * from a pool. IF this bucket is still available when the pool is cleared, + * the data is copied on to the heap. + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pool; +/** + * The PIPE bucket type. This bucket represents a pipe to another program. + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pipe; +/** + * The IMMORTAL bucket type. This bucket represents a segment of data that + * the creator is willing to take responsibility for. The core will do + * nothing with the data in an immortal bucket + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_immortal; +/** + * The TRANSIENT bucket type. This bucket represents a data allocated off + * the stack. When the setaside function is called, this data is copied on + * to the heap + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_transient; +/** + * The SOCKET bucket type. This bucket represents a socket to another machine + */ +APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_socket; + + +/* ***** Simple buckets ***** */ + +/** + * Split a simple bucket into two at the given point. Most non-reference + * counting buckets that allow multiple references to the same block of + * data (eg transient and immortal) will use this as their split function + * without any additional type-specific handling. + * @param b The bucket to be split + * @param point The offset of the first byte in the new bucket + * @return APR_EINVAL if the point is not within the bucket; + * APR_ENOMEM if allocation failed; + * or APR_SUCCESS + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_split(apr_bucket *b, + apr_size_t point); + +/** + * Copy a simple bucket. Most non-reference-counting buckets that allow + * multiple references to the same block of data (eg transient and immortal) + * will use this as their copy function without any additional type-specific + * handling. + * @param a The bucket to copy + * @param b Returns a pointer to the new bucket + * @return APR_ENOMEM if allocation failed; + * or APR_SUCCESS + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a, + apr_bucket **b); + + +/* ***** Shared, reference-counted buckets ***** */ + +/** + * Initialize a bucket containing reference-counted data that may be + * shared. The caller must allocate the bucket if necessary and + * initialize its type-dependent fields, and allocate and initialize + * its own private data structure. This function should only be called + * by type-specific bucket creation functions. + * @param b The bucket to initialize + * @param data A pointer to the private data structure + * with the reference count at the start + * @param start The start of the data in the bucket + * relative to the private base pointer + * @param length The length of the data in the bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_shared_make(apr_bucket *b, void *data, + apr_off_t start, + apr_size_t length); + +/** + * Decrement the refcount of the data in the bucket. This function + * should only be called by type-specific bucket destruction functions. + * @param data The private data pointer from the bucket to be destroyed + * @return TRUE or FALSE; TRUE if the reference count is now + * zero, indicating that the shared resource itself can + * be destroyed by the caller. + */ +APU_DECLARE(int) apr_bucket_shared_destroy(void *data); + +/** + * Split a bucket into two at the given point, and adjust the refcount + * to the underlying data. Most reference-counting bucket types will + * be able to use this function as their split function without any + * additional type-specific handling. + * @param b The bucket to be split + * @param point The offset of the first byte in the new bucket + * @return APR_EINVAL if the point is not within the bucket; + * APR_ENOMEM if allocation failed; + * or APR_SUCCESS + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_split(apr_bucket *b, + apr_size_t point); + +/** + * Copy a refcounted bucket, incrementing the reference count. Most + * reference-counting bucket types will be able to use this function + * as their copy function without any additional type-specific handling. + * @param a The bucket to copy + * @param b Returns a pointer to the new bucket + * @return APR_ENOMEM if allocation failed; + or APR_SUCCESS + */ +APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_copy(apr_bucket *a, + apr_bucket **b); + + +/* ***** Functions to Create Buckets of varying types ***** */ +/* + * Each bucket type foo has two initialization functions: + * apr_bucket_foo_make which sets up some already-allocated memory as a + * bucket of type foo; and apr_bucket_foo_create which allocates memory + * for the bucket, calls apr_bucket_make_foo, and initializes the + * bucket's list pointers. The apr_bucket_foo_make functions are used + * inside the bucket code to change the type of buckets in place; + * other code should call apr_bucket_foo_create. All the initialization + * functions change nothing if they fail. + */ + +/** + * Create an End of Stream bucket. This indicates that there is no more data + * coming from down the filter stack. All filters should flush at this point. + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_eos_create(apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in an EOS bucket. This indicates that there is no + * more data coming from down the filter stack. All filters should flush at + * this point. + * @param b The bucket to make into an EOS bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_eos_make(apr_bucket *b); + +/** + * Create a flush bucket. This indicates that filters should flush their + * data. There is no guarantee that they will flush it, but this is the + * best we can do. + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_flush_create(apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a FLUSH bucket. This indicates that filters + * should flush their data. There is no guarantee that they will flush it, + * but this is the best we can do. + * @param b The bucket to make into a FLUSH bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_flush_make(apr_bucket *b); + +/** + * Create a bucket referring to long-lived data. + * @param buf The data to insert into the bucket + * @param nbyte The size of the data to insert. + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_immortal_create(const char *buf, + apr_size_t nbyte, + apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a bucket refer to long-lived data + * @param b The bucket to make into a IMMORTAL bucket + * @param buf The data to insert into the bucket + * @param nbyte The size of the data to insert. + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_immortal_make(apr_bucket *b, + const char *buf, + apr_size_t nbyte); + +/** + * Create a bucket referring to data on the stack. + * @param buf The data to insert into the bucket + * @param nbyte The size of the data to insert. + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_transient_create(const char *buf, + apr_size_t nbyte, + apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a bucket refer to stack data + * @param b The bucket to make into a TRANSIENT bucket + * @param buf The data to insert into the bucket + * @param nbyte The size of the data to insert. + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_transient_make(apr_bucket *b, + const char *buf, + apr_size_t nbyte); + +/** + * Create a bucket referring to memory on the heap. If the caller asks + * for the data to be copied, this function always allocates 4K of + * memory so that more data can be added to the bucket without + * requiring another allocation. Therefore not all the data may be put + * into the bucket. If copying is not requested then the bucket takes + * over responsibility for free()ing the memory. + * @param buf The buffer to insert into the bucket + * @param nbyte The size of the buffer to insert. + * @param free_func Function to use to free the data; NULL indicates that the + * bucket should make a copy of the data + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_heap_create(const char *buf, + apr_size_t nbyte, + void (*free_func)(void *data), + apr_bucket_alloc_t *list); +/** + * Make the bucket passed in a bucket refer to heap data + * @param b The bucket to make into a HEAP bucket + * @param buf The buffer to insert into the bucket + * @param nbyte The size of the buffer to insert. + * @param free_func Function to use to free the data; NULL indicates that the + * bucket should make a copy of the data + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_heap_make(apr_bucket *b, const char *buf, + apr_size_t nbyte, + void (*free_func)(void *data)); + +/** + * Create a bucket referring to memory allocated from a pool. + * + * @param buf The buffer to insert into the bucket + * @param length The number of bytes referred to by this bucket + * @param pool The pool the memory was allocated from + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_pool_create(const char *buf, + apr_size_t length, + apr_pool_t *pool, + apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a bucket refer to pool data + * @param b The bucket to make into a pool bucket + * @param buf The buffer to insert into the bucket + * @param length The number of bytes referred to by this bucket + * @param pool The pool the memory was allocated from + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_pool_make(apr_bucket *b, const char *buf, + apr_size_t length, + apr_pool_t *pool); + +#if APR_HAS_MMAP +/** + * Create a bucket referring to mmap()ed memory. + * @param mm The mmap to insert into the bucket + * @param start The offset of the first byte in the mmap + * that this bucket refers to + * @param length The number of bytes referred to by this bucket + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_mmap_create(apr_mmap_t *mm, + apr_off_t start, + apr_size_t length, + apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a bucket refer to an MMAP'ed file + * @param b The bucket to make into a MMAP bucket + * @param mm The mmap to insert into the bucket + * @param start The offset of the first byte in the mmap + * that this bucket refers to + * @param length The number of bytes referred to by this bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_mmap_make(apr_bucket *b, apr_mmap_t *mm, + apr_off_t start, + apr_size_t length); +#endif + +/** + * Create a bucket referring to a socket. + * @param thissock The socket to put in the bucket + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_socket_create(apr_socket_t *thissock, + apr_bucket_alloc_t *list); +/** + * Make the bucket passed in a bucket refer to a socket + * @param b The bucket to make into a SOCKET bucket + * @param thissock The socket to put in the bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_socket_make(apr_bucket *b, + apr_socket_t *thissock); + +/** + * Create a bucket referring to a pipe. + * @param thispipe The pipe to put in the bucket + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_pipe_create(apr_file_t *thispipe, + apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a bucket refer to a pipe + * @param b The bucket to make into a PIPE bucket + * @param thispipe The pipe to put in the bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_pipe_make(apr_bucket *b, + apr_file_t *thispipe); + +/** + * Create a bucket referring to a file. + * @param fd The file to put in the bucket + * @param offset The offset where the data of interest begins in the file + * @param len The amount of data in the file we are interested in + * @param p The pool into which any needed structures should be created + * while reading from this file bucket + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_file_create(apr_file_t *fd, + apr_off_t offset, + apr_size_t len, + apr_pool_t *p, + apr_bucket_alloc_t *list); + +/** + * Make the bucket passed in a bucket refer to a file + * @param b The bucket to make into a FILE bucket + * @param fd The file to put in the bucket + * @param offset The offset where the data of interest begins in the file + * @param len The amount of data in the file we are interested in + * @param p The pool into which any needed structures should be created + * while reading from this file bucket + * @return The new bucket, or NULL if allocation failed + */ +APU_DECLARE(apr_bucket *) apr_bucket_file_make(apr_bucket *b, apr_file_t *fd, + apr_off_t offset, + apr_size_t len, apr_pool_t *p); + +/** + * Enable or disable memory-mapping for a FILE bucket (default is enabled) + * @param b The bucket + * @param enabled Whether memory-mapping should be enabled + * @return APR_SUCCESS normally, or an error code if the operation fails + */ +APU_DECLARE(apr_status_t) apr_bucket_file_enable_mmap(apr_bucket *b, + int enabled); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_BUCKETS_H */ diff --git a/rubbos/app/apache2/include/apr_compat.h b/rubbos/app/apache2/include/apr_compat.h new file mode 100644 index 00000000..45500c0a --- /dev/null +++ b/rubbos/app/apache2/include/apr_compat.h @@ -0,0 +1,231 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_COMPAT_H +#define APR_COMPAT_H + + /** + * @file apr_compat.h + * @brief APR Legacy Apache 1.3 Compatibility + * @deprecated These defines are only present for historical purposes + */ + +/** + * @defgroup apr_compat APR Legacy Apache 1.3 Compatibility + * @ingroup APR + * @{ + */ + +/* redefine 1.3.x symbols to those that now live in libapr */ + +/** @see APR_INLINE */ +#define ap_inline APR_INLINE + +/** @deprecated @see apr_md5_ctx_t */ +#define ap_md5_ctx_t apr_md5_ctx_t +/** @deprecated @see apr_md5_encode */ +#define ap_MD5Encode apr_md5_encode +/** @deprecated @see apr_md5_final */ +#define ap_MD5Final apr_md5_final +/** @deprecated @see apr_md5_init */ +#define ap_MD5Init apr_md5_init +/** @deprecated @see apr_md5_update */ +#define ap_MD5Update apr_md5_update +/** @deprecated @see apr_array_append */ +#define ap_append_arrays apr_array_append +/** @deprecated @see apr_array_cat */ +#define ap_array_cat apr_array_cat +/** @deprecated @see apr_array_header_t */ +#define ap_array_header_t apr_array_header_t +/** @deprecated @see apr_array_pstrcat */ +#define ap_array_pstrcat apr_array_pstrcat +/** @deprecated @see apr_pool_free_blocks_num_bytes */ +#define ap_bytes_in_free_blocks apr_pool_free_blocks_num_bytes +/** @deprecated @see apr_pool_num_bytes */ +#define ap_bytes_in_pool apr_pool_num_bytes +/** @deprecated @see apr_check_file_time */ +#define ap_check_file_time apr_check_file_time +/** @deprecated @see apr_filetype_e */ +#define ap_filetype_e apr_filetype_e +/** @deprecated @see apr_pool_cleanup_for_exec */ +#define ap_cleanup_for_exec apr_pool_cleanup_for_exec +/** @deprecated @see apr_pool_clear */ +#define ap_clear_pool apr_pool_clear +/** @deprecated @see apr_table_clear */ +#define ap_clear_table apr_table_clear +/** @deprecated @see apr_array_copy */ +#define ap_copy_array apr_array_copy +/** @deprecated @see apr_array_copy_hdr */ +#define ap_copy_array_hdr apr_array_copy_hdr +/** @deprecated @see apr_table_copy */ +#define ap_copy_table apr_table_copy +/** @deprecated @see apr_cpystrn */ +#define ap_cpystrn apr_cpystrn +/** @deprecated @see apr_day_snames */ +#define ap_day_snames apr_day_snames +/** @deprecated @see apr_pool_destroy */ +#define ap_destroy_pool apr_pool_destroy +/** @deprecated @see apr_time_exp_t */ +#define ap_exploded_time_t apr_time_exp_t +/** @deprecated @see apr_fnmatch */ +#define ap_fnmatch apr_fnmatch +/** @deprecated @see apr_getopt */ +#define ap_getopt apr_getopt +/** @deprecated @see apr_inet_addr */ +#define ap_inet_addr apr_inet_addr +/** @deprecated @see apr_pool_alloc_init */ +#define ap_init_alloc apr_pool_alloc_init +/** @deprecated @see apr_is_empty_table */ +#define ap_is_empty_table apr_is_empty_table +/** @deprecated @see apr_fnmatch_test */ +#define ap_is_fnmatch apr_fnmatch_test +/** @deprecated @see apr_pool_cleanup_kill */ +#define ap_kill_cleanup apr_pool_cleanup_kill +/** @deprecated @see apr_array_make */ +#define ap_make_array apr_array_make +/** @deprecated @see apr_pool_sub_make */ +#define ap_make_sub_pool apr_pool_sub_make +/** @deprecated @see apr_table_make */ +#define ap_make_table apr_table_make +/** @deprecated @see apr_month_snames */ +#define ap_month_snames apr_month_snames +/** @deprecated @see apr_pool_note_subprocess*/ +#define ap_note_subprocess apr_pool_note_subprocess +/** @deprecated @see apr_pool_cleanup_null */ +#define ap_null_cleanup apr_pool_cleanup_null +/** @deprecated @see apr_filepath_merge */ +#define ap_os_canonical_filename apr_filepath_merge +/** @deprecated @see apr_filepath_merge */ +#define ap_os_case_canonical_filename apr_filepath_merge +/** @deprecated @see apr_dso_load */ +#define ap_os_dso_load apr_dso_load +/** @deprecated @see apr_dso_unload */ +#define ap_os_dso_unload apr_dso_unload +/** @deprecated @see apr_dso_sym */ +#define ap_os_dso_sym apr_dso_sym +/** @deprecated @see apr_dso_error */ +#define ap_os_dso_error apr_dso_error +/** @deprecated @see apr_filepath_merge + * @warning apr_filepath_merge rejects invalid filenames */ +#define ap_os_is_filename_valid apr_filepath_merge +/** @deprecated @see apr_proc_kill */ +#define ap_os_kill apr_proc_kill +/** @deprecated @see apr_filepath_merge */ +#define ap_os_systemcase_canonical_filename apr_filepath_merge +/** @deprecated @see apr_table_overlap */ +#define ap_overlap_tables apr_table_overlap +/** @deprecated @see apr_table_overlay */ +#define ap_overlay_tables apr_table_overlay +/** @deprecated @see apr_palloc */ +#define ap_palloc apr_palloc +/** @deprecated @see apr_pcalloc */ +#define ap_pcalloc apr_pcalloc +/** @deprecated @see apr_pool_join */ +#define ap_pool_join apr_pool_join +/** @deprecated @see apr_psprintf */ +#define ap_psprintf apr_psprintf +/** @deprecated @see apr_pstrcat */ +#define ap_pstrcat apr_pstrcat +/** @deprecated @see apr_pstrdup */ +#define ap_pstrdup apr_pstrdup +/** @deprecated @see apr_pstrndup */ +#define ap_pstrndup apr_pstrndup +/** @deprecated @see apr_array_push */ +#define ap_push_array apr_array_push +/** @deprecated @see apr_pvsprintf */ +#define ap_pvsprintf apr_pvsprintf +/** @deprecated @see apr_pool_cleanup_register */ +#define ap_register_cleanup apr_pool_cleanup_register +/** @deprecated @see apr_proc_other_child_register */ +#define ap_register_other_child apr_proc_other_child_register +/** @deprecated @see apr_pool_cleanup_run */ +#define ap_run_cleanup apr_pool_cleanup_run +/** @deprecated @see apr_signal */ +#define ap_signal apr_signal +/** @deprecated @see apr_snprintf */ +#define ap_snprintf apr_snprintf +/** @deprecated @see apr_table_add */ +#define ap_table_add apr_table_add +/** @deprecated @see apr_table_addn */ +#define ap_table_addn apr_table_addn +/** @deprecated @see apr_table_do */ +#define ap_table_do apr_table_do +/** @deprecated @see apr_table_elts */ +#define ap_table_elts apr_table_elts +/** @deprecated @see apr_table_get */ +#define ap_table_get apr_table_get +/** @deprecated @see apr_table_merge */ +#define ap_table_merge apr_table_merge +/** @deprecated @see apr_table_mergen */ +#define ap_table_mergen apr_table_mergen +/** @deprecated @see apr_table_set */ +#define ap_table_set apr_table_set +/** @deprecated @see apr_table_setn */ +#define ap_table_setn apr_table_setn +/** @deprecated @see apr_table_unset */ +#define ap_table_unset apr_table_unset +/** @deprecated @see apr_proc_other_child_unregister */ +#define ap_unregister_other_child apr_proc_other_child_unregister +/** @deprecated @see apr_password_validate */ +#define ap_validate_password apr_password_validate +/** @deprecated @see apr_vformatter */ +#define ap_vformatter apr_vformatter +/** @deprecated @see apr_vsnprintf */ +#define ap_vsnprintf apr_vsnprintf +/** @deprecated @see apr_wait_t */ +#define ap_wait_t apr_wait_t + +/** @deprecated @see apr_isalnum */ +#define ap_isalnum apr_isalnum +/** @deprecated @see apr_isalpha*/ +#define ap_isalpha apr_isalpha +/** @deprecated @see apr_iscntrl */ +#define ap_iscntrl apr_iscntrl +/** @deprecated @see apr_isdigit */ +#define ap_isdigit apr_isdigit +/** @deprecated @see apr_isgraph */ +#define ap_isgraph apr_isgraph +/** @deprecated @see apr_islower */ +#define ap_islower apr_islower +/** @deprecated @see apr_isascii */ +#define ap_isascii apr_isascii +/** @deprecated @see apr_isprint */ +#define ap_isprint apr_isprint +/** @deprecated @see apr_ispunct */ +#define ap_ispunct apr_ispunct +/** @deprecated @see apr_isspace */ +#define ap_isspace apr_isspace +/** @deprecated @see apr_isupper */ +#define ap_isupper apr_isupper +/** @deprecated @see apr_isxdigit */ +#define ap_isxdigit apr_isxdigit +/** @deprecated @see apr_tolower */ +#define ap_tolower apr_tolower +/** @deprecated @see apr_toupper */ +#define ap_toupper apr_toupper + +/** @deprecated @see APR_USEC_PER_SEC */ +#define AP_USEC_PER_SEC APR_USEC_PER_SEC +/** @deprecated @see APR_RFC822_DATE_LEN */ +#define AP_RFC822_DATE_LEN APR_RFC822_DATE_LEN +/** @deprecated @see APR_OVERLAP_TABLES_MERGE */ +#define AP_OVERLAP_TABLES_MERGE APR_OVERLAP_TABLES_MERGE +/** @deprecated @see APR_OVERLAP_TABLES_SET */ +#define AP_OVERLAP_TABLES_SET APR_OVERLAP_TABLES_SET + +/** @} */ + +#endif /* APR_COMPAT_H */ diff --git a/rubbos/app/apache2/include/apr_date.h b/rubbos/app/apache2/include/apr_date.h new file mode 100644 index 00000000..87500a33 --- /dev/null +++ b/rubbos/app/apache2/include/apr_date.h @@ -0,0 +1,106 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_DATE_H +#define APR_DATE_H + +/** + * @file apr_date.h + * @brief APR-UTIL date routines + */ + +/** + * @defgroup APR_Util_Date Date routines + * @ingroup APR_Util + * @{ + */ + +/* + * apr_date.h: prototypes for date parsing utility routines + */ + +#include "apu.h" +#include "apr_time.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** A bad date. */ +#define APR_DATE_BAD ((apr_time_t)0) + +/** + * Compare a string to a mask + * @param data The string to compare + * @param mask Mask characters (arbitrary maximum is 256 characters): + *
    + *   '\@' - uppercase letter
    + *   '\$' - lowercase letter
    + *   '\&' - hex digit
    + *   '#' - digit
    + *   '~' - digit or space
    + *   '*' - swallow remaining characters
    + * 
    + * @remark The mask tests for an exact match for any other character + * @return 1 if the string matches, 0 otherwise + */ +APU_DECLARE(int) apr_date_checkmask(const char *data, const char *mask); + +/** + * Parses an HTTP date in one of three standard forms: + *
    + *     Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
    + *     Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
    + *     Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
    + * 
    + * @param date The date in one of the three formats above + * @return the apr_time_t number of microseconds since 1 Jan 1970 GMT, or + * 0 if this would be out of range or if the date is invalid. + */ +APU_DECLARE(apr_time_t) apr_date_parse_http(const char *date); + +/** + * Parses a string resembling an RFC 822 date. This is meant to be + * leinent in its parsing of dates. Hence, this will parse a wider + * range of dates than apr_date_parse_http. + * + * The prominent mailer (or poster, if mailer is unknown) that has + * been seen in the wild is included for the unknown formats. + *
    + *     Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
    + *     Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
    + *     Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
    + *     Sun, 6 Nov 1994 08:49:37 GMT   ; RFC 822, updated by RFC 1123
    + *     Sun, 06 Nov 94 08:49:37 GMT    ; RFC 822
    + *     Sun, 6 Nov 94 08:49:37 GMT     ; RFC 822
    + *     Sun, 06 Nov 94 08:49 GMT       ; Unknown [drtr\@ast.cam.ac.uk] 
    + *     Sun, 6 Nov 94 08:49 GMT        ; Unknown [drtr\@ast.cam.ac.uk]
    + *     Sun, 06 Nov 94 8:49:37 GMT     ; Unknown [Elm 70.85]
    + *     Sun, 6 Nov 94 8:49:37 GMT      ; Unknown [Elm 70.85] 
    + * 
    + * + * @param date The date in one of the formats above + * @return the apr_time_t number of microseconds since 1 Jan 1970 GMT, or + * 0 if this would be out of range or if the date is invalid. + */ +APU_DECLARE(apr_time_t) apr_date_parse_rfc(const char *date); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_DATE_H */ diff --git a/rubbos/app/apache2/include/apr_dbm.h b/rubbos/app/apache2/include/apr_dbm.h new file mode 100644 index 00000000..d34f9ad3 --- /dev/null +++ b/rubbos/app/apache2/include/apr_dbm.h @@ -0,0 +1,224 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_DBM_H +#define APR_DBM_H + +#include "apu.h" +#include "apr.h" +#include "apr_errno.h" +#include "apr_pools.h" +#include "apr_file_info.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file apr_dbm.h + * @brief APR-UTIL DBM library + */ +/** + * @defgroup APR_Util_DBM DBM routines + * @ingroup APR_Util + * @{ + */ +/** + * Structure for referencing a dbm + */ +typedef struct apr_dbm_t apr_dbm_t; + +/** + * Structure for referencing the datum record within a dbm + */ +typedef struct +{ + /** pointer to the 'data' to retrieve/store in the DBM */ + char *dptr; + /** size of the 'data' to retrieve/store in the DBM */ + apr_size_t dsize; +} apr_datum_t; + +/* modes to open the DB */ +#define APR_DBM_READONLY 1 /**< open for read-only access */ +#define APR_DBM_READWRITE 2 /**< open for read-write access */ +#define APR_DBM_RWCREATE 3 /**< open for r/w, create if needed */ +#define APR_DBM_RWTRUNC 4 /**< open for r/w, truncating an existing + DB if present */ +/** + * Open a dbm file by file name and type of DBM + * @param dbm The newly opened database + * @param type The type of the DBM (not all may be available at run time) + *
    + *  GDBM for GDBM files
    + *  SDBM for SDBM files
    + *  DB   for berkeley DB files
    + *  NDBM for NDBM files
    + *  default for the default DBM type
    + *  
    + * @param name The dbm file name to open + * @param mode The flag value + *
    + *           APR_DBM_READONLY   open for read-only access
    + *           APR_DBM_READWRITE  open for read-write access
    + *           APR_DBM_RWCREATE   open for r/w, create if needed
    + *           APR_DBM_RWTRUNC    open for r/w, truncate if already there
    + * 
    + * @param perm Permissions to apply to if created + * @param cntxt The pool to use when creating the dbm + * @remark The dbm name may not be a true file name, as many dbm packages + * append suffixes for seperate data and index files. + */ + +APU_DECLARE(apr_status_t) apr_dbm_open_ex(apr_dbm_t **dbm, const char* type, + const char *name, + apr_int32_t mode, apr_fileperms_t perm, + apr_pool_t *cntxt); + + +/** + * Open a dbm file by file name + * @param dbm The newly opened database + * @param name The dbm file name to open + * @param mode The flag value + *
    + *           APR_DBM_READONLY   open for read-only access
    + *           APR_DBM_READWRITE  open for read-write access
    + *           APR_DBM_RWCREATE   open for r/w, create if needed
    + *           APR_DBM_RWTRUNC    open for r/w, truncate if already there
    + * 
    + * @param perm Permissions to apply to if created + * @param cntxt The pool to use when creating the dbm + * @remark The dbm name may not be a true file name, as many dbm packages + * append suffixes for seperate data and index files. + */ +APU_DECLARE(apr_status_t) apr_dbm_open(apr_dbm_t **dbm, const char *name, + apr_int32_t mode, apr_fileperms_t perm, + apr_pool_t *cntxt); + +/** + * Close a dbm file previously opened by apr_dbm_open + * @param dbm The database to close + */ +APU_DECLARE(void) apr_dbm_close(apr_dbm_t *dbm); + +/** + * Fetch a dbm record value by key + * @param dbm The database + * @param key The key datum to find this record + * @param pvalue The value datum retrieved for this record + */ +APU_DECLARE(apr_status_t) apr_dbm_fetch(apr_dbm_t *dbm, apr_datum_t key, + apr_datum_t *pvalue); +/** + * Store a dbm record value by key + * @param dbm The database + * @param key The key datum to store this record by + * @param value The value datum to store in this record + */ +APU_DECLARE(apr_status_t) apr_dbm_store(apr_dbm_t *dbm, apr_datum_t key, + apr_datum_t value); + +/** + * Delete a dbm record value by key + * @param dbm The database + * @param key The key datum of the record to delete + * @remark It is not an error to delete a non-existent record. + */ +APU_DECLARE(apr_status_t) apr_dbm_delete(apr_dbm_t *dbm, apr_datum_t key); + +/** + * Search for a key within the dbm + * @param dbm The database + * @param key The datum describing a key to test + */ +APU_DECLARE(int) apr_dbm_exists(apr_dbm_t *dbm, apr_datum_t key); + +/** + * Retrieve the first record key from a dbm + * @param dbm The database + * @param pkey The key datum of the first record + */ +APU_DECLARE(apr_status_t) apr_dbm_firstkey(apr_dbm_t *dbm, apr_datum_t *pkey); + +/** + * Retrieve the next record key from a dbm + * @param dbm The database + * @param pkey The key datum of the next record + */ +APU_DECLARE(apr_status_t) apr_dbm_nextkey(apr_dbm_t *dbm, apr_datum_t *pkey); + +/** + * Proactively toss any memory associated with the apr_datum_t. + * @param dbm The database + * @param data The datum to free. + */ +APU_DECLARE(void) apr_dbm_freedatum(apr_dbm_t *dbm, apr_datum_t data); + +/** + * Report more information when an apr_dbm function fails. + * @param dbm The database + * @param errcode A DBM-specific value for the error (for logging). If this + * isn't needed, it may be NULL. + * @param errbuf Location to store the error text + * @param errbufsize The size of the provided buffer + * @return The errbuf parameter, for convenience. + */ +APU_DECLARE(char *) apr_dbm_geterror(apr_dbm_t *dbm, int *errcode, + char *errbuf, apr_size_t errbufsize); +/** + * If the specified file/path were passed to apr_dbm_open(), return the + * actual file/path names which would be (created and) used. At most, two + * files may be used; used2 may be NULL if only one file is used. + * @param pool The pool for allocating used1 and used2. + * @param type The type of DBM you require info on + * @param pathname The path name to generate used-names from. + * @param used1 The first pathname used by the apr_dbm implementation. + * @param used2 The second pathname used by apr_dbm. If only one file is + * used by the specific implementation, this will be set to NULL. + * @return An error if the specified type is invalid. + * @remark The dbm file(s) don't need to exist. This function only manipulates + * the pathnames. + */ +APU_DECLARE(apr_status_t) apr_dbm_get_usednames_ex(apr_pool_t *pool, + const char *type, + const char *pathname, + const char **used1, + const char **used2); + +/** + * If the specified file/path were passed to apr_dbm_open(), return the + * actual file/path names which would be (created and) used. At most, two + * files may be used; used2 may be NULL if only one file is used. + * @param pool The pool for allocating used1 and used2. + * @param pathname The path name to generate used-names from. + * @param used1 The first pathname used by the apr_dbm implementation. + * @param used2 The second pathname used by apr_dbm. If only one file is + * used by the specific implementation, this will be set to NULL. + * @remark The dbm file(s) don't need to exist. This function only manipulates + * the pathnames. + */ +APU_DECLARE(void) apr_dbm_get_usednames(apr_pool_t *pool, + const char *pathname, + const char **used1, + const char **used2); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_DBM_H */ diff --git a/rubbos/app/apache2/include/apr_dso.h b/rubbos/app/apache2/include/apr_dso.h new file mode 100644 index 00000000..ac701cfd --- /dev/null +++ b/rubbos/app/apache2/include/apr_dso.h @@ -0,0 +1,94 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_DSO_DOT_H +#define APR_DSO_DOT_H + +/** + * @file apr_dso.h + * @brief APR Dynamic Object Handling Routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup apr_dso Dynamic Object Handling + * @ingroup APR + * @{ + */ + +#if APR_HAS_DSO || defined(DOXYGEN) + +/** + * Structure for referencing dynamic objects + */ +typedef struct apr_dso_handle_t apr_dso_handle_t; + +/** + * Structure for referencing symbols from dynamic objects + */ +typedef void * apr_dso_handle_sym_t; + +/** + * Load a DSO library. + * @param res_handle Location to store new handle for the DSO. + * @param path Path to the DSO library + * @param ctx Pool to use. + * @bug We aught to provide an alternative to RTLD_GLOBAL, which + * is the only supported method of loading DSOs today. + */ +APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, + const char *path, apr_pool_t *ctx); + +/** + * Close a DSO library. + * @param handle handle to close. + */ +APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle); + +/** + * Load a symbol from a DSO handle. + * @param ressym Location to store the loaded symbol + * @param handle handle to load the symbol from. + * @param symname Name of the symbol to load. + */ +APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, + apr_dso_handle_t *handle, + const char *symname); + +/** + * Report more information when a DSO function fails. + * @param dso The dso handle that has been opened + * @param buf Location to store the dso error + * @param bufsize The size of the provided buffer + */ +APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize); + +#endif /* APR_HAS_DSO */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/rubbos/app/apache2/include/apr_env.h b/rubbos/app/apache2/include/apr_env.h new file mode 100644 index 00000000..05419c37 --- /dev/null +++ b/rubbos/app/apache2/include/apr_env.h @@ -0,0 +1,67 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_ENV_H +#define APR_ENV_H +/** + * @file apr_env.h + * @brief APR Environment functions + */ +#include "apr_errno.h" +#include "apr_pools.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_env Functions for manupulating the environment + * @ingroup APR + * @{ + */ + +/** + * Get the value of an environment variable + * @param value the returned value, allocated from @a pool + * @param envvar the name of the environment variable + * @param pool where to allocate @a value and any temporary storage from + */ +APR_DECLARE(apr_status_t) apr_env_get(char **value, const char *envvar, + apr_pool_t *pool); + +/** + * Set the value of an environment variable + * @param envvar the name of the environment variable + * @param value the value to set + * @param pool where to allocate temporary storage from + */ +APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, const char *value, + apr_pool_t *pool); + +/** + * Delete a variable from the environment + * @param envvar the name of the environment variable + * @param pool where to allocate temporary storage from + */ +APR_DECLARE(apr_status_t) apr_env_delete(const char *envvar, apr_pool_t *pool); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_ENV_H */ diff --git a/rubbos/app/apache2/include/apr_errno.h b/rubbos/app/apache2/include/apr_errno.h new file mode 100644 index 00000000..9d1d8447 --- /dev/null +++ b/rubbos/app/apache2/include/apr_errno.h @@ -0,0 +1,1219 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_ERRNO_H +#define APR_ERRNO_H + +/** + * @file apr_errno.h + * @brief APR Error Codes + */ + +#include "apr.h" + +#if APR_HAVE_ERRNO_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_errno Error Codes + * @ingroup APR + * @{ + */ + +/** + * Type for specifying an error or status code. + */ +typedef int apr_status_t; + +/** + * Return a human readable string describing the specified error. + * @param statcode The error code the get a string for. + * @param buf A buffer to hold the error string. + * @param bufsize Size of the buffer to hold the string. + */ +APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, + apr_size_t bufsize); + +#if defined(DOXYGEN) +/** + * @def APR_FROM_OS_ERROR(os_err_type syserr) + * Fold a platform specific error into an apr_status_t code. + * @return apr_status_t + * @param e The platform os error code. + * @warning macro implementation; the syserr argument may be evaluated + * multiple times. + */ +#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) + +/** + * @def APR_TO_OS_ERROR(apr_status_t statcode) + * @return os_err_type + * Fold an apr_status_t code back to the native platform defined error. + * @param e The apr_status_t folded platform os error code. + * @warning macro implementation; the statcode argument may be evaluated + * multiple times. If the statcode was not created by apr_get_os_error + * or APR_FROM_OS_ERROR, the results are undefined. + */ +#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) + +/** @def apr_get_os_error() + * @return apr_status_t the last platform error, folded into apr_status_t, on most platforms + * @remark This retrieves errno, or calls a GetLastError() style function, and + * folds it with APR_FROM_OS_ERROR. Some platforms (such as OS2) have no + * such mechanism, so this call may be unsupported. Do NOT use this + * call for socket errors from socket, send, recv etc! + */ + +/** @def apr_set_os_error(e) + * Reset the last platform error, unfolded from an apr_status_t, on some platforms + * @param e The OS error folded in a prior call to APR_FROM_OS_ERROR() + * @warning This is a macro implementation; the statcode argument may be evaluated + * multiple times. If the statcode was not created by apr_get_os_error + * or APR_FROM_OS_ERROR, the results are undefined. This macro sets + * errno, or calls a SetLastError() style function, unfolding statcode + * with APR_TO_OS_ERROR. Some platforms (such as OS2) have no such + * mechanism, so this call may be unsupported. + */ + +/** @def apr_get_netos_error() + * Return the last socket error, folded into apr_status_t, on all platforms + * @remark This retrieves errno or calls a GetLastSocketError() style function, + * and folds it with APR_FROM_OS_ERROR. + */ + +/** @def apr_set_netos_error(e) + * Reset the last socket error, unfolded from an apr_status_t + * @param e The socket error folded in a prior call to APR_FROM_OS_ERROR() + * @warning This is a macro implementation; the statcode argument may be evaluated + * multiple times. If the statcode was not created by apr_get_os_error + * or APR_FROM_OS_ERROR, the results are undefined. This macro sets + * errno, or calls a WSASetLastError() style function, unfolding + * socketcode with APR_TO_OS_ERROR. + */ + +#endif /* defined(DOXYGEN) */ + +/** + * APR_OS_START_ERROR is where the APR specific error values start. + */ +#define APR_OS_START_ERROR 20000 +/** + * APR_OS_ERRSPACE_SIZE is the maximum number of errors you can fit + * into one of the error/status ranges below -- except for + * APR_OS_START_USERERR, which see. + */ +#define APR_OS_ERRSPACE_SIZE 50000 +/** + * APR_OS_START_STATUS is where the APR specific status codes start. + */ +#define APR_OS_START_STATUS (APR_OS_START_ERROR + APR_OS_ERRSPACE_SIZE) +/** + * APR_OS_START_USERERR are reserved for applications that use APR that + * layer their own error codes along with APR's. Note that the + * error immediately following this one is set ten times farther + * away than usual, so that users of apr have a lot of room in + * which to declare custom error codes. + */ +#define APR_OS_START_USERERR (APR_OS_START_STATUS + APR_OS_ERRSPACE_SIZE) +/** + * APR_OS_START_USEERR is obsolete, defined for compatibility only. + * Use APR_OS_START_USERERR instead. + */ +#define APR_OS_START_USEERR APR_OS_START_USERERR +/** + * APR_OS_START_CANONERR is where APR versions of errno values are defined + * on systems which don't have the corresponding errno. + */ +#define APR_OS_START_CANONERR (APR_OS_START_USERERR \ + + (APR_OS_ERRSPACE_SIZE * 10)) +/** + * APR_OS_START_EAIERR folds EAI_ error codes from getaddrinfo() into + * apr_status_t values. + */ +#define APR_OS_START_EAIERR (APR_OS_START_CANONERR + APR_OS_ERRSPACE_SIZE) +/** + * APR_OS_START_SYSERR folds platform-specific system error values into + * apr_status_t values. + */ +#define APR_OS_START_SYSERR (APR_OS_START_EAIERR + APR_OS_ERRSPACE_SIZE) + +/** no error. @see APR_STATUS_IS_SUCCESS */ +#define APR_SUCCESS 0 + +/** + * @defgroup APR_Error APR Error Values + *
    + * APR ERROR VALUES
    + * APR_ENOSTAT      APR was unable to perform a stat on the file 
    + * APR_ENOPOOL      APR was not provided a pool with which to allocate memory
    + * APR_EBADDATE     APR was given an invalid date 
    + * APR_EINVALSOCK   APR was given an invalid socket
    + * APR_ENOPROC      APR was not given a process structure
    + * APR_ENOTIME      APR was not given a time structure
    + * APR_ENODIR       APR was not given a directory structure
    + * APR_ENOLOCK      APR was not given a lock structure
    + * APR_ENOPOLL      APR was not given a poll structure
    + * APR_ENOSOCKET    APR was not given a socket
    + * APR_ENOTHREAD    APR was not given a thread structure
    + * APR_ENOTHDKEY    APR was not given a thread key structure
    + * APR_ENOSHMAVAIL  There is no more shared memory available
    + * APR_EDSOOPEN     APR was unable to open the dso object.  For more 
    + *                  information call apr_dso_error().
    + * APR_EGENERAL     General failure (specific information not available)
    + * APR_EBADIP       The specified IP address is invalid
    + * APR_EBADMASK     The specified netmask is invalid
    + * APR_ESYMNOTFOUND Could not find the requested symbol
    + * 
    + * + *
    + * APR STATUS VALUES
    + * APR_INCHILD        Program is currently executing in the child
    + * APR_INPARENT       Program is currently executing in the parent
    + * APR_DETACH         The thread is detached
    + * APR_NOTDETACH      The thread is not detached
    + * APR_CHILD_DONE     The child has finished executing
    + * APR_CHILD_NOTDONE  The child has not finished executing
    + * APR_TIMEUP         The operation did not finish before the timeout
    + * APR_INCOMPLETE     The operation was incomplete although some processing
    + *                    was performed and the results are partially valid
    + * APR_BADCH          Getopt found an option not in the option string
    + * APR_BADARG         Getopt found an option that is missing an argument 
    + *                    and an argument was specified in the option string
    + * APR_EOF            APR has encountered the end of the file
    + * APR_NOTFOUND       APR was unable to find the socket in the poll structure
    + * APR_ANONYMOUS      APR is using anonymous shared memory
    + * APR_FILEBASED      APR is using a file name as the key to the shared memory
    + * APR_KEYBASED       APR is using a shared key as the key to the shared memory
    + * APR_EINIT          Ininitalizer value.  If no option has been found, but 
    + *                    the status variable requires a value, this should be used
    + * APR_ENOTIMPL       The APR function has not been implemented on this 
    + *                    platform, either because nobody has gotten to it yet, 
    + *                    or the function is impossible on this platform.
    + * APR_EMISMATCH      Two passwords do not match.
    + * APR_EABSOLUTE      The given path was absolute.
    + * APR_ERELATIVE      The given path was relative.
    + * APR_EINCOMPLETE    The given path was neither relative nor absolute.
    + * APR_EABOVEROOT     The given path was above the root path.
    + * APR_EBUSY          The given lock was busy.
    + * APR_EPROC_UNKNOWN  The given process wasn't recognized by APR
    + * 
    + * @{ + */ +/** @see APR_STATUS_IS_ENOSTAT */ +#define APR_ENOSTAT (APR_OS_START_ERROR + 1) +/** @see APR_STATUS_IS_ENOPOOL */ +#define APR_ENOPOOL (APR_OS_START_ERROR + 2) +/* empty slot: +3 */ +/** @see APR_STATUS_IS_EBADDATE */ +#define APR_EBADDATE (APR_OS_START_ERROR + 4) +/** @see APR_STATUS_IS_EINVALSOCK */ +#define APR_EINVALSOCK (APR_OS_START_ERROR + 5) +/** @see APR_STATUS_IS_ENOPROC */ +#define APR_ENOPROC (APR_OS_START_ERROR + 6) +/** @see APR_STATUS_IS_ENOTIME */ +#define APR_ENOTIME (APR_OS_START_ERROR + 7) +/** @see APR_STATUS_IS_ENODIR */ +#define APR_ENODIR (APR_OS_START_ERROR + 8) +/** @see APR_STATUS_IS_ENOLOCK */ +#define APR_ENOLOCK (APR_OS_START_ERROR + 9) +/** @see APR_STATUS_IS_ENOPOLL */ +#define APR_ENOPOLL (APR_OS_START_ERROR + 10) +/** @see APR_STATUS_IS_ENOSOCKET */ +#define APR_ENOSOCKET (APR_OS_START_ERROR + 11) +/** @see APR_STATUS_IS_ENOTHREAD */ +#define APR_ENOTHREAD (APR_OS_START_ERROR + 12) +/** @see APR_STATUS_IS_ENOTHDKEY */ +#define APR_ENOTHDKEY (APR_OS_START_ERROR + 13) +/** @see APR_STATUS_IS_EGENERAL */ +#define APR_EGENERAL (APR_OS_START_ERROR + 14) +/** @see APR_STATUS_IS_ENOSHMAVAIL */ +#define APR_ENOSHMAVAIL (APR_OS_START_ERROR + 15) +/** @see APR_STATUS_IS_EBADIP */ +#define APR_EBADIP (APR_OS_START_ERROR + 16) +/** @see APR_STATUS_IS_EBADMASK */ +#define APR_EBADMASK (APR_OS_START_ERROR + 17) +/* empty slot: +18 */ +/** @see APR_STATUS_IS_EDSOPEN */ +#define APR_EDSOOPEN (APR_OS_START_ERROR + 19) +/** @see APR_STATUS_IS_EABSOLUTE */ +#define APR_EABSOLUTE (APR_OS_START_ERROR + 20) +/** @see APR_STATUS_IS_ERELATIVE */ +#define APR_ERELATIVE (APR_OS_START_ERROR + 21) +/** @see APR_STATUS_IS_EINCOMPLETE */ +#define APR_EINCOMPLETE (APR_OS_START_ERROR + 22) +/** @see APR_STATUS_IS_EABOVEROOT */ +#define APR_EABOVEROOT (APR_OS_START_ERROR + 23) +/** @see APR_STATUS_IS_EBADPATH */ +#define APR_EBADPATH (APR_OS_START_ERROR + 24) +/** @see APR_STATUS_IS_EPATHWILD */ +#define APR_EPATHWILD (APR_OS_START_ERROR + 25) +/** @see APR_STATUS_IS_ESYMNOTFOUND */ +#define APR_ESYMNOTFOUND (APR_OS_START_ERROR + 26) +/** @see APR_STATUS_IS_EPROC_UNKNOWN */ +#define APR_EPROC_UNKNOWN (APR_OS_START_ERROR + 27) +/** @} */ + +/** + * @defgroup APR_STATUS_IS Status Value Tests + * @warning For any particular error condition, more than one of these tests + * may match. This is because platform-specific error codes may not + * always match the semantics of the POSIX codes these tests (and the + * correcponding APR error codes) are named after. A notable example + * are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on + * Win32 platforms. The programmer should always be aware of this and + * adjust the order of the tests accordingly. + * @{ + */ +/** + * APR was unable to perform a stat on the file + * @warning always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_ENOSTAT(s) ((s) == APR_ENOSTAT) +/** + * APR was not provided a pool with which to allocate memory + * @warning always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_ENOPOOL(s) ((s) == APR_ENOPOOL) +/** APR was given an invalid date */ +#define APR_STATUS_IS_EBADDATE(s) ((s) == APR_EBADDATE) +/** APR was given an invalid socket */ +#define APR_STATUS_IS_EINVALSOCK(s) ((s) == APR_EINVALSOCK) +/** APR was not given a process structure */ +#define APR_STATUS_IS_ENOPROC(s) ((s) == APR_ENOPROC) +/** APR was not given a time structure */ +#define APR_STATUS_IS_ENOTIME(s) ((s) == APR_ENOTIME) +/** APR was not given a directory structure */ +#define APR_STATUS_IS_ENODIR(s) ((s) == APR_ENODIR) +/** APR was not given a lock structure */ +#define APR_STATUS_IS_ENOLOCK(s) ((s) == APR_ENOLOCK) +/** APR was not given a poll structure */ +#define APR_STATUS_IS_ENOPOLL(s) ((s) == APR_ENOPOLL) +/** APR was not given a socket */ +#define APR_STATUS_IS_ENOSOCKET(s) ((s) == APR_ENOSOCKET) +/** APR was not given a thread structure */ +#define APR_STATUS_IS_ENOTHREAD(s) ((s) == APR_ENOTHREAD) +/** APR was not given a thread key structure */ +#define APR_STATUS_IS_ENOTHDKEY(s) ((s) == APR_ENOTHDKEY) +/** Generic Error which can not be put into another spot */ +#define APR_STATUS_IS_EGENERAL(s) ((s) == APR_EGENERAL) +/** There is no more shared memory available */ +#define APR_STATUS_IS_ENOSHMAVAIL(s) ((s) == APR_ENOSHMAVAIL) +/** The specified IP address is invalid */ +#define APR_STATUS_IS_EBADIP(s) ((s) == APR_EBADIP) +/** The specified netmask is invalid */ +#define APR_STATUS_IS_EBADMASK(s) ((s) == APR_EBADMASK) +/* empty slot: +18 */ +/** + * APR was unable to open the dso object. + * For more information call apr_dso_error(). + */ +#if defined(WIN32) +#define APR_STATUS_IS_EDSOOPEN(s) ((s) == APR_EDSOOPEN \ + || APR_TO_OS_ERROR(s) == ERROR_MOD_NOT_FOUND) +#else +#define APR_STATUS_IS_EDSOOPEN(s) ((s) == APR_EDSOOPEN) +#endif +/** The given path was absolute. */ +#define APR_STATUS_IS_EABSOLUTE(s) ((s) == APR_EABSOLUTE) +/** The given path was relative. */ +#define APR_STATUS_IS_ERELATIVE(s) ((s) == APR_ERELATIVE) +/** The given path was neither relative nor absolute. */ +#define APR_STATUS_IS_EINCOMPLETE(s) ((s) == APR_EINCOMPLETE) +/** The given path was above the root path. */ +#define APR_STATUS_IS_EABOVEROOT(s) ((s) == APR_EABOVEROOT) +/** The given path was bad. */ +#define APR_STATUS_IS_EBADPATH(s) ((s) == APR_EBADPATH) +/** The given path contained wildcards. */ +#define APR_STATUS_IS_EPATHWILD(s) ((s) == APR_EPATHWILD) +/** Could not find the requested symbol. + * For more information call apr_dso_error(). + */ +#if defined(WIN32) +#define APR_STATUS_IS_ESYMNOTFOUND(s) ((s) == APR_ESYMNOTFOUND \ + || APR_TO_OS_ERROR(s) == ERROR_PROC_NOT_FOUND) +#else +#define APR_STATUS_IS_ESYMNOTFOUND(s) ((s) == APR_ESYMNOTFOUND) +#endif +/** The given process was not recognized by APR. */ +#define APR_STATUS_IS_EPROC_UNKNOWN(s) ((s) == APR_EPROC_UNKNOWN) + +/** @} */ + +/** + * @addtogroup APR_Error + * @{ + */ +/** @see APR_STATUS_IS_INCHILD */ +#define APR_INCHILD (APR_OS_START_STATUS + 1) +/** @see APR_STATUS_IS_INPARENT */ +#define APR_INPARENT (APR_OS_START_STATUS + 2) +/** @see APR_STATUS_IS_DETACH */ +#define APR_DETACH (APR_OS_START_STATUS + 3) +/** @see APR_STATUS_IS_NOTDETACH */ +#define APR_NOTDETACH (APR_OS_START_STATUS + 4) +/** @see APR_STATUS_IS_CHILD_DONE */ +#define APR_CHILD_DONE (APR_OS_START_STATUS + 5) +/** @see APR_STATUS_IS_CHILD_NOTDONE */ +#define APR_CHILD_NOTDONE (APR_OS_START_STATUS + 6) +/** @see APR_STATUS_IS_TIMEUP */ +#define APR_TIMEUP (APR_OS_START_STATUS + 7) +/** @see APR_STATUS_IS_INCOMPLETE */ +#define APR_INCOMPLETE (APR_OS_START_STATUS + 8) +/* empty slot: +9 */ +/* empty slot: +10 */ +/* empty slot: +11 */ +/** @see APR_STATUS_IS_BADCH */ +#define APR_BADCH (APR_OS_START_STATUS + 12) +/** @see APR_STATUS_IS_BADARG */ +#define APR_BADARG (APR_OS_START_STATUS + 13) +/** @see APR_STATUS_IS_EOF */ +#define APR_EOF (APR_OS_START_STATUS + 14) +/** @see APR_STATUS_IS_NOTFOUND */ +#define APR_NOTFOUND (APR_OS_START_STATUS + 15) +/* empty slot: +16 */ +/* empty slot: +17 */ +/* empty slot: +18 */ +/** @see APR_STATUS_IS_ANONYMOUS */ +#define APR_ANONYMOUS (APR_OS_START_STATUS + 19) +/** @see APR_STATUS_IS_FILEBASED */ +#define APR_FILEBASED (APR_OS_START_STATUS + 20) +/** @see APR_STATUS_IS_KEYBASED */ +#define APR_KEYBASED (APR_OS_START_STATUS + 21) +/** @see APR_STATUS_IS_EINIT */ +#define APR_EINIT (APR_OS_START_STATUS + 22) +/** @see APR_STATUS_IS_ENOTIMPL */ +#define APR_ENOTIMPL (APR_OS_START_STATUS + 23) +/** @see APR_STATUS_IS_EMISMATCH */ +#define APR_EMISMATCH (APR_OS_START_STATUS + 24) +/** @see APR_STATUS_IS_EBUSY */ +#define APR_EBUSY (APR_OS_START_STATUS + 25) +/** @} */ + +/** + * @addtogroup APR_STATUS_IS + * @{ + */ +/** + * Program is currently executing in the child + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code */ +#define APR_STATUS_IS_INCHILD(s) ((s) == APR_INCHILD) +/** + * Program is currently executing in the parent + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_INPARENT(s) ((s) == APR_INPARENT) +/** + * The thread is detached + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_DETACH(s) ((s) == APR_DETACH) +/** + * The thread is not detached + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_NOTDETACH(s) ((s) == APR_NOTDETACH) +/** + * The child has finished executing + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_CHILD_DONE(s) ((s) == APR_CHILD_DONE) +/** + * The child has not finished executing + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_CHILD_NOTDONE(s) ((s) == APR_CHILD_NOTDONE) +/** + * The operation did not finish before the timeout + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_TIMEUP(s) ((s) == APR_TIMEUP) +/** + * The operation was incomplete although some processing was performed + * and the results are partially valid. + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_INCOMPLETE(s) ((s) == APR_INCOMPLETE) +/* empty slot: +9 */ +/* empty slot: +10 */ +/* empty slot: +11 */ +/** + * Getopt found an option not in the option string + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_BADCH(s) ((s) == APR_BADCH) +/** + * Getopt found an option not in the option string and an argument was + * specified in the option string + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_BADARG(s) ((s) == APR_BADARG) +/** + * APR has encountered the end of the file + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_EOF(s) ((s) == APR_EOF) +/** + * APR was unable to find the socket in the poll structure + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_NOTFOUND(s) ((s) == APR_NOTFOUND) +/* empty slot: +16 */ +/* empty slot: +17 */ +/* empty slot: +18 */ +/** + * APR is using anonymous shared memory + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_ANONYMOUS(s) ((s) == APR_ANONYMOUS) +/** + * APR is using a file name as the key to the shared memory + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_FILEBASED(s) ((s) == APR_FILEBASED) +/** + * APR is using a shared key as the key to the shared memory + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_KEYBASED(s) ((s) == APR_KEYBASED) +/** + * Ininitalizer value. If no option has been found, but + * the status variable requires a value, this should be used + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_EINIT(s) ((s) == APR_EINIT) +/** + * The APR function has not been implemented on this + * platform, either because nobody has gotten to it yet, + * or the function is impossible on this platform. + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_ENOTIMPL(s) ((s) == APR_ENOTIMPL) +/** + * Two passwords do not match. + * @warning + * always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_EMISMATCH(s) ((s) == APR_EMISMATCH) +/** + * The given lock was busy + * @warning always use this test, as platform-specific variances may meet this + * more than one error code + */ +#define APR_STATUS_IS_EBUSY(s) ((s) == APR_EBUSY) + +/** @} */ + +/** + * @addtogroup APR_Error APR Error Values + * @{ + */ +/* APR CANONICAL ERROR VALUES */ +/** @see APR_STATUS_IS_EACCES */ +#ifdef EACCES +#define APR_EACCES EACCES +#else +#define APR_EACCES (APR_OS_START_CANONERR + 1) +#endif + +/** @see APR_STATUS_IS_EXIST */ +#ifdef EEXIST +#define APR_EEXIST EEXIST +#else +#define APR_EEXIST (APR_OS_START_CANONERR + 2) +#endif + +/** @see APR_STATUS_IS_ENAMETOOLONG */ +#ifdef ENAMETOOLONG +#define APR_ENAMETOOLONG ENAMETOOLONG +#else +#define APR_ENAMETOOLONG (APR_OS_START_CANONERR + 3) +#endif + +/** @see APR_STATUS_IS_ENOENT */ +#ifdef ENOENT +#define APR_ENOENT ENOENT +#else +#define APR_ENOENT (APR_OS_START_CANONERR + 4) +#endif + +/** @see APR_STATUS_IS_ENOTDIR */ +#ifdef ENOTDIR +#define APR_ENOTDIR ENOTDIR +#else +#define APR_ENOTDIR (APR_OS_START_CANONERR + 5) +#endif + +/** @see APR_STATUS_IS_ENOSPC */ +#ifdef ENOSPC +#define APR_ENOSPC ENOSPC +#else +#define APR_ENOSPC (APR_OS_START_CANONERR + 6) +#endif + +/** @see APR_STATUS_IS_ENOMEM */ +#ifdef ENOMEM +#define APR_ENOMEM ENOMEM +#else +#define APR_ENOMEM (APR_OS_START_CANONERR + 7) +#endif + +/** @see APR_STATUS_IS_EMFILE */ +#ifdef EMFILE +#define APR_EMFILE EMFILE +#else +#define APR_EMFILE (APR_OS_START_CANONERR + 8) +#endif + +/** @see APR_STATUS_IS_ENFILE */ +#ifdef ENFILE +#define APR_ENFILE ENFILE +#else +#define APR_ENFILE (APR_OS_START_CANONERR + 9) +#endif + +/** @see APR_STATUS_IS_EBADF */ +#ifdef EBADF +#define APR_EBADF EBADF +#else +#define APR_EBADF (APR_OS_START_CANONERR + 10) +#endif + +/** @see APR_STATUS_IS_EINVAL */ +#ifdef EINVAL +#define APR_EINVAL EINVAL +#else +#define APR_EINVAL (APR_OS_START_CANONERR + 11) +#endif + +/** @see APR_STATUS_IS_ESPIPE */ +#ifdef ESPIPE +#define APR_ESPIPE ESPIPE +#else +#define APR_ESPIPE (APR_OS_START_CANONERR + 12) +#endif + +/** + * @see APR_STATUS_IS_EAGAIN + * @warning use APR_STATUS_IS_EAGAIN instead of just testing this value + */ +#ifdef EAGAIN +#define APR_EAGAIN EAGAIN +#elif defined(EWOULDBLOCK) +#define APR_EAGAIN EWOULDBLOCK +#else +#define APR_EAGAIN (APR_OS_START_CANONERR + 13) +#endif + +/** @see APR_STATUS_IS_EINTR */ +#ifdef EINTR +#define APR_EINTR EINTR +#else +#define APR_EINTR (APR_OS_START_CANONERR + 14) +#endif + +/** @see APR_STATUS_IS_ENOTSOCK */ +#ifdef ENOTSOCK +#define APR_ENOTSOCK ENOTSOCK +#else +#define APR_ENOTSOCK (APR_OS_START_CANONERR + 15) +#endif + +/** @see APR_STATUS_IS_ECONNREFUSED */ +#ifdef ECONNREFUSED +#define APR_ECONNREFUSED ECONNREFUSED +#else +#define APR_ECONNREFUSED (APR_OS_START_CANONERR + 16) +#endif + +/** @see APR_STATUS_IS_EINPROGRESS */ +#ifdef EINPROGRESS +#define APR_EINPROGRESS EINPROGRESS +#else +#define APR_EINPROGRESS (APR_OS_START_CANONERR + 17) +#endif + +/** + * @see APR_STATUS_IS_ECONNABORTED + * @warning use APR_STATUS_IS_ECONNABORTED instead of just testing this value + */ + +#ifdef ECONNABORTED +#define APR_ECONNABORTED ECONNABORTED +#else +#define APR_ECONNABORTED (APR_OS_START_CANONERR + 18) +#endif + +/** @see APR_STATUS_IS_ECONNRESET */ +#ifdef ECONNRESET +#define APR_ECONNRESET ECONNRESET +#else +#define APR_ECONNRESET (APR_OS_START_CANONERR + 19) +#endif + +/** @see APR_STATUS_IS_ETIMEDOUT */ +#ifdef ETIMEDOUT +#define APR_ETIMEDOUT ETIMEDOUT +#else +#define APR_ETIMEDOUT (APR_OS_START_CANONERR + 20) +#endif + +/** @see APR_STATUS_IS_EHOSTUNREACH */ +#ifdef EHOSTUNREACH +#define APR_EHOSTUNREACH EHOSTUNREACH +#else +#define APR_EHOSTUNREACH (APR_OS_START_CANONERR + 21) +#endif + +/** @see APR_STATUS_IS_ENETUNREACH */ +#ifdef ENETUNREACH +#define APR_ENETUNREACH ENETUNREACH +#else +#define APR_ENETUNREACH (APR_OS_START_CANONERR + 22) +#endif + +/** @see APR_STATUS_IS_EFTYPE */ +#ifdef EFTYPE +#define APR_EFTYPE EFTYPE +#else +#define APR_EFTYPE (APR_OS_START_CANONERR + 23) +#endif + +/** @see APR_STATUS_IS_EPIPE */ +#ifdef EPIPE +#define APR_EPIPE EPIPE +#else +#define APR_EPIPE (APR_OS_START_CANONERR + 24) +#endif + +/** @see APR_STATUS_IS_EXDEV */ +#ifdef EXDEV +#define APR_EXDEV EXDEV +#else +#define APR_EXDEV (APR_OS_START_CANONERR + 25) +#endif + +/** @see APR_STATUS_IS_ENOTEMPTY */ +#ifdef ENOTEMPTY +#define APR_ENOTEMPTY ENOTEMPTY +#else +#define APR_ENOTEMPTY (APR_OS_START_CANONERR + 26) +#endif + +/** @} */ + +#if defined(OS2) && !defined(DOXYGEN) + +#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) +#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) + +#define INCL_DOSERRORS +#define INCL_DOS + +/* Leave these undefined. + * OS2 doesn't rely on the errno concept. + * The API calls always return a result codes which + * should be filtered through APR_FROM_OS_ERROR(). + * + * #define apr_get_os_error() (APR_FROM_OS_ERROR(GetLastError())) + * #define apr_set_os_error(e) (SetLastError(APR_TO_OS_ERROR(e))) + */ + +/* A special case, only socket calls require this; + */ +#define apr_get_netos_error() (APR_FROM_OS_ERROR(errno)) +#define apr_set_netos_error(e) (errno = APR_TO_OS_ERROR(e)) + +/* And this needs to be greped away for good: + */ +#define APR_OS2_STATUS(e) (APR_FROM_OS_ERROR(e)) + +#define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS \ + || (s) == APR_OS_START_SYSERR + NO_ERROR) + +/* These can't sit in a private header, so in spite of the extra size, + * they need to be made available here. + */ +#define SOCBASEERR 10000 +#define SOCEPERM (SOCBASEERR+1) /* Not owner */ +#define SOCESRCH (SOCBASEERR+3) /* No such process */ +#define SOCEINTR (SOCBASEERR+4) /* Interrupted system call */ +#define SOCENXIO (SOCBASEERR+6) /* No such device or address */ +#define SOCEBADF (SOCBASEERR+9) /* Bad file number */ +#define SOCEACCES (SOCBASEERR+13) /* Permission denied */ +#define SOCEFAULT (SOCBASEERR+14) /* Bad address */ +#define SOCEINVAL (SOCBASEERR+22) /* Invalid argument */ +#define SOCEMFILE (SOCBASEERR+24) /* Too many open files */ +#define SOCEPIPE (SOCBASEERR+32) /* Broken pipe */ +#define SOCEOS2ERR (SOCBASEERR+100) /* OS/2 Error */ +#define SOCEWOULDBLOCK (SOCBASEERR+35) /* Operation would block */ +#define SOCEINPROGRESS (SOCBASEERR+36) /* Operation now in progress */ +#define SOCEALREADY (SOCBASEERR+37) /* Operation already in progress */ +#define SOCENOTSOCK (SOCBASEERR+38) /* Socket operation on non-socket */ +#define SOCEDESTADDRREQ (SOCBASEERR+39) /* Destination address required */ +#define SOCEMSGSIZE (SOCBASEERR+40) /* Message too long */ +#define SOCEPROTOTYPE (SOCBASEERR+41) /* Protocol wrong type for socket */ +#define SOCENOPROTOOPT (SOCBASEERR+42) /* Protocol not available */ +#define SOCEPROTONOSUPPORT (SOCBASEERR+43) /* Protocol not supported */ +#define SOCESOCKTNOSUPPORT (SOCBASEERR+44) /* Socket type not supported */ +#define SOCEOPNOTSUPP (SOCBASEERR+45) /* Operation not supported on socket */ +#define SOCEPFNOSUPPORT (SOCBASEERR+46) /* Protocol family not supported */ +#define SOCEAFNOSUPPORT (SOCBASEERR+47) /* Address family not supported by protocol family */ +#define SOCEADDRINUSE (SOCBASEERR+48) /* Address already in use */ +#define SOCEADDRNOTAVAIL (SOCBASEERR+49) /* Can't assign requested address */ +#define SOCENETDOWN (SOCBASEERR+50) /* Network is down */ +#define SOCENETUNREACH (SOCBASEERR+51) /* Network is unreachable */ +#define SOCENETRESET (SOCBASEERR+52) /* Network dropped connection on reset */ +#define SOCECONNABORTED (SOCBASEERR+53) /* Software caused connection abort */ +#define SOCECONNRESET (SOCBASEERR+54) /* Connection reset by peer */ +#define SOCENOBUFS (SOCBASEERR+55) /* No buffer space available */ +#define SOCEISCONN (SOCBASEERR+56) /* Socket is already connected */ +#define SOCENOTCONN (SOCBASEERR+57) /* Socket is not connected */ +#define SOCESHUTDOWN (SOCBASEERR+58) /* Can't send after socket shutdown */ +#define SOCETOOMANYREFS (SOCBASEERR+59) /* Too many references: can't splice */ +#define SOCETIMEDOUT (SOCBASEERR+60) /* Connection timed out */ +#define SOCECONNREFUSED (SOCBASEERR+61) /* Connection refused */ +#define SOCELOOP (SOCBASEERR+62) /* Too many levels of symbolic links */ +#define SOCENAMETOOLONG (SOCBASEERR+63) /* File name too long */ +#define SOCEHOSTDOWN (SOCBASEERR+64) /* Host is down */ +#define SOCEHOSTUNREACH (SOCBASEERR+65) /* No route to host */ +#define SOCENOTEMPTY (SOCBASEERR+66) /* Directory not empty */ + +/* APR CANONICAL ERROR TESTS */ +#define APR_STATUS_IS_EACCES(s) ((s) == APR_EACCES \ + || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \ + || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION) +#define APR_STATUS_IS_EEXIST(s) ((s) == APR_EEXIST \ + || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \ + || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \ + || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS \ + || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED) +#define APR_STATUS_IS_ENAMETOOLONG(s) ((s) == APR_ENAMETOOLONG \ + || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \ + || (s) == APR_OS_START_SYSERR + SOCENAMETOOLONG) +#define APR_STATUS_IS_ENOENT(s) ((s) == APR_ENOENT \ + || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \ + || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \ + || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES \ + || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED) +#define APR_STATUS_IS_ENOTDIR(s) ((s) == APR_ENOTDIR) +#define APR_STATUS_IS_ENOSPC(s) ((s) == APR_ENOSPC \ + || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL) +#define APR_STATUS_IS_ENOMEM(s) ((s) == APR_ENOMEM) +#define APR_STATUS_IS_EMFILE(s) ((s) == APR_EMFILE \ + || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES) +#define APR_STATUS_IS_ENFILE(s) ((s) == APR_ENFILE) +#define APR_STATUS_IS_EBADF(s) ((s) == APR_EBADF \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE) +#define APR_STATUS_IS_EINVAL(s) ((s) == APR_EINVAL \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION) +#define APR_STATUS_IS_ESPIPE(s) ((s) == APR_ESPIPE \ + || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK) +#define APR_STATUS_IS_EAGAIN(s) ((s) == APR_EAGAIN \ + || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \ + || (s) == APR_OS_START_SYSERR + SOCEWOULDBLOCK \ + || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION) +#define APR_STATUS_IS_EINTR(s) ((s) == APR_EINTR \ + || (s) == APR_OS_START_SYSERR + SOCEINTR) +#define APR_STATUS_IS_ENOTSOCK(s) ((s) == APR_ENOTSOCK \ + || (s) == APR_OS_START_SYSERR + SOCENOTSOCK) +#define APR_STATUS_IS_ECONNREFUSED(s) ((s) == APR_ECONNREFUSED \ + || (s) == APR_OS_START_SYSERR + SOCECONNREFUSED) +#define APR_STATUS_IS_EINPROGRESS(s) ((s) == APR_EINPROGRESS \ + || (s) == APR_OS_START_SYSERR + SOCEINPROGRESS) +#define APR_STATUS_IS_ECONNABORTED(s) ((s) == APR_ECONNABORTED \ + || (s) == APR_OS_START_SYSERR + SOCECONNABORTED) +#define APR_STATUS_IS_ECONNRESET(s) ((s) == APR_ECONNRESET \ + || (s) == APR_OS_START_SYSERR + SOCECONNRESET) +#define APR_STATUS_IS_ETIMEDOUT(s) ((s) == APR_ETIMEDOUT \ + || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT) +#define APR_STATUS_IS_EHOSTUNREACH(s) ((s) == APR_EHOSTUNREACH \ + || (s) == APR_OS_START_SYSERR + SOCEHOSTUNREACH) +#define APR_STATUS_IS_ENETUNREACH(s) ((s) == APR_ENETUNREACH \ + || (s) == APR_OS_START_SYSERR + SOCENETUNREACH) +#define APR_STATUS_IS_EFTYPE(s) ((s) == APR_EFTYPE) +#define APR_STATUS_IS_EPIPE(s) ((s) == APR_EPIPE \ + || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE \ + || (s) == APR_OS_START_SYSERR + SOCEPIPE) +#define APR_STATUS_IS_EXDEV(s) ((s) == APR_EXDEV \ + || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE) +#define APR_STATUS_IS_ENOTEMPTY(s) ((s) == APR_ENOTEMPTY \ + || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY \ + || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED) + +/* + Sorry, too tired to wrap this up for OS2... feel free to + fit the following into their best matches. + + { ERROR_NO_SIGNAL_SENT, ESRCH }, + { SOCEALREADY, EALREADY }, + { SOCEDESTADDRREQ, EDESTADDRREQ }, + { SOCEMSGSIZE, EMSGSIZE }, + { SOCEPROTOTYPE, EPROTOTYPE }, + { SOCENOPROTOOPT, ENOPROTOOPT }, + { SOCEPROTONOSUPPORT, EPROTONOSUPPORT }, + { SOCESOCKTNOSUPPORT, ESOCKTNOSUPPORT }, + { SOCEOPNOTSUPP, EOPNOTSUPP }, + { SOCEPFNOSUPPORT, EPFNOSUPPORT }, + { SOCEAFNOSUPPORT, EAFNOSUPPORT }, + { SOCEADDRINUSE, EADDRINUSE }, + { SOCEADDRNOTAVAIL, EADDRNOTAVAIL }, + { SOCENETDOWN, ENETDOWN }, + { SOCENETRESET, ENETRESET }, + { SOCENOBUFS, ENOBUFS }, + { SOCEISCONN, EISCONN }, + { SOCENOTCONN, ENOTCONN }, + { SOCESHUTDOWN, ESHUTDOWN }, + { SOCETOOMANYREFS, ETOOMANYREFS }, + { SOCELOOP, ELOOP }, + { SOCEHOSTDOWN, EHOSTDOWN }, + { SOCENOTEMPTY, ENOTEMPTY }, + { SOCEPIPE, EPIPE } +*/ + +#elif defined(WIN32) && !defined(DOXYGEN) /* !defined(OS2) */ + +#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) +#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) + +#define apr_get_os_error() (APR_FROM_OS_ERROR(GetLastError())) +#define apr_set_os_error(e) (SetLastError(APR_TO_OS_ERROR(e))) + +/* A special case, only socket calls require this: + */ +#define apr_get_netos_error() (APR_FROM_OS_ERROR(WSAGetLastError())) +#define apr_set_netos_error(e) (WSASetLastError(APR_TO_OS_ERROR(e))) + +#define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS \ + || (s) == APR_OS_START_SYSERR + ERROR_SUCCESS) + +/* APR CANONICAL ERROR TESTS */ +#define APR_STATUS_IS_EACCES(s) ((s) == APR_EACCES \ + || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \ + || (s) == APR_OS_START_SYSERR + ERROR_CANNOT_MAKE \ + || (s) == APR_OS_START_SYSERR + ERROR_CURRENT_DIRECTORY \ + || (s) == APR_OS_START_SYSERR + ERROR_DRIVE_LOCKED \ + || (s) == APR_OS_START_SYSERR + ERROR_FAIL_I24 \ + || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \ + || (s) == APR_OS_START_SYSERR + ERROR_LOCK_FAILED \ + || (s) == APR_OS_START_SYSERR + ERROR_NOT_LOCKED \ + || (s) == APR_OS_START_SYSERR + ERROR_NETWORK_ACCESS_DENIED \ + || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION) +#define APR_STATUS_IS_EEXIST(s) ((s) == APR_EEXIST \ + || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \ + || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS) +#define APR_STATUS_IS_ENAMETOOLONG(s) ((s) == APR_ENAMETOOLONG \ + || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \ + || (s) == APR_OS_START_SYSERR + WSAENAMETOOLONG) +#define APR_STATUS_IS_ENOENT(s) ((s) == APR_ENOENT \ + || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \ + || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \ + || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \ + || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES) +#define APR_STATUS_IS_ENOTDIR(s) ((s) == APR_ENOTDIR \ + || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \ + || (s) == APR_OS_START_SYSERR + ERROR_BAD_NETPATH \ + || (s) == APR_OS_START_SYSERR + ERROR_BAD_NET_NAME \ + || (s) == APR_OS_START_SYSERR + ERROR_BAD_PATHNAME \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DRIVE) +#define APR_STATUS_IS_ENOSPC(s) ((s) == APR_ENOSPC \ + || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL) +#define APR_STATUS_IS_ENOMEM(s) ((s) == APR_ENOMEM \ + || (s) == APR_OS_START_SYSERR + ERROR_ARENA_TRASHED \ + || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_MEMORY \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_BLOCK \ + || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_QUOTA \ + || (s) == APR_OS_START_SYSERR + ERROR_OUTOFMEMORY) +#define APR_STATUS_IS_EMFILE(s) ((s) == APR_EMFILE \ + || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES) +#define APR_STATUS_IS_ENFILE(s) ((s) == APR_ENFILE) +#define APR_STATUS_IS_EBADF(s) ((s) == APR_EBADF \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_TARGET_HANDLE) +#define APR_STATUS_IS_EINVAL(s) ((s) == APR_EINVAL \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_ACCESS \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DATA \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \ + || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK) +#define APR_STATUS_IS_ESPIPE(s) ((s) == APR_ESPIPE \ + || (s) == APR_OS_START_SYSERR + ERROR_SEEK_ON_DEVICE \ + || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK) +#define APR_STATUS_IS_EAGAIN(s) ((s) == APR_EAGAIN \ + || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \ + || (s) == APR_OS_START_SYSERR + ERROR_NO_PROC_SLOTS \ + || (s) == APR_OS_START_SYSERR + ERROR_NESTING_NOT_ALLOWED \ + || (s) == APR_OS_START_SYSERR + ERROR_MAX_THRDS_REACHED \ + || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \ + || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK) +#define APR_STATUS_IS_EINTR(s) ((s) == APR_EINTR \ + || (s) == APR_OS_START_SYSERR + WSAEINTR) +#define APR_STATUS_IS_ENOTSOCK(s) ((s) == APR_ENOTSOCK \ + || (s) == APR_OS_START_SYSERR + WSAENOTSOCK) +#define APR_STATUS_IS_ECONNREFUSED(s) ((s) == APR_ECONNREFUSED \ + || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED) +#define APR_STATUS_IS_EINPROGRESS(s) ((s) == APR_EINPROGRESS \ + || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS) +#define APR_STATUS_IS_ECONNABORTED(s) ((s) == APR_ECONNABORTED \ + || (s) == APR_OS_START_SYSERR + WSAECONNABORTED) +#define APR_STATUS_IS_ECONNRESET(s) ((s) == APR_ECONNRESET \ + || (s) == APR_OS_START_SYSERR + ERROR_NETNAME_DELETED \ + || (s) == APR_OS_START_SYSERR + WSAECONNRESET) +#define APR_STATUS_IS_ETIMEDOUT(s) ((s) == APR_ETIMEDOUT \ + || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \ + || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT) +#define APR_STATUS_IS_EHOSTUNREACH(s) ((s) == APR_EHOSTUNREACH \ + || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH) +#define APR_STATUS_IS_ENETUNREACH(s) ((s) == APR_ENETUNREACH \ + || (s) == APR_OS_START_SYSERR + WSAENETUNREACH) +#define APR_STATUS_IS_EFTYPE(s) ((s) == APR_EFTYPE \ + || (s) == APR_OS_START_SYSERR + ERROR_EXE_MACHINE_TYPE_MISMATCH \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DLL \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_MODULETYPE \ + || (s) == APR_OS_START_SYSERR + ERROR_BAD_EXE_FORMAT \ + || (s) == APR_OS_START_SYSERR + ERROR_INVALID_EXE_SIGNATURE \ + || (s) == APR_OS_START_SYSERR + ERROR_FILE_CORRUPT \ + || (s) == APR_OS_START_SYSERR + ERROR_BAD_FORMAT) +#define APR_STATUS_IS_EPIPE(s) ((s) == APR_EPIPE \ + || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE) +#define APR_STATUS_IS_EXDEV(s) ((s) == APR_EXDEV \ + || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE) +#define APR_STATUS_IS_ENOTEMPTY(s) ((s) == APR_ENOTEMPTY \ + || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY) + +#elif defined(NETWARE) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */ + +#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) +#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) + +#define apr_get_os_error() (errno) +#define apr_set_os_error(e) (errno = (e)) + +/* A special case, only socket calls require this: */ +#define apr_get_netos_error() (APR_FROM_OS_ERROR(WSAGetLastError())) +#define apr_set_netos_error(e) (WSASetLastError(APR_TO_OS_ERROR(e))) + +#define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS) + +/* APR CANONICAL ERROR TESTS */ +#define APR_STATUS_IS_EACCES(s) ((s) == APR_EACCES) +#define APR_STATUS_IS_EEXIST(s) ((s) == APR_EEXIST) +#define APR_STATUS_IS_ENAMETOOLONG(s) ((s) == APR_ENAMETOOLONG) +#define APR_STATUS_IS_ENOENT(s) ((s) == APR_ENOENT) +#define APR_STATUS_IS_ENOTDIR(s) ((s) == APR_ENOTDIR) +#define APR_STATUS_IS_ENOSPC(s) ((s) == APR_ENOSPC) +#define APR_STATUS_IS_ENOMEM(s) ((s) == APR_ENOMEM) +#define APR_STATUS_IS_EMFILE(s) ((s) == APR_EMFILE) +#define APR_STATUS_IS_ENFILE(s) ((s) == APR_ENFILE) +#define APR_STATUS_IS_EBADF(s) ((s) == APR_EBADF) +#define APR_STATUS_IS_EINVAL(s) ((s) == APR_EINVAL) +#define APR_STATUS_IS_ESPIPE(s) ((s) == APR_ESPIPE) + +#define APR_STATUS_IS_EAGAIN(s) ((s) == APR_EAGAIN \ + || (s) == EWOULDBLOCK \ + || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK) +#define APR_STATUS_IS_EINTR(s) ((s) == APR_EINTR \ + || (s) == APR_OS_START_SYSERR + WSAEINTR) +#define APR_STATUS_IS_ENOTSOCK(s) ((s) == APR_ENOTSOCK \ + || (s) == APR_OS_START_SYSERR + WSAENOTSOCK) +#define APR_STATUS_IS_ECONNREFUSED(s) ((s) == APR_ECONNREFUSED \ + || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED) +#define APR_STATUS_IS_EINPROGRESS(s) ((s) == APR_EINPROGRESS \ + || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS) +#define APR_STATUS_IS_ECONNABORTED(s) ((s) == APR_ECONNABORTED \ + || (s) == APR_OS_START_SYSERR + WSAECONNABORTED) +#define APR_STATUS_IS_ECONNRESET(s) ((s) == APR_ECONNRESET \ + || (s) == APR_OS_START_SYSERR + WSAECONNRESET) +#define APR_STATUS_IS_ETIMEDOUT(s) ((s) == APR_ETIMEDOUT \ + || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \ + || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT) +#define APR_STATUS_IS_EHOSTUNREACH(s) ((s) == APR_EHOSTUNREACH \ + || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH) +#define APR_STATUS_IS_ENETUNREACH(s) ((s) == APR_ENETUNREACH \ + || (s) == APR_OS_START_SYSERR + WSAENETUNREACH) +#define APR_STATUS_IS_ENETDOWN(s) ((s) == APR_OS_START_SYSERR + WSAENETDOWN) +#define APR_STATUS_IS_EFTYPE(s) ((s) == APR_EFTYPE) +#define APR_STATUS_IS_EPIPE(s) ((s) == APR_EPIPE) +#define APR_STATUS_IS_EXDEV(s) ((s) == APR_EXDEV) +#define APR_STATUS_IS_ENOTEMPTY(s) ((s) == APR_ENOTEMPTY) + +#else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */ + +/* + * os error codes are clib error codes + */ +#define APR_FROM_OS_ERROR(e) (e) +#define APR_TO_OS_ERROR(e) (e) + +#define apr_get_os_error() (errno) +#define apr_set_os_error(e) (errno = (e)) + +/* A special case, only socket calls require this: + */ +#define apr_get_netos_error() (errno) +#define apr_set_netos_error(e) (errno = (e)) +/** @} */ + +/** + * @addtogroup APR_STATUS_IS + * @{ + */ +/** no error */ +#define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS) + +/** permission denied */ +#define APR_STATUS_IS_EACCES(s) ((s) == APR_EACCES) +/** file exists */ +#define APR_STATUS_IS_EEXIST(s) ((s) == APR_EEXIST) +/** path name is too long */ +#define APR_STATUS_IS_ENAMETOOLONG(s) ((s) == APR_ENAMETOOLONG) +/** + * no such file or directory + * @remark + * EMVSCATLG can be returned by the automounter on z/OS for + * paths which do not exist. + */ +#ifdef EMVSCATLG +#define APR_STATUS_IS_ENOENT(s) ((s) == APR_ENOENT \ + || (s) == EMVSCATLG) +#else +#define APR_STATUS_IS_ENOENT(s) ((s) == APR_ENOENT) +#endif +/** not a directory */ +#define APR_STATUS_IS_ENOTDIR(s) ((s) == APR_ENOTDIR) +/** no space left on device */ +#define APR_STATUS_IS_ENOSPC(s) ((s) == APR_ENOSPC) +/** not enough memory */ +#define APR_STATUS_IS_ENOMEM(s) ((s) == APR_ENOMEM) +/** too many open files */ +#define APR_STATUS_IS_EMFILE(s) ((s) == APR_EMFILE) +/** file table overflow */ +#define APR_STATUS_IS_ENFILE(s) ((s) == APR_ENFILE) +/** bad file # */ +#define APR_STATUS_IS_EBADF(s) ((s) == APR_EBADF) +/** invalid argument */ +#define APR_STATUS_IS_EINVAL(s) ((s) == APR_EINVAL) +/** illegal seek */ +#define APR_STATUS_IS_ESPIPE(s) ((s) == APR_ESPIPE) + +/** operation would block */ +#if !defined(EWOULDBLOCK) || !defined(EAGAIN) +#define APR_STATUS_IS_EAGAIN(s) ((s) == APR_EAGAIN) +#elif (EWOULDBLOCK == EAGAIN) +#define APR_STATUS_IS_EAGAIN(s) ((s) == APR_EAGAIN) +#else +#define APR_STATUS_IS_EAGAIN(s) ((s) == APR_EAGAIN \ + || (s) == EWOULDBLOCK) +#endif + +/** interrupted system call */ +#define APR_STATUS_IS_EINTR(s) ((s) == APR_EINTR) +/** socket operation on a non-socket */ +#define APR_STATUS_IS_ENOTSOCK(s) ((s) == APR_ENOTSOCK) +/** Connection Refused */ +#define APR_STATUS_IS_ECONNREFUSED(s) ((s) == APR_ECONNREFUSED) +/** operation now in progress */ +#define APR_STATUS_IS_EINPROGRESS(s) ((s) == APR_EINPROGRESS) + +/** + * Software caused connection abort + * @remark + * EPROTO on certain older kernels really means ECONNABORTED, so we need to + * ignore it for them. See discussion in new-httpd archives nh.9701 & nh.9603 + * + * There is potentially a bug in Solaris 2.x x<6, and other boxes that + * implement tcp sockets in userland (i.e. on top of STREAMS). On these + * systems, EPROTO can actually result in a fatal loop. See PR#981 for + * example. It's hard to handle both uses of EPROTO. + */ +#ifdef EPROTO +#define APR_STATUS_IS_ECONNABORTED(s) ((s) == APR_ECONNABORTED \ + || (s) == EPROTO) +#else +#define APR_STATUS_IS_ECONNABORTED(s) ((s) == APR_ECONNABORTED) +#endif + +/** Connection Reset by peer */ +#define APR_STATUS_IS_ECONNRESET(s) ((s) == APR_ECONNRESET) +/** Operation timed out */ +#define APR_STATUS_IS_ETIMEDOUT(s) ((s) == APR_ETIMEDOUT) +/** no route to host */ +#define APR_STATUS_IS_EHOSTUNREACH(s) ((s) == APR_EHOSTUNREACH) +/** network is unreachable */ +#define APR_STATUS_IS_ENETUNREACH(s) ((s) == APR_ENETUNREACH) +/** inappropiate file type or format */ +#define APR_STATUS_IS_EFTYPE(s) ((s) == APR_EFTYPE) +/** broken pipe */ +#define APR_STATUS_IS_EPIPE(s) ((s) == APR_EPIPE) +/** cross device link */ +#define APR_STATUS_IS_EXDEV(s) ((s) == APR_EXDEV) +/** Directory Not Empty */ +#define APR_STATUS_IS_ENOTEMPTY(s) ((s) == APR_ENOTEMPTY || \ + (s) == APR_EEXIST) +/** @} */ + +#endif /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_ERRNO_H */ diff --git a/rubbos/app/apache2/include/apr_file_info.h b/rubbos/app/apache2/include/apr_file_info.h new file mode 100644 index 00000000..7e613d85 --- /dev/null +++ b/rubbos/app/apache2/include/apr_file_info.h @@ -0,0 +1,421 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_FILE_INFO_H +#define APR_FILE_INFO_H + +/** + * @file apr_file_info.h + * @brief APR File Information + */ + +#include "apr.h" +#include "apr_user.h" +#include "apr_pools.h" +#include "apr_tables.h" +#include "apr_time.h" +#include "apr_errno.h" + +#if APR_HAVE_SYS_UIO_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_file_info File Information + * @ingroup APR + * @{ + */ + +/* Many applications use the type member to determine the + * existance of a file or initialization of the file info, + * so the APR_NOFILE value must be distinct from APR_UNKFILE. + */ + +/** apr_filetype_e values for the filetype member of the + * apr_file_info_t structure + * @warning: Not all of the filetypes below can be determined. + * For example, a given platform might not correctly report + * a socket descriptor as APR_SOCK if that type isn't + * well-identified on that platform. In such cases where + * a filetype exists but cannot be described by the recognized + * flags below, the filetype will be APR_UNKFILE. If the + * filetype member is not determined, the type will be APR_NOFILE. + */ + +typedef enum { + APR_NOFILE = 0, /**< no file type determined */ + APR_REG, /**< a regular file */ + APR_DIR, /**< a directory */ + APR_CHR, /**< a character device */ + APR_BLK, /**< a block device */ + APR_PIPE, /**< a FIFO / pipe */ + APR_LNK, /**< a symbolic link */ + APR_SOCK, /**< a [unix domain] socket */ + APR_UNKFILE = 127 /**< a file of some other unknown type */ +} apr_filetype_e; + +/** + * @defgroup apr_file_permissions File Permissions flags + * @{ + */ + +#define APR_USETID 0x8000 /**< Set user id */ +#define APR_UREAD 0x0400 /**< Read by user */ +#define APR_UWRITE 0x0200 /**< Write by user */ +#define APR_UEXECUTE 0x0100 /**< Execute by user */ + +#define APR_GSETID 0x4000 /**< Set group id */ +#define APR_GREAD 0x0040 /**< Read by group */ +#define APR_GWRITE 0x0020 /**< Write by group */ +#define APR_GEXECUTE 0x0010 /**< Execute by group */ + +#define APR_WSTICKY 0x2000 /**< Sticky bit */ +#define APR_WREAD 0x0004 /**< Read by others */ +#define APR_WWRITE 0x0002 /**< Write by others */ +#define APR_WEXECUTE 0x0001 /**< Execute by others */ + +#define APR_OS_DEFAULT 0x0FFF /**< use OS's default permissions */ + +/* additional permission flags for apr_file_copy and apr_file_append */ +#define APR_FILE_SOURCE_PERMS 0x1000 /**< Copy source file's permissions */ + +/** @} */ + + +/** + * Structure for referencing directories. + */ +typedef struct apr_dir_t apr_dir_t; +/** + * Structure for determining file permissions. + */ +typedef apr_int32_t apr_fileperms_t; +#if (defined WIN32) || (defined NETWARE) +/** + * Structure for determining the device the file is on. + */ +typedef apr_uint32_t apr_dev_t; +#else +/** + * Structure for determining the device the file is on. + */ +typedef dev_t apr_dev_t; +#endif + +/** + * @defgroup apr_file_stat Stat Functions + * @{ + */ +/** file info structure */ +typedef struct apr_finfo_t apr_finfo_t; + +#define APR_FINFO_LINK 0x00000001 /**< Stat the link not the file itself if it is a link */ +#define APR_FINFO_MTIME 0x00000010 /**< Modification Time */ +#define APR_FINFO_CTIME 0x00000020 /**< Creation Time */ +#define APR_FINFO_ATIME 0x00000040 /**< Access Time */ +#define APR_FINFO_SIZE 0x00000100 /**< Size of the file */ +#define APR_FINFO_CSIZE 0x00000200 /**< Storage size consumed by the file */ +#define APR_FINFO_DEV 0x00001000 /**< Device */ +#define APR_FINFO_INODE 0x00002000 /**< Inode */ +#define APR_FINFO_NLINK 0x00004000 /**< Number of links */ +#define APR_FINFO_TYPE 0x00008000 /**< Type */ +#define APR_FINFO_USER 0x00010000 /**< User */ +#define APR_FINFO_GROUP 0x00020000 /**< Group */ +#define APR_FINFO_UPROT 0x00100000 /**< User protection bits */ +#define APR_FINFO_GPROT 0x00200000 /**< Group protection bits */ +#define APR_FINFO_WPROT 0x00400000 /**< World protection bits */ +#define APR_FINFO_ICASE 0x01000000 /**< if dev is case insensitive */ +#define APR_FINFO_NAME 0x02000000 /**< ->name in proper case */ + +#define APR_FINFO_MIN 0x00008170 /**< type, mtime, ctime, atime, size */ +#define APR_FINFO_IDENT 0x00003000 /**< dev and inode */ +#define APR_FINFO_OWNER 0x00030000 /**< user and group */ +#define APR_FINFO_PROT 0x00700000 /**< all protections */ +#define APR_FINFO_NORM 0x0073b170 /**< an atomic unix apr_stat() */ +#define APR_FINFO_DIRENT 0x02000000 /**< an atomic unix apr_dir_read() */ + +/** + * The file information structure. This is analogous to the POSIX + * stat structure. + */ +struct apr_finfo_t { + /** Allocates memory and closes lingering handles in the specified pool */ + apr_pool_t *pool; + /** The bitmask describing valid fields of this apr_finfo_t structure + * including all available 'wanted' fields and potentially more */ + apr_int32_t valid; + /** The access permissions of the file. Mimics Unix access rights. */ + apr_fileperms_t protection; + /** The type of file. One of APR_REG, APR_DIR, APR_CHR, APR_BLK, APR_PIPE, + * APR_LNK or APR_SOCK. If the type is undetermined, the value is APR_NOFILE. + * If the type cannot be determined, the value is APR_UNKFILE. + */ + apr_filetype_e filetype; + /** The user id that owns the file */ + apr_uid_t user; + /** The group id that owns the file */ + apr_gid_t group; + /** The inode of the file. */ + apr_ino_t inode; + /** The id of the device the file is on. */ + apr_dev_t device; + /** The number of hard links to the file. */ + apr_int32_t nlink; + /** The size of the file */ + apr_off_t size; + /** The storage size consumed by the file */ + apr_off_t csize; + /** The time the file was last accessed */ + apr_time_t atime; + /** The time the file was last modified */ + apr_time_t mtime; + /** The time the file was last changed */ + apr_time_t ctime; + /** The pathname of the file (possibly unrooted) */ + const char *fname; + /** The file's name (no path) in filesystem case */ + const char *name; + /** The file's handle, if accessed (can be submitted to apr_duphandle) */ + struct apr_file_t *filehand; +}; + +/** + * get the specified file's stats. The file is specified by filename, + * instead of using a pre-opened file. + * @param finfo Where to store the information about the file, which is + * never touched if the call fails. + * @param fname The name of the file to stat. + * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ + values + * @param cont the pool to use to allocate the new file. + * + * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may + * not be filled in, and you need to check the @c finfo->valid bitmask + * to verify that what you're looking for is there. + */ +APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, + apr_int32_t wanted, apr_pool_t *cont); + +/** + * get the specified file's stats. The file is specified by filename, + * instead of using a pre-opened file. If the file is a symlink, this function + * will get the stats for the symlink not the file the symlink refers to. + * @param finfo Where to store the information about the file, which is + * never touched if the call fails. + * @param fname The name of the file to stat. + * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values + * @param cont the pool to use to allocate the new file. + * @deprecated This function is deprecated, it's equivalent to calling apr_stat with + * the wanted flag value APR_FINFO_LINK + */ +APR_DECLARE(apr_status_t) apr_lstat(apr_finfo_t *finfo, const char *fname, + apr_int32_t wanted, apr_pool_t *cont); +/** @} */ +/** + * @defgroup apr_dir Directory Manipulation Functions + * @{ + */ + +/** + * Open the specified directory. + * @param new_dir The opened directory descriptor. + * @param dirname The full path to the directory (use / on all systems) + * @param cont The pool to use. + */ +APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new_dir, + const char *dirname, + apr_pool_t *cont); + +/** + * close the specified directory. + * @param thedir the directory descriptor to close. + */ +APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir); + +/** + * Read the next entry from the specified directory. + * @param finfo the file info structure and filled in by apr_dir_read + * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ + values + * @param thedir the directory descriptor returned from apr_dir_open + * @remark No ordering is guaranteed for the entries read. + * + * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may + * not be filled in, and you need to check the @c finfo->valid bitmask + * to verify that what you're looking for is there. + */ +APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, + apr_dir_t *thedir); + +/** + * Rewind the directory to the first entry. + * @param thedir the directory descriptor to rewind. + */ +APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir); +/** @} */ + +/** + * @defgroup apr_filepath Filepath Manipulation Functions + * @{ + */ + +/** Cause apr_filepath_merge to fail if addpath is above rootpath */ +#define APR_FILEPATH_NOTABOVEROOT 0x01 + +/** internal: Only meaningful with APR_FILEPATH_NOTABOVEROOT */ +#define APR_FILEPATH_SECUREROOTTEST 0x02 + +/** Cause apr_filepath_merge to fail if addpath is above rootpath, + * even given a rootpath /foo/bar and an addpath ../bar/bash + */ +#define APR_FILEPATH_SECUREROOT 0x03 + +/** Fail apr_filepath_merge if the merged path is relative */ +#define APR_FILEPATH_NOTRELATIVE 0x04 + +/** Fail apr_filepath_merge if the merged path is absolute */ +#define APR_FILEPATH_NOTABSOLUTE 0x08 + +/** Return the file system's native path format (e.g. path delimiters + * of ':' on MacOS9, '\' on Win32, etc.) */ +#define APR_FILEPATH_NATIVE 0x10 + +/** Resolve the true case of existing directories and file elements + * of addpath, (resolving any aliases on Win32) and append a proper + * trailing slash if a directory + */ +#define APR_FILEPATH_TRUENAME 0x20 + +/** + * Extract the rootpath from the given filepath + * @param rootpath the root file path returned with APR_SUCCESS or APR_EINCOMPLETE + * @param filepath the pathname to parse for its root component + * @param flags the desired rules to apply, from + *
    + *      APR_FILEPATH_NATIVE    Use native path seperators (e.g. '\' on Win32)
    + *      APR_FILEPATH_TRUENAME  Tests that the root exists, and makes it proper
    + * 
    + * @param p the pool to allocate the new path string from + * @remark on return, filepath points to the first non-root character in the + * given filepath. In the simplest example, given a filepath of "/foo", + * returns the rootpath of "/" and filepath points at "foo". This is far + * more complex on other platforms, which will canonicalize the root form + * to a consistant format, given the APR_FILEPATH_TRUENAME flag, and also + * test for the validity of that root (e.g., that a drive d:/ or network + * share //machine/foovol/). + * The function returns APR_ERELATIVE if filepath isn't rooted (an + * error), APR_EINCOMPLETE if the root path is ambigious (but potentially + * legitimate, e.g. "/" on Windows is incomplete because it doesn't specify + * the drive letter), or APR_EBADPATH if the root is simply invalid. + * APR_SUCCESS is returned if filepath is an absolute path. + */ +APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, + const char **filepath, + apr_int32_t flags, + apr_pool_t *p); + +/** + * Merge additional file path onto the previously processed rootpath + * @param newpath the merged paths returned + * @param rootpath the root file path (NULL uses the current working path) + * @param addpath the path to add to the root path + * @param flags the desired APR_FILEPATH_ rules to apply when merging + * @param p the pool to allocate the new path string from + * @remark if the flag APR_FILEPATH_TRUENAME is given, and the addpath + * contains wildcard characters ('*', '?') on platforms that don't support + * such characters within filenames, the paths will be merged, but the + * result code will be APR_EPATHWILD, and all further segments will not + * reflect the true filenames including the wildcard and following segments. + */ +APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, + const char *rootpath, + const char *addpath, + apr_int32_t flags, + apr_pool_t *p); + +/** + * Split a search path into separate components + * @param pathelts the returned components of the search path + * @param liststr the search path (e.g., getenv("PATH")) + * @param p the pool to allocate the array and path components from + * @remark empty path componenta do not become part of @a pathelts. + * @remark the path separator in @a liststr is system specific; + * e.g., ':' on Unix, ';' on Windows, etc. + */ +APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts, + const char *liststr, + apr_pool_t *p); + +/** + * Merge a list of search path components into a single search path + * @param liststr the returned search path; may be NULL if @a pathelts is empty + * @param pathelts the components of the search path + * @param p the pool to allocate the search path from + * @remark emtpy strings in the source array are ignored. + * @remark the path separator in @a liststr is system specific; + * e.g., ':' on Unix, ';' on Windows, etc. + */ +APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr, + apr_array_header_t *pathelts, + apr_pool_t *p); + +/** + * Return the default file path (for relative file names) + * @param path the default path string returned + * @param flags optional flag APR_FILEPATH_NATIVE to retrieve the + * default file path in os-native format. + * @param p the pool to allocate the default path string from + */ +APR_DECLARE(apr_status_t) apr_filepath_get(char **path, apr_int32_t flags, + apr_pool_t *p); + +/** + * Set the default file path (for relative file names) + * @param path the default path returned + * @param p the pool to allocate any working storage + */ +APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p); + +/** The FilePath character encoding is unknown */ +#define APR_FILEPATH_ENCODING_UNKNOWN 0 + +/** The FilePath character encoding is locale-dependent */ +#define APR_FILEPATH_ENCODING_LOCALE 1 + +/** The FilePath character encoding is UTF-8 */ +#define APR_FILEPATH_ENCODING_UTF8 2 + +/** + * Determine the encoding used internally by the FilePath functions + * @param style points to a variable which receives the encoding style flag + * @param p the pool to allocate any working storage + * @remark Use @c apr_os_locale_encoding and/or @c apr_os_default_encoding + * to get the name of the path encoding if it's not UTF-8. + */ +APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p); +/** @} */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_FILE_INFO_H */ diff --git a/rubbos/app/apache2/include/apr_file_io.h b/rubbos/app/apache2/include/apr_file_io.h new file mode 100644 index 00000000..bfa7a1bf --- /dev/null +++ b/rubbos/app/apache2/include/apr_file_io.h @@ -0,0 +1,766 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_FILE_IO_H +#define APR_FILE_IO_H + +/** + * @file apr_file_io.h + * @brief APR File I/O Handling + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_time.h" +#include "apr_errno.h" +#include "apr_file_info.h" +#include "apr_inherit.h" + +#define APR_WANT_STDIO /**< for SEEK_* */ +#define APR_WANT_IOVEC /**< for apr_file_writev */ +#include "apr_want.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_file_io File I/O Handling Functions + * @ingroup APR + * @{ + */ + +/** + * @defgroup apr_file_open_flags File Open Flags/Routines + * @{ + */ + +/* Note to implementors: Values in the range 0x00100000--0x80000000 + are reserved for platform-specific values. */ + +#define APR_READ 0x00001 /**< Open the file for reading */ +#define APR_WRITE 0x00002 /**< Open the file for writing */ +#define APR_CREATE 0x00004 /**< Create the file if not there */ +#define APR_APPEND 0x00008 /**< Append to the end of the file */ +#define APR_TRUNCATE 0x00010 /**< Open the file and truncate to 0 length */ +#define APR_BINARY 0x00020 /**< Open the file in binary mode */ +#define APR_EXCL 0x00040 /**< Open should fail if APR_CREATE and file + exists. */ +#define APR_BUFFERED 0x00080 /**< Open the file for buffered I/O */ +#define APR_DELONCLOSE 0x00100 /**< Delete the file after close */ +#define APR_XTHREAD 0x00200 /**< Platform dependent tag to open the file + for use across multiple threads */ +#define APR_SHARELOCK 0x00400 /**< Platform dependent support for higher + level locked read/write access to support + writes across process/machines */ +#define APR_FILE_NOCLEANUP 0x00800 /**< Do not register a cleanup when the file + is opened */ +#define APR_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this file should + support apr_sendfile operation */ +#define APR_LARGEFILE 0x04000 /**< Platform dependent flag to enable large file + support; WARNING see below. */ + +/** @warning The APR_LARGEFILE flag only has effect on some platforms + * where sizeof(apr_off_t) == 4. Where implemented, it allows opening + * and writing to a file which exceeds the size which can be + * represented by apr_off_t (2 gigabytes). When a file's size does + * exceed 2Gb, apr_file_info_get() will fail with an error on the + * descriptor, likewise apr_stat()/apr_lstat() will fail on the + * filename. apr_dir_read() will fail with APR_INCOMPLETE on a + * directory entry for a large file depending on the particular + * APR_FINFO_* flags. Generally, it is not recommended to use this + * flag. */ + +/** @} */ + +/** + * @defgroup apr_file_seek_flags File Seek Flags + * @{ + */ + +/* flags for apr_file_seek */ +/** Set the file position */ +#define APR_SET SEEK_SET +/** Current */ +#define APR_CUR SEEK_CUR +/** Go to end of file */ +#define APR_END SEEK_END +/** @} */ + +/** + * @defgroup apr_file_attrs_set_flags File Attribute Flags + * @{ + */ + +/* flags for apr_file_attrs_set */ +#define APR_FILE_ATTR_READONLY 0x01 /**< File is read-only */ +#define APR_FILE_ATTR_EXECUTABLE 0x02 /**< File is executable */ +#define APR_FILE_ATTR_HIDDEN 0x04 /**< File is hidden */ +/** @} */ + +/** File attributes */ +typedef apr_uint32_t apr_fileattrs_t; + +/** should be same as whence type in lseek, POSIX defines this as int */ +typedef int apr_seek_where_t; + +/** + * Structure for referencing files. + */ +typedef struct apr_file_t apr_file_t; + +/* File lock types/flags */ +/** + * @defgroup apr_file_lock_types File Lock Types + * @{ + */ + +#define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process + or thread can hold a shared lock + at any given time. Essentially, + this is a "read lock", preventing + writers from establishing an + exclusive lock. */ +#define APR_FLOCK_EXCLUSIVE 2 /**< Exclusive lock. Only one process + may hold an exclusive lock at any + given time. This is analogous to + a "write lock". */ + +#define APR_FLOCK_TYPEMASK 0x000F /**< mask to extract lock type */ +#define APR_FLOCK_NONBLOCK 0x0010 /**< do not block while acquiring the + file lock */ +/** @} */ + +/** + * Open the specified file. + * @param newf The opened file descriptor. + * @param fname The full path to the file (using / on all systems) + * @param flag Or'ed value of: + *
    + *         APR_READ              open for reading
    + *         APR_WRITE             open for writing
    + *         APR_CREATE            create the file if not there
    + *         APR_APPEND            file ptr is set to end prior to all writes
    + *         APR_TRUNCATE          set length to zero if file exists
    + *         APR_BINARY            not a text file (This flag is ignored on 
    + *                               UNIX because it has no meaning)
    + *         APR_BUFFERED          buffer the data.  Default is non-buffered
    + *         APR_EXCL              return error if APR_CREATE and file exists
    + *         APR_DELONCLOSE        delete the file after closing.
    + *         APR_XTHREAD           Platform dependent tag to open the file
    + *                               for use across multiple threads
    + *         APR_SHARELOCK         Platform dependent support for higher
    + *                               level locked read/write access to support
    + *                               writes across process/machines
    + *         APR_FILE_NOCLEANUP    Do not register a cleanup with the pool 
    + *                               passed in on the cont argument (see below).
    + *                               The apr_os_file_t handle in apr_file_t will not
    + *                               be closed when the pool is destroyed.
    + *         APR_SENDFILE_ENABLED  Open with appropriate platform semantics
    + *                               for sendfile operations.  Advisory only,
    + *                               apr_sendfile does not check this flag.
    + * 
    + * @param perm Access permissions for file. + * @param pool The pool to use. + * @remark If perm is APR_OS_DEFAULT and the file is being created, appropriate + * default permissions will be used. *arg1 must point to a valid file_t, + * or NULL (in which case it will be allocated) + */ +APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **newf, const char *fname, + apr_int32_t flag, apr_fileperms_t perm, + apr_pool_t *pool); + +/** + * Close the specified file. + * @param file The file descriptor to close. + */ +APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file); + +/** + * delete the specified file. + * @param path The full path to the file (using / on all systems) + * @param cont The pool to use. + * @remark If the file is open, it won't be removed until all instances are closed. + */ +APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *cont); + +/** + * rename the specified file. + * @param from_path The full path to the original file (using / on all systems) + * @param to_path The full path to the new file (using / on all systems) + * @param pool The pool to use. + * @warning If a file exists at the new location, then it will be overwritten. + * Moving files or directories across devices may not be possible. + */ +APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, + const char *to_path, + apr_pool_t *pool); + +/** + * copy the specified file to another file. + * @param from_path The full path to the original file (using / on all systems) + * @param to_path The full path to the new file (using / on all systems) + * @param perms Access permissions for the new file if it is created. + * In place of the usual or'd combination of file permissions, the + * value APR_FILE_SOURCE_PERMS may be given, in which case the source + * file's permissions are copied. + * @param pool The pool to use. + * @remark The new file does not need to exist, it will be created if required. + * @warning If the new file already exists, its contents will be overwritten. + */ +APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path, + const char *to_path, + apr_fileperms_t perms, + apr_pool_t *pool); + +/** + * append the specified file to another file. + * @param from_path The full path to the source file (using / on all systems) + * @param to_path The full path to the destination file (using / on all systems) + * @param perms Access permissions for the destination file if it is created. + * In place of the usual or'd combination of file permissions, the + * value APR_FILE_SOURCE_PERMS may be given, in which case the source + * file's permissions are copied. + * @param pool The pool to use. + * @remark The new file does not need to exist, it will be created if required. + */ +APR_DECLARE(apr_status_t) apr_file_append(const char *from_path, + const char *to_path, + apr_fileperms_t perms, + apr_pool_t *pool); + +/** + * Are we at the end of the file + * @param fptr The apr file we are testing. + * @remark Returns APR_EOF if we are at the end of file, APR_SUCCESS otherwise. + */ +APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr); + +/** + * open standard error as an apr file pointer. + * @param thefile The apr file to use as stderr. + * @param cont The pool to allocate the file out of. + * + * @remark The only reason that the apr_file_open_std* functions exist + * is that you may not always have a stderr/out/in on Windows. This + * is generally a problem with newer versions of Windows and services. + * + * The other problem is that the C library functions generally work + * differently on Windows and Unix. So, by using apr_file_open_std* + * functions, you can get a handle to an APR struct that works with + * the APR functions which are supposed to work identically on all + * platforms. + */ +APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, + apr_pool_t *cont); + +/** + * open standard output as an apr file pointer. + * @param thefile The apr file to use as stdout. + * @param cont The pool to allocate the file out of. + * + * @remark The only reason that the apr_file_open_std* functions exist + * is that you may not always have a stderr/out/in on Windows. This + * is generally a problem with newer versions of Windows and services. + * + * The other problem is that the C library functions generally work + * differently on Windows and Unix. So, by using apr_file_open_std* + * functions, you can get a handle to an APR struct that works with + * the APR functions which are supposed to work identically on all + * platforms. + */ +APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, + apr_pool_t *cont); + +/** + * open standard input as an apr file pointer. + * @param thefile The apr file to use as stdin. + * @param cont The pool to allocate the file out of. + * + * @remark The only reason that the apr_file_open_std* functions exist + * is that you may not always have a stderr/out/in on Windows. This + * is generally a problem with newer versions of Windows and services. + * + * The other problem is that the C library functions generally work + * differently on Windows and Unix. So, by using apr_file_open_std* + * functions, you can get a handle to an APR struct that works with + * the APR functions which are supposed to work identically on all + * platforms. + */ +APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, + apr_pool_t *cont); + +/** + * Read data from the specified file. + * @param thefile The file descriptor to read from. + * @param buf The buffer to store the data to. + * @param nbytes On entry, the number of bytes to read; on exit, the number of bytes read. + * @remark apr_file_read will read up to the specified number of bytes, but + * never more. If there isn't enough data to fill that number of + * bytes, all of the available data is read. The third argument is + * modified to reflect the number of bytes read. If a char was put + * back into the stream via ungetc, it will be the first character + * returned. + * + * It is not possible for both bytes to be read and an APR_EOF or other + * error to be returned. + * + * APR_EINTR is never returned. + */ +APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, + apr_size_t *nbytes); + +/** + * Write data to the specified file. + * @param thefile The file descriptor to write to. + * @param buf The buffer which contains the data. + * @param nbytes On entry, the number of bytes to write; on exit, the number + * of bytes written. + * @remark apr_file_write will write up to the specified number of bytes, but never + * more. If the OS cannot write that many bytes, it will write as many + * as it can. The third argument is modified to reflect the * number + * of bytes written. + * + * It is possible for both bytes to be written and an error to be returned. + * + * APR_EINTR is never returned. + */ +APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, + apr_size_t *nbytes); + +/** + * Write data from iovec array to the specified file. + * @param thefile The file descriptor to write to. + * @param vec The array from which to get the data to write to the file. + * @param nvec The number of elements in the struct iovec array. This must + * be smaller than APR_MAX_IOVEC_SIZE. If it isn't, the function + * will fail with APR_EINVAL. + * @param nbytes The number of bytes written. + * @remark It is possible for both bytes to be written and an error to be returned. + * APR_EINTR is never returned. + * + * apr_file_writev is available even if the underlying operating system + * + * doesn't provide writev(). + */ +APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, + const struct iovec *vec, + apr_size_t nvec, apr_size_t *nbytes); + +/** + * Read data from the specified file, ensuring that the buffer is filled + * before returning. + * @param thefile The file descriptor to read from. + * @param buf The buffer to store the data to. + * @param nbytes The number of bytes to read. + * @param bytes_read If non-NULL, this will contain the number of bytes read. + * @remark apr_file_read will read up to the specified number of bytes, but never + * more. If there isn't enough data to fill that number of bytes, + * then the process/thread will block until it is available or EOF + * is reached. If a char was put back into the stream via ungetc, + * it will be the first character returned. + * + * It is possible for both bytes to be read and an error to be + * returned. And if *bytes_read is less than nbytes, an + * accompanying error is _always_ returned. + * + * APR_EINTR is never returned. + */ +APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, + apr_size_t nbytes, + apr_size_t *bytes_read); + +/** + * Write data to the specified file, ensuring that all of the data is + * written before returning. + * @param thefile The file descriptor to write to. + * @param buf The buffer which contains the data. + * @param nbytes The number of bytes to write. + * @param bytes_written If non-NULL, this will contain the number of bytes written. + * @remark apr_file_write will write up to the specified number of bytes, but never + * more. If the OS cannot write that many bytes, the process/thread + * will block until they can be written. Exceptional error such as + * "out of space" or "pipe closed" will terminate with an error. + * + * It is possible for both bytes to be written and an error to be + * returned. And if *bytes_written is less than nbytes, an + * accompanying error is _always_ returned. + * + * APR_EINTR is never returned. + */ +APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, const void *buf, + apr_size_t nbytes, + apr_size_t *bytes_written); + +/** + * put a character into the specified file. + * @param ch The character to write. + * @param thefile The file descriptor to write to + */ +APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile); + +/** + * get a character from the specified file. + * @param ch The character to read into + * @param thefile The file descriptor to read from + */ +APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile); + +/** + * put a character back onto a specified stream. + * @param ch The character to write. + * @param thefile The file descriptor to write to + */ +APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile); + +/** + * Get a string from a specified file. + * @param str The buffer to store the string in. + * @param len The length of the string + * @param thefile The file descriptor to read from + * @remark The buffer will be '\0'-terminated if any characters are stored. + */ +APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile); + +/** + * Put the string into a specified file. + * @param str The string to write. + * @param thefile The file descriptor to write to + */ +APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile); + +/** + * Flush the file's buffer. + * @param thefile The file descriptor to flush + */ +APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile); + +/** + * duplicate the specified file descriptor. + * @param new_file The structure to duplicate into. + * @param old_file The file to duplicate. + * @param p The pool to use for the new file. + * @remark *new_file must point to a valid apr_file_t, or point to NULL + */ +APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, + apr_file_t *old_file, + apr_pool_t *p); + +/** + * duplicate the specified file descriptor and close the original + * @param new_file The old file that is to be closed and reused + * @param old_file The file to duplicate + * @param p The pool to use for the new file + * + * @remark new_file MUST point at a valid apr_file_t. It cannot be NULL + */ +APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, + apr_file_t *old_file, + apr_pool_t *p); + +/** + * move the specified file descriptor to a new pool + * @param new_file Pointer in which to return the new apr_file_t + * @param old_file The file to move + * @param p The pool to which the descriptor is to be moved + * @remark Unlike apr_file_dup2(), this function doesn't do an + * OS dup() operation on the underlying descriptor; it just + * moves the descriptor's apr_file_t wrapper to a new pool. + * @remark The new pool need not be an ancestor of old_file's pool. + * @remark After calling this function, old_file may not be used + */ +APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, + apr_file_t *old_file, + apr_pool_t *p); + +/** + * Move the read/write file offset to a specified byte within a file. + * @param thefile The file descriptor + * @param where How to move the pointer, one of: + *
    + *            APR_SET  --  set the offset to offset
    + *            APR_CUR  --  add the offset to the current position 
    + *            APR_END  --  add the offset to the current file size 
    + * 
    + * @param offset The offset to move the pointer to. + * @remark The third argument is modified to be the offset the pointer + was actually moved to. + */ +APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, + apr_seek_where_t where, + apr_off_t *offset); + +/** + * Create an anonymous pipe. + * @param in The file descriptor to use as input to the pipe. + * @param out The file descriptor to use as output from the pipe. + * @param cont The pool to operate on. + */ +APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, + apr_pool_t *cont); + +/** + * Create a named pipe. + * @param filename The filename of the named pipe + * @param perm The permissions for the newly created pipe. + * @param cont The pool to operate on. + */ +APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, + apr_fileperms_t perm, + apr_pool_t *cont); + +/** + * Get the timeout value for a pipe or manipulate the blocking state. + * @param thepipe The pipe we are getting a timeout for. + * @param timeout The current timeout value in microseconds. + */ +APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, + apr_interval_time_t *timeout); + +/** + * Set the timeout value for a pipe or manipulate the blocking state. + * @param thepipe The pipe we are setting a timeout on. + * @param timeout The timeout value in microseconds. Values < 0 mean wait + * forever, 0 means do not wait at all. + */ +APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, + apr_interval_time_t timeout); + +/** file (un)locking functions. */ + +/** + * Establish a lock on the specified, open file. The lock may be advisory + * or mandatory, at the discretion of the platform. The lock applies to + * the file as a whole, rather than a specific range. Locks are established + * on a per-thread/process basis; a second lock by the same thread will not + * block. + * @param thefile The file to lock. + * @param type The type of lock to establish on the file. + */ +APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type); + +/** + * Remove any outstanding locks on the file. + * @param thefile The file to unlock. + */ +APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile); + +/**accessor and general file_io functions. */ + +/** + * return the file name of the current file. + * @param new_path The path of the file. + * @param thefile The currently open file. + */ +APR_DECLARE(apr_status_t) apr_file_name_get(const char **new_path, + apr_file_t *thefile); + +/** + * Return the data associated with the current file. + * @param data The user data associated with the file. + * @param key The key to use for retreiving data associated with this file. + * @param file The currently open file. + */ +APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, + apr_file_t *file); + +/** + * Set the data associated with the current file. + * @param file The currently open file. + * @param data The user data to associate with the file. + * @param key The key to use for assocaiteing data with the file. + * @param cleanup The cleanup routine to use when the file is destroyed. + */ +APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data, + const char *key, + apr_status_t (*cleanup)(void *)); + +/** + * Write a string to a file using a printf format. + * @param fptr The file to write to. + * @param format The format string + * @param ... The values to substitute in the format string + * @return The number of bytes written + */ +APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, + const char *format, ...) + __attribute__((format(printf,2,3))); + +/** + * set the specified file's permission bits. + * @param fname The file (name) to apply the permissions to. + * @param perms The permission bits to apply to the file. + * @warning Some platforms may not be able to apply all of the available + * permission bits; APR_INCOMPLETE will be returned if some permissions + * are specified which could not be set. + * + * Platforms which do not implement this feature will return APR_ENOTIMPL. + */ +APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, + apr_fileperms_t perms); + +/** + * Set attributes of the specified file. + * @param fname The full path to the file (using / on all systems) + * @param attributes Or'd combination of + *
    + *            APR_FILE_ATTR_READONLY   - make the file readonly
    + *            APR_FILE_ATTR_EXECUTABLE - make the file executable
    + *            APR_FILE_ATTR_HIDDEN     - make the file hidden
    + * 
    + * @param attr_mask Mask of valid bits in attributes. + * @param cont the pool to use. + * @remark This function should be used in preference to explict manipulation + * of the file permissions, because the operations to provide these + * attributes are platform specific and may involve more than simply + * setting permission bits. + * @warning Platforms which do not implement this feature will return + * APR_ENOTIMPL. + */ +APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, + apr_fileattrs_t attributes, + apr_fileattrs_t attr_mask, + apr_pool_t *cont); + +/** + * Set the mtime of the specified file. + * @param fname The full path to the file (using / on all systems) + * @param mtime The mtime to apply to the file. + * @param pool The pool to use. + * @warning Platforms which do not implement this feature will return + * APR_ENOTIMPL. + */ +APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, + apr_time_t mtime, + apr_pool_t *pool); + +/** + * Create a new directory on the file system. + * @param path the path for the directory to be created. (use / on all systems) + * @param perm Permissions for the new direcoty. + * @param cont the pool to use. + */ +APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, + apr_pool_t *cont); + +/** Creates a new directory on the file system, but behaves like + * 'mkdir -p'. Creates intermediate directories as required. No error + * will be reported if PATH already exists. + * @param path the path for the directory to be created. (use / on all systems) + * @param perm Permissions for the new direcoty. + * @param pool the pool to use. + */ +APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path, + apr_fileperms_t perm, + apr_pool_t *pool); + +/** + * Remove directory from the file system. + * @param path the path for the directory to be removed. (use / on all systems) + * @param cont the pool to use. + */ +APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *cont); + +/** + * get the specified file's stats. + * @param finfo Where to store the information about the file. + * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values + * @param thefile The file to get information about. + */ +APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, + apr_int32_t wanted, + apr_file_t *thefile); + + +/** + * Truncate the file's length to the specified offset + * @param fp The file to truncate + * @param offset The offset to truncate to. + * @remark The read/write file offset is repositioned to offset. + */ +APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset); + +/** + * Retrieve the flags that were passed into apr_file_open() + * when the file was opened. + * @return apr_int32_t the flags + */ +APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f); + +/** + * Get the pool used by the file. + */ +APR_POOL_DECLARE_ACCESSOR(file); + +/** + * Set a file to be inherited by child processes. + * + */ +APR_DECLARE_INHERIT_SET(file); + +/** @deprecated @see apr_file_inherit_set */ +APR_DECLARE(void) apr_file_set_inherit(apr_file_t *file); + +/** + * Unset a file from being inherited by child processes. + */ +APR_DECLARE_INHERIT_UNSET(file); + +/** @deprecated @see apr_file_inherit_unset */ +APR_DECLARE(void) apr_file_unset_inherit(apr_file_t *file); + +/** + * Open a temporary file + * @param fp The apr file to use as a temporary file. + * @param templ The template to use when creating a temp file. + * @param flags The flags to open the file with. If this is zero, + * the file is opened with + * APR_CREATE | APR_READ | APR_WRITE | APR_EXCL | APR_DELONCLOSE + * @param p The pool to allocate the file out of. + * @remark + * This function generates a unique temporary file name from template. + * The last six characters of template must be XXXXXX and these are replaced + * with a string that makes the filename unique. Since it will be modified, + * template must not be a string constant, but should be declared as a character + * array. + * + */ +APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *templ, + apr_int32_t flags, apr_pool_t *p); + + +/** + * Find an existing directory suitable as a temporary storage location. + * @param temp_dir The temp directory. + * @param p The pool to use for any necessary allocations. + * @remark + * This function uses an algorithm to search for a directory that an + * an application can use for temporary storage. Once such a + * directory is found, that location is cached by the library. Thus, + * callers only pay the cost of this algorithm once if that one time + * is successful. + * + */ +APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, + apr_pool_t *p); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_FILE_IO_H */ diff --git a/rubbos/app/apache2/include/apr_fnmatch.h b/rubbos/app/apache2/include/apr_fnmatch.h new file mode 100644 index 00000000..8be40fc8 --- /dev/null +++ b/rubbos/app/apache2/include/apr_fnmatch.h @@ -0,0 +1,105 @@ +/* + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)fnmatch.h 8.1 (Berkeley) 6/2/93 + */ + +/* This file has been modified by the Apache Software Foundation. */ +#ifndef _APR_FNMATCH_H_ +#define _APR_FNMATCH_H_ + +/** + * @file apr_fnmatch.h + * @brief APR FNMatch Functions + */ + +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup apr_fnmatch Filename Matching Functions + * @ingroup APR + * @{ + */ + +#define APR_FNM_NOMATCH 1 /**< Match failed. */ + +#define APR_FNM_NOESCAPE 0x01 /**< Disable backslash escaping. */ +#define APR_FNM_PATHNAME 0x02 /**< Slash must be matched by slash. */ +#define APR_FNM_PERIOD 0x04 /**< Period must be matched by period. */ +#define APR_FNM_CASE_BLIND 0x08 /**< Compare characters case-insensitively. + * @remark This flag is an Apache addition + */ + +#define FNM_NOMATCH APR_FNM_NOMATCH /**< @deprecated @see APR_FNM_NOMATCH */ +#define FNM_NOESCAPE APR_FNM_NOESCAPE /**< @deprecated @see APR_FNM_NOESCAPE */ +#define FNM_PATHNAME APR_FNM_PATHNAME /**< @deprecated @see APR_FNM_PATHNAME */ +#define FNM_PERIOD APR_FNM_PERIOD /**< @deprecated @see APR_FNM_PERIOD */ +#define FNM_CASE_BLIND APR_FNM_CASE_BLIND /**< @deprecated @see APR_FNM_CASE_BLIND */ + +/** + * Try to match the string to the given pattern, return APR_SUCCESS if + * match, else return APR_FNM_NOMATCH. + * @param pattern The pattern to match to + * @param strings The string we are trying to match + * @param flags flags to use in the match. Bitwise OR of: + *
    + *              APR_FNM_NOESCAPE       Disable backslash escaping
    + *              APR_FNM_PATHNAME       Slash must be matched by slash
    + *              APR_FNM_PERIOD         Period must be matched by period
    + *              APR_FNM_CASE_BLIND     Compare characters case-insensitively.
    + * 
    + */ + +APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, + const char *strings, int flags); + +/** + * Determine if the given pattern is a regular expression. + * @param pattern The pattern to search for glob characters. + * @return non-zero if pattern has any glob characters in it + */ +APR_DECLARE(int) apr_fnmatch_test(const char *pattern); + +/** @deprecated @see apr_fnmatch_test */ +APR_DECLARE(int) apr_is_fnmatch(const char *pattern); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_APR_FNMATCH_H_ */ diff --git a/rubbos/app/apache2/include/apr_general.h b/rubbos/app/apache2/include/apr_general.h new file mode 100644 index 00000000..10e150b9 --- /dev/null +++ b/rubbos/app/apache2/include/apr_general.h @@ -0,0 +1,249 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_GENERAL_H +#define APR_GENERAL_H + +/** + * @file apr_general.h + * This is collection of oddballs that didn't fit anywhere else, + * and might move to more appropriate headers with the release + * of APR 1.0. + * @brief APR Miscellaneous library routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#if APR_HAVE_SIGNAL_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_general Miscellaneous library routines + * @ingroup APR + * This is collection of oddballs that didn't fit anywhere else, + * and might move to more appropriate headers with the release + * of APR 1.0. + * @{ + */ + +/** FALSE */ +#ifndef FALSE +#define FALSE 0 +#endif +/** TRUE */ +#ifndef TRUE +#define TRUE (!FALSE) +#endif + +/** a space */ +#define APR_ASCII_BLANK '\040' +/** a carrige return */ +#define APR_ASCII_CR '\015' +/** a line feed */ +#define APR_ASCII_LF '\012' +/** a tab */ +#define APR_ASCII_TAB '\011' + +/** signal numbers typedef */ +typedef int apr_signum_t; + +/** + * Finding offsets of elements within structures. + * Taken from the X code... they've sweated portability of this stuff + * so we don't have to. Sigh... + * @param p_type pointer type name + * @param field data field within the structure pointed to + * @return offset + */ + +#if defined(CRAY) || (defined(__arm) && !defined(LINUX)) +#ifdef __STDC__ +#define APR_OFFSET(p_type,field) _Offsetof(p_type,field) +#else +#ifdef CRAY2 +#define APR_OFFSET(p_type,field) \ + (sizeof(int)*((unsigned int)&(((p_type)NULL)->field))) + +#else /* !CRAY2 */ + +#define APR_OFFSET(p_type,field) ((unsigned int)&(((p_type)NULL)->field)) + +#endif /* !CRAY2 */ +#endif /* __STDC__ */ +#else /* ! (CRAY || __arm) */ + +#define APR_OFFSET(p_type,field) \ + ((long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL))) + +#endif /* !CRAY */ + +/** + * Finding offsets of elements within structures. + * @param s_type structure type name + * @param field data field within the structure + * @return offset + */ +#if defined(offsetof) && !defined(__cplusplus) +#define APR_OFFSETOF(s_type,field) offsetof(s_type,field) +#else +#define APR_OFFSETOF(s_type,field) APR_OFFSET(s_type*,field) +#endif + +/** @deprecated @see APR_OFFSET */ +#define APR_XtOffset APR_OFFSET + +/** @deprecated @see APR_OFFSETOF */ +#define APR_XtOffsetOf APR_OFFSETOF + +#ifndef DOXYGEN + +/* A couple of prototypes for functions in case some platform doesn't + * have it + */ +#if (!APR_HAVE_STRCASECMP) && (APR_HAVE_STRICMP) +#define strcasecmp(s1, s2) stricmp(s1, s2) +#elif (!APR_HAVE_STRCASECMP) +int strcasecmp(const char *a, const char *b); +#endif + +#if (!APR_HAVE_STRNCASECMP) && (APR_HAVE_STRNICMP) +#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n) +#elif (!APR_HAVE_STRNCASECMP) +int strncasecmp(const char *a, const char *b, size_t n); +#endif + +#endif + +/** + * Alignment macros + */ + +/* APR_ALIGN() is only to be used to align on a power of 2 boundary */ +#define APR_ALIGN(size, boundary) \ + (((size) + ((boundary) - 1)) & ~((boundary) - 1)) + +/** Default alignment */ +#define APR_ALIGN_DEFAULT(size) APR_ALIGN(size, 8) + + +/** + * String and memory functions + */ + +/** Properly quote a value as a string in the C preprocessor */ +#define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n) +/** Helper macro for APR_STRINGIFY */ +#define APR_STRINGIFY_HELPER(n) #n + +#if (!APR_HAVE_MEMMOVE) +#define memmove(a,b,c) bcopy(b,a,c) +#endif + +#if (!APR_HAVE_MEMCHR) +void *memchr(const void *s, int c, size_t n); +#endif + +/** @} */ + +/** + * @defgroup apr_library Library initialization and termination + * @{ + */ + +/** + * Setup any APR internal data structures. This MUST be the first function + * called for any APR library. + * @remark See apr_app_initialize if this is an application, rather than + * a library consumer of apr. + */ +APR_DECLARE(apr_status_t) apr_initialize(void); + +/** + * Set up an application with normalized argc, argv (and optionally env) in + * order to deal with platform-specific oddities, such as Win32 services, + * code pages and signals. This must be the first function called for any + * APR program. + * @param argc Pointer to the argc that may be corrected + * @param argv Pointer to the argv that may be corrected + * @param env Pointer to the env that may be corrected, may be NULL + * @remark See apr_initialize if this is a library consumer of apr. + * Otherwise, this call is identical to apr_initialize, and must be closed + * with a call to apr_terminate at the end of program execution. + */ +APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, + char const * const * *argv, + char const * const * *env); + +/** + * Tear down any APR internal data structures which aren't torn down + * automatically. + * @remark An APR program must call this function at termination once it + * has stopped using APR services. The APR developers suggest using + * atexit to ensure this is called. When using APR from a language + * other than C that has problems with the calling convention, use + * apr_terminate2() instead. + */ +APR_DECLARE_NONSTD(void) apr_terminate(void); + +/** + * Tear down any APR internal data structures which aren't torn down + * automatically, same as apr_terminate + * @remark An APR program must call either the apr_terminate or apr_terminate2 + * function once it it has finished using APR services. The APR + * developers suggest using atexit(apr_terminate) to ensure this is done. + * apr_terminate2 exists to allow non-c language apps to tear down apr, + * while apr_terminate is recommended from c language applications. + */ +APR_DECLARE(void) apr_terminate2(void); + +/** @} */ + +/** + * @defgroup apr_random Random Functions + * @{ + */ + +#if APR_HAS_RANDOM || defined(DOXYGEN) + +/* TODO: I'm not sure this is the best place to put this prototype...*/ +/** + * Generate random bytes. + * @param buf Buffer to fill with random bytes + * @param length Length of buffer in bytes (becomes apr_size_t in APR 1.0) + */ +#ifdef APR_ENABLE_FOR_1_0 +APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, + apr_size_t length); +#else +APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, + int length); +#endif + +#endif +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_GENERAL_H */ diff --git a/rubbos/app/apache2/include/apr_getopt.h b/rubbos/app/apache2/include/apr_getopt.h new file mode 100644 index 00000000..131aa4b3 --- /dev/null +++ b/rubbos/app/apache2/include/apr_getopt.h @@ -0,0 +1,158 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_GETOPT_H +#define APR_GETOPT_H + +/** + * @file apr_getopt.h + * @brief APR Command Arguments (getopt) + */ + +#include "apr_pools.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_getopt Command Argument Parsing + * @ingroup APR + * @{ + */ + +/** + * defintion of a error function + */ +typedef void (apr_getopt_err_fn_t)(void *arg, const char *err, ...); + +/** @see apr_getopt_t */ +typedef struct apr_getopt_t apr_getopt_t; + +/** + * Structure to store command line argument information. + */ +struct apr_getopt_t { + /** context for processing */ + apr_pool_t *cont; + /** function to print error message (NULL == no messages) */ + apr_getopt_err_fn_t *errfn; + /** user defined first arg to pass to error message */ + void *errarg; + /** index into parent argv vector */ + int ind; + /** character checked for validity */ + int opt; + /** reset getopt */ + int reset; + /** count of arguments */ + int argc; + /** array of pointers to arguments */ + const char **argv; + /** argument associated with option */ + char const* place; + /** set to nonzero to support interleaving options with regular args */ + int interleave; + /** start of non-option arguments skipped for interleaving */ + int skip_start; + /** end of non-option arguments skipped for interleaving */ + int skip_end; +}; + +/** @see apr_getopt_option_t */ +typedef struct apr_getopt_option_t apr_getopt_option_t; + +/** + * Structure used to describe options that getopt should search for. + */ +struct apr_getopt_option_t { + /** long option name, or NULL if option has no long name */ + const char *name; + /** option letter, or a value greater than 255 if option has no letter */ + int optch; + /** nonzero if option takes an argument */ + int has_arg; + /** a description of the option */ + const char *description; +}; + +/** + * Initialize the arguments for parsing by apr_getopt(). + * @param os The options structure created for apr_getopt() + * @param cont The pool to operate on + * @param argc The number of arguments to parse + * @param argv The array of arguments to parse + * @remark Arguments 2 and 3 are most commonly argc and argv from main(argc, argv) + * The errfn is initialized to fprintf(stderr... but may be overridden. + */ +APR_DECLARE(apr_status_t) apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont, + int argc, const char * const *argv); + +/** + * Parse the options initialized by apr_getopt_init(). + * @param os The apr_opt_t structure returned by apr_getopt_init() + * @param opts A string of characters that are acceptable options to the + * program. Characters followed by ":" are required to have an + * option associated + * @param option_ch The next option character parsed + * @param option_arg The argument following the option character: + * @return There are four potential status values on exit. They are: + *
    + *             APR_EOF      --  No more options to parse
    + *             APR_BADCH    --  Found a bad option character
    + *             APR_BADARG   --  No argument followed the option flag
    + *             APR_SUCCESS  --  The next option was found.
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_getopt(apr_getopt_t *os, const char *opts, + char *option_ch, const char **option_arg); + +/** + * Parse the options initialized by apr_getopt_init(), accepting long + * options beginning with "--" in addition to single-character + * options beginning with "-". + * @param os The apr_getopt_t structure created by apr_getopt_init() + * @param opts A pointer to a list of apr_getopt_option_t structures, which + * can be initialized with { "name", optch, has_args }. has_args + * is nonzero if the option requires an argument. A structure + * with an optch value of 0 terminates the list. + * @param option_ch Receives the value of "optch" from the apr_getopt_option_t + * structure corresponding to the next option matched. + * @param option_arg Receives the argument following the option, if any. + * @return There are four potential status values on exit. They are: + *
    + *             APR_EOF      --  No more options to parse
    + *             APR_BADCH    --  Found a bad option character
    + *             APR_BADARG   --  No argument followed the option flag
    + *             APR_SUCCESS  --  The next option was found.
    + * 
    + * When APR_SUCCESS is returned, os->ind gives the index of the first + * non-option argument. On error, a message will be printed to stdout unless + * os->err is set to 0. If os->interleave is set to nonzero, options can come + * after arguments, and os->argv will be permuted to leave non-option arguments + * at the end (the original argv is unaffected). + */ +APR_DECLARE(apr_status_t) apr_getopt_long(apr_getopt_t *os, + const apr_getopt_option_t *opts, + int *option_ch, + const char **option_arg); +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_GETOPT_H */ diff --git a/rubbos/app/apache2/include/apr_global_mutex.h b/rubbos/app/apache2/include/apr_global_mutex.h new file mode 100644 index 00000000..9316001c --- /dev/null +++ b/rubbos/app/apache2/include/apr_global_mutex.h @@ -0,0 +1,153 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_GLOBAL_MUTEX_H +#define APR_GLOBAL_MUTEX_H + +/** + * @file apr_global_mutex.h + * @brief APR Global Locking Routines + */ + +#include "apr.h" +#include "apr_proc_mutex.h" /* only for apr_lockmech_e */ +#include "apr_pools.h" +#include "apr_errno.h" +#if APR_PROC_MUTEX_IS_GLOBAL +#include "apr_proc_mutex.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup APR_GlobalMutex Global Locking Routines + * @ingroup APR + * @{ + */ + +#if !APR_PROC_MUTEX_IS_GLOBAL || defined(DOXYGEN) + +/** Opaque global mutex structure. */ +typedef struct apr_global_mutex_t apr_global_mutex_t; + +/* Function definitions */ + +/** + * Create and initialize a mutex that can be used to synchronize both + * processes and threads. Note: There is considerable overhead in using + * this API if only cross-process or cross-thread mutual exclusion is + * required. See apr_proc_mutex.h and apr_thread_mutex.h for more + * specialized lock routines. + * @param mutex the memory address where the newly created mutex will be + * stored. + * @param fname A file name to use if the lock mechanism requires one. This + * argument should always be provided. The lock code itself will + * determine if it should be used. + * @param mech The mechanism to use for the interprocess lock, if any; one of + *
    + *            APR_LOCK_FCNTL
    + *            APR_LOCK_FLOCK
    + *            APR_LOCK_SYSVSEM
    + *            APR_LOCK_POSIXSEM
    + *            APR_LOCK_PROC_PTHREAD
    + *            APR_LOCK_DEFAULT     pick the default mechanism for the platform
    + * 
    + * @param pool the pool from which to allocate the mutex. + * @warning Check APR_HAS_foo_SERIALIZE defines to see if the platform supports + * APR_LOCK_foo. Only APR_LOCK_DEFAULT is portable. + */ +APR_DECLARE(apr_status_t) apr_global_mutex_create(apr_global_mutex_t **mutex, + const char *fname, + apr_lockmech_e mech, + apr_pool_t *pool); + +/** + * Re-open a mutex in a child process. + * @param mutex The newly re-opened mutex structure. + * @param fname A file name to use if the mutex mechanism requires one. This + * argument should always be provided. The mutex code itself will + * determine if it should be used. This filename should be the + * same one that was passed to apr_global_mutex_create(). + * @param pool The pool to operate on. + * @remark This function must be called to maintain portability, even + * if the underlying lock mechanism does not require it. + */ +APR_DECLARE(apr_status_t) apr_global_mutex_child_init( + apr_global_mutex_t **mutex, + const char *fname, + apr_pool_t *pool); + +/** + * Acquire the lock for the given mutex. If the mutex is already locked, + * the current thread will be put to sleep until the lock becomes available. + * @param mutex the mutex on which to acquire the lock. + */ +APR_DECLARE(apr_status_t) apr_global_mutex_lock(apr_global_mutex_t *mutex); + +/** + * Attempt to acquire the lock for the given mutex. If the mutex has already + * been acquired, the call returns immediately with APR_EBUSY. Note: it + * is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine + * if the return value was APR_EBUSY, for portability reasons. + * @param mutex the mutex on which to attempt the lock acquiring. + */ +APR_DECLARE(apr_status_t) apr_global_mutex_trylock(apr_global_mutex_t *mutex); + +/** + * Release the lock for the given mutex. + * @param mutex the mutex from which to release the lock. + */ +APR_DECLARE(apr_status_t) apr_global_mutex_unlock(apr_global_mutex_t *mutex); + +/** + * Destroy the mutex and free the memory associated with the lock. + * @param mutex the mutex to destroy. + */ +APR_DECLARE(apr_status_t) apr_global_mutex_destroy(apr_global_mutex_t *mutex); + +/** + * Get the pool used by this global_mutex. + * @return apr_pool_t the pool + */ +APR_POOL_DECLARE_ACCESSOR(global_mutex); + +#else /* APR_PROC_MUTEX_IS_GLOBAL */ + +/* Some platforms [e.g. Win32] have cross process locks that are truly + * global locks, since there isn't the concept of cross-process locks. + * Define these platforms in terms of an apr_proc_mutex_t. + */ + +#define apr_global_mutex_t apr_proc_mutex_t +#define apr_global_mutex_create apr_proc_mutex_create +#define apr_global_mutex_child_init apr_proc_mutex_child_init +#define apr_global_mutex_lock apr_proc_mutex_lock +#define apr_global_mutex_trylock apr_proc_mutex_trylock +#define apr_global_mutex_unlock apr_proc_mutex_unlock +#define apr_global_mutex_destroy apr_proc_mutex_destroy +#define apr_global_mutex_pool_get apr_proc_mutex_pool_get + +#endif + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ndef APR_GLOBAL_MUTEX_H */ diff --git a/rubbos/app/apache2/include/apr_hash.h b/rubbos/app/apache2/include/apr_hash.h new file mode 100644 index 00000000..87795c4a --- /dev/null +++ b/rubbos/app/apache2/include/apr_hash.h @@ -0,0 +1,201 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_HASH_H +#define APR_HASH_H + +/** + * @file apr_hash.h + * @brief APR Hash Tables + */ + +#include "apr_pools.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup apr_hash Hash Tables + * @ingroup APR + * @{ + */ + +/** + * When passing a key to apr_hash_set or apr_hash_get, this value can be + * passed to indicate a string-valued key, and have apr_hash compute the + * length automatically. + * + * @remark apr_hash will use strlen(key) for the length. The null-terminator + * is not included in the hash value (why throw a constant in?). + * Since the hash table merely references the provided key (rather + * than copying it), apr_hash_this() will return the null-term'd key. + */ +#define APR_HASH_KEY_STRING (-1) + +/** + * Abstract type for hash tables. + */ +typedef struct apr_hash_t apr_hash_t; + +/** + * Abstract type for scanning hash tables. + */ +typedef struct apr_hash_index_t apr_hash_index_t; + +/** + * Create a hash table. + * @param pool The pool to allocate the hash table out of + * @return The hash table just created + */ +APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool); + +/** + * Make a copy of a hash table + * @param pool The pool from which to allocate the new hash table + * @param h The hash table to clone + * @return The hash table just created + * @remark Makes a shallow copy + */ +APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, + const apr_hash_t *h); + +/** + * Associate a value with a key in a hash table. + * @param ht The hash table + * @param key Pointer to the key + * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length. + * @param val Value to associate with the key + * @remark If the value is NULL the hash entry is deleted. + */ +APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, const void *key, + apr_ssize_t klen, const void *val); + +/** + * Look up the value associated with a key in a hash table. + * @param ht The hash table + * @param key Pointer to the key + * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length. + * @return Returns NULL if the key is not present. + */ +APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, const void *key, + apr_ssize_t klen); + +/** + * Start iterating over the entries in a hash table. + * @param p The pool to allocate the apr_hash_index_t iterator. If this + * pool is NULL, then an internal, non-thread-safe iterator is used. + * @param ht The hash table + * @remark There is no restriction on adding or deleting hash entries during + * an iteration (although the results may be unpredictable unless all you do + * is delete the current entry) and multiple iterations can be in + * progress at the same time. + + * @example + */ +/** + *
    + * 
    + * int sum_values(apr_pool_t *p, apr_hash_t *ht)
    + * {
    + *     apr_hash_index_t *hi;
    + *     void *val;
    + *     int sum = 0;
    + *     for (hi = apr_hash_first(p, ht); hi; hi = apr_hash_next(hi)) {
    + *         apr_hash_this(hi, NULL, NULL, &val);
    + *         sum += *(int *)val;
    + *     }
    + *     return sum;
    + * }
    + * 
    + */ +APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht); + +/** + * Continue iterating over the entries in a hash table. + * @param hi The iteration state + * @return a pointer to the updated iteration state. NULL if there are no more + * entries. + */ +APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi); + +/** + * Get the current entry's details from the iteration state. + * @param hi The iteration state + * @param key Return pointer for the pointer to the key. + * @param klen Return pointer for the key length. + * @param val Return pointer for the associated value. + * @remark The return pointers should point to a variable that will be set to the + * corresponding data, or they may be NULL if the data isn't interesting. + */ +APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi, const void **key, + apr_ssize_t *klen, void **val); + +/** + * Get the number of key/value pairs in the hash table. + * @param ht The hash table + * @return The number of key/value pairs in the hash table. + */ +APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht); + +/** + * Merge two hash tables into one new hash table. The values of the overlay + * hash override the values of the base if both have the same key. + * @param p The pool to use for the new hash table + * @param overlay The table to add to the initial table + * @param base The table that represents the initial values of the new table + * @return A new hash table containing all of the data from the two passed in + */ +APR_DECLARE(apr_hash_t *) apr_hash_overlay(apr_pool_t *p, + const apr_hash_t *overlay, + const apr_hash_t *base); + +/** + * Merge two hash tables into one new hash table. If the same key + * is present in both tables, call the supplied merge function to + * produce a merged value for the key in the new table. + * @param p The pool to use for the new hash table + * @param h1 The first of the tables to merge + * @param h2 The second of the tables to merge + * @param merger A callback function to merge values, or NULL to + * make values from h1 override values from h2 (same semantics as + * apr_hash_overlay()) + * @param data Client data to pass to the merger function + * @return A new hash table containing all of the data from the two passed in + */ +APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p, + const apr_hash_t *h1, + const apr_hash_t *h2, + void * (*merger)(apr_pool_t *p, + const void *key, + apr_ssize_t klen, + const void *h1_val, + const void *h2_val, + const void *data), + const void *data); + +/** + * Get a pointer to the pool which the hash table was created in + */ +APR_POOL_DECLARE_ACCESSOR(hash); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APR_HASH_H */ diff --git a/rubbos/app/apache2/include/apr_hooks.h b/rubbos/app/apache2/include/apr_hooks.h new file mode 100644 index 00000000..73435b82 --- /dev/null +++ b/rubbos/app/apache2/include/apr_hooks.h @@ -0,0 +1,273 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_HOOKS_H +#define APR_HOOKS_H + +#include "apu.h" +/* For apr_array_header_t */ +#include "apr_tables.h" + +/** + * @file apr_hooks.h + * @brief Apache hook functions + */ + +#ifdef __cplusplus +extern "C" { +#endif +/** + * @defgroup APR_Util_Hook Hook Functions + * @ingroup APR_Util + * @{ + */ +/** macro to return the prototype of the hook function */ +#define APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ +link##_DECLARE(apr_array_header_t *) ns##_hook_get_##name(void) + +/** macro to declare the hook correctly */ +#define APR_DECLARE_EXTERNAL_HOOK(ns,link,ret,name,args) \ +typedef ret ns##_HOOK_##name##_t args; \ +link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \ + const char * const *aszPre, \ + const char * const *aszSucc, int nOrder); \ +link##_DECLARE(ret) ns##_run_##name args; \ +APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name); \ +typedef struct ns##_LINK_##name##_t \ + { \ + ns##_HOOK_##name##_t *pFunc; \ + const char *szName; \ + const char * const *aszPredecessors; \ + const char * const *aszSuccessors; \ + int nOrder; \ + } ns##_LINK_##name##_t; + +/** macro to declare the hook structure */ +#define APR_HOOK_STRUCT(members) \ +static struct { members } _hooks; + +/** macro to link the hook structure */ +#define APR_HOOK_LINK(name) \ + apr_array_header_t *link_##name; + +/** macro to implement the hook */ +#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ +link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf,const char * const *aszPre, \ + const char * const *aszSucc,int nOrder) \ + { \ + ns##_LINK_##name##_t *pHook; \ + if(!_hooks.link_##name) \ + { \ + _hooks.link_##name=apr_array_make(apr_hook_global_pool,1,sizeof(ns##_LINK_##name##_t)); \ + apr_hook_sort_register(#name,&_hooks.link_##name); \ + } \ + pHook=apr_array_push(_hooks.link_##name); \ + pHook->pFunc=pf; \ + pHook->aszPredecessors=aszPre; \ + pHook->aszSuccessors=aszSucc; \ + pHook->nOrder=nOrder; \ + pHook->szName=apr_hook_debug_current; \ + if(apr_hook_debug_enabled) \ + apr_hook_debug_show(#name,aszPre,aszSucc); \ + } \ + APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ + { \ + return _hooks.link_##name; \ + } + +/** + * Implement a hook that has no return code, and therefore runs all of the + * registered functions + * @param ns The namespace prefix of the hook functions + * @param link The linkage declaration prefix of the hook + * @param name The name of the hook + * @param args_decl The declaration of the arguments for the hook + * @param args_use The names for the arguments for the hook + * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which + * provide export linkage from the module that IMPLEMENTs the hook, and + * import linkage from external modules that link to the hook's module. + */ +#define APR_IMPLEMENT_EXTERNAL_HOOK_VOID(ns,link,name,args_decl,args_use) \ +APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ +link##_DECLARE(void) ns##_run_##name args_decl \ + { \ + ns##_LINK_##name##_t *pHook; \ + int n; \ +\ + if(!_hooks.link_##name) \ + return; \ +\ + pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ + for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ + pHook[n].pFunc args_use; \ + } + +/* FIXME: note that this returns ok when nothing is run. I suspect it should + really return decline, but that breaks Apache currently - Ben +*/ +/** + * Implement a hook that runs until one of the functions returns something + * other than OK or DECLINE + * @param ns The namespace prefix of the hook functions + * @param link The linkage declaration prefix of the hook + * @param ret Type to return + * @param name The name of the hook + * @param args_decl The declaration of the arguments for the hook + * @param args_use The names for the arguments for the hook + * @param ok Success value + * @param decline Decline value + * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which + * provide export linkage from the module that IMPLEMENTs the hook, and + * import linkage from external modules that link to the hook's module. + */ +#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \ +APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ +link##_DECLARE(ret) ns##_run_##name args_decl \ + { \ + ns##_LINK_##name##_t *pHook; \ + int n; \ + ret rv; \ +\ + if(!_hooks.link_##name) \ + return ok; \ +\ + pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ + for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ + { \ + rv=pHook[n].pFunc args_use; \ +\ + if(rv != ok && rv != decline) \ + return rv; \ + } \ + return ok; \ + } + + +/** + * Implement a hook that runs until the first function returns something + * other than the value of decline + * @param ns The namespace prefix of the hook functions + * @param link The linkage declaration prefix of the hook + * @param name The name of the hook + * @param ret Type to return + * @param args_decl The declaration of the arguments for the hook + * @param args_use The names for the arguments for the hook + * @param decline Decline value + * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which + * provide export linkage from the module that IMPLEMENTs the hook, and + * import linkage from external modules that link to the hook's module. + */ +#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns,link,ret,name,args_decl,args_use,decline) \ +APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ +link##_DECLARE(ret) ns##_run_##name args_decl \ + { \ + ns##_LINK_##name##_t *pHook; \ + int n; \ + ret rv; \ +\ + if(!_hooks.link_##name) \ + return decline; \ +\ + pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ + for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ + { \ + rv=pHook[n].pFunc args_use; \ +\ + if(rv != decline) \ + return rv; \ + } \ + return decline; \ + } + + /* Hook orderings */ +/** run this hook first, before ANYTHING */ +#define APR_HOOK_REALLY_FIRST (-10) +/** run this hook first */ +#define APR_HOOK_FIRST 0 +/** run this hook somewhere */ +#define APR_HOOK_MIDDLE 10 +/** run this hook after every other hook which is defined*/ +#define APR_HOOK_LAST 20 +/** run this hook last, after EVERYTHING */ +#define APR_HOOK_REALLY_LAST 30 + +/** + * The global pool used to allocate any memory needed by the hooks. + */ +APU_DECLARE_DATA extern apr_pool_t *apr_hook_global_pool; + +/** @deprecated @see apr_hook_global_pool */ +APU_DECLARE_DATA extern apr_pool_t *apr_global_hook_pool; + +/** + * A global variable to determine if debugging information about the + * hooks functions should be printed + */ +APU_DECLARE_DATA extern int apr_hook_debug_enabled; + +/** @deprecated @see apr_hook_debug_enabled */ +APU_DECLARE_DATA extern int apr_debug_module_hooks; + +/** + * The name of the module that is currently registering a function + */ +APU_DECLARE_DATA extern const char *apr_hook_debug_current; + +/** @deprecated @see apr_hook_debug_current */ +APU_DECLARE_DATA extern const char *apr_current_hooking_module; + +/** + * Register a hook function to be sorted + * @param szHookName The name of the Hook the function is registered for + * @param aHooks The array which stores all of the functions for this hook + */ +APU_DECLARE(void) apr_hook_sort_register(const char *szHookName, + apr_array_header_t **aHooks); +/** + * Sort all of the registerd functions for a given hook + */ +APU_DECLARE(void) apr_hook_sort_all(void); + +/** @deprecated @see apr_hook_sort_all */ +APU_DECLARE(void) apr_sort_hooks(void); + +/** + * Print all of the information about the current hook. This is used for + * debugging purposes. + * @param szName The name of the hook + * @param aszPre All of the functions in the predecessor array + * @param aszSucc All of the functions in the successor array + */ +APU_DECLARE(void) apr_hook_debug_show(const char *szName, + const char * const *aszPre, + const char * const *aszSucc); + +/** @deprecated @see apr_hook_debug_show */ +APU_DECLARE(void) apr_show_hook(const char *szName, + const char * const *aszPre, + const char * const *aszSucc); + +/** + * Remove all currently registered functions. + */ +APU_DECLARE(void) apr_hook_deregister_all(void); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* APR_HOOKS_H */ diff --git a/rubbos/app/apache2/include/apr_inherit.h b/rubbos/app/apache2/include/apr_inherit.h new file mode 100644 index 00000000..b7f7480f --- /dev/null +++ b/rubbos/app/apache2/include/apr_inherit.h @@ -0,0 +1,51 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_INHERIT_H +#define APR_INHERIT_H + +/** + * @file apr_inherit.h + * @brief APR File Handle Inheritance Helpers + * @remark This internal header includes internal declaration helpers + * for other headers to declare apr_foo_inherit_[un]set functions. + */ + +/** + * Prototype for type-specific declarations of apr_foo_inherit_set + * functions. + * @remark Doxygen unwraps this macro (via doxygen.conf) to provide + * actual help for each specific occurance of apr_foo_inherit_set. + * @remark the linkage is specified for APR. It would be possible to expand + * the macros to support other linkages. + */ +#define APR_DECLARE_INHERIT_SET(type) \ + APR_DECLARE(apr_status_t) apr_##type##_inherit_set( \ + apr_##type##_t *the##type) + +/** + * Prototype for type-specific declarations of apr_foo_inherit_unset + * functions. + * @remark Doxygen unwraps this macro (via doxygen.conf) to provide + * actual help for each specific occurance of apr_foo_inherit_unset. + * @remark the linkage is specified for APR. It would be possible to expand + * the macros to support other linkages. + */ +#define APR_DECLARE_INHERIT_UNSET(type) \ + APR_DECLARE(apr_status_t) apr_##type##_inherit_unset( \ + apr_##type##_t *the##type) + +#endif /* ! APR_INHERIT_H */ diff --git a/rubbos/app/apache2/include/apr_ldap.h b/rubbos/app/apache2/include/apr_ldap.h new file mode 100644 index 00000000..fc737456 --- /dev/null +++ b/rubbos/app/apache2/include/apr_ldap.h @@ -0,0 +1,176 @@ +/* Copyright 2002-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h + */ +/** + * @file apr_ldap.h + * @brief APR-UTIL LDAP + */ +#ifndef APU_LDAP_H +#define APU_LDAP_H + +/** + * @defgroup APR_Util_LDAP LDAP + * @ingroup APR_Util + * @{ + */ + + +/* + * This switches LDAP support on or off. + */ + +/* this will be defined if LDAP support was compiled into apr-util */ +#define APR_HAS_LDAP 0 + +/* this whole thing disappears if LDAP is not enabled */ +#if !APR_HAS_LDAP + +#define APR_HAS_NETSCAPE_LDAPSDK 0 +#define APR_HAS_NOVELL_LDAPSDK 0 +#define APR_HAS_OPENLDAP_LDAPSDK 0 +#define APR_HAS_MICROSOFT_LDAPSDK 0 +#define APR_HAS_OTHER_LDAPSDK 0 + +#define APR_HAS_LDAP_SSL 0 +#define APR_HAS_LDAP_URL_PARSE 0 + + +#else /* ldap support available */ + +#ifdef APR_NOT_READY_YET +/* FIXME: this code awaits support from apu-conf.m4 */ + + /* There a several LDAPv3 SDKs available on various platforms + * define which LDAP SDK is used + */ +#define APR_HAS_NETSCAPE_LDAPSDK @apu_has_ldap_netscape@ +#define APR_HAS_NOVELL_LDAPSDK @apu_has_ldap_novell@ +#define APR_HAS_OPENLDAP_LDAPSDK @apu_has_ldap_openldap@ +#define APR_HAS_MICROSOFT_LDAPSDK @apu_has_ldap_microsoft@ +#define APR_HAS_OTHER_LDAPSDK @apu_has_ldap_other@ + + /* define if LDAP SSL support is available + */ +#define APR_HAS_LDAP_SSL @apu_has_ldap_ssl@ + +#else /* APR_NOT_READY_YET */ + +/* FIXME: remove this when above code works. Default to build with + * OpenLDAP until apu-conf.m4 support exists */ +#define APR_HAS_OPENLDAP_LDAPSDK 1 +#define APR_HAS_LDAP_SSL 1 + +#endif /* APR_NOT_READY_YET */ + + /* If no APR_HAS_xxx_LDAPSDK is defined error out + * Define if the SDK supports the ldap_url_parse function + */ +#if APR_HAS_NETSCAPE_LDAPSDK + #define APR_HAS_LDAP_URL_PARSE 1 +#elif APR_HAS_NOVELL_LDAPSDK + #define APR_HAS_LDAP_URL_PARSE 1 +#elif APR_HAS_OPENLDAP_LDAPSDK + #define APR_HAS_LDAP_URL_PARSE 1 +#elif APR_HAS_MICROSOFT_LDAPSDK + #define APR_HAS_LDAP_URL_PARSE 0 +#elif APR_HAS_OTHER_LDAPSDK + #define APR_HAS_LDAP_URL_PARSE 0 +#else + #define APR_HAS_LDAP_URL_PARSE 0 + #error "ERROR no LDAP SDK defined!" +#endif + +/* These are garbage, our public macros are always APR_HAS_ prefixed, + * and use 0/1 values, not defined/undef semantics. + * + * Will be deprecated in APR 1.0 + */ +#if APR_HAS_LDAP +#define APU_HAS_LDAP +#endif + +/* LDAP header files */ + +#if APR_HAS_NETSCAPE_LDAPSDK + + +#if APR_HAS_LDAP_SSL + +#endif +#endif + +#if APR_HAS_NOVELL_LDAPSDK + + +#if APR_HAS_LDAP_SSL + +#endif +#endif + +#if APR_HAS_OPENLDAP_LDAPSDK +#if !defined(LDAP_DEPRECATED) +/* Ensure that the "deprecated" interfaces are still exposed + * with OpenLDAP >= 2.3; these were exposed by default in earlier + * releases. */ +#define LDAP_DEPRECATED 1 +#endif + + +#endif + +/* MS & v2 LDAP SDKs don't use const parameters in their prototypes, + * LDAPv3 SDKs mostly use const. Bridge the gap for clean compilation. + */ + +#if LDAP_VERSION_MAX <= 2 || APR_HAS_MICROSOFT_LDAPSDK || defined(DOXYGEN) +/** + * Cast away constness to compile cleanly against v2 and MS LDAP SDKs + * @param conststr The value to un-constify on older LDAP SDKs + */ +#define APR_LDAP_UNCONST(conststr) ((char *)(conststr)) +#else +#define APR_LDAP_UNCONST(conststr) (conststr) +#endif + +#ifndef __cplusplus +/** + * Cast away constness to compile against v2 and MS LDAP SDKs + * @param conststr The value to un-constify on older LDAP SDKs + * @bug The apr_ldap.h macro const_cast violated three rules; + * it was a C++ reserved keyword, it violated the uppercase-only + * style guideline for apr macros, and it was not namespace protected. + * It exists here soley to avoid breaking legacy sources using APR 0.9. + * @deprecated @see APR_LDAP_UNCONST + */ +#define const_cast(conststr) APR_LDAP_UNCONST(conststr) +#endif + +#include "apr_ldap_url.h" + +/* Define some errors that are mysteriously gone from OpenLDAP 2.x */ +#ifndef LDAP_URL_ERR_NOTLDAP +#define LDAP_URL_ERR_NOTLDAP LDAP_URL_ERR_BADSCHEME +#endif + +#ifndef LDAP_URL_ERR_NODN +#define LDAP_URL_ERR_NODN LDAP_URL_ERR_BADURL +#endif + +/** @} */ +#endif /* APR_HAS_LDAP */ +#endif /* APU_LDAP_H */ diff --git a/rubbos/app/apache2/include/apr_ldap_url.h b/rubbos/app/apache2/include/apr_ldap_url.h new file mode 100644 index 00000000..b1813830 --- /dev/null +++ b/rubbos/app/apache2/include/apr_ldap_url.h @@ -0,0 +1,84 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_LDAP_URL_H +#define APR_LDAP_URL_H + +#include "apr_ldap.h" + +#if APR_HAS_LDAP +#if APR_HAS_LDAP_URL_PARSE + +#define apr_ldap_url_desc_t LDAPURLDesc +#define apr_ldap_is_ldap_url(url) ldap_is_ldap_url(url) +#define apr_ldap_is_ldaps_url(url) ldap_is_ldaps_url(url) +#define apr_ldap_is_ldapi_url(url) ldap_is_ldapi_url(url) +#define apr_ldap_url_parse(url, ludpp) ldap_url_parse(url, ludpp) +#define apr_ldap_free_urldesc(ludp) ldap_free_urldesc(ludp) + +#else /* ! APR_HAS_LDAP_URL_PARSE */ + +/* + * types for ldap URL handling + */ +typedef struct apr_ldap_url_desc_t { + struct apr_ldap_url_desc_t *lud_next; + char *lud_scheme; + char *lud_host; + int lud_port; + char *lud_dn; + char **lud_attrs; + int lud_scope; + char *lud_filter; + char **lud_exts; + int lud_crit_exts; +} apr_ldap_url_desc_t; + +#ifndef LDAP_URL_SUCCESS +#define LDAP_URL_SUCCESS 0x00 /* Success */ +#define LDAP_URL_ERR_MEM 0x01 /* can't allocate memory space */ +#define LDAP_URL_ERR_PARAM 0x02 /* parameter is bad */ +#define LDAP_URL_ERR_BADSCHEME 0x03 /* URL doesn't begin with "ldap[si]://" */ +#define LDAP_URL_ERR_BADENCLOSURE 0x04 /* URL is missing trailing ">" */ +#define LDAP_URL_ERR_BADURL 0x05 /* URL is bad */ +#define LDAP_URL_ERR_BADHOST 0x06 /* host port is bad */ +#define LDAP_URL_ERR_BADATTRS 0x07 /* bad (or missing) attributes */ +#define LDAP_URL_ERR_BADSCOPE 0x08 /* scope string is invalid (or missing) */ +#define LDAP_URL_ERR_BADFILTER 0x09 /* bad or missing filter */ +#define LDAP_URL_ERR_BADEXTS 0x0a /* bad or missing extensions */ +#endif + +/* + * in url.c + * + * need _ext varients + */ +APU_DECLARE(int) apr_ldap_is_ldap_url(const char *url); + +APU_DECLARE(int) apr_ldap_is_ldaps_url(const char *url); + +APU_DECLARE(int) apr_ldap_is_ldapi_url(const char *url); + +APU_DECLARE(int) apr_ldap_url_parse(const char *url, + apr_ldap_url_desc_t **ludpp); + +APU_DECLARE(void) apr_ldap_free_urldesc(apr_ldap_url_desc_t *ludp); + +#endif /* ! APR_HAS_LDAP_URL_PARSE */ + +#endif /* APR_HAS_LDAP */ + +#endif /* APR_LDAP_URL_H */ diff --git a/rubbos/app/apache2/include/apr_lib.h b/rubbos/app/apache2/include/apr_lib.h new file mode 100644 index 00000000..2d9ce534 --- /dev/null +++ b/rubbos/app/apache2/include/apr_lib.h @@ -0,0 +1,228 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_LIB_H +#define APR_LIB_H + +/** + * @file apr_lib.h + * This is collection of oddballs that didn't fit anywhere else, + * and might move to more appropriate headers with the release + * of APR 1.0. + * @brief APR general purpose library routines + */ + +#include "apr.h" +#include "apr_errno.h" + +#if APR_HAVE_CTYPE_H +#include +#endif +#if APR_HAVE_STDARG_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_lib General Purpose Library Routines + * @ingroup APR + * This is collection of oddballs that didn't fit anywhere else, + * and might move to more appropriate headers with the release + * of APR 1.0. + * @{ + */ + +/** A constant representing a 'large' string. */ +#define HUGE_STRING_LEN 8192 + +/* + * Define the structures used by the APR general-purpose library. + */ + +/** @see apr_vformatter_buff_t */ +typedef struct apr_vformatter_buff_t apr_vformatter_buff_t; + +/** + * Structure used by the variable-formatter routines. + */ +struct apr_vformatter_buff_t { + /** The current position */ + char *curpos; + /** The end position of the format string */ + char *endpos; +}; + +/** + * return the final element of the pathname + * @param pathname The path to get the final element of + * @return the final element of the path + * @remark + *
    + * For example:
    + *                 "/foo/bar/gum"    -> "gum"
    + *                 "/foo/bar/gum/"   -> ""
    + *                 "gum"             -> "gum"
    + *                 "bs\\path\\stuff" -> "stuff"
    + * 
    + */ +APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname); + +/** @deprecated @see apr_filepath_name_get */ +APR_DECLARE(const char *) apr_filename_of_pathname(const char *pathname); + +/** + * apr_killpg + * Small utility macros to make things easier to read. Not usually a + * goal, to be sure.. + */ + +#ifdef WIN32 +#define apr_killpg(x, y) +#else /* WIN32 */ +#ifdef NO_KILLPG +#define apr_killpg(x, y) (kill (-(x), (y))) +#else /* NO_KILLPG */ +#define apr_killpg(x, y) (killpg ((x), (y))) +#endif /* NO_KILLPG */ +#endif /* WIN32 */ + +/** + * apr_vformatter() is a generic printf-style formatting routine + * with some extensions. + * @param flush_func The function to call when the buffer is full + * @param c The buffer to write to + * @param fmt The format string + * @param ap The arguments to use to fill out the format string. + * + * @remark + *
    + * The extensions are:
    + *
    + * %%pA	takes a struct in_addr *, and prints it as a.b.c.d
    + * %%pI	takes an apr_sockaddr_t * and prints it as a.b.c.d:port or
    + *      [ipv6-address]:port
    + * %%pT takes an apr_os_thread_t * and prints it in decimal
    + *      ('0' is printed if !APR_HAS_THREADS)
    + * %%pp takes a void * and outputs it in hex
    + *
    + * The %%p hacks are to force gcc's printf warning code to skip
    + * over a pointer argument without complaining.  This does
    + * mean that the ANSI-style %%p (output a void * in hex format) won't
    + * work as expected at all, but that seems to be a fair trade-off
    + * for the increased robustness of having printf-warnings work.
    + *
    + * Additionally, apr_vformatter allows for arbitrary output methods
    + * using the apr_vformatter_buff and flush_func.
    + *
    + * The apr_vformatter_buff has two elements curpos and endpos.
    + * curpos is where apr_vformatter will write the next byte of output.
    + * It proceeds writing output to curpos, and updating curpos, until
    + * either the end of output is reached, or curpos == endpos (i.e. the
    + * buffer is full).
    + *
    + * If the end of output is reached, apr_vformatter returns the
    + * number of bytes written.
    + *
    + * When the buffer is full, the flush_func is called.  The flush_func
    + * can return -1 to indicate that no further output should be attempted,
    + * and apr_vformatter will return immediately with -1.  Otherwise
    + * the flush_func should flush the buffer in whatever manner is
    + * appropriate, re apr_pool_t nitialize curpos and endpos, and return 0.
    + *
    + * Note that flush_func is only invoked as a result of attempting to
    + * write another byte at curpos when curpos >= endpos.  So for
    + * example, it's possible when the output exactly matches the buffer
    + * space available that curpos == endpos will be true when
    + * apr_vformatter returns.
    + *
    + * apr_vformatter does not call out to any other code, it is entirely
    + * self-contained.  This allows the callers to do things which are
    + * otherwise "unsafe".  For example, apr_psprintf uses the "scratch"
    + * space at the unallocated end of a block, and doesn't actually
    + * complete the allocation until apr_vformatter returns.  apr_psprintf
    + * would be completely broken if apr_vformatter were to call anything
    + * that used this same pool.  Similarly http_bprintf() uses the "scratch"
    + * space at the end of its output buffer, and doesn't actually note
    + * that the space is in use until it either has to flush the buffer
    + * or until apr_vformatter returns.
    + * 
    + */ +APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), + apr_vformatter_buff_t *c, const char *fmt, + va_list ap); + +/** + * Display a prompt and read in the password from stdin. + * @param prompt The prompt to display + * @param pwbuf Buffer to store the password + * @param bufsize The length of the password buffer. + */ +APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, + apr_size_t *bufsize); + +/** @} */ + +/** + * @defgroup apr_ctype ctype functions + * These macros allow correct support of 8-bit characters on systems which + * support 8-bit characters. Pretty dumb how the cast is required, but + * that's legacy libc for ya. These new macros do not support EOF like + * the standard macros do. Tough. + * @{ + */ +/** @see isalnum */ +#define apr_isalnum(c) (isalnum(((unsigned char)(c)))) +/** @see isalpha */ +#define apr_isalpha(c) (isalpha(((unsigned char)(c)))) +/** @see iscntrl */ +#define apr_iscntrl(c) (iscntrl(((unsigned char)(c)))) +/** @see isdigit */ +#define apr_isdigit(c) (isdigit(((unsigned char)(c)))) +/** @see isgraph */ +#define apr_isgraph(c) (isgraph(((unsigned char)(c)))) +/** @see islower*/ +#define apr_islower(c) (islower(((unsigned char)(c)))) +/** @see isascii */ +#ifdef isascii +#define apr_isascii(c) (isascii(((unsigned char)(c)))) +#else +#define apr_isascii(c) (((c) & ~0x7f)==0) +#endif +/** @see isprint */ +#define apr_isprint(c) (isprint(((unsigned char)(c)))) +/** @see ispunct */ +#define apr_ispunct(c) (ispunct(((unsigned char)(c)))) +/** @see isspace */ +#define apr_isspace(c) (isspace(((unsigned char)(c)))) +/** @see isupper */ +#define apr_isupper(c) (isupper(((unsigned char)(c)))) +/** @see isxdigit */ +#define apr_isxdigit(c) (isxdigit(((unsigned char)(c)))) +/** @see tolower */ +#define apr_tolower(c) (tolower(((unsigned char)(c)))) +/** @see toupper */ +#define apr_toupper(c) (toupper(((unsigned char)(c)))) + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_LIB_H */ diff --git a/rubbos/app/apache2/include/apr_md4.h b/rubbos/app/apache2/include/apr_md4.h new file mode 100644 index 00000000..42d108df --- /dev/null +++ b/rubbos/app/apache2/include/apr_md4.h @@ -0,0 +1,135 @@ +/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* This is derived from material copyright RSA Data Security, Inc. + * Their notice is reproduced below in its entirety. + * + * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All + * rights reserved. + * + * License to copy and use this software is granted provided that it + * is identified as the "RSA Data Security, Inc. MD4 Message-Digest + * Algorithm" in all material mentioning or referencing this software + * or this function. + * + * License is also granted to make and use derivative works provided + * that such works are identified as "derived from the RSA Data + * Security, Inc. MD4 Message-Digest Algorithm" in all material + * mentioning or referencing the derived work. + * + * RSA Data Security, Inc. makes no representations concerning either + * the merchantability of this software or the suitability of this + * software for any particular purpose. It is provided "as is" + * without express or implied warranty of any kind. + * + * These notices must be retained in any copies of any part of this + * documentation and/or software. + */ + +#ifndef APR_MD4_H +#define APR_MD4_H + +#include "apu.h" +#include "apr_xlate.h" +/** + * @file apr_md4.h + * @brief APR-UTIL MD4 Library + */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup APR_Util_MD4 MD4 Library + * @ingroup APR_Util + * @{ + */ + +/** The digestsize for MD4 */ +#define APR_MD4_DIGESTSIZE 16 + +/** @see apr_md4_ctx_t */ +typedef struct apr_md4_ctx_t apr_md4_ctx_t; + +/** MD4 context. */ +struct apr_md4_ctx_t { + /** state (ABCD) */ + apr_uint32_t state[4]; + /** number of bits, modulo 2^64 (lsb first) */ + apr_uint32_t count[2]; + /** input buffer */ + unsigned char buffer[64]; +#if APR_HAS_XLATE + /** translation handle */ + apr_xlate_t *xlate; +#endif +}; + +/** + * MD4 Initialize. Begins an MD4 operation, writing a new context. + * @param context The MD4 context to initialize. + */ +APU_DECLARE(apr_status_t) apr_md4_init(apr_md4_ctx_t *context); + +#if APR_HAS_XLATE +/** + * MDr4 translation setup. Provides the APR translation handle to be used + * for translating the content before calculating the digest. + * @param context The MD4 content to set the translation for. + * @param xlate The translation handle to use for this MD4 context + */ +APU_DECLARE(apr_status_t) apr_md4_set_xlate(apr_md4_ctx_t *context, + apr_xlate_t *xlate); +#else +#define apr_md4_set_xlate(context, xlate) APR_ENOTIMPL +#endif + +/** + * MD4 block update operation. Continue an MD4 message-digest operation, + * processing another message block, and updating the context. + * @param context The MD4 content to update. + * @param input next message block to update + * @param inputLen The length of the next message block + */ +APU_DECLARE(apr_status_t) apr_md4_update(apr_md4_ctx_t *context, + const unsigned char *input, + apr_size_t inputLen); + +/** + * MD4 finalization. Ends an MD4 message-digest operation, writing the + * message digest and zeroing the context + * @param digest The final MD4 digest + * @param context The MD4 content we are finalizing. + */ +APU_DECLARE(apr_status_t) apr_md4_final( + unsigned char digest[APR_MD4_DIGESTSIZE], + apr_md4_ctx_t *context); + +/** + * MD4 digest computation + * @param digest The MD4 digest + * @param input message block to use + * @param inputLen The length of the message block + */ +APU_DECLARE(apr_status_t) apr_md4(unsigned char digest[APR_MD4_DIGESTSIZE], + const unsigned char *input, + apr_size_t inputLen); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_MD4_H */ diff --git a/rubbos/app/apache2/include/apr_md5.h b/rubbos/app/apache2/include/apr_md5.h new file mode 100644 index 00000000..83b6171a --- /dev/null +++ b/rubbos/app/apache2/include/apr_md5.h @@ -0,0 +1,158 @@ +/* + * This is work is derived from material Copyright RSA Data Security, Inc. + * + * The RSA copyright statement and Licence for that original material is + * included below. This is followed by the Apache copyright statement and + * licence for the modifications made to that material. + */ + +/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All + rights reserved. + + License to copy and use this software is granted provided that it + is identified as the "RSA Data Security, Inc. MD5 Message-Digest + Algorithm" in all material mentioning or referencing this software + or this function. + + License is also granted to make and use derivative works provided + that such works are identified as "derived from the RSA Data + Security, Inc. MD5 Message-Digest Algorithm" in all material + mentioning or referencing the derived work. + + RSA Data Security, Inc. makes no representations concerning either + the merchantability of this software or the suitability of this + software for any particular purpose. It is provided "as is" + without express or implied warranty of any kind. + + These notices must be retained in any copies of any part of this + documentation and/or software. + */ + +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_MD5_H +#define APR_MD5_H + +#include "apu.h" +#include "apr_xlate.h" + +#ifdef __cplusplus +extern "C" { +#endif +/** + * @file apr_md5.h + * @brief APR MD5 Routines + */ + +/** + * @defgroup APR_MD5 MD5 Routines + * @ingroup APR + * @{ + */ + +/** The MD5 digest size */ +#define APR_MD5_DIGESTSIZE 16 +#define MD5_DIGESTSIZE APR_MD5_DIGESTSIZE /**< @deprecated */ + +/** @see apr_md5_ctx_t */ +typedef struct apr_md5_ctx_t apr_md5_ctx_t; + +/** MD5 context. */ +struct apr_md5_ctx_t { + /** state (ABCD) */ + apr_uint32_t state[4]; + /** number of bits, modulo 2^64 (lsb first) */ + apr_uint32_t count[2]; + /** input buffer */ + unsigned char buffer[64]; + /** translation handle + * ignored if xlate is unsupported + */ + apr_xlate_t *xlate; +}; + +/** + * MD5 Initialize. Begins an MD5 operation, writing a new context. + * @param context The MD5 context to initialize. + */ +APU_DECLARE(apr_status_t) apr_md5_init(apr_md5_ctx_t *context); + +/** + * MD5 translation setup. Provides the APR translation handle to be used + * for translating the content before calculating the digest. + * @param context The MD5 content to set the translation for. + * @param xlate The translation handle to use for this MD5 context + */ +APU_DECLARE(apr_status_t) apr_md5_set_xlate(apr_md5_ctx_t *context, + apr_xlate_t *xlate); + +/** + * MD5 block update operation. Continue an MD5 message-digest operation, + * processing another message block, and updating the context. + * @param context The MD5 content to update. + * @param input next message block to update + * @param inputLen The length of the next message block + */ +APU_DECLARE(apr_status_t) apr_md5_update(apr_md5_ctx_t *context, + const void *input, + apr_size_t inputLen); + +/** + * MD5 finalization. Ends an MD5 message-digest operation, writing the + * message digest and zeroing the context + * @param digest The final MD5 digest + * @param context The MD5 content we are finalizing. + */ +APU_DECLARE(apr_status_t) apr_md5_final(unsigned char digest[APR_MD5_DIGESTSIZE], + apr_md5_ctx_t *context); + +/** + * MD5 in one step + * @param digest The final MD5 digest + * @param input The message block to use + * @param inputLen The length of the message block + */ +APU_DECLARE(apr_status_t) apr_md5(unsigned char digest[APR_MD5_DIGESTSIZE], + const void *input, + apr_size_t inputLen); + +/** + * Encode a password using an MD5 algorithm + * @param password The password to encode + * @param salt The salt to use for the encoding + * @param result The string to store the encoded password in + * @param nbytes The length of the string + */ +APU_DECLARE(apr_status_t) apr_md5_encode(const char *password, const char *salt, + char *result, apr_size_t nbytes); + + +/** + * Validate any password encypted with any algorithm that APR understands + * @param passwd The password to validate + * @param hash The password to validate against + */ +APU_DECLARE(apr_status_t) apr_password_validate(const char *passwd, + const char *hash); + + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_MD5_H */ diff --git a/rubbos/app/apache2/include/apr_mmap.h b/rubbos/app/apache2/include/apr_mmap.h new file mode 100644 index 00000000..3070acca --- /dev/null +++ b/rubbos/app/apache2/include/apr_mmap.h @@ -0,0 +1,193 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_MMAP_H +#define APR_MMAP_H + +/** + * @file apr_mmap.h + * @brief APR MMAP routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" +#include "apr_ring.h" +#include "apr_file_io.h" /* for apr_file_t */ + +#ifdef BEOS +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_mmap MMAP (Memory Map) Routines + * @ingroup APR + * @{ + */ + +/** MMap opened for reading */ +#define APR_MMAP_READ 1 +/** MMap opened for writing */ +#define APR_MMAP_WRITE 2 + +/** @see apr_mmap_t */ +typedef struct apr_mmap_t apr_mmap_t; + +/** + * @remark + * As far as I can tell the only really sane way to store an MMAP is as a + * void * and a length. BeOS requires this area_id, but that's just a little + * something extra. I am exposing this type, because it doesn't make much + * sense to keep it private, and opening it up makes some stuff easier in + * Apache. + */ +/** The MMAP structure */ +struct apr_mmap_t { + /** The pool the mmap structure was allocated out of. */ + apr_pool_t *cntxt; +#ifdef BEOS + /** An area ID. Only valid on BeOS */ + area_id area; +#endif +#ifdef WIN32 + /** The handle of the file mapping */ + HANDLE mhandle; + /** The start of the real memory page area (mapped view) */ + void *mv; + /** The physical start, size and offset */ + apr_off_t pstart; + apr_size_t psize; + apr_off_t poffset; +#endif + /** The start of the memory mapped area */ + void *mm; + /** The amount of data in the mmap */ + apr_size_t size; + /** @deprecated this field is no longer used and will be removed + * in APR 1.0 */ + int unused; + /** ring of apr_mmap_t's that reference the same + * mmap'ed region; acts in place of a reference count */ + APR_RING_ENTRY(apr_mmap_t) link; +}; + +#if APR_HAS_MMAP || defined(DOXYGEN) + +/** @def APR_MMAP_THRESHOLD + * Files have to be at least this big before they're mmap()d. This is to deal + * with systems where the expense of doing an mmap() and an munmap() outweighs + * the benefit for small files. It shouldn't be set lower than 1. + */ +#ifdef MMAP_THRESHOLD +# define APR_MMAP_THRESHOLD MMAP_THRESHOLD +#else +# ifdef SUNOS4 +# define APR_MMAP_THRESHOLD (8*1024) +# else +# define APR_MMAP_THRESHOLD 1 +# endif /* SUNOS4 */ +#endif /* MMAP_THRESHOLD */ + +/** @def APR_MMAP_LIMIT + * Maximum size of MMap region + */ +#ifdef MMAP_LIMIT +# define APR_MMAP_LIMIT MMAP_LIMIT +#else +# define APR_MMAP_LIMIT (4*1024*1024) +#endif /* MMAP_LIMIT */ + +/** Can this file be MMaped */ +#define APR_MMAP_CANDIDATE(filelength) \ + ((filelength >= APR_MMAP_THRESHOLD) && (filelength < APR_MMAP_LIMIT)) + +/* Function definitions */ + +/** + * Create a new mmap'ed file out of an existing APR file. + * @param newmmap The newly created mmap'ed file. + * @param file The file turn into an mmap. + * @param offset The offset into the file to start the data pointer at. + * @param size The size of the file + * @param flag bit-wise or of: + *
    + *          APR_MMAP_READ       MMap opened for reading
    + *          APR_MMAP_WRITE      MMap opened for writing
    + * 
    + * @param cntxt The pool to use when creating the mmap. + */ +APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **newmmap, + apr_file_t *file, apr_off_t offset, + apr_size_t size, apr_int32_t flag, + apr_pool_t *cntxt); + +/** + * Duplicate the specified MMAP. + * @param new_mmap The structure to duplicate into. + * @param old_mmap The mmap to duplicate. + * @param p The pool to use for new_mmap. + * @param transfer_ownership DEPRECATED: this param is now ignored + * and should be removed prior to APR 1.0 + */ +APR_DECLARE(apr_status_t) apr_mmap_dup(apr_mmap_t **new_mmap, + apr_mmap_t *old_mmap, + apr_pool_t *p, + int transfer_ownership); + +#if defined(DOXYGEN) +/** + * Transfer the specified MMAP to a different pool + * @param new_mmap The structure to duplicate into. + * @param old_mmap The file to transfer. + * @param p The pool to use for new_mmap. + * @deprecated Just use apr_mmap_dup(). The transfer_ownership flag will + * go away soon anyway. + */ +APR_DECLARE(apr_status_t) apr_mmap_setaside(apr_mmap_t **new_mmap, + apr_mmap_t *old_mmap, + apr_pool_t *p); +#else +#define apr_mmap_setaside(new_mmap, old_mmap, p) apr_mmap_dup(new_mmap, old_mmap, p, 1) +#endif /* DOXYGEN */ + +/** + * Remove a mmap'ed. + * @param mm The mmap'ed file. + */ +APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm); + +/** + * Move the pointer into the mmap'ed file to the specified offset. + * @param addr The pointer to the offset specified. + * @param mm The mmap'ed file. + * @param offset The offset to move to. + */ +APR_DECLARE(apr_status_t) apr_mmap_offset(void **addr, apr_mmap_t *mm, + apr_off_t offset); + +#endif /* APR_HAS_MMAP */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_MMAP_H */ diff --git a/rubbos/app/apache2/include/apr_network_io.h b/rubbos/app/apache2/include/apr_network_io.h new file mode 100644 index 00000000..2bc6ef1e --- /dev/null +++ b/rubbos/app/apache2/include/apr_network_io.h @@ -0,0 +1,845 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_NETWORK_IO_H +#define APR_NETWORK_IO_H +/** + * @file apr_network_io.h + * @brief APR Network library + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_file_io.h" +#include "apr_errno.h" +#include "apr_inherit.h" + +#if APR_HAVE_NETINET_IN_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_network_io Network Routines + * @ingroup APR + * @{ + */ + +#ifndef APR_MAX_SECS_TO_LINGER +/** Maximum seconds to linger */ +#define APR_MAX_SECS_TO_LINGER 30 +#endif + +#ifndef MAX_SECS_TO_LINGER +/** @deprecated @see APR_MAX_SECS_TO_LINGER */ +#define MAX_SECS_TO_LINGER APR_MAX_SECS_TO_LINGER +#endif + +#ifndef APRMAXHOSTLEN +/** Maximum hostname length */ +#define APRMAXHOSTLEN 256 +#endif + +#ifndef APR_ANYADDR +/** Default 'any' address */ +#define APR_ANYADDR "0.0.0.0" +#endif + +/** + * @defgroup apr_sockopt Socket option definitions + * @{ + */ +#define APR_SO_LINGER 1 /**< Linger */ +#define APR_SO_KEEPALIVE 2 /**< Keepalive */ +#define APR_SO_DEBUG 4 /**< Debug */ +#define APR_SO_NONBLOCK 8 /**< Non-blocking IO */ +#define APR_SO_REUSEADDR 16 /**< Reuse addresses */ +#define APR_SO_TIMEOUT 32 /**< Timeout */ +#define APR_SO_SNDBUF 64 /**< Send buffer */ +#define APR_SO_RCVBUF 128 /**< Receive buffer */ +#define APR_SO_DISCONNECTED 256 /**< Disconnected */ +#define APR_TCP_NODELAY 512 /**< For SCTP sockets, this is mapped + * to STCP_NODELAY internally. + */ +#define APR_TCP_NOPUSH 1024 /**< No push */ +#define APR_RESET_NODELAY 2048 /**< This flag is ONLY set internally + * when we set APR_TCP_NOPUSH with + * APR_TCP_NODELAY set to tell us that + * APR_TCP_NODELAY should be turned on + * again when NOPUSH is turned off + */ +#define APR_INCOMPLETE_READ 4096 /**< Set on non-blocking sockets + * (timeout != 0) on which the + * previous read() did not fill a buffer + * completely. the next apr_socket_recv() + * will first call select()/poll() rather than + * going straight into read(). (Can also + * be set by an application to force a + * select()/poll() call before the next + * read, in cases where the app expects + * that an immediate read would fail.) + */ +#define APR_INCOMPLETE_WRITE 8192 /**< like APR_INCOMPLETE_READ, but for write + * @see APR_INCOMPLETE_READ + */ +#define APR_IPV6_V6ONLY 16384 /**< Don't accept IPv4 connections on an + * IPv6 listening socket. + */ + +/** @} */ + +/** Define what type of socket shutdown should occur. */ +typedef enum { + APR_SHUTDOWN_READ, /**< no longer allow read request */ + APR_SHUTDOWN_WRITE, /**< no longer allow write requests */ + APR_SHUTDOWN_READWRITE /**< no longer allow read or write requests */ +} apr_shutdown_how_e; + +#define APR_IPV4_ADDR_OK 0x01 /**< @see apr_sockaddr_info_get() */ +#define APR_IPV6_ADDR_OK 0x02 /**< @see apr_sockaddr_info_get() */ + +#if (!APR_HAVE_IN_ADDR) +/** + * We need to make sure we always have an in_addr type, so APR will just + * define it ourselves, if the platform doesn't provide it. + */ +struct in_addr { + apr_uint32_t s_addr; /**< storage to hold the IP# */ +}; +#endif + +/** + * @def APR_INET + * Not all platforms have these defined, so we'll define them here + * The default values come from FreeBSD 4.1.1 + */ +#define APR_INET AF_INET +/** @def APR_UNSPEC + * Let the system decide which address family to use + */ +#ifdef AF_UNSPEC +#define APR_UNSPEC AF_UNSPEC +#else +#define APR_UNSPEC 0 +#endif +#if APR_HAVE_IPV6 +#define APR_INET6 AF_INET6 +#endif + +/** + * @defgroup IP_Proto IP Protocol Definitions for use when creating sockets + * @{ + */ +#define APR_PROTO_TCP 6 /**< TCP */ +#define APR_PROTO_UDP 17 /**< UDP */ +#define APR_PROTO_SCTP 132 /**< SCTP */ +/** @} */ + +/** + * Enum to tell us if we're interested in remote or local socket + */ +typedef enum { + APR_LOCAL, + APR_REMOTE +} apr_interface_e; + +/** + * The specific declaration of inet_addr's ... some platforms fall back + * inet_network (this is not good, but necessary) + */ + +#if APR_HAVE_INET_ADDR +#define apr_inet_addr inet_addr +#elif APR_HAVE_INET_NETWORK /* only DGUX, as far as I know */ +/** + * @warning + * not generally safe... inet_network() and inet_addr() perform + * different functions */ +#define apr_inet_addr inet_network +#endif + +/** A structure to represent sockets */ +typedef struct apr_socket_t apr_socket_t; +/** + * A structure to encapsulate headers and trailers for apr_socket_sendfile + */ +typedef struct apr_hdtr_t apr_hdtr_t; +/** A structure to represent in_addr */ +typedef struct in_addr apr_in_addr_t; +/** A structure to represent an IP subnet */ +typedef struct apr_ipsubnet_t apr_ipsubnet_t; + +/** @remark use apr_uint16_t just in case some system has a short that isn't 16 bits... */ +typedef apr_uint16_t apr_port_t; + +/** @remark It's defined here as I think it should all be platform safe... + * @see apr_sockaddr_t + */ +typedef struct apr_sockaddr_t apr_sockaddr_t; +/** + * APRs socket address type, used to ensure protocol independence + */ +struct apr_sockaddr_t { + /** The pool to use... */ + apr_pool_t *pool; + /** The hostname */ + char *hostname; + /** Either a string of the port number or the service name for the port */ + char *servname; + /** The numeric port */ + apr_port_t port; + /** The family */ + apr_int32_t family; + /** Union of either IPv4 or IPv6 sockaddr. */ + union { + /** IPv4 sockaddr structure */ + struct sockaddr_in sin; +#if APR_HAVE_IPV6 + /** IPv6 sockaddr structure */ + struct sockaddr_in6 sin6; +#endif + } sa; + /** How big is the sockaddr we're using? */ + apr_socklen_t salen; + /** How big is the ip address structure we're using? */ + int ipaddr_len; + /** How big should the address buffer be? 16 for v4 or 46 for v6 + * used in inet_ntop... */ + int addr_str_len; + /** This points to the IP address structure within the appropriate + * sockaddr structure. */ + void *ipaddr_ptr; + /** If multiple addresses were found by apr_sockaddr_info_get(), this + * points to a representation of the next address. */ + apr_sockaddr_t *next; +}; + +#if APR_HAS_SENDFILE +/** + * Support reusing the socket on platforms which support it (from disconnect, + * specifically Win32. + * @remark Optional flag passed into apr_socket_sendfile() + */ +#define APR_SENDFILE_DISCONNECT_SOCKET 1 +#endif + +/** A structure to encapsulate headers and trailers for apr_socket_sendfile */ +struct apr_hdtr_t { + /** An iovec to store the headers sent before the file. */ + struct iovec* headers; + /** number of headers in the iovec */ + int numheaders; + /** An iovec to store the trailers sent after the file. */ + struct iovec* trailers; + /** number of trailers in the iovec */ + int numtrailers; +}; + +/* function definitions */ + +/** + * Create a socket. + * @remark With APR 1.0, this function follows the prototype + * of apr_socket_create_ex. + * @param new_sock The new socket that has been set up. + * @param family The address family of the socket (e.g., APR_INET). + * @param type The type of the socket (e.g., SOCK_STREAM). + * @param cont The pool to use + */ +APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new_sock, + int family, int type, + apr_pool_t *cont); + +/** + * Create a socket. + * @remark With APR 1.0, this function is deprecated and apr_socket_create + * follows this prototype. + * @param new_sock The new socket that has been set up. + * @param family The address family of the socket (e.g., APR_INET). + * @param type The type of the socket (e.g., SOCK_STREAM). + * @param protocol The protocol of the socket (e.g., APR_PROTO_TCP). + * @param cont The pool to use + */ +APR_DECLARE(apr_status_t) apr_socket_create_ex(apr_socket_t **new_sock, + int family, int type, + int protocol, + apr_pool_t *cont); + +/** + * Shutdown either reading, writing, or both sides of a socket. + * @param thesocket The socket to close + * @param how How to shutdown the socket. One of: + *
    + *            APR_SHUTDOWN_READ         no longer allow read requests
    + *            APR_SHUTDOWN_WRITE        no longer allow write requests
    + *            APR_SHUTDOWN_READWRITE    no longer allow read or write requests 
    + * 
    + * @see apr_shutdown_how_e + * @remark This does not actually close the socket descriptor, it just + * controls which calls are still valid on the socket. + */ +APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket, + apr_shutdown_how_e how); + +/** @deprecated @see apr_socket_shutdown */ +APR_DECLARE(apr_status_t) apr_shutdown(apr_socket_t *thesocket, + apr_shutdown_how_e how); + +/** + * Close a socket. + * @param thesocket The socket to close + */ +APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket); + +/** + * Bind the socket to its associated port + * @param sock The socket to bind + * @param sa The socket address to bind to + * @remark This may be where we will find out if there is any other process + * using the selected port. + */ +APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, + apr_sockaddr_t *sa); + +/** @deprecated @see apr_socket_bind */ +APR_DECLARE(apr_status_t) apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa); + +/** + * Listen to a bound socket for connections. + * @param sock The socket to listen on + * @param backlog The number of outstanding connections allowed in the sockets + * listen queue. If this value is less than zero, the listen + * queue size is set to zero. + */ +APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, + apr_int32_t backlog); + +/** @deprecated @see apr_socket_listen */ +APR_DECLARE(apr_status_t) apr_listen(apr_socket_t *sock, apr_int32_t backlog); + +/** + * Accept a new connection request + * @param new_sock A copy of the socket that is connected to the socket that + * made the connection request. This is the socket which should + * be used for all future communication. + * @param sock The socket we are listening on. + * @param connection_pool The pool for the new socket. + */ +APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new_sock, + apr_socket_t *sock, + apr_pool_t *connection_pool); + +/** @deprecated @see apr_socket_accept */ +APR_DECLARE(apr_status_t) apr_accept(apr_socket_t **new_sock, + apr_socket_t *sock, + apr_pool_t *connection_pool); + +/** + * Issue a connection request to a socket either on the same machine + * or a different one. + * @param sock The socket we wish to use for our side of the connection + * @param sa The address of the machine we wish to connect to. If NULL, + * APR assumes that the sockaddr_in in the apr_socket is + * completely filled out. + */ +APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, + apr_sockaddr_t *sa); + +/** @deprecated @see apr_socket_connect */ +APR_DECLARE(apr_status_t) apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa); + +/** + * Create apr_sockaddr_t from hostname, address family, and port. + * @param sa The new apr_sockaddr_t. + * @param hostname The hostname or numeric address string to resolve/parse, or + * NULL to build an address that corresponds to 0.0.0.0 or :: + * @param family The address family to use, or APR_UNSPEC if the system should + * decide. + * @param port The port number. + * @param flags Special processing flags: + *
    + *       APR_IPV4_ADDR_OK          first query for IPv4 addresses; only look
    + *                                 for IPv6 addresses if the first query failed;
    + *                                 only valid if family is APR_UNSPEC and hostname
    + *                                 isn't NULL; mutually exclusive with
    + *                                 APR_IPV6_ADDR_OK
    + *       APR_IPV6_ADDR_OK          first query for IPv6 addresses; only look
    + *                                 for IPv4 addresses if the first query failed;
    + *                                 only valid if family is APR_UNSPEC and hostname
    + *                                 isn't NULL and APR_HAVE_IPV6; mutually exclusive
    + *                                 with APR_IPV4_ADDR_OK
    + * 
    + * @param p The pool for the apr_sockaddr_t and associated storage. + */ +APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa, + const char *hostname, + apr_int32_t family, + apr_port_t port, + apr_int32_t flags, + apr_pool_t *p); + +/** + * Look up the host name from an apr_sockaddr_t. + * @param hostname The hostname. + * @param sa The apr_sockaddr_t. + * @param flags Special processing flags. + */ +APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, + apr_sockaddr_t *sa, + apr_int32_t flags); + +/** + * Parse hostname/IP address with scope id and port. + * + * Any of the following strings are accepted: + * 8080 (just the port number) + * www.apache.org (just the hostname) + * www.apache.org:8080 (hostname and port number) + * [fe80::1]:80 (IPv6 numeric address string only) + * [fe80::1%eth0] (IPv6 numeric address string and scope id) + * + * Invalid strings: + * (empty string) + * [abc] (not valid IPv6 numeric address string) + * abc:65536 (invalid port number) + * + * @param addr The new buffer containing just the hostname. On output, *addr + * will be NULL if no hostname/IP address was specfied. + * @param scope_id The new buffer containing just the scope id. On output, + * *scope_id will be NULL if no scope id was specified. + * @param port The port number. On output, *port will be 0 if no port was + * specified. + * ### FIXME: 0 is a legal port (per RFC 1700). this should + * ### return something besides zero if the port is missing. + * @param str The input string to be parsed. + * @param p The pool from which *addr and *scope_id are allocated. + * @remark If scope id shouldn't be allowed, check for scope_id != NULL in + * addition to checking the return code. If addr/hostname should be + * required, check for addr == NULL in addition to checking the + * return code. + */ +APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, + char **scope_id, + apr_port_t *port, + const char *str, + apr_pool_t *p); + +/** + * Get name of the current machine + * @param buf A buffer to store the hostname in. + * @param len The maximum length of the hostname that can be stored in the + * buffer provided. The suggested length is APRMAXHOSTLEN + 1. + * @param cont The pool to use. + * @remark If the buffer was not large enough, an error will be returned. + */ +APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len, apr_pool_t *cont); + +/** + * Return the data associated with the current socket + * @param data The user data associated with the socket. + * @param key The key to associate with the user data. + * @param sock The currently open socket. + */ +APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, + apr_socket_t *sock); + +/** + * Set the data associated with the current socket. + * @param sock The currently open socket. + * @param data The user data to associate with the socket. + * @param key The key to associate with the data. + * @param cleanup The cleanup to call when the socket is destroyed. + */ +APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data, + const char *key, + apr_status_t (*cleanup)(void*)); + +/** + * Send data over a network. + * @param sock The socket to send the data over. + * @param buf The buffer which contains the data to be sent. + * @param len On entry, the number of bytes to send; on exit, the number + * of bytes sent. + * @remark + *
    + * This functions acts like a blocking write by default.  To change 
    + * this behavior, use apr_socket_timeout_set().
    + *
    + * It is possible for both bytes to be sent and an error to be returned.
    + *
    + * APR_EINTR is never returned.
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, + apr_size_t *len); + +/** @deprecated @see apr_socket_send */ +APR_DECLARE(apr_status_t) apr_send(apr_socket_t *sock, const char *buf, + apr_size_t *len); + +/** + * Send multiple packets of data over a network. + * @param sock The socket to send the data over. + * @param vec The array of iovec structs containing the data to send + * @param nvec The number of iovec structs in the array + * @param len Receives the number of bytes actually written + * @remark + *
    + * This functions acts like a blocking write by default.  To change 
    + * this behavior, use apr_socket_timeout_set().
    + * The number of bytes actually sent is stored in argument 3.
    + *
    + * It is possible for both bytes to be sent and an error to be returned.
    + *
    + * APR_EINTR is never returned.
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, + const struct iovec *vec, + apr_int32_t nvec, apr_size_t *len); + +/** @deprecated @see apr_socket_sendv */ +APR_DECLARE(apr_status_t) apr_sendv(apr_socket_t *sock, + const struct iovec *vec, + apr_int32_t nvec, apr_size_t *len); + +/** + * @param sock The socket to send from + * @param where The apr_sockaddr_t describing where to send the data + * @param flags The flags to use + * @param buf The data to send + * @param len The length of the data to send + */ +APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, + apr_sockaddr_t *where, + apr_int32_t flags, const char *buf, + apr_size_t *len); + +/** @deprecated @see apr_socket_sendto */ +APR_DECLARE(apr_status_t) apr_sendto(apr_socket_t *sock, apr_sockaddr_t *where, + apr_int32_t flags, const char *buf, + apr_size_t *len); + +/** + * @param from The apr_sockaddr_t to fill in the recipient info + * @param sock The socket to use + * @param flags The flags to use + * @param buf The buffer to use + * @param len The length of the available buffer + */ + +APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, + apr_socket_t *sock, + apr_int32_t flags, char *buf, + apr_size_t *len); + +/** @deprecated @see apr_socket_recvfrom */ +APR_DECLARE(apr_status_t) apr_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, + apr_int32_t flags, char *buf, + apr_size_t *len); + +#if APR_HAS_SENDFILE || defined(DOXYGEN) + +/** + * Send a file from an open file descriptor to a socket, along with + * optional headers and trailers + * @param sock The socket to which we're writing + * @param file The open file from which to read + * @param hdtr A structure containing the headers and trailers to send + * @param offset Offset into the file where we should begin writing + * @param len (input) - Number of bytes to send from the file + * (output) - Number of bytes actually sent, + * including headers, file, and trailers + * @param flags APR flags that are mapped to OS specific flags + * @remark This functions acts like a blocking write by default. To change + * this behavior, use apr_socket_timeout_set(). + * The number of bytes actually sent is stored in argument 5. + */ +APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, + apr_file_t *file, + apr_hdtr_t *hdtr, + apr_off_t *offset, + apr_size_t *len, + apr_int32_t flags); + +/** @deprecated @see apr_socket_sendfile */ +APR_DECLARE(apr_status_t) apr_sendfile(apr_socket_t *sock, apr_file_t *file, + apr_hdtr_t *hdtr, apr_off_t *offset, + apr_size_t *len, apr_int32_t flags); + +#endif /* APR_HAS_SENDFILE */ + +/** + * Read data from a network. + * @param sock The socket to read the data from. + * @param buf The buffer to store the data in. + * @param len On entry, the number of bytes to receive; on exit, the number + * of bytes received. + * @remark + *
    + * This functions acts like a blocking read by default.  To change 
    + * this behavior, use apr_socket_timeout_set().
    + * The number of bytes actually sent is stored in argument 3.
    + *
    + * It is possible for both bytes to be received and an APR_EOF or
    + * other error to be returned.
    + *
    + * APR_EINTR is never returned.
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, + char *buf, apr_size_t *len); + +/** @deprecated @see apr_socket_recv */ +APR_DECLARE(apr_status_t) apr_recv(apr_socket_t *sock, + char *buf, apr_size_t *len); + +/** + * Setup socket options for the specified socket + * @param sock The socket to set up. + * @param opt The option we would like to configure. One of: + *
    + *            APR_SO_DEBUG      --  turn on debugging information 
    + *            APR_SO_KEEPALIVE  --  keep connections active
    + *            APR_SO_LINGER     --  lingers on close if data is present
    + *            APR_SO_NONBLOCK   --  Turns blocking on/off for socket
    + *            APR_SO_REUSEADDR  --  The rules used in validating addresses
    + *                                  supplied to bind should allow reuse
    + *                                  of local addresses.
    + *            APR_SO_SNDBUF     --  Set the SendBufferSize
    + *            APR_SO_RCVBUF     --  Set the ReceiveBufferSize
    + * 
    + * @param on Value for the option. + */ +APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, + apr_int32_t opt, apr_int32_t on); + +/** @deprecated @see apr_socket_opt_set */ +APR_DECLARE(apr_status_t) apr_setsocketopt(apr_socket_t *sock, + apr_int32_t opt, apr_int32_t on); + +/** + * Setup socket timeout for the specified socket + * @param sock The socket to set up. + * @param t Value for the timeout. + *
    + *   t > 0  -- read and write calls return APR_TIMEUP if specified time
    + *             elapsess with no data read or written
    + *   t == 0 -- read and write calls never block
    + *   t < 0  -- read and write calls block
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, + apr_interval_time_t t); + +/** + * Query socket options for the specified socket + * @param sock The socket to query + * @param opt The option we would like to query. One of: + *
    + *            APR_SO_DEBUG      --  turn on debugging information 
    + *            APR_SO_KEEPALIVE  --  keep connections active
    + *            APR_SO_LINGER     --  lingers on close if data is present
    + *            APR_SO_NONBLOCK   --  Turns blocking on/off for socket
    + *            APR_SO_REUSEADDR  --  The rules used in validating addresses
    + *                                  supplied to bind should allow reuse
    + *                                  of local addresses.
    + *            APR_SO_SNDBUF     --  Set the SendBufferSize
    + *            APR_SO_RCVBUF     --  Set the ReceiveBufferSize
    + *            APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
    + *                                  (Currently only used on Windows)
    + * 
    + * @param on Socket option returned on the call. + */ +APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, + apr_int32_t opt, apr_int32_t *on); + +/** @deprecated @see apr_socket_opt_set */ +APR_DECLARE(apr_status_t) apr_getsocketopt(apr_socket_t *sock, + apr_int32_t opt, apr_int32_t *on); + +/** + * Query socket timeout for the specified socket + * @param sock The socket to query + * @param t Socket timeout returned from the query. + */ +APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, + apr_interval_time_t *t); + +/** + * Query the specified socket if at the OOB/Urgent data mark + * @param sock The socket to query + * @param atmark Is set to true if socket is at the OOB/urgent mark, + * otherwise is set to false. + */ +APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, + int *atmark); + +/** + * Return an apr_sockaddr_t from an apr_socket_t + * @param sa The returned apr_sockaddr_t. + * @param which Which interface do we want the apr_sockaddr_t for? + * @param sock The socket to use + */ +APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa, + apr_interface_e which, + apr_socket_t *sock); + +/** + * Set the port in an APR socket address. + * @param sockaddr The socket address to set. + * @param port The port to be stored in the socket address. + * @deprecated @see apr_sockaddr_info_get + */ +APR_DECLARE(apr_status_t) apr_sockaddr_port_set(apr_sockaddr_t *sockaddr, + apr_port_t port); + +/** + * Return the port in an APR socket address. + * @param port The port from the socket address. + * @param sockaddr The socket address to reference. + * @deprecated Access port field directly. + */ +APR_DECLARE(apr_status_t) apr_sockaddr_port_get(apr_port_t *port, + apr_sockaddr_t *sockaddr); + +/** + * Set the IP address in an APR socket address. + * @param sockaddr The socket address to use + * @param addr The IP address to attach to the socket. + * Use APR_ANYADDR to use any IP addr on the machine. + * @deprecated @see apr_sockaddr_info_get + */ +APR_DECLARE(apr_status_t) apr_sockaddr_ip_set(apr_sockaddr_t *sockaddr, + const char *addr); + +/** + * Return the IP address (in numeric address string format) in + * an APR socket address. APR will allocate storage for the IP address + * string from the pool of the apr_sockaddr_t. + * @param addr The IP address. + * @param sockaddr The socket address to reference. + */ +APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, + apr_sockaddr_t *sockaddr); + +/** + * See if the IP addresses in two APR socket addresses are + * equivalent. Appropriate logic is present for comparing + * IPv4-mapped IPv6 addresses with IPv4 addresses. + * + * @param addr1 One of the APR socket addresses. + * @param addr2 The other APR socket address. + * @remark The return value will be non-zero if the addresses + * are equivalent. + */ +APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1, + const apr_sockaddr_t *addr2); + + +#if APR_FILES_AS_SOCKETS || defined(DOXYGEN) + +/** + * Convert a File type to a socket so that it can be used in a poll operation. + * @param newsock the newly created socket which represents a file. + * @param file the file to mask as a socket. + * @warning This is not available on all platforms. Platforms that have the + * ability to poll files for data to be read/written/exceptions will + * have the APR_FILES_AS_SOCKETS macro defined as true. + * @deprecated This function has been deprecated, because of the new poll + * implementation. + */ +APR_DECLARE(apr_status_t) apr_socket_from_file(apr_socket_t **newsock, + apr_file_t *file); + +#endif /* APR_FILES_AS_SOCKETS */ + +/** + * Given an apr_sockaddr_t and a service name, set the port for the service + * @param sockaddr The apr_sockaddr_t that will have its port set + * @param servname The name of the service you wish to use + */ +APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, + const char *servname); +/** + * Build an ip-subnet representation from an IP address and optional netmask or + * number-of-bits. + * @param ipsub The new ip-subnet representation + * @param ipstr The input IP address string + * @param mask_or_numbits The input netmask or number-of-bits string, or NULL + * @param p The pool to allocate from + */ +APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, + const char *ipstr, + const char *mask_or_numbits, + apr_pool_t *p); + +/** + * Test the IP address in an apr_sockaddr_t against a pre-built ip-subnet + * representation. + * @param ipsub The ip-subnet representation + * @param sa The socket address to test + * @return non-zero if the socket address is within the subnet, 0 otherwise + */ +APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa); + +#if APR_HAS_SO_ACCEPTFILTER || defined(DOXYGEN) +/** + * Set an OS level accept filter. + * @param sock The socket to put the accept filter on. + * @param name The accept filter + * @param args Any extra args to the accept filter. Passing NULL here removes + * the accept filter. + */ +apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name, + char *args); +#endif + +/** + * Return the protocol of the socket. + * @param sock The socket to query. + * @param protocol The returned protocol (e.g., APR_PROTO_TCP). + */ +APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock, + int *protocol); + +/** + * Set a socket to be inherited by child processes. + */ +APR_DECLARE_INHERIT_SET(socket); + +/** @deprecated @see apr_socket_inherit_set */ +APR_DECLARE(void) apr_socket_set_inherit(apr_socket_t *skt); + +/** + * Unset a socket from being inherited by child processes. + */ +APR_DECLARE_INHERIT_UNSET(socket); + +/** @deprecated @see apr_socket_inherit_unset */ +APR_DECLARE(void) apr_socket_unset_inherit(apr_socket_t *skt); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_NETWORK_IO_H */ + diff --git a/rubbos/app/apache2/include/apr_optional.h b/rubbos/app/apache2/include/apr_optional.h new file mode 100644 index 00000000..32e2ac3c --- /dev/null +++ b/rubbos/app/apache2/include/apr_optional.h @@ -0,0 +1,99 @@ +/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_OPTIONAL_H +#define APR_OPTIONAL_H + +#include "apu.h" +/** + * @file apr_optional.h + * @brief APR-UTIL registration of functions exported by modules + */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup APR_Util_Opt Optional Functions + * @ingroup APR_Util + * + * Typesafe registration and retrieval of functions that may not be present + * (i.e. functions exported by optional modules) + * @{ + */ + +/** + * The type of an optional function. + * @param name The name of the function + */ +#define APR_OPTIONAL_FN_TYPE(name) apr_OFN_##name##_t + +/** + * Declare an optional function. + * @param ret The return type of the function + * @param name The name of the function + * @param args The function arguments (including brackets) + */ +#define APR_DECLARE_OPTIONAL_FN(ret,name,args) \ +typedef ret (APR_OPTIONAL_FN_TYPE(name)) args + +/** + * XXX: This doesn't belong here, then! + * Private function! DO NOT USE! + * @internal + */ + +typedef void (apr_opt_fn_t)(void); +/** @internal */ +APU_DECLARE_NONSTD(void) apr_dynamic_fn_register(const char *szName, + apr_opt_fn_t *pfn); + +/** @internal deprecated function, see apr_dynamic_fn_register */ +APU_DECLARE_NONSTD(void) apr_register_optional_fn(const char *szName, + apr_opt_fn_t *pfn); + +/** + * Register an optional function. This can be later retrieved, type-safely, by + * name. Like all global functions, the name must be unique. Note that, + * confusingly but correctly, the function itself can be static! + * @param name The name of the function + */ +#define APR_REGISTER_OPTIONAL_FN(name) do { \ + APR_OPTIONAL_FN_TYPE(name) *apu__opt = name; \ + apr_dynamic_fn_register(#name,(apr_opt_fn_t *)apu__opt); \ +} while (0) + +/** @internal + * Private function! DO NOT USE! + */ +APU_DECLARE(apr_opt_fn_t *) apr_dynamic_fn_retrieve(const char *szName); + +/** @internal deprecated function, see apr_dynamic_fn_retrieve */ +APU_DECLARE(apr_opt_fn_t *) apr_retrieve_optional_fn(const char *szName); + +/** + * Retrieve an optional function. Returns NULL if the function is not present. + * @param name The name of the function + */ +#define APR_RETRIEVE_OPTIONAL_FN(name) \ + (APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name) + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* APR_OPTIONAL_H */ diff --git a/rubbos/app/apache2/include/apr_optional_hooks.h b/rubbos/app/apache2/include/apr_optional_hooks.h new file mode 100644 index 00000000..7d01ab00 --- /dev/null +++ b/rubbos/app/apache2/include/apr_optional_hooks.h @@ -0,0 +1,117 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file apr_optional_hooks.h + * @brief Apache optional hook functions + */ + + +#ifndef APR_OPTIONAL_HOOK_H +#define APR_OPTIONAL_HOOK_H + +#include "apr_tables.h" + +#ifdef __cplusplus +extern "C" { +#endif +/** + * @defgroup APR_Util_OPT_HOOK Optional Hook Functions + * @ingroup APR_Util_Hook + * @{ + */ +/** + * Function to implemnt the APR_OPTIONAL_HOOK Macro + * @internal + * @see APR_OPTIONAL_HOOK + * + * @param name The name of the hook + * @param pfn A pointer to a function that will be called + * @param aszPre a NULL-terminated array of strings that name modules whose hooks should precede this one + * @param aszSucc a NULL-terminated array of strings that name modules whose hooks should succeed this one + * @param nOrder an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) + */ + + +APU_DECLARE(void) apr_optional_hook_add(const char *szName,void (*pfn)(void), + const char * const *aszPre, + const char * const *aszSucc, + int nOrder); + +/** + * Hook to an optional hook. + * + * @param ns The namespace prefix of the hook functions + * @param name The name of the hook + * @param pfn A pointer to a function that will be called + * @param aszPre a NULL-terminated array of strings that name modules whose hooks should precede this one + * @param aszSucc a NULL-terminated array of strings that name modules whose hooks should succeed this one + * @param nOrder an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) + */ + +#define APR_OPTIONAL_HOOK(ns,name,pfn,aszPre,aszSucc,nOrder) do { \ + ns##_HOOK_##name##_t *apu__hook = pfn; \ + apr_optional_hook_add(#name,(void (*)(void))apu__hook,aszPre, aszSucc, nOrder); \ +} while (0) + +/** + * @internal + * @param szName - the name of the function + * @return the hook structure for a given hook + */ +APU_DECLARE(apr_array_header_t *) apr_optional_hook_get(const char *szName); + +/** + * Implement an optional hook that runs until one of the functions + * returns something other than OK or DECLINE. + * + * @param ns The namespace prefix of the hook functions + * @param link The linkage declaration prefix of the hook + * @param ret The type of the return value of the hook + * @param ret The type of the return value of the hook + * @param name The name of the hook + * @param args_decl The declaration of the arguments for the hook + * @param args_use The names for the arguments for the hook + * @param ok Success value + * @param decline Decline value + */ +#define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \ +link##_DECLARE(ret) ns##_run_##name args_decl \ + { \ + ns##_LINK_##name##_t *pHook; \ + int n; \ + ret rv; \ + apr_array_header_t *pHookArray=apr_optional_hook_get(#name); \ +\ + if(!pHookArray) \ + return ok; \ +\ + pHook=(ns##_LINK_##name##_t *)pHookArray->elts; \ + for(n=0 ; n < pHookArray->nelts ; ++n) \ + { \ + rv=(pHook[n].pFunc)args_use; \ +\ + if(rv != ok && rv != decline) \ + return rv; \ + } \ + return ok; \ + } + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* APR_OPTIONAL_HOOK_H */ diff --git a/rubbos/app/apache2/include/apr_poll.h b/rubbos/app/apache2/include/apr_poll.h new file mode 100644 index 00000000..d71cc3a1 --- /dev/null +++ b/rubbos/app/apache2/include/apr_poll.h @@ -0,0 +1,253 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_POLL_H +#define APR_POLL_H +/** + * @file apr_poll.h + * @brief APR Poll interface + */ +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" +#include "apr_inherit.h" +#include "apr_file_io.h" +#include "apr_network_io.h" + +#if APR_HAVE_NETINET_IN_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_poll Poll Routines + * @ingroup APR + * @{ + */ + +/** + * @defgroup apr_poll_opt Poll options + * @{ + */ +#define APR_POLLIN 0x001 /**< Can read without blocking */ +#define APR_POLLPRI 0x002 /**< Priority data available */ +#define APR_POLLOUT 0x004 /**< Can write without blocking */ +#define APR_POLLERR 0x010 /**< Pending error */ +#define APR_POLLHUP 0x020 /**< Hangup occurred */ +#define APR_POLLNVAL 0x040 /**< Descriptior invalid */ +/** @} */ + +/** Used in apr_pollfd_t to determine what the apr_descriptor is */ +typedef enum { + APR_NO_DESC, /**< nothing here */ + APR_POLL_SOCKET, /**< descriptor refers to a socket */ + APR_POLL_FILE, /**< descriptor refers to a file */ + APR_POLL_LASTDESC /**< descriptor is the last one in the list */ +} apr_datatype_e ; + +/** Union of either an APR file or socket. */ +typedef union { + apr_file_t *f; /**< file */ + apr_socket_t *s; /**< socket */ +} apr_descriptor; + +/** @see apr_pollfd_t */ +typedef struct apr_pollfd_t apr_pollfd_t; + +/** Poll descriptor set. */ +struct apr_pollfd_t { + apr_pool_t *p; /**< associated pool */ + apr_datatype_e desc_type; /**< descriptor type */ + apr_int16_t reqevents; /**< requested events */ + apr_int16_t rtnevents; /**< returned events */ + apr_descriptor desc; /**< @see apr_descriptor */ + void *client_data; /**< allows app to associate context */ +}; + +/** + * Setup the memory required for poll to operate properly + * @param new_poll The poll structure to be used. + * @param num The number of socket descriptors to be polled. + * @param cont The pool to operate on. + * @deprecated This function is deprecated, APR applications should control the pollset memory themselves. + */ +APR_DECLARE(apr_status_t) apr_poll_setup(apr_pollfd_t **new_poll, + apr_int32_t num, + apr_pool_t *cont); + +/** + * Poll the sockets in the poll structure + * @param aprset The poll structure we will be using. + * @param numsock The number of sockets we are polling + * @param nsds The number of sockets signalled. + * @param timeout The amount of time in microseconds to wait. This is + * a maximum, not a minimum. If a socket is signalled, we + * will wake up before this time. A negative number means + * wait until a socket is signalled. + * @remark + *
    + * The number of sockets signalled is returned in the second argument. 
    + *
    + *        This is a blocking call, and it will not return until either a 
    + *        socket has been signalled, or the timeout has expired. 
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t numsock, + apr_int32_t *nsds, + apr_interval_time_t timeout); + +/** + * Add a socket to the poll structure. + * @param aprset The poll structure we will be using. + * @param sock The socket to add to the current poll structure. + * @param event The events to look for when we do the poll. One of: + *
    + *            APR_POLLIN       signal if read will not block
    + *            APR_POLLPRI      signal if prioirty data is availble to be read
    + *            APR_POLLOUT      signal if write will not block
    + * 
    + * @deprecated This function is deprecated, APR applications should control the pollset memory themselves. + */ +APR_DECLARE(apr_status_t) apr_poll_socket_add(apr_pollfd_t *aprset, + apr_socket_t *sock, + apr_int16_t event); + +/** + * Modify a socket in the poll structure with mask. + * @param aprset The poll structure we will be using. + * @param sock The socket to modify in poll structure. + * @param events The events to stop looking for during the poll. One of: + *
    + *            APR_POLLIN       signal if read will not block
    + *            APR_POLLPRI      signal if priority data is available to be read
    + *            APR_POLLOUT      signal if write will not block
    + * 
    + * @deprecated This function is deprecated, APR applications should control the pollset memory themselves. + */ +APR_DECLARE(apr_status_t) apr_poll_socket_mask(apr_pollfd_t *aprset, + apr_socket_t *sock, + apr_int16_t events); +/** + * Remove a socket from the poll structure. + * @param aprset The poll structure we will be using. + * @param sock The socket to remove from the current poll structure. + * @deprecated This function is deprecated, APR applications should control the pollset memory themselves. + */ +APR_DECLARE(apr_status_t) apr_poll_socket_remove(apr_pollfd_t *aprset, + apr_socket_t *sock); + +/** + * Clear all events in the poll structure. + * @param aprset The poll structure we will be using. + * @param events The events to clear from all sockets. One of: + *
    + *            APR_POLLIN       signal if read will not block
    + *            APR_POLLPRI      signal if priority data is available to be read
    + *            APR_POLLOUT      signal if write will not block
    + * 
    + * @deprecated This function is deprecated, APR applications should control the pollset memory themselves. + */ +APR_DECLARE(apr_status_t) apr_poll_socket_clear(apr_pollfd_t *aprset, + apr_int16_t events); + +/** + * Get the return events for the specified socket. + * @param event The returned events for the socket. One of: + *
    + *            APR_POLLIN       Data is available to be read 
    + *            APR_POLLPRI      Priority data is availble to be read
    + *            APR_POLLOUT      Write will succeed
    + *            APR_POLLERR      An error occurred on the socket
    + *            APR_POLLHUP      The connection has been terminated
    + *            APR_POLLNVAL     This is an invalid socket to poll on.
    + *                             Socket not open.
    + * 
    + * @param sock The socket we wish to get information about. + * @param aprset The poll structure we will be using. + * @deprecated This function is deprecated, APR applications should control the pollset memory themselves. + */ +APR_DECLARE(apr_status_t) apr_poll_revents_get(apr_int16_t *event, + apr_socket_t *sock, + apr_pollfd_t *aprset); + +/* General-purpose poll API for arbitrarily large numbers of + * file descriptors + */ + +/** Opaque structure used for pollset API */ +typedef struct apr_pollset_t apr_pollset_t; + +/** + * Setup a pollset object + * @param pollset The pointer in which to return the newly created object + * @param size The maximum number of descriptors that this pollset can hold + * @param p The pool from which to allocate the pollset + * @param flags Optional flags to modify the operation of the pollset + * (reserved for future expansion) + */ +APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, + apr_uint32_t size, + apr_pool_t *p, + apr_uint32_t flags); + +/** + * Destroy a pollset object + * @param pollset The pollset to destroy + */ +APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset); + +/** + * Add a socket or file descriptor to a pollset + * @param pollset The pollset to which to add the descriptor + * @param descriptor The descriptor to add + * @remark If you set client_data in the descriptor, that value + * will be returned in the client_data field whenever this + * descriptor is signalled in apr_pollset_poll(). + */ +APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, + const apr_pollfd_t *descriptor); + +/** + * Remove a descriptor from a pollset + * @param pollset The pollset from which to remove the descriptor + * @param descriptor The descriptor to remove + */ +APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, + const apr_pollfd_t *descriptor); + +/** + * Block for activity on the descriptor(s) in a pollset + * @param pollset The pollset to use + * @param timeout Timeout in microseconds + * @param num Number of signalled descriptors (output parameter) + * @param descriptors Array of signalled descriptors (output parameter) + */ +APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, + apr_interval_time_t timeout, + apr_int32_t *num, + const apr_pollfd_t **descriptors); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_POLL_H */ + diff --git a/rubbos/app/apache2/include/apr_pools.h b/rubbos/app/apache2/include/apr_pools.h new file mode 100644 index 00000000..2f4353f0 --- /dev/null +++ b/rubbos/app/apache2/include/apr_pools.h @@ -0,0 +1,664 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_POOLS_H +#define APR_POOLS_H + +/** + * @file apr_pools.h + * @brief APR memory allocation + * + * Resource allocation routines... + * + * designed so that we don't have to keep track of EVERYTHING so that + * it can be explicitly freed later (a fundamentally unsound strategy --- + * particularly in the presence of die()). + * + * Instead, we maintain pools, and allocate items (both memory and I/O + * handlers) from the pools --- currently there are two, one for per + * transaction info, and one for config info. When a transaction is over, + * we can delete everything in the per-transaction apr_pool_t without fear, + * and without thinking too hard about it either. + */ + +#include "apr.h" +#include "apr_errno.h" +#include "apr_general.h" /* for APR_STRINGIFY */ +#define APR_WANT_MEMFUNC /**< for no good reason? */ +#include "apr_want.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup apr_pools Memory Pool Functions + * @ingroup APR + * @{ + */ + +/** The fundamental pool type */ +typedef struct apr_pool_t apr_pool_t; + + +/** + * Declaration helper macro to construct apr_foo_pool_get()s. + * + * This standardized macro is used by opaque (APR) data types to return + * the apr_pool_t that is associated with the data type. + * + * APR_POOL_DECLARE_ACCESSOR() is used in a header file to declare the + * accessor function. A typical usage and result would be: + *
    + *    APR_POOL_DECLARE_ACCESSOR(file);
    + * becomes:
    + *    APR_DECLARE(apr_pool_t *) apr_file_pool_get(apr_file_t *ob);
    + * 
    + * @remark Doxygen unwraps this macro (via doxygen.conf) to provide + * actual help for each specific occurance of apr_foo_pool_get. + * @remark the linkage is specified for APR. It would be possible to expand + * the macros to support other linkages. + */ +#define APR_POOL_DECLARE_ACCESSOR(type) \ + APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \ + (const apr_##type##_t *the##type) + +/** + * Implementation helper macro to provide apr_foo_pool_get()s. + * + * In the implementation, the APR_POOL_IMPLEMENT_ACCESSOR() is used to + * actually define the function. It assumes the field is named "pool". + */ +#define APR_POOL_IMPLEMENT_ACCESSOR(type) \ + APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \ + (const apr_##type##_t *the##type) \ + { return the##type->pool; } + + +/** + * Pool debug levels + * + *
    + * | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
    + * ---------------------------------
    + * |   |   |   |   |   |   |   | x |  General debug code enabled (usefull in
    + *                                    combination with --with-efence).
    + *
    + * |   |   |   |   |   |   | x |   |  Verbose output on stderr (report
    + *                                    CREATE, CLEAR, DESTROY).
    + *
    + * |   |   |   | x |   |   |   |   |  Verbose output on stderr (report
    + *                                    PALLOC, PCALLOC).
    + *
    + * |   |   |   |   |   | x |   |   |  Lifetime checking. On each use of a
    + *                                    pool, check its lifetime.  If the pool
    + *                                    is out of scope, abort().
    + *                                    In combination with the verbose flag
    + *                                    above, it will output LIFE in such an
    + *                                    event prior to aborting.
    + *
    + * |   |   |   |   | x |   |   |   |  Pool owner checking.  On each use of a
    + *                                    pool, check if the current thread is the
    + *                                    pools owner.  If not, abort().  In
    + *                                    combination with the verbose flag above,
    + *                                    it will output OWNER in such an event
    + *                                    prior to aborting.  Use the debug
    + *                                    function apr_pool_owner_set() to switch
    + *                                    a pools ownership.
    + *
    + * When no debug level was specified, assume general debug mode.
    + * If level 0 was specified, debugging is switched off
    + * 
    + */ +#if defined(APR_POOL_DEBUG) +#if (APR_POOL_DEBUG != 0) && (APR_POOL_DEBUG - 0 == 0) +#undef APR_POOL_DEBUG +#define APR_POOL_DEBUG 1 +#endif +#else +#define APR_POOL_DEBUG 0 +#endif + +/** the place in the code where the particular function was called */ +#define APR_POOL__FILE_LINE__ __FILE__ ":" APR_STRINGIFY(__LINE__) + + + +/** A function that is called when allocation fails. */ +typedef int (*apr_abortfunc_t)(int retcode); + +/* + * APR memory structure manipulators (pools, tables, and arrays). + */ + +/* + * Initialization + */ + +/** + * Setup all of the internal structures required to use pools + * @remark Programs do NOT need to call this directly. APR will call this + * automatically from apr_initialize. + * @internal + */ +APR_DECLARE(apr_status_t) apr_pool_initialize(void); + +/** + * Tear down all of the internal structures required to use pools + * @remark Programs do NOT need to call this directly. APR will call this + * automatically from apr_terminate. + * @internal + */ +APR_DECLARE(void) apr_pool_terminate(void); + + +/* + * Pool creation/destruction + */ + +#include "apr_allocator.h" + +/** + * Create a new pool. + * @param newpool The pool we have just created. + * @param parent The parent pool. If this is NULL, the new pool is a root + * pool. If it is non-NULL, the new pool will inherit all + * of its parent pool's attributes, except the apr_pool_t will + * be a sub-pool. + * @param abort_fn A function to use if the pool cannot allocate more memory. + * @param allocator The allocator to use with the new pool. If NULL the + * allocator of the parent pool will be used. + */ +APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, + apr_pool_t *parent, + apr_abortfunc_t abort_fn, + apr_allocator_t *allocator); + +/** + * Debug version of apr_pool_create_ex. + * @param newpool @see apr_pool_create. + * @param parent @see apr_pool_create. + * @param abort_fn @see apr_pool_create. + * @param allocator @see apr_pool_create. + * @param file_line Where the function is called from. + * This is usually APR_POOL__FILE_LINE__. + * @remark Only available when APR_POOL_DEBUG is defined. + * Call this directly if you have you apr_pool_create_ex + * calls in a wrapper function and wish to override + * the file_line argument to reflect the caller of + * your wrapper function. If you do not have + * apr_pool_create_ex in a wrapper, trust the macro + * and don't call apr_pool_create_ex_debug directly. + */ +APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, + apr_pool_t *parent, + apr_abortfunc_t abort_fn, + apr_allocator_t *allocator, + const char *file_line); + +#if APR_POOL_DEBUG +#define apr_pool_create_ex(newpool, parent, abort_fn, allocator) \ + apr_pool_create_ex_debug(newpool, parent, abort_fn, allocator, \ + APR_POOL__FILE_LINE__) +#endif + +/** + * Create a new pool. + * @param newpool The pool we have just created. + * @param parent The parent pool. If this is NULL, the new pool is a root + * pool. If it is non-NULL, the new pool will inherit all + * of its parent pool's attributes, except the apr_pool_t will + * be a sub-pool. + */ +#if defined(DOXYGEN) +APR_DECLARE(apr_status_t) apr_pool_create(apr_pool_t **newpool, + apr_pool_t *parent); +#else +#if APR_POOL_DEBUG +#define apr_pool_create(newpool, parent) \ + apr_pool_create_ex_debug(newpool, parent, NULL, NULL, \ + APR_POOL__FILE_LINE__) +#else +#define apr_pool_create(newpool, parent) \ + apr_pool_create_ex(newpool, parent, NULL, NULL) +#endif +#endif + +/** @deprecated @see apr_pool_create_ex */ +#if APR_POOL_DEBUG +#define apr_pool_sub_make(newpool, parent, abort_fn) \ + (void)apr_pool_create_ex_debug(newpool, parent, abort_fn, \ + NULL, \ + APR_POOL__FILE_LINE__) +#else +#define apr_pool_sub_make(newpool, parent, abort_fn) \ + (void)apr_pool_create_ex(newpool, parent, abort_fn, NULL) +#endif + +/** + * Find the pools allocator + * @param pool The pool to get the allocator from. + */ +APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool); + +/** + * Clear all memory in the pool and run all the cleanups. This also destroys all + * subpools. + * @param p The pool to clear + * @remark This does not actually free the memory, it just allows the pool + * to re-use this memory for the next allocation. + * @see apr_pool_destroy() + */ +APR_DECLARE(void) apr_pool_clear(apr_pool_t *p); + +/** + * Debug version of apr_pool_clear. + * @param p See: apr_pool_clear. + * @param file_line Where the function is called from. + * This is usually APR_POOL__FILE_LINE__. + * @remark Only available when APR_POOL_DEBUG is defined. + * Call this directly if you have you apr_pool_clear + * calls in a wrapper function and wish to override + * the file_line argument to reflect the caller of + * your wrapper function. If you do not have + * apr_pool_clear in a wrapper, trust the macro + * and don't call apr_pool_destroy_clear directly. + */ +APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p, + const char *file_line); + +#if APR_POOL_DEBUG +#define apr_pool_clear(p) \ + apr_pool_clear_debug(p, APR_POOL__FILE_LINE__) +#endif + +/** + * Destroy the pool. This takes similar action as apr_pool_clear() and then + * frees all the memory. + * @param p The pool to destroy + * @remark This will actually free the memory + */ +APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p); + +/** + * Debug version of apr_pool_destroy. + * @param p See: apr_pool_destroy. + * @param file_line Where the function is called from. + * This is usually APR_POOL__FILE_LINE__. + * @remark Only available when APR_POOL_DEBUG is defined. + * Call this directly if you have you apr_pool_destroy + * calls in a wrapper function and wish to override + * the file_line argument to reflect the caller of + * your wrapper function. If you do not have + * apr_pool_destroy in a wrapper, trust the macro + * and don't call apr_pool_destroy_debug directly. + */ +APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p, + const char *file_line); + +#if APR_POOL_DEBUG +#define apr_pool_destroy(p) \ + apr_pool_destroy_debug(p, APR_POOL__FILE_LINE__) +#endif + + +/* + * Memory allocation + */ + +/** + * Allocate a block of memory from a pool + * @param p The pool to allocate from + * @param size The amount of memory to allocate + * @return The allocated memory + */ +APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size); + +/** + * Debug version of apr_palloc + * @param p See: apr_palloc + * @param size See: apr_palloc + * @param file_line Where the function is called from. + * This is usually APR_POOL__FILE_LINE__. + * @return See: apr_palloc + */ +APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size, + const char *file_line); + +#if APR_POOL_DEBUG +#define apr_palloc(p, size) \ + apr_palloc_debug(p, size, APR_POOL__FILE_LINE__) +#endif + +/** + * Allocate a block of memory from a pool and set all of the memory to 0 + * @param p The pool to allocate from + * @param size The amount of memory to allocate + * @return The allocated memory + */ +#if defined(DOXYGEN) +APR_DECLARE(void *) apr_pcalloc(apr_pool_t *p, apr_size_t size); +#elif !APR_POOL_DEBUG +#define apr_pcalloc(p, size) memset(apr_palloc(p, size), 0, size) +#endif + +/** + * Debug version of apr_pcalloc + * @param p See: apr_pcalloc + * @param size See: apr_pcalloc + * @param file_line Where the function is called from. + * This is usually APR_POOL__FILE_LINE__. + * @return See: apr_pcalloc + */ +APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size, + const char *file_line); + +#if APR_POOL_DEBUG +#define apr_pcalloc(p, size) \ + apr_pcalloc_debug(p, size, APR_POOL__FILE_LINE__) +#endif + + +/* + * Pool Properties + */ + +/** + * Set the function to be called when an allocation failure occurs. + * @remark If the program wants APR to exit on a memory allocation error, + * then this function can be called to set the callback to use (for + * performing cleanup and then exiting). If this function is not called, + * then APR will return an error and expect the calling program to + * deal with the error accordingly. + */ +APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abortfunc, + apr_pool_t *pool); + +/** @deprecated @see apr_pool_abort_set */ +APR_DECLARE(void) apr_pool_set_abort(apr_abortfunc_t abortfunc, + apr_pool_t *pool); + +/** + * Get the abort function associated with the specified pool. + * @param pool The pool for retrieving the abort function. + * @return The abort function for the given pool. + */ +APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool); + +/** @deprecated @see apr_pool_abort_get */ +APR_DECLARE(apr_abortfunc_t) apr_pool_get_abort(apr_pool_t *pool); + +/** + * Get the parent pool of the specified pool. + * @param pool The pool for retrieving the parent pool. + * @return The parent of the given pool. + */ +APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool); + +/** @deprecated @see apr_pool_parent_get */ +APR_DECLARE(apr_pool_t *) apr_pool_get_parent(apr_pool_t *pool); + +/** + * Determine if pool a is an ancestor of pool b + * @param a The pool to search + * @param b The pool to search for + * @return True if a is an ancestor of b, NULL is considered an ancestor + * of all pools. + */ +APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b); + +/** + * Tag a pool (give it a name) + * @param pool The pool to tag + * @param tag The tag + */ +APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag); + + +/* + * User data management + */ + +/** + * Set the data associated with the current pool + * @param data The user data associated with the pool. + * @param key The key to use for association + * @param cleanup The cleanup program to use to cleanup the data (NULL if none) + * @param pool The current pool + * @warning The data to be attached to the pool should have a life span + * at least as long as the pool it is being attached to. + * + * Users of APR must take EXTREME care when choosing a key to + * use for their data. It is possible to accidentally overwrite + * data by choosing a key that another part of the program is using. + * Therefore it is advised that steps are taken to ensure that unique + * keys are used for all of the userdata objects in a particular pool + * (the same key in two different pools or a pool and one of its + * subpools is okay) at all times. Careful namespace prefixing of + * key names is a typical way to help ensure this uniqueness. + */ +APR_DECLARE(apr_status_t) apr_pool_userdata_set( + const void *data, + const char *key, + apr_status_t (*cleanup)(void *), + apr_pool_t *pool); + +/** + * Set the data associated with the current pool + * @param data The user data associated with the pool. + * @param key The key to use for association + * @param cleanup The cleanup program to use to cleanup the data (NULL if none) + * @param pool The current pool + * @note same as apr_pool_userdata_set(), except that this version doesn't + * make a copy of the key (this function is useful, for example, when + * the key is a string literal) + * @warning This should NOT be used if the key could change addresses by + * any means between the apr_pool_userdata_setn() call and a + * subsequent apr_pool_userdata_get() on that key, such as if a + * static string is used as a userdata key in a DSO and the DSO could + * be unloaded and reloaded between the _setn() and the _get(). You + * MUST use apr_pool_userdata_set() in such cases. + * @warning More generally, the key and the data to be attached to the + * pool should have a life span at least as long as the pool itself. + * + */ +APR_DECLARE(apr_status_t) apr_pool_userdata_setn( + const void *data, + const char *key, + apr_status_t (*cleanup)(void *), + apr_pool_t *pool); + +/** + * Return the data associated with the current pool. + * @param data The user data associated with the pool. + * @param key The key for the data to retrieve + * @param pool The current pool. + */ +APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key, + apr_pool_t *pool); + + +/* + * Cleanup + * + * Cleanups are performed in the reverse order they were registered. That is: + * Last In, First Out. + */ + +/** + * Register a function to be called when a pool is cleared or destroyed + * @param p The pool register the cleanup with + * @param data The data to pass to the cleanup function. + * @param plain_cleanup The function to call when the pool is cleared + * or destroyed + * @param child_cleanup The function to call when a child process is being + * shutdown - this function is called in the child, obviously! + */ +APR_DECLARE(void) apr_pool_cleanup_register( + apr_pool_t *p, + const void *data, + apr_status_t (*plain_cleanup)(void *), + apr_status_t (*child_cleanup)(void *)); + +/** + * Remove a previously registered cleanup function + * @param p The pool remove the cleanup from + * @param data The data to remove from cleanup + * @param cleanup The function to remove from cleanup + * @remarks For some strange reason only the plain_cleanup is handled by this + * function + */ +APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data, + apr_status_t (*cleanup)(void *)); + +/** + * Replace the child cleanup of a previously registered cleanup + * @param p The pool of the registered cleanup + * @param data The data of the registered cleanup + * @param plain_cleanup The plain cleanup function of the registered cleanup + * @param child_cleanup The function to register as the child cleanup + */ +APR_DECLARE(void) apr_pool_child_cleanup_set( + apr_pool_t *p, + const void *data, + apr_status_t (*plain_cleanup)(void *), + apr_status_t (*child_cleanup)(void *)); + +/** + * Run the specified cleanup function immediately and unregister it. Use + * @a data instead of the data that was registered with the cleanup. + * @param p The pool remove the cleanup from + * @param data The data to remove from cleanup + * @param cleanup The function to remove from cleanup + */ +APR_DECLARE(apr_status_t) apr_pool_cleanup_run( + apr_pool_t *p, + void *data, + apr_status_t (*cleanup)(void *)); + +/** + * An empty cleanup function + * @param data The data to cleanup + */ +APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data); + +/* Preparing for exec() --- close files, etc., but *don't* flush I/O + * buffers, *don't* wait for subprocesses, and *don't* free any memory. + */ +/** + * Run all of the child_cleanups, so that any unnecessary files are + * closed because we are about to exec a new program + */ +APR_DECLARE(void) apr_pool_cleanup_for_exec(void); + + +/** + * @defgroup PoolDebug Pool Debugging functions. + * + * pools have nested lifetimes -- sub_pools are destroyed when the + * parent pool is cleared. We allow certain liberties with operations + * on things such as tables (and on other structures in a more general + * sense) where we allow the caller to insert values into a table which + * were not allocated from the table's pool. The table's data will + * remain valid as long as all the pools from which its values are + * allocated remain valid. + * + * For example, if B is a sub pool of A, and you build a table T in + * pool B, then it's safe to insert data allocated in A or B into T + * (because B lives at most as long as A does, and T is destroyed when + * B is cleared/destroyed). On the other hand, if S is a table in + * pool A, it is safe to insert data allocated in A into S, but it + * is *not safe* to insert data allocated from B into S... because + * B can be cleared/destroyed before A is (which would leave dangling + * pointers in T's data structures). + * + * In general we say that it is safe to insert data into a table T + * if the data is allocated in any ancestor of T's pool. This is the + * basis on which the APR_POOL_DEBUG code works -- it tests these ancestor + * relationships for all data inserted into tables. APR_POOL_DEBUG also + * provides tools (apr_pool_find, and apr_pool_is_ancestor) for other + * folks to implement similar restrictions for their own data + * structures. + * + * However, sometimes this ancestor requirement is inconvenient -- + * sometimes we're forced to create a sub pool (such as through + * apr_sub_req_lookup_uri), and the sub pool is guaranteed to have + * the same lifetime as the parent pool. This is a guarantee implemented + * by the *caller*, not by the pool code. That is, the caller guarantees + * they won't destroy the sub pool individually prior to destroying the + * parent pool. + * + * In this case the caller must call apr_pool_join() to indicate this + * guarantee to the APR_POOL_DEBUG code. There are a few examples spread + * through the standard modules. + * + * These functions are only implemented when #APR_POOL_DEBUG is set. + * + * @{ + */ +#if APR_POOL_DEBUG || defined(DOXYGEN) +/** + * Guarantee that a subpool has the same lifetime as the parent. + * @param p The parent pool + * @param sub The subpool + */ +APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub); + +/** + * Find a pool from something allocated in it. + * @param mem The thing allocated in the pool + * @return The pool it is allocated in + */ +APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem); + +/** + * Report the number of bytes currently in the pool + * @param p The pool to inspect + * @param recurse Recurse/include the subpools' sizes + * @return The number of bytes + */ +APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse); + +/** + * Lock a pool + * @param pool The pool to lock + * @param flag The flag + */ +APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag); + +/* @} */ + +#else /* APR_POOL_DEBUG or DOXYGEN */ + +#ifdef apr_pool_join +#undef apr_pool_join +#endif +#define apr_pool_join(a,b) + +#ifdef apr_pool_lock +#undef apr_pool_lock +#endif +#define apr_pool_lock(pool, lock) + +#endif /* APR_POOL_DEBUG or DOXYGEN */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APR_POOLS_H */ diff --git a/rubbos/app/apache2/include/apr_portable.h b/rubbos/app/apache2/include/apr_portable.h new file mode 100644 index 00000000..ffeff9b0 --- /dev/null +++ b/rubbos/app/apache2/include/apr_portable.h @@ -0,0 +1,505 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* This header file is where you should put ANY platform specific information. + * This should be the only header file that programs need to include that + * actually has platform dependant code which refers to the . + */ +#ifndef APR_PORTABLE_H +#define APR_PORTABLE_H +/** + * @file apr_portable.h + * @brief APR Portability Routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_thread_proc.h" +#include "apr_file_io.h" +#include "apr_network_io.h" +#include "apr_errno.h" +#include "apr_global_mutex.h" +#include "apr_proc_mutex.h" +#include "apr_time.h" +#include "apr_dso.h" +#include "apr_shm.h" + +#if APR_HAVE_DIRENT_H +#include +#endif +#if APR_HAVE_FCNTL_H +#include +#endif +#if APR_HAVE_PTHREAD_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_portabile Portability Routines + * @ingroup APR + * @{ + */ + +#ifdef WIN32 +/* The primitives for Windows types */ +typedef HANDLE apr_os_file_t; +typedef HANDLE apr_os_dir_t; +typedef SOCKET apr_os_sock_t; +typedef HANDLE apr_os_proc_mutex_t; +typedef HANDLE apr_os_thread_t; +typedef HANDLE apr_os_proc_t; +typedef DWORD apr_os_threadkey_t; +typedef FILETIME apr_os_imp_time_t; +typedef SYSTEMTIME apr_os_exp_time_t; +typedef HANDLE apr_os_dso_handle_t; +typedef HANDLE apr_os_shm_t; + +#elif defined(OS2) +typedef HFILE apr_os_file_t; +typedef HDIR apr_os_dir_t; +typedef int apr_os_sock_t; +typedef HMTX apr_os_proc_mutex_t; +typedef TID apr_os_thread_t; +typedef PID apr_os_proc_t; +typedef PULONG apr_os_threadkey_t; +typedef struct timeval apr_os_imp_time_t; +typedef struct tm apr_os_exp_time_t; +typedef HMODULE apr_os_dso_handle_t; +typedef void* apr_os_shm_t; + +#elif defined(__BEOS__) +#include +#include + +struct apr_os_proc_mutex_t { + sem_id sem; + int32 ben; +}; + +typedef int apr_os_file_t; +typedef DIR apr_os_dir_t; +typedef int apr_os_sock_t; +typedef struct apr_os_proc_mutex_t apr_os_proc_mutex_t; +typedef thread_id apr_os_thread_t; +typedef thread_id apr_os_proc_t; +typedef int apr_os_threadkey_t; +typedef struct timeval apr_os_imp_time_t; +typedef struct tm apr_os_exp_time_t; +typedef image_id apr_os_dso_handle_t; +typedef void* apr_os_shm_t; + +#elif defined(NETWARE) +typedef int apr_os_file_t; +typedef DIR apr_os_dir_t; +typedef int apr_os_sock_t; +typedef NXMutex_t apr_os_proc_mutex_t; +typedef NXThreadId_t apr_os_thread_t; +typedef long apr_os_proc_t; +typedef NXKey_t apr_os_threadkey_t; +typedef struct timeval apr_os_imp_time_t; +typedef struct tm apr_os_exp_time_t; +typedef void * apr_os_dso_handle_t; +typedef void* apr_os_shm_t; + +#else +/* Any other OS should go above this one. This is the lowest common + * denominator typedefs for all UNIX-like systems. :) + */ + +/** Basic OS process mutex structure. */ +struct apr_os_proc_mutex_t { +#if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE + int crossproc; +#endif +#if APR_HAS_PROC_PTHREAD_SERIALIZE + pthread_mutex_t *pthread_interproc; +#endif +#if APR_HAS_THREADS + /* If no threads, no need for thread locks */ +#if APR_USE_PTHREAD_SERIALIZE + pthread_mutex_t *intraproc; +#endif +#endif +}; + +typedef int apr_os_file_t; /**< native file */ +typedef DIR apr_os_dir_t; /**< native dir */ +typedef int apr_os_sock_t; /**< native dir */ +typedef struct apr_os_proc_mutex_t apr_os_proc_mutex_t; /**< native proces + * mutex + */ +#if APR_HAS_THREADS && APR_HAVE_PTHREAD_H +typedef pthread_t apr_os_thread_t; /**< native thread */ +typedef pthread_key_t apr_os_threadkey_t; /**< native thread address + * space */ +#endif +typedef pid_t apr_os_proc_t; /**< native pid */ +typedef struct timeval apr_os_imp_time_t; /**< native timeval */ +typedef struct tm apr_os_exp_time_t; /**< native tm */ +/** @var apr_os_dso_handle_t + * native dso types + */ +#if defined(HPUX) || defined(HPUX10) || defined(HPUX11) +#include +typedef shl_t apr_os_dso_handle_t; +#elif defined(DARWIN) +#include +typedef NSModule apr_os_dso_handle_t; +#else +typedef void * apr_os_dso_handle_t; +#endif +typedef void* apr_os_shm_t; /**< native SHM */ + +#endif + +/** + * @typedef apr_os_sock_info_t + * @brief alias for local OS socket + */ +/** + * everything APR needs to know about an active socket to construct + * an APR socket from it; currently, this is platform-independent + */ +struct apr_os_sock_info_t { + apr_os_sock_t *os_sock; /**< always required */ + struct sockaddr *local; /**< NULL if not yet bound */ + struct sockaddr *remote; /**< NULL if not connected */ + int family; /**< always required (APR_INET, APR_INET6, etc.) */ + int type; /**< always required (SOCK_STREAM, SOCK_DGRAM, etc.) */ +#ifdef APR_ENABLE_FOR_1_0 /**< enable with APR 1.0 */ + int protocol; /**< 0 or actual protocol (APR_PROTO_SCTP, APR_PROTO_TCP, etc.) */ +#endif +}; + +typedef struct apr_os_sock_info_t apr_os_sock_info_t; + +#if APR_PROC_MUTEX_IS_GLOBAL || defined(DOXYGEN) +/** Opaque global mutex type */ +#define apr_os_global_mutex_t apr_os_proc_mutex_t +/** @return apr_os_global_mutex */ +#define apr_os_global_mutex_get apr_os_proc_mutex_get +#else + /** Thread and process mutex for those platforms where process mutexes + * are not held in threads. + */ + struct apr_os_global_mutex_t { + apr_pool_t *pool; + apr_proc_mutex_t *proc_mutex; +#if APR_HAS_THREADS + apr_thread_mutex_t *thread_mutex; +#endif /* APR_HAS_THREADS */ + }; + typedef struct apr_os_global_mutex_t apr_os_global_mutex_t; + +APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmutex, + apr_global_mutex_t *pmutex); +#endif + + +/** + * convert the file from apr type to os specific type. + * @param thefile The os specific file we are converting to + * @param file The apr file to convert. + * @remark On Unix, it is only possible to get a file descriptor from + * an apr file type. + */ +APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, + apr_file_t *file); + +/** + * convert the dir from apr type to os specific type. + * @param thedir The os specific dir we are converting to + * @param dir The apr dir to convert. + */ +APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, + apr_dir_t *dir); + +/** + * Convert the socket from an apr type to an OS specific socket + * @param thesock The socket to convert. + * @param sock The os specifc equivelant of the apr socket.. + */ +APR_DECLARE(apr_status_t) apr_os_sock_get(apr_os_sock_t *thesock, + apr_socket_t *sock); + +/** + * Convert the proc mutex from os specific type to apr type + * @param ospmutex The os specific proc mutex we are converting to. + * @param pmutex The apr proc mutex to convert. + */ +APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, + apr_proc_mutex_t *pmutex); + +/** + * Get the exploded time in the platforms native format. + * @param ostime the native time format + * @param aprtime the time to convert + */ +APR_DECLARE(apr_status_t) apr_os_exp_time_get(apr_os_exp_time_t **ostime, + apr_time_exp_t *aprtime); + +/** + * Get the imploded time in the platforms native format. + * @param ostime the native time format + * @param aprtime the time to convert + */ +APR_DECLARE(apr_status_t) apr_os_imp_time_get(apr_os_imp_time_t **ostime, + apr_time_t *aprtime); + +/** + * convert the shm from apr type to os specific type. + * @param osshm The os specific shm representation + * @param shm The apr shm to convert. + */ +APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, + apr_shm_t *shm); + +#if APR_HAS_THREADS || defined(DOXYGEN) +/** + * @defgroup apr_os_thread Thread portability Routines + * @{ + */ +/** + * convert the thread to os specific type from apr type. + * @param thethd The apr thread to convert + * @param thd The os specific thread we are converting to + */ +APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, + apr_thread_t *thd); + +/** + * convert the thread private memory key to os specific type from an apr type. + * @param thekey The apr handle we are converting from. + * @param key The os specific handle we are converting to. + */ +APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, + apr_threadkey_t *key); + +/** + * convert the thread from os specific type to apr type. + * @param thd The apr thread we are converting to. + * @param thethd The os specific thread to convert + * @param cont The pool to use if it is needed. + */ +APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, + apr_os_thread_t *thethd, + apr_pool_t *cont); + +/** + * convert the thread private memory key from os specific type to apr type. + * @param key The apr handle we are converting to. + * @param thekey The os specific handle to convert + * @param cont The pool to use if it is needed. + */ +APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, + apr_os_threadkey_t *thekey, + apr_pool_t *cont); +/** + * Get the thread ID + */ +APR_DECLARE(apr_os_thread_t) apr_os_thread_current(void); + +/** + * Compare two thread id's + * @param tid1 1st Thread ID to compare + * @param tid2 2nd Thread ID to compare + */ +APR_DECLARE(int) apr_os_thread_equal(apr_os_thread_t tid1, + apr_os_thread_t tid2); + +/** @} */ +#endif /* APR_HAS_THREADS */ + +/** + * convert the file from os specific type to apr type. + * @param file The apr file we are converting to. + * @param thefile The os specific file to convert + * @param flags The flags that were used to open this file. + * @param cont The pool to use if it is needed. + * @remark On Unix, it is only possible to put a file descriptor into + * an apr file type. + */ +APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, + apr_os_file_t *thefile, + apr_int32_t flags, apr_pool_t *cont); + +/** + * convert the file from os specific type to apr type. + * @param file The apr file we are converting to. + * @param thefile The os specific pipe to convert + * @param cont The pool to use if it is needed. + * @remark On Unix, it is only possible to put a file descriptor into + * an apr file type. + */ +APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, + apr_os_file_t *thefile, + apr_pool_t *cont); + +/** + * convert the file from os specific type to apr type. + * @param file The apr file we are converting to. + * @param thefile The os specific pipe to convert + * @param register_cleanup A cleanup will be registered on the apr_file_t + * to issue apr_file_close(). + * @param cont The pool to use if it is needed. + * @remark On Unix, it is only possible to put a file descriptor into + * an apr file type. + */ +APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, + apr_os_file_t *thefile, + int register_cleanup, + apr_pool_t *cont); + +/** + * convert the dir from os specific type to apr type. + * @param dir The apr dir we are converting to. + * @param thedir The os specific dir to convert + * @param cont The pool to use when creating to apr directory. + */ +APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir, + apr_os_dir_t *thedir, + apr_pool_t *cont); + +/** + * Convert a socket from the os specific type to the apr type + * @param sock The pool to use. + * @param thesock The socket to convert to. + * @param cont The socket we are converting to an apr type. + * @remark If it is a true socket, it is best to call apr_os_sock_make() + * and provide APR with more information about the socket. + */ +APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock, + apr_os_sock_t *thesock, + apr_pool_t *cont); + +/** + * Create a socket from an existing descriptor and local and remote + * socket addresses. + * @param apr_sock The new socket that has been set up + * @param os_sock_info The os representation of the socket handle and + * other characteristics of the socket + * @param cont The pool to use + * @remark If you only know the descriptor/handle or if it isn't really + * a true socket, use apr_os_sock_put() instead. + */ +APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock, + apr_os_sock_info_t *os_sock_info, + apr_pool_t *cont); + +/** + * Convert the proc mutex from os specific type to apr type + * @param pmutex The apr proc mutex we are converting to. + * @param ospmutex The os specific proc mutex to convert. + * @param cont The pool to use if it is needed. + */ +APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, + apr_os_proc_mutex_t *ospmutex, + apr_pool_t *cont); + +/** + * Put the imploded time in the APR format. + * @param aprtime the APR time format + * @param ostime the time to convert + * @param cont the pool to use if necessary + */ +APR_DECLARE(apr_status_t) apr_os_imp_time_put(apr_time_t *aprtime, + apr_os_imp_time_t **ostime, + apr_pool_t *cont); + +/** + * Put the exploded time in the APR format. + * @param aprtime the APR time format + * @param ostime the time to convert + * @param cont the pool to use if necessary + */ +APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, + apr_os_exp_time_t **ostime, + apr_pool_t *cont); + +/** + * convert the shared memory from os specific type to apr type. + * @param shm The apr shm representation of osshm + * @param osshm The os specific shm identity + * @param cont The pool to use if it is needed. + * @remark On fork()ed architectures, this is typically nothing more than + * the memory block mapped. On non-fork architectures, this is typically + * some internal handle to pass the mapping from process to process. + */ +APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **shm, + apr_os_shm_t *osshm, + apr_pool_t *cont); + + +#if APR_HAS_DSO || defined(DOXYGEN) +/** + * @defgroup apr_os_dso DSO (Dynamic Loading) Portabiliity Routines + * @{ + */ +/** + * convert the dso handle from os specific to apr + * @param dso The apr handle we are converting to + * @param thedso the os specific handle to convert + * @param pool the pool to use if it is needed + */ +APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **dso, + apr_os_dso_handle_t thedso, + apr_pool_t *pool); + +/** + * convert the apr dso handle into an os specific one + * @param aprdso The apr dso handle to convert + * @param dso The os specific dso to return + */ +APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *dso, + apr_dso_handle_t *aprdso); + +#if APR_HAS_OS_UUID +/** + * Private: apr-util's apr_uuid module when supported by the platform + */ +APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data); +#endif + +/** @} */ +#endif /* APR_HAS_DSO */ + + +/** + * Get the name of the system default characer set. + * @param pool the pool to allocate the name from, if needed + */ +APR_DECLARE(const char*) apr_os_default_encoding(apr_pool_t *pool); + + +/** + * Get the name of the current locale character set. + * @param pool the pool to allocate the name from, if needed + * @remark Defers to apr_os_default_encoding if the current locale's + * data can't be retreved on this system. + */ +APR_DECLARE(const char*) apr_os_locale_encoding(apr_pool_t *pool); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_PORTABLE_H */ diff --git a/rubbos/app/apache2/include/apr_proc_mutex.h b/rubbos/app/apache2/include/apr_proc_mutex.h new file mode 100644 index 00000000..ceb9c82a --- /dev/null +++ b/rubbos/app/apache2/include/apr_proc_mutex.h @@ -0,0 +1,166 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_PROC_MUTEX_H +#define APR_PROC_MUTEX_H + +/** + * @file apr_proc_mutex.h + * @brief APR Process Locking Routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_proc_mutex Process Locking Routines + * @ingroup APR + * @{ + */ + +/** + * Enumerated potential types for APR process locking methods + * @warning Check APR_HAS_foo_SERIALIZE defines to see if the platform supports + * APR_LOCK_foo. Only APR_LOCK_DEFAULT is portable. + */ +typedef enum { + APR_LOCK_FCNTL, /**< fcntl() */ + APR_LOCK_FLOCK, /**< flock() */ + APR_LOCK_SYSVSEM, /**< System V Semaphores */ + APR_LOCK_PROC_PTHREAD, /**< POSIX pthread process-based locking */ + APR_LOCK_POSIXSEM, /**< POSIX semaphore process-based locking */ + APR_LOCK_DEFAULT /**< Use the default process lock */ +} apr_lockmech_e; + +/** Opaque structure representing a process mutex. */ +typedef struct apr_proc_mutex_t apr_proc_mutex_t; + +/* Function definitions */ + +/** + * Create and initialize a mutex that can be used to synchronize processes. + * @param mutex the memory address where the newly created mutex will be + * stored. + * @param fname A file name to use if the lock mechanism requires one. This + * argument should always be provided. The lock code itself will + * determine if it should be used. + * @param mech The mechanism to use for the interprocess lock, if any; one of + *
    + *            APR_LOCK_FCNTL
    + *            APR_LOCK_FLOCK
    + *            APR_LOCK_SYSVSEM
    + *            APR_LOCK_POSIXSEM
    + *            APR_LOCK_PROC_PTHREAD
    + *            APR_LOCK_DEFAULT     pick the default mechanism for the platform
    + * 
    + * @param pool the pool from which to allocate the mutex. + * @see apr_lockmech_e + * @warning Check APR_HAS_foo_SERIALIZE defines to see if the platform supports + * APR_LOCK_foo. Only APR_LOCK_DEFAULT is portable. + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, + const char *fname, + apr_lockmech_e mech, + apr_pool_t *pool); + +/** + * Re-open a mutex in a child process. + * @param mutex The newly re-opened mutex structure. + * @param fname A file name to use if the mutex mechanism requires one. This + * argument should always be provided. The mutex code itself will + * determine if it should be used. This filename should be the + * same one that was passed to apr_proc_mutex_create(). + * @param pool The pool to operate on. + * @remark This function must be called to maintain portability, even + * if the underlying lock mechanism does not require it. + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, + const char *fname, + apr_pool_t *pool); + +/** + * Acquire the lock for the given mutex. If the mutex is already locked, + * the current thread will be put to sleep until the lock becomes available. + * @param mutex the mutex on which to acquire the lock. + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex); + +/** + * Attempt to acquire the lock for the given mutex. If the mutex has already + * been acquired, the call returns immediately with APR_EBUSY. Note: it + * is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine + * if the return value was APR_EBUSY, for portability reasons. + * @param mutex the mutex on which to attempt the lock acquiring. + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex); + +/** + * Release the lock for the given mutex. + * @param mutex the mutex from which to release the lock. + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex); + +/** + * Destroy the mutex and free the memory associated with the lock. + * @param mutex the mutex to destroy. + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex); + +/** + * Destroy the mutex and free the memory associated with the lock. + * @param mutex the mutex to destroy. + * @note This function is generally used to kill a cleanup on an already + * created mutex + */ +APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex); + +/** + * Return the name of the lockfile for the mutex, or NULL + * if the mutex doesn't use a lock file + */ + +APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex); + +/** + * Display the name of the mutex, as it relates to the actual method used. + * This matches the valid options for Apache's AcceptMutex directive + * @param mutex the name of the mutex + */ +APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex); + +/** + * Display the name of the default mutex: APR_LOCK_DEFAULT + */ +APR_DECLARE(const char *) apr_proc_mutex_defname(void); + +/** + * Get the pool used by this proc_mutex. + * @return apr_pool_t the pool + */ +APR_POOL_DECLARE_ACCESSOR(proc_mutex); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_PROC_MUTEX_H */ diff --git a/rubbos/app/apache2/include/apr_queue.h b/rubbos/app/apache2/include/apr_queue.h new file mode 100644 index 00000000..5a0181b2 --- /dev/null +++ b/rubbos/app/apache2/include/apr_queue.h @@ -0,0 +1,138 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_QUEUE_H +#define APR_QUEUE_H + +/** + * @file apr_queue.h + * @brief Thread Safe FIFO bounded queue + * @note Since most implementations of the queue are backed by a condition + * variable implementation, it isn't available on systems without threads. + * Although condition variables are some times available without threads. + */ + +#include "apu.h" +#include "apr_errno.h" +#include "apr_pools.h" + +#if APR_HAS_THREADS + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup APR_Util_FIFO Thread Safe FIFO bounded queue + * @ingroup APR_Util + * @{ + */ + +/** + * opaque structure + */ +typedef struct apr_queue_t apr_queue_t; + +/** + * create a FIFO queue + * @param queue The new queue + * @param queue_capacity maximum size of the queue + * @param a pool to allocate queue from + */ +APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **queue, + unsigned int queue_capacity, + apr_pool_t *a); + +/** + * push/add a object to the queue, blocking if the queue is already full + * + * @param queue the queue + * @param data the data + * @returns APR_EINTR the blocking was interrupted (try again) + * @returns APR_EOF the queue has been terminated + * @returns APR_SUCCESS on a successfull push + */ +APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data); + +/** + * pop/get an object from the queue, blocking if the queue is already empty + * + * @param queue the queue + * @param data the data + * @returns APR_EINTR the blocking was interrupted (try again) + * @returns APR_EOF if the queue has been terminated + * @returns APR_SUCCESS on a successfull pop + */ +APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data); + +/** + * push/add a object to the queue, returning immediatly if the queue is full + * + * @param queue the queue + * @param data the data + * @returns APR_EINTR the blocking operation was interrupted (try again) + * @returns APR_EAGAIN the queue is full + * @returns APR_EOF the queue has been terminated + * @returns APR_SUCCESS on a successfull push + */ +APU_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data); + +/** + * pop/get an object to the queue, returning immediatly if the queue is empty + * + * @param queue the queue + * @param data the data + * @returns APR_EINTR the blocking operation was interrupted (try again) + * @returns APR_EAGAIN the queue is empty + * @returns APR_EOF the queue has been terminated + * @returns APR_SUCCESS on a successfull push + */ +APU_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data); + +/** + * returns the size of the queue. + * + * @warning this is not threadsafe, and is intended for reporting/monitoring + * of the queue. + * @param queue the queue + * @returns the size of the queue + */ +APU_DECLARE(unsigned int) apr_queue_size(apr_queue_t *queue); + +/** + * interrupt all the threads blocking on this queue. + * + * @param queue the queue + */ +APU_DECLARE(apr_status_t) apr_queue_interrupt_all(apr_queue_t *queue); + +/** + * terminate all queue, sendinging a interupt to all the + * blocking threads + * + * @param queue the queue + */ +APU_DECLARE(apr_status_t) apr_queue_term(apr_queue_t *queue); + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif /* APR_HAS_THREADS */ + +#endif /* APRQUEUE_H */ diff --git a/rubbos/app/apache2/include/apr_reslist.h b/rubbos/app/apache2/include/apr_reslist.h new file mode 100644 index 00000000..1a18391d --- /dev/null +++ b/rubbos/app/apache2/include/apr_reslist.h @@ -0,0 +1,141 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_RESLIST_H +#define APR_RESLIST_H + +/** + * @file apr_reslist.h + * @brief APR-UTIL Resource List Routines + */ + +#include "apr.h" +#include "apu.h" +#include "apr_pools.h" +#include "apr_errno.h" +#include "apr_time.h" + +#if APR_HAS_THREADS + +/** + * @defgroup APR_Util_RL Resource List Routines + * @ingroup APR_Util + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** Opaque resource list object */ +typedef struct apr_reslist_t apr_reslist_t; + +/* Generic constructor called by resource list when it needs to create a + * resource. + * @param resource opaque resource + * @param param flags + * @param pool Pool + */ +typedef apr_status_t (*apr_reslist_constructor)(void **resource, void *params, + apr_pool_t *pool); + +/* Generic destructor called by resource list when it needs to destroy a + * resource. + * @param resource opaque resource + * @param param flags + * @param pool Pool + */ +typedef apr_status_t (*apr_reslist_destructor)(void *resource, void *params, + apr_pool_t *pool); + +/** + * Create a new resource list with the following parameters: + * @param reslist An address where the pointer to the new resource + * list will be stored. + * @param pool The pool to use for local storage and management + * @param min Allowed minimum number of available resources. Zero + * creates new resources only when needed. + * @param smax Resources will be destroyed to meet this maximum + * restriction as they expire. + * @param hmax Absolute maximum limit on the number of total resources. + * @param ttl If non-zero, sets the maximum amount of time a resource + * may be available while exceeding the soft limit. + * @param con Constructor routine that is called to create a new resource. + * @param de Destructor routine that is called to destroy an expired resource. + * @param params Passed to constructor and deconstructor + * @param pool The pool from which to create this resoure list. Also the + * same pool that is passed to the constructor and destructor + * routines. + */ +APU_DECLARE(apr_status_t) apr_reslist_create(apr_reslist_t **reslist, + int min, int smax, int hmax, + apr_interval_time_t ttl, + apr_reslist_constructor con, + apr_reslist_destructor de, + void *params, + apr_pool_t *pool); + +/** + * Destroy the given resource list and all resources controlled by + * this list. + * FIXME: Should this block until all resources become available, + * or maybe just destroy all the free ones, or maybe destroy + * them even though they might be in use by something else? + * @param reslist The reslist to destroy + */ +APU_DECLARE(apr_status_t) apr_reslist_destroy(apr_reslist_t *reslist); + +/** + * Retrieve a resource from the list, creating a new one if necessary. + * If we have met our maximum number of resources, we will block + * until one becomes available. + */ +APU_DECLARE(apr_status_t) apr_reslist_acquire(apr_reslist_t *reslist, + void **resource); + +/** + * Return a resource back to the list of available resources. + */ +APU_DECLARE(apr_status_t) apr_reslist_release(apr_reslist_t *reslist, + void *resource); + +/** + * Set the timeout the acquire will wait for a free resource + * when the maximum number of resources is exceeded. + * @param reslist The resource list. + * @param timeout Timeout to wait. The zero waits forewer. + */ +APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist, + apr_interval_time_t timeout); + +/** + * Invalidate a resource in the pool - e.g. a database connection + * that returns a "lost connection" error and can't be restored. + * Use this instead of apr_reslist_release if the resource is bad. + */ +APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist, + void *resource); + + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif /* APR_HAS_THREADS */ + +#endif /* ! APR_RESLIST_H */ diff --git a/rubbos/app/apache2/include/apr_ring.h b/rubbos/app/apache2/include/apr_ring.h new file mode 100644 index 00000000..79efb436 --- /dev/null +++ b/rubbos/app/apache2/include/apr_ring.h @@ -0,0 +1,551 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This code draws heavily from the 4.4BSD macros + * and Dean Gaudet's "splim/ring.h". + * + * + * + * We'd use Dean's code directly if we could guarantee the + * availability of inline functions. + */ + +#ifndef APR_RING_H +#define APR_RING_H + +/** + * @file apr_ring.h + * @brief APR Rings + */ + +/* + * for offsetof() + */ +#include "apr_general.h" + +/** + * @defgroup apr_ring Ring Macro Implementations + * @ingroup APR + * A ring is a kind of doubly-linked list that can be manipulated + * without knowing where its head is. + * @{ + */ + +/** + * The Ring Element + * + * A ring element struct is linked to the other elements in the ring + * through its ring entry field, e.g. + *
    + *      struct my_element_t {
    + *          APR_RING_ENTRY(my_element_t) link;
    + *          int foo;
    + *          char *bar;
    + *      };
    + * 
    + * + * An element struct may be put on more than one ring if it has more + * than one APR_RING_ENTRY field. Each APR_RING_ENTRY has a corresponding + * APR_RING_HEAD declaration. + * + * @warning For strict C standards compliance you should put the APR_RING_ENTRY + * first in the element struct unless the head is always part of a larger + * object with enough earlier fields to accommodate the offsetof() used + * to compute the ring sentinel below. You can usually ignore this caveat. + */ +#define APR_RING_ENTRY(elem) \ + struct { \ + struct elem *next; \ + struct elem *prev; \ + } + +/** + * The Ring Head + * + * Each ring is managed via its head, which is a struct declared like this: + *
    + *      APR_RING_HEAD(my_ring_t, my_element_t);
    + *      struct my_ring_t ring, *ringp;
    + * 
    + * + * This struct looks just like the element link struct so that we can + * be sure that the typecasting games will work as expected. + * + * The first element in the ring is next after the head, and the last + * element is just before the head. + */ +#define APR_RING_HEAD(head, elem) \ + struct head { \ + struct elem * volatile next; \ + struct elem * volatile prev; \ + } + +/** + * The Ring Sentinel + * + * This is the magic pointer value that occurs before the first and + * after the last elements in the ring, computed from the address of + * the ring's head. The head itself isn't an element, but in order to + * get rid of all the special cases when dealing with the ends of the + * ring, we play typecasting games to make it look like one. + * + * Here is a diagram to illustrate the arrangements of the next and + * prev pointers of each element in a single ring. Note that they point + * to the start of each element, not to the APR_RING_ENTRY structure. + * + *
    + *     +->+------+<-+  +->+------+<-+  +->+------+<-+
    + *     |  |struct|  |  |  |struct|  |  |  |struct|  |
    + *    /   | elem |   \/   | elem |   \/   | elem |  \
    + * ...    |      |   /\   |      |   /\   |      |   ...
    + *        +------+  |  |  +------+  |  |  +------+
    + *   ...--|prev  |  |  +--|ring  |  |  +--|prev  |
    + *        |  next|--+     | entry|--+     |  next|--...
    + *        +------+        +------+        +------+
    + *        | etc. |        | etc. |        | etc. |
    + *        :      :        :      :        :      :
    + * 
    + * + * The APR_RING_HEAD is nothing but a bare APR_RING_ENTRY. The prev + * and next pointers in the first and last elements don't actually + * point to the head, they point to a phantom place called the + * sentinel. Its value is such that last->next->next == first because + * the offset from the sentinel to the head's next pointer is the same + * as the offset from the start of an element to its next pointer. + * This also works in the opposite direction. + * + *
    + *        last                            first
    + *     +->+------+<-+  +->sentinel<-+  +->+------+<-+
    + *     |  |struct|  |  |            |  |  |struct|  |
    + *    /   | elem |   \/              \/   | elem |  \
    + * ...    |      |   /\              /\   |      |   ...
    + *        +------+  |  |  +------+  |  |  +------+
    + *   ...--|prev  |  |  +--|ring  |  |  +--|prev  |
    + *        |  next|--+     |  head|--+     |  next|--...
    + *        +------+        +------+        +------+
    + *        | etc. |                        | etc. |
    + *        :      :                        :      :
    + * 
    + * + * Note that the offset mentioned above is different for each kind of + * ring that the element may be on, and each kind of ring has a unique + * name for its APR_RING_ENTRY in each element, and has its own type + * for its APR_RING_HEAD. + * + * Note also that if the offset is non-zero (which is required if an + * element has more than one APR_RING_ENTRY), the unreality of the + * sentinel may have bad implications on very perverse implementations + * of C -- see the warning in APR_RING_ENTRY. + * + * @param hp The head of the ring + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_SENTINEL(hp, elem, link) \ + (struct elem *)((char *)(hp) - APR_OFFSETOF(struct elem, link)) + +/** + * The first element of the ring + * @param hp The head of the ring + */ +#define APR_RING_FIRST(hp) (hp)->next +/** + * The last element of the ring + * @param hp The head of the ring + */ +#define APR_RING_LAST(hp) (hp)->prev +/** + * The next element in the ring + * @param ep The current element + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_NEXT(ep, link) (ep)->link.next +/** + * The previous element in the ring + * @param ep The current element + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_PREV(ep, link) (ep)->link.prev + + +/** + * Initialize a ring + * @param hp The head of the ring + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_INIT(hp, elem, link) do { \ + APR_RING_FIRST((hp)) = APR_RING_SENTINEL((hp), elem, link); \ + APR_RING_LAST((hp)) = APR_RING_SENTINEL((hp), elem, link); \ + } while (0) + +/** + * Determine if a ring is empty + * @param hp The head of the ring + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + * @return true or false + */ +#define APR_RING_EMPTY(hp, elem, link) \ + (APR_RING_FIRST((hp)) == APR_RING_SENTINEL((hp), elem, link)) + +/** + * Initialize a singleton element + * @param ep The element + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_ELEM_INIT(ep, link) do { \ + APR_RING_NEXT((ep), link) = (ep); \ + APR_RING_PREV((ep), link) = (ep); \ + } while (0) + + +/** + * Splice the sequence ep1..epN into the ring before element lep + * (..lep.. becomes ..ep1..epN..lep..) + * @warning This doesn't work for splicing before the first element or on + * empty rings... see APR_RING_SPLICE_HEAD for one that does + * @param lep Element in the ring to splice before + * @param ep1 First element in the sequence to splice in + * @param epN Last element in the sequence to splice in + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_SPLICE_BEFORE(lep, ep1, epN, link) do { \ + APR_RING_NEXT((epN), link) = (lep); \ + APR_RING_PREV((ep1), link) = APR_RING_PREV((lep), link); \ + APR_RING_NEXT(APR_RING_PREV((lep), link), link) = (ep1); \ + APR_RING_PREV((lep), link) = (epN); \ + } while (0) + +/** + * Splice the sequence ep1..epN into the ring after element lep + * (..lep.. becomes ..lep..ep1..epN..) + * @warning This doesn't work for splicing after the last element or on + * empty rings... see APR_RING_SPLICE_TAIL for one that does + * @param lep Element in the ring to splice after + * @param ep1 First element in the sequence to splice in + * @param epN Last element in the sequence to splice in + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_SPLICE_AFTER(lep, ep1, epN, link) do { \ + APR_RING_PREV((ep1), link) = (lep); \ + APR_RING_NEXT((epN), link) = APR_RING_NEXT((lep), link); \ + APR_RING_PREV(APR_RING_NEXT((lep), link), link) = (epN); \ + APR_RING_NEXT((lep), link) = (ep1); \ + } while (0) + +/** + * Insert the element nep into the ring before element lep + * (..lep.. becomes ..nep..lep..) + * @warning This doesn't work for inserting before the first element or on + * empty rings... see APR_RING_INSERT_HEAD for one that does + * @param lep Element in the ring to insert before + * @param nep Element to insert + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_INSERT_BEFORE(lep, nep, link) \ + APR_RING_SPLICE_BEFORE((lep), (nep), (nep), link) + +/** + * Insert the element nep into the ring after element lep + * (..lep.. becomes ..lep..nep..) + * @warning This doesn't work for inserting after the last element or on + * empty rings... see APR_RING_INSERT_TAIL for one that does + * @param lep Element in the ring to insert after + * @param nep Element to insert + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_INSERT_AFTER(lep, nep, link) \ + APR_RING_SPLICE_AFTER((lep), (nep), (nep), link) + + +/** + * Splice the sequence ep1..epN into the ring before the first element + * (..hp.. becomes ..hp..ep1..epN..) + * @param hp Head of the ring + * @param ep1 First element in the sequence to splice in + * @param epN Last element in the sequence to splice in + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_SPLICE_HEAD(hp, ep1, epN, elem, link) \ + APR_RING_SPLICE_AFTER(APR_RING_SENTINEL((hp), elem, link), \ + (ep1), (epN), link) + +/** + * Splice the sequence ep1..epN into the ring after the last element + * (..hp.. becomes ..ep1..epN..hp..) + * @param hp Head of the ring + * @param ep1 First element in the sequence to splice in + * @param epN Last element in the sequence to splice in + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_SPLICE_TAIL(hp, ep1, epN, elem, link) \ + APR_RING_SPLICE_BEFORE(APR_RING_SENTINEL((hp), elem, link), \ + (ep1), (epN), link) + +/** + * Insert the element nep into the ring before the first element + * (..hp.. becomes ..hp..nep..) + * @param hp Head of the ring + * @param nep Element to insert + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_INSERT_HEAD(hp, nep, elem, link) \ + APR_RING_SPLICE_HEAD((hp), (nep), (nep), elem, link) + +/** + * Insert the element nep into the ring after the last element + * (..hp.. becomes ..nep..hp..) + * @param hp Head of the ring + * @param nep Element to insert + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_INSERT_TAIL(hp, nep, elem, link) \ + APR_RING_SPLICE_TAIL((hp), (nep), (nep), elem, link) + +/** + * Concatenate ring h2 onto the end of ring h1, leaving h2 empty. + * @param h1 Head of the ring to concatenate onto + * @param h2 Head of the ring to concatenate + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_CONCAT(h1, h2, elem, link) do { \ + if (!APR_RING_EMPTY((h2), elem, link)) { \ + APR_RING_SPLICE_BEFORE(APR_RING_SENTINEL((h1), elem, link), \ + APR_RING_FIRST((h2)), \ + APR_RING_LAST((h2)), link); \ + APR_RING_INIT((h2), elem, link); \ + } \ + } while (0) + +/** + * Prepend ring h2 onto the beginning of ring h1, leaving h2 empty. + * @param h1 Head of the ring to prepend onto + * @param h2 Head of the ring to prepend + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_PREPEND(h1, h2, elem, link) do { \ + if (!APR_RING_EMPTY((h2), elem, link)) { \ + APR_RING_SPLICE_AFTER(APR_RING_SENTINEL((h1), elem, link), \ + APR_RING_FIRST((h2)), \ + APR_RING_LAST((h2)), link); \ + APR_RING_INIT((h2), elem, link); \ + } \ + } while (0) + +/** + * Unsplice a sequence of elements from a ring + * @warning The unspliced sequence is left with dangling pointers at either end + * @param ep1 First element in the sequence to unsplice + * @param epN Last element in the sequence to unsplice + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_UNSPLICE(ep1, epN, link) do { \ + APR_RING_NEXT(APR_RING_PREV((ep1), link), link) = \ + APR_RING_NEXT((epN), link); \ + APR_RING_PREV(APR_RING_NEXT((epN), link), link) = \ + APR_RING_PREV((ep1), link); \ + } while (0) + +/** + * Remove a single element from a ring + * @warning The unspliced element is left with dangling pointers at either end + * @param ep Element to remove + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_REMOVE(ep, link) \ + APR_RING_UNSPLICE((ep), (ep), link) + + +/** + * Iterate through a ring + * @param ep The current element + * @param hp The ring to iterate over + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + * @remark This is the same as either: + *
    + *	ep = APR_RING_FIRST(hp);
    + * 	while (ep != APR_RING_SENTINEL(hp, elem, link)) {
    + *	    ...
    + * 	    ep = APR_RING_NEXT(ep, link);
    + * 	}
    + *   OR
    + * 	for (ep = APR_RING_FIRST(hp);
    + *           ep != APR_RING_SENTINEL(hp, elem, link);
    + *           ep = APR_RING_NEXT(ep, link)) {
    + *	    ...
    + * 	}
    + * 
    + * @warning Be aware that you cannot change the value of ep within + * the foreach loop, nor can you destroy the ring element it points to. + * Modifying the prev and next pointers of the element is dangerous + * but can be done if you're careful. If you change ep's value or + * destroy the element it points to, then APR_RING_FOREACH + * will have no way to find out what element to use for its next + * iteration. The reason for this can be seen by looking closely + * at the equivalent loops given in the tip above. So, for example, + * if you are writing a loop that empties out a ring one element + * at a time, APR_RING_FOREACH just won't work for you. Do it + * by hand, like so: + *
    + *      while (!APR_RING_EMPTY(hp, elem, link)) {
    + *          ep = APR_RING_FIRST(hp);
    + *          ...
    + *          APR_RING_REMOVE(ep, link);
    + *      }
    + * 
    + * @deprecated This macro causes more headaches than it's worth. Use + * one of the alternatives documented here instead; the clarity gained + * in what's really going on is well worth the extra line or two of code. + * This macro will be removed at some point in the future. + */ +#define APR_RING_FOREACH(ep, hp, elem, link) \ + for ((ep) = APR_RING_FIRST((hp)); \ + (ep) != APR_RING_SENTINEL((hp), elem, link); \ + (ep) = APR_RING_NEXT((ep), link)) + +/** + * Iterate through a ring backwards + * @param ep The current element + * @param hp The ring to iterate over + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + * @see APR_RING_FOREACH + */ +#define APR_RING_FOREACH_REVERSE(ep, hp, elem, link) \ + for ((ep) = APR_RING_LAST((hp)); \ + (ep) != APR_RING_SENTINEL((hp), elem, link); \ + (ep) = APR_RING_PREV((ep), link)) + + +/* Debugging tools: */ + +#ifdef APR_RING_DEBUG +#include +#include + +#define APR_RING_CHECK_ONE(msg, ptr) \ + fprintf(stderr, "*** %s %p\n", msg, ptr) + +#define APR_RING_CHECK(hp, elem, link, msg) \ + APR_RING_CHECK_ELEM(APR_RING_SENTINEL(hp, elem, link), elem, link, msg) + +#define APR_RING_CHECK_ELEM(ep, elem, link, msg) do { \ + struct elem *start = (ep); \ + struct elem *here = start; \ + fprintf(stderr, "*** ring check start -- %s\n", msg); \ + do { \ + fprintf(stderr, "\telem %p\n", here); \ + fprintf(stderr, "\telem->next %p\n", \ + APR_RING_NEXT(here, link)); \ + fprintf(stderr, "\telem->prev %p\n", \ + APR_RING_PREV(here, link)); \ + fprintf(stderr, "\telem->next->prev %p\n", \ + APR_RING_PREV(APR_RING_NEXT(here, link), link)); \ + fprintf(stderr, "\telem->prev->next %p\n", \ + APR_RING_NEXT(APR_RING_PREV(here, link), link)); \ + if (APR_RING_PREV(APR_RING_NEXT(here, link), link) != here) { \ + fprintf(stderr, "\t*** elem->next->prev != elem\n"); \ + break; \ + } \ + if (APR_RING_NEXT(APR_RING_PREV(here, link), link) != here) { \ + fprintf(stderr, "\t*** elem->prev->next != elem\n"); \ + break; \ + } \ + here = APR_RING_NEXT(here, link); \ + } while (here != start); \ + fprintf(stderr, "*** ring check end\n"); \ + } while (0) + +#define APR_RING_CHECK_CONSISTENCY(hp, elem, link) \ + APR_RING_CHECK_ELEM_CONSISTENCY(APR_RING_SENTINEL(hp, elem, link),\ + elem, link) + +#define APR_RING_CHECK_ELEM_CONSISTENCY(ep, elem, link) do { \ + struct elem *start = (ep); \ + struct elem *here = start; \ + do { \ + assert(APR_RING_PREV(APR_RING_NEXT(here, link), link) == here); \ + assert(APR_RING_NEXT(APR_RING_PREV(here, link), link) == here); \ + here = APR_RING_NEXT(here, link); \ + } while (here != start); \ + } while (0) + +#else +/** + * Print a single pointer value to STDERR + * (This is a no-op unless APR_RING_DEBUG is defined.) + * @param msg Descriptive message + * @param ptr Pointer value to print + */ +#define APR_RING_CHECK_ONE(msg, ptr) +/** + * Dump all ring pointers to STDERR, starting with the head and looping all + * the way around the ring back to the head. Aborts if an inconsistency + * is found. + * (This is a no-op unless APR_RING_DEBUG is defined.) + * @param hp Head of the ring + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + * @param msg Descriptive message + */ +#define APR_RING_CHECK(hp, elem, link, msg) +/** + * Loops around a ring and checks all the pointers for consistency. Pops + * an assertion if any inconsistency is found. Same idea as APR_RING_CHECK() + * except that it's silent if all is well. + * (This is a no-op unless APR_RING_DEBUG is defined.) + * @param hp Head of the ring + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_CHECK_CONSISTENCY(hp, elem, link) +/** + * Dump all ring pointers to STDERR, starting with the given element and + * looping all the way around the ring back to that element. Aborts if + * an inconsistency is found. + * (This is a no-op unless APR_RING_DEBUG is defined.) + * @param ep The element + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + * @param msg Descriptive message + */ +#define APR_RING_CHECK_ELEM(ep, elem, link, msg) +/** + * Loops around a ring, starting with the given element, and checks all + * the pointers for consistency. Pops an assertion if any inconsistency + * is found. Same idea as APR_RING_CHECK_ELEM() except that it's silent + * if all is well. + * (This is a no-op unless APR_RING_DEBUG is defined.) + * @param ep The element + * @param elem The name of the element struct + * @param link The name of the APR_RING_ENTRY in the element struct + */ +#define APR_RING_CHECK_ELEM_CONSISTENCY(ep, elem, link) +#endif + +/** @} */ + +#endif /* !APR_RING_H */ diff --git a/rubbos/app/apache2/include/apr_rmm.h b/rubbos/app/apache2/include/apr_rmm.h new file mode 100644 index 00000000..a1f0d676 --- /dev/null +++ b/rubbos/app/apache2/include/apr_rmm.h @@ -0,0 +1,137 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_RMM_H +#define APR_RMM_H +/** + * @file apr_rmm.h + * @brief APR-UTIL Relocatable Memory Management Routines + */ +/** + * @defgroup APR_Util_RMM Relocatable Memory Management Routines + * @ingroup APR_Util + * @{ + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" +#include "apu.h" +#include "apr_anylock.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** Structure to access Relocatable, Managed Memory */ +typedef struct apr_rmm_t apr_rmm_t; + +/** Fundamental allocation unit, within a specific apr_rmm_t */ +typedef apr_size_t apr_rmm_off_t; + +/** + * Initialize a relocatable memory block to be managed by the apr_rmm API. + * @param rmm The relocatable memory block + * @param lock An apr_anylock_t of the appropriate type of lock, or NULL + * if no locking is required. + * @param membuf The block of relocatable memory to be managed + * @param memsize The size of relocatable memory block to be managed + * @param cont The pool to use for local storage and management + * @remark Both @param membuf and @param memsize must be aligned + * (for instance using APR_ALIGN_DEFAULT). + */ +APU_DECLARE(apr_status_t) apr_rmm_init(apr_rmm_t **rmm, apr_anylock_t *lock, + void *membuf, apr_size_t memsize, + apr_pool_t *cont); + +/** + * Destroy a managed memory block. + * @param rmm The relocatable memory block to destroy + */ +APU_DECLARE(apr_status_t) apr_rmm_destroy(apr_rmm_t *rmm); + +/** + * Attach to a relocatable memory block already managed by the apr_rmm API. + * @param rmm The relocatable memory block + * @param lock An apr_anylock_t of the appropriate type of lock + * @param membuf The block of relocatable memory already under management + * @param cont The pool to use for local storage and management + */ +APU_DECLARE(apr_status_t) apr_rmm_attach(apr_rmm_t **rmm, apr_anylock_t *lock, + void *membuf, apr_pool_t *cont); + +/** + * Detach from the managed block of memory. + * @param rmm The relocatable memory block to detach from + */ +APU_DECLARE(apr_status_t) apr_rmm_detach(apr_rmm_t *rmm); + +/** + * Allocate memory from the block of relocatable memory. + * @param rmm The relocatable memory block + * @param reqsize How much memory to allocate + */ +APU_DECLARE(apr_rmm_off_t) apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t reqsize); + +/** + * Realloc memory from the block of relocatable memory. + * @param rmm The relocatable memory block + * @param entity The memory allocation to realloc + * @param reqsize The new size + */ +APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity, apr_size_t reqsize); + +/** + * Allocate memory from the block of relocatable memory and initialize it to zero. + * @param rmm The relocatable memory block + * @param reqsize How much memory to allocate + */ +APU_DECLARE(apr_rmm_off_t) apr_rmm_calloc(apr_rmm_t *rmm, apr_size_t reqsize); + +/** + * Free allocation returned by apr_rmm_malloc or apr_rmm_calloc. + * @param rmm The relocatable memory block + * @param entity The memory allocation to free + */ +APU_DECLARE(apr_status_t) apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t entity); + +/** + * Retrieve the physical address of a relocatable allocation of memory + * @param rmm The relocatable memory block + * @param entity The memory allocation to free + * @return address The address, aligned with APR_ALIGN_DEFAULT. + */ +APU_DECLARE(void *) apr_rmm_addr_get(apr_rmm_t *rmm, apr_rmm_off_t entity); + +/** + * Compute the offset of a relocatable allocation of memory + * @param rmm The relocatable memory block + * @param entity The physical address to convert to an offset + */ +APU_DECLARE(apr_rmm_off_t) apr_rmm_offset_get(apr_rmm_t *rmm, void *entity); + +/** + * Compute the required overallocation of memory needed to fit n allocs + * @param n The number of alloc/calloc regions desired + */ +APU_DECLARE(apr_size_t) apr_rmm_overhead_get(int n); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif /* ! APR_RMM_H */ + diff --git a/rubbos/app/apache2/include/apr_sdbm.h b/rubbos/app/apache2/include/apr_sdbm.h new file mode 100644 index 00000000..7fcf7f6e --- /dev/null +++ b/rubbos/app/apache2/include/apr_sdbm.h @@ -0,0 +1,175 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * sdbm - ndbm work-alike hashed database library + * based on Per-Ake Larson's Dynamic Hashing algorithms. BIT 18 (1978). + * author: oz@nexus.yorku.ca + * status: ex-public domain + */ + +#ifndef APR_SDBM_H +#define APR_SDBM_H + +#include "apu.h" +#include "apr_errno.h" +#include "apr_file_io.h" /* for apr_fileperms_t */ + +/** + * @file apr_sdbm.h + * @brief apr-util SDBM library + */ +/** + * @defgroup APR_Util_DBM_SDBM SDBM library + * @ingroup APR_Util_DBM + * @{ + */ + +/** + * Structure for referencing an sdbm + */ +typedef struct apr_sdbm_t apr_sdbm_t; + +/** + * Structure for referencing the datum record within an sdbm + */ +typedef struct { + /** pointer to the data stored/retrieved */ + char *dptr; + /** size of data */ + int dsize; +} apr_sdbm_datum_t; + +/* The extensions used for the database files */ +/** SDBM Directory file extension */ +#define APR_SDBM_DIRFEXT ".dir" +/** SDBM page file extension */ +#define APR_SDBM_PAGFEXT ".pag" + +/* flags to sdbm_store */ +#define APR_SDBM_INSERT 0 /**< Insert */ +#define APR_SDBM_REPLACE 1 /**< Replace */ +#define APR_SDBM_INSERTDUP 2 /**< Insert with duplicates */ + +/** + * Open an sdbm database by file name + * @param db The newly opened database + * @param name The sdbm file to open + * @param mode The flag values (APR_READ and APR_BINARY flags are implicit) + *
    + *           APR_WRITE          open for read-write access
    + *           APR_CREATE         create the sdbm if it does not exist
    + *           APR_TRUNCATE       empty the contents of the sdbm
    + *           APR_EXCL           fail for APR_CREATE if the file exists
    + *           APR_DELONCLOSE     delete the sdbm when closed
    + *           APR_SHARELOCK      support locking across process/machines
    + * 
    + * @param perms Permissions to apply to if created + * @param p The pool to use when creating the sdbm + * @remark The sdbm name is not a true file name, as sdbm appends suffixes + * for seperate data and index files. + */ +APU_DECLARE(apr_status_t) apr_sdbm_open(apr_sdbm_t **db, const char *name, + apr_int32_t mode, + apr_fileperms_t perms, apr_pool_t *p); + +/** + * Close an sdbm file previously opened by apr_sdbm_open + * @param db The database to close + */ +APU_DECLARE(apr_status_t) apr_sdbm_close(apr_sdbm_t *db); + +/** + * Lock an sdbm database for concurency of multiple operations + * @param db The database to lock + * @param type The lock type + *
    + *           APR_FLOCK_SHARED
    + *           APR_FLOCK_EXCLUSIVE
    + * 
    + * @remark Calls to apr_sdbm_lock may be nested. All apr_sdbm functions + * perform implicit locking. Since an APR_FLOCK_SHARED lock cannot be + * portably promoted to an APR_FLOCK_EXCLUSIVE lock, apr_sdbm_store and + * apr_sdbm_delete calls will fail if an APR_FLOCK_SHARED lock is held. + * The apr_sdbm_lock call requires the database to be opened with the + * APR_SHARELOCK mode value. + */ +APU_DECLARE(apr_status_t) apr_sdbm_lock(apr_sdbm_t *db, int type); + +/** + * Release an sdbm lock previously aquired by apr_sdbm_lock + * @param db The database to unlock + */ +APU_DECLARE(apr_status_t) apr_sdbm_unlock(apr_sdbm_t *db); + +/** + * Fetch an sdbm record value by key + * @param db The database + * @param value The value datum retrieved for this record + * @param key The key datum to find this record + */ +APU_DECLARE(apr_status_t) apr_sdbm_fetch(apr_sdbm_t *db, + apr_sdbm_datum_t *value, + apr_sdbm_datum_t key); + +/** + * Store an sdbm record value by key + * @param db The database + * @param key The key datum to store this record by + * @param value The value datum to store in this record + * @param opt The method used to store the record + *
    + *           APR_SDBM_INSERT     return an error if the record exists
    + *           APR_SDBM_REPLACE    overwrite any existing record for key
    + * 
    + */ +APU_DECLARE(apr_status_t) apr_sdbm_store(apr_sdbm_t *db, apr_sdbm_datum_t key, + apr_sdbm_datum_t value, int opt); + +/** + * Delete an sdbm record value by key + * @param db The database + * @param key The key datum of the record to delete + * @remark It is not an error to delete a non-existent record. + */ +APU_DECLARE(apr_status_t) apr_sdbm_delete(apr_sdbm_t *db, + const apr_sdbm_datum_t key); + +/** + * Retrieve the first record key from a dbm + * @param db The database + * @param key The key datum of the first record + * @remark The keys returned are not ordered. To traverse the list of keys + * for an sdbm opened with APR_SHARELOCK, the caller must use apr_sdbm_lock + * prior to retrieving the first record, and hold the lock until after the + * last call to apr_sdbm_nextkey. + */ +APU_DECLARE(apr_status_t) apr_sdbm_firstkey(apr_sdbm_t *db, apr_sdbm_datum_t *key); + +/** + * Retrieve the next record key from an sdbm + * @param db The database + * @param key The key datum of the next record + */ +APU_DECLARE(apr_status_t) apr_sdbm_nextkey(apr_sdbm_t *db, apr_sdbm_datum_t *key); + +/** + * Returns true if the sdbm database opened for read-only access + * @param db The database to test + */ +APU_DECLARE(int) apr_sdbm_rdonly(apr_sdbm_t *db); +/** @} */ +#endif /* APR_SDBM_H */ diff --git a/rubbos/app/apache2/include/apr_sha1.h b/rubbos/app/apache2/include/apr_sha1.h new file mode 100644 index 00000000..1ad50655 --- /dev/null +++ b/rubbos/app/apache2/include/apr_sha1.h @@ -0,0 +1,121 @@ +/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* NIST Secure Hash Algorithm + * heavily modified by Uwe Hollerbach uh@alumni.caltech edu + * from Peter C. Gutmann's implementation as found in + * Applied Cryptography by Bruce Schneier + * This code is hereby placed in the public domain + */ + +#ifndef APR_SHA1_H +#define APR_SHA1_H + +#include "apu.h" +#include "apr_general.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file apr_sha1.h + * @brief APR-UTIL SHA1 library + */ + +/** size of the SHA1 DIGEST */ +#define APR_SHA1_DIGESTSIZE 20 + +/** + * Define the Magic String prefix that identifies a password as being + * hashed using our algorithm. + */ +#define APR_SHA1PW_ID "{SHA}" + +/** length of the SHA Password */ +#define APR_SHA1PW_IDLEN 5 + +/** @see apr_sha1_ctx_t */ +typedef struct apr_sha1_ctx_t apr_sha1_ctx_t; + +/** + * SHA1 context structure + */ +struct apr_sha1_ctx_t { + /** message digest */ + apr_uint32_t digest[5]; + /** 64-bit bit counts */ + apr_uint32_t count_lo, count_hi; + /** SHA data buffer */ + apr_uint32_t data[16]; + /** unprocessed amount in data */ + int local; +}; + +/** + * Provide a means to SHA1 crypt/encode a plaintext password in a way which + * makes password file compatible with those commonly use in netscape web + * and ldap installations. + * @param clear The plaintext password + * @param len The length of the plaintext password + * @param out The encrypted/encoded password + * @note SHA1 support is useful for migration purposes, but is less + * secure than Apache's password format, since Apache's (MD5) + * password format uses a random eight character salt to generate + * one of many possible hashes for the same password. Netscape + * uses plain SHA1 without a salt, so the same password + * will always generate the same hash, making it easier + * to break since the search space is smaller. + */ +APU_DECLARE(void) apr_sha1_base64(const char *clear, int len, char *out); + +/** + * Initialize the SHA digest + * @param context The SHA context to initialize + */ +APU_DECLARE(void) apr_sha1_init(apr_sha1_ctx_t *context); + +/** + * Update the SHA digest + * @param context The SHA1 context to update + * @param input The buffer to add to the SHA digest + * @param inputLen The length of the input buffer + */ +APU_DECLARE(void) apr_sha1_update(apr_sha1_ctx_t *context, const char *input, + unsigned int inputLen); + +/** + * Update the SHA digest with binary data + * @param context The SHA1 context to update + * @param input The buffer to add to the SHA digest + * @param inputLen The length of the input buffer + */ +APU_DECLARE(void) apr_sha1_update_binary(apr_sha1_ctx_t *context, + const unsigned char *input, + unsigned int inputLen); + +/** + * Finish computing the SHA digest + * @param digest the output buffer in which to store the digest + * @param context The context to finalize + */ +APU_DECLARE(void) apr_sha1_final(unsigned char digest[APR_SHA1_DIGESTSIZE], + apr_sha1_ctx_t *context); + +#ifdef __cplusplus +} +#endif + +#endif /* APR_SHA1_H */ diff --git a/rubbos/app/apache2/include/apr_shm.h b/rubbos/app/apache2/include/apr_shm.h new file mode 100644 index 00000000..5373f6a7 --- /dev/null +++ b/rubbos/app/apache2/include/apr_shm.h @@ -0,0 +1,127 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_SHM_H +#define APR_SHM_H + +/** + * @file apr_shm.h + * @brief APR Shared Memory Routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_shm Shared Memory Routines + * @ingroup APR + * @{ + */ + +/** + * Private, platform-specific data struture representing a shared memory + * segment. + */ +typedef struct apr_shm_t apr_shm_t; + +/** + * Create and make accessable a shared memory segment. + * @param m The shared memory structure to create. + * @param reqsize The desired size of the segment. + * @param filename The file to use for shared memory on platforms that + * require it. + * @param pool the pool from which to allocate the shared memory + * structure. + * @remark A note about Anonymous vs. Named shared memory segments: + * Not all plaforms support anonymous shared memory segments, but in + * some cases it is prefered over other types of shared memory + * implementations. Passing a NULL 'file' parameter to this function + * will cause the subsystem to use anonymous shared memory segments. + * If such a system is not available, APR_ENOTIMPL is returned. + * @remark A note about allocation sizes: + * On some platforms it is necessary to store some metainformation + * about the segment within the actual segment. In order to supply + * the caller with the requested size it may be necessary for the + * implementation to request a slightly greater segment length + * from the subsystem. In all cases, the apr_shm_baseaddr_get() + * function will return the first usable byte of memory. + * + */ +APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, + apr_size_t reqsize, + const char *filename, + apr_pool_t *pool); + +/** + * Destroy a shared memory segment and associated memory. + * @param m The shared memory segment structure to destroy. + */ +APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m); + +/** + * Attach to a shared memory segment that was created + * by another process. + * @param m The shared memory structure to create. + * @param filename The file used to create the original segment. + * (This MUST match the original filename.) + * @param pool the pool from which to allocate the shared memory + * structure for this process. + */ +APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, + const char *filename, + apr_pool_t *pool); + +/** + * Detach from a shared memory segment without destroying it. + * @param m The shared memory structure representing the segment + * to detach from. + */ +APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m); + +/** + * Retrieve the base address of the shared memory segment. + * NOTE: This address is only usable within the callers address + * space, since this API does not guarantee that other attaching + * processes will maintain the same address mapping. + * @param m The shared memory segment from which to retrieve + * the base address. + */ +APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m); + +/** + * Retrieve the length of a shared memory segment in bytes. + * @param m The shared memory segment from which to retrieve + * the segment length. + */ +APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m); + +/** + * Get the pool used by this shared memory segment. + */ +APR_POOL_DECLARE_ACCESSOR(shm); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* APR_SHM_T */ diff --git a/rubbos/app/apache2/include/apr_signal.h b/rubbos/app/apache2/include/apr_signal.h new file mode 100644 index 00000000..7f4940a0 --- /dev/null +++ b/rubbos/app/apache2/include/apr_signal.h @@ -0,0 +1,98 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_SIGNAL_H +#define APR_SIGNAL_H + +/** + * @file apr_signal.h + * @brief APR Signal Handling + */ + +#include "apr.h" +#include "apr_pools.h" + +#if APR_HAVE_SIGNAL_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_signal Handling + * @ingroup APR + * @{ + */ + +#if APR_HAVE_SIGACTION || defined(DOXYGEN) + +#if defined(DARWIN) && !defined(__cplusplus) && !defined(_ANSI_SOURCE) +/* work around Darwin header file bugs + * http://www.opensource.apple.com/bugs/X/BSD%20Kernel/2657228.html + */ +#undef SIG_DFL +#undef SIG_IGN +#undef SIG_ERR +#define SIG_DFL (void (*)(int))0 +#define SIG_IGN (void (*)(int))1 +#define SIG_ERR (void (*)(int))-1 +#endif + +/** Function prototype for signal handlers */ +typedef void apr_sigfunc_t(int); + +/** + * Set the signal handler function for a given signal + * @param signo The signal (eg... SIGWINCH) + * @param func the function to get called + */ +APR_DECLARE(apr_sigfunc_t *) apr_signal(int signo, apr_sigfunc_t * func); + +#if defined(SIG_IGN) && !defined(SIG_ERR) +#define SIG_ERR ((apr_sigfunc_t *) -1) +#endif + +#else /* !APR_HAVE_SIGACTION */ +#define apr_signal(a, b) signal(a, b) +#endif + + +/** + * Get the description for a specific signal number + * @param signum The signal number + * @return The description of the signal + */ +APR_DECLARE(const char *) apr_signal_description_get(int signum); + +/** @deprecated @see apr_signal_description_get */ +APR_DECLARE(const char *) apr_signal_get_description(int signum); + +/** + * APR-private function for initializing the signal package + * @internal + * @param pglobal The internal, global pool + */ +void apr_signal_init(apr_pool_t *pglobal); + +/** @} */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* APR_SIGNAL_H */ diff --git a/rubbos/app/apache2/include/apr_strings.h b/rubbos/app/apache2/include/apr_strings.h new file mode 100644 index 00000000..24cfbdf8 --- /dev/null +++ b/rubbos/app/apache2/include/apr_strings.h @@ -0,0 +1,337 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Portions of this file are covered by */ +/* -*- mode: c; c-file-style: "k&r" -*- + + strnatcmp.c -- Perform 'natural order' comparisons of strings in C. + Copyright (C) 2000 by Martin Pool + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef APR_STRINGS_H +#define APR_STRINGS_H + +/** + * @file apr_strings.h + * @brief APR Strings library + */ + +#include "apr.h" +#include "apr_errno.h" +#include "apr_pools.h" +#define APR_WANT_IOVEC +#include "apr_want.h" + +#if APR_HAVE_STDARG_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_strings String routines + * @ingroup APR + * @{ + */ + +/** + * Do a natural order comparison of two strings. + * @param a The first string to compare + * @param b The second string to compare + * @return Either <0, 0, or >0. If the first string is less than the second + * this returns <0, if they are equivalent it returns 0, and if the + * first string is greater than second string it retuns >0. + */ +APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b); + +/** + * Do a natural order comparison of two strings ignoring the case of the + * strings. + * @param a The first string to compare + * @param b The second string to compare + * @return Either <0, 0, or >0. If the first string is less than the second + * this returns <0, if they are equivalent it returns 0, and if the + * first string is greater than second string it retuns >0. + */ +APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b); + +/** + * duplicate a string into memory allocated out of a pool + * @param p The pool to allocate out of + * @param s The string to duplicate + * @return The new string + */ +APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s); + +/** + * Create a null-terminated string by making a copy of a sequence + * of characters and appending a null byte + * @param p The pool to allocate out of + * @param s The block of characters to duplicate + * @param n The number of characters to duplicate + * @return The new string + * @remark This is a faster alternative to apr_pstrndup, for use + * when you know that the string being duplicated really + * has 'n' or more characters. If the string might contain + * fewer characters, use apr_pstrndup. + */ +APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n); + +/** + * Duplicate at most n characters of a string into memory allocated + * out of a pool; the new string will be NUL-terminated + * @param p The pool to allocate out of + * @param s The string to duplicate + * @param n The maximum number of characters to duplicate + * @return The new string + * @remark The amount of memory allocated from the pool is the length + * of the returned string including the NUL terminator + */ +APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n); + +/** + * Duplicate a block of memory. + * + * @param p The pool to allocate from + * @param m The memory to duplicate + * @param n The number of bytes to duplicate + * @return The new block of memory + */ +APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n); + +/** + * Concatenate multiple strings, allocating memory out a pool + * @param p The pool to allocate out of + * @param ... The strings to concatenate. The final string must be NULL + * @return The new string + */ +APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...); + +/** + * Concatenate multiple strings specified in a writev-style vector + * @param p The pool from which to allocate + * @param vec The strings to concatenate + * @param nvec The number of strings to concatenate + * @param nbytes (output) strlen of new string (pass in NULL to omit) + * @return The new string + */ +APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *p, const struct iovec *vec, + apr_size_t nvec, apr_size_t *nbytes); + +/** + * printf-style style printing routine. The data is output to a string + * allocated from a pool + * @param p The pool to allocate out of + * @param fmt The format of the string + * @param ap The arguments to use while printing the data + * @return The new string + */ +APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap); + +/** + * printf-style style printing routine. The data is output to a string + * allocated from a pool + * @param p The pool to allocate out of + * @param fmt The format of the string + * @param ... The arguments to use while printing the data + * @return The new string + */ +APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...) + __attribute__((format(printf,2,3))); + +/** + * copy n characters from src to dst + * @param dst The destination string + * @param src The source string + * @param dst_size The space available in dst; dst always receives + * null-termination, so if src is longer than + * dst_size, the actual number of characters copied is + * dst_size - 1. + * @remark + *
    + * We re-implement this function to implement these specific changes:
    + *       1) strncpy() doesn't always null terminate and we want it to.
    + *       2) strncpy() null fills, which is bogus, esp. when copy 8byte strings
    + *          into 8k blocks.
    + *       3) Instead of returning the pointer to the beginning of the
    + *          destination string, we return a pointer to the terminating null
    + *          to allow us to check for truncation.
    + * 
    + */ +APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, + apr_size_t dst_size); + +/** + * Strip spaces from a string + * @param dest The destination string. It is okay to modify the string + * in place. Namely dest == src + * @param src The string to rid the spaces from. + */ +APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src); + +/** + * Convert the arguments to a program from one string to an array of + * strings terminated by a NULL pointer + * @param arg_str The arguments to convert + * @param argv_out Output location. This is a pointer to an array of strings. + * @param token_context Pool to use. + */ +APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, + char ***argv_out, + apr_pool_t *token_context); + +/** + * Split a string into separate null-terminated tokens. The tokens are + * delimited in the string by one or more characters from the sep + * argument. + * @param str The string to separate; this should be specified on the + * first call to apr_strtok() for a given string, and NULL + * on subsequent calls. + * @param sep The set of delimiters + * @param last Internal state saved by apr_strtok() between calls. + * @return The next token from the string + */ +APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last); + +/** + * @defgroup APR_Strings_Snprintf snprintf implementations + * @warning + * These are snprintf implementations based on apr_vformatter(). + * + * Note that various standards and implementations disagree on the return + * value of snprintf, and side-effects due to %n in the formatting string. + * apr_snprintf (and apr_vsnprintf) behaves as follows: + * + * Process the format string until the entire string is exhausted, or + * the buffer fills. If the buffer fills then stop processing immediately + * (so no further %n arguments are processed), and return the buffer + * length. In all cases the buffer is NUL terminated. It will return the + * number of characters inserted into the buffer, not including the + * terminating NUL. As a special case, if len is 0, apr_snprintf will + * return the number of characters that would have been inserted if + * the buffer had been infinite (in this case, *buffer can be NULL) + * + * In no event does apr_snprintf return a negative number. + * @{ + */ + +/** + * snprintf routine based on apr_vformatter. This means it understands the + * same extensions. + * @param buf The buffer to write to + * @param len The size of the buffer + * @param format The format string + * @param ... The arguments to use to fill out the format string. + */ +APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len, + const char *format, ...) + __attribute__((format(printf,3,4))); + +/** + * vsnprintf routine based on apr_vformatter. This means it understands the + * same extensions. + * @param buf The buffer to write to + * @param len The size of the buffer + * @param format The format string + * @param ap The arguments to use to fill out the format string. + */ +APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format, + va_list ap); +/** @} */ + +/** + * create a string representation of an int, allocated from a pool + * @param p The pool from which to allocate + * @param n The number to format + * @return The string representation of the number + */ +APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n); + +/** + * create a string representation of a long, allocated from a pool + * @param p The pool from which to allocate + * @param n The number to format + * @return The string representation of the number + */ +APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n); + +/** + * create a string representation of an apr_off_t, allocated from a pool + * @param p The pool from which to allocate + * @param n The number to format + * @return The string representation of the number + */ +APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n); + +/** + * parse a numeric string into a 64-bit numeric value + * @param buf The string to parse. It may contain optional whitespace, + * followed by an optional '+' (positive, default) or '-' (negative) + * character, followed by an optional '0x' prefix if base is 0 or 16, + * followed by numeric digits appropriate for base. + * @param end A pointer to the end of the valid character in buf. If + * not nil, it is set to the first invalid character in buf. + * @param base A numeric base in the range between 2 and 36 inclusive, + * or 0. If base is zero, buf will be treated as base ten unless its + * digits are prefixed with '0x', in which case it will be treated as + * base 16. + * @return The numeric value of the string. + */ +APR_DECLARE(apr_int64_t) apr_strtoi64(const char *buf, char **end, int base); + +/** + * parse a base-10 numeric string into a 64-bit numeric value. + * Equivalent to apr_strtoi64(buf, (char**)NULL, 10). + * @param buf The string to parse + * @return The numeric value of the string + */ +APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf); + +/** + * Format a binary size (magnitiudes are 2^10 rather than 10^3) from an apr_off_t, + * as bytes, K, M, T, etc, to a four character compacted human readable string. + * @param size The size to format + * @param buf The 5 byte text buffer (counting the trailing null) + * @return The buf passed to apr_strfsize() + * @remark All negative sizes report ' - ', apr_strfsize only formats positive values. + */ +APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APR_STRINGS_H */ diff --git a/rubbos/app/apache2/include/apr_strmatch.h b/rubbos/app/apache2/include/apr_strmatch.h new file mode 100644 index 00000000..4753318b --- /dev/null +++ b/rubbos/app/apache2/include/apr_strmatch.h @@ -0,0 +1,81 @@ +/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_STRMATCH_H +#define APR_STRMATCH_H +/** + * @file apr_strmatch.h + * @brief APR-UTIL string matching routines + */ + +#include "apu.h" +#include "apr_pools.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup APR_Util_StrMatch String matching routines + * @ingroup APR_Util + * @{ + */ + +/** @see apr_strmatch_pattern */ +typedef struct apr_strmatch_pattern apr_strmatch_pattern; + +/** + * Precompiled search pattern + */ +struct apr_strmatch_pattern { + /** Function called to compare */ + const char *(*compare)(const apr_strmatch_pattern *this_pattern, + const char *s, apr_size_t slen); + const char *pattern; /**< Current pattern */ + apr_size_t length; /**< Current length */ + void *context; /**< hook to add precomputed metadata */ +}; + +#if defined(DOXYGEN) +/** + * Search for a precompiled pattern within a string + * @param pattern The pattern + * @param s The string in which to search for the pattern + * @param slen The length of s (excluding null terminator) + * @return A pointer to the first instance of the pattern in s, or + * NULL if not found + */ +APU_DECLARE(const char *) apr_strmatch(const apr_strmatch_pattern *pattern, + const char *s, apr_size_t slen); +#else +#define apr_strmatch(pattern, s, slen) (*((pattern)->compare))((pattern), (s), (slen)) +#endif + +/** + * Precompile a pattern for matching using the Boyer-Moore-Horspool algorithm + * @param p The pool from which to allocate the pattern + * @param s The pattern string + * @param case_sensitive Whether the matching should be case-sensitive + * @return a pointer to the compiled pattern, or NULL if compilation fails + */ +APU_DECLARE(const apr_strmatch_pattern *) apr_strmatch_precompile(apr_pool_t *p, const char *s, int case_sensitive); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* !APR_STRMATCH_H */ diff --git a/rubbos/app/apache2/include/apr_support.h b/rubbos/app/apache2/include/apr_support.h new file mode 100644 index 00000000..ee31860f --- /dev/null +++ b/rubbos/app/apache2/include/apr_support.h @@ -0,0 +1,51 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_SUPPORT_H +#define APR_SUPPORT_H + +/** + * @file apr_support.h + * @brief APR Support functions + */ + +#include "apr.h" +#include "apr_network_io.h" +#include "apr_file_io.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_support Internal APR support functions + * @ingroup APR + * @{ + */ + +/** + * Wait for IO to occur or timeout. + */ +apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, + int for_read); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_SUPPORT_H */ diff --git a/rubbos/app/apache2/include/apr_tables.h b/rubbos/app/apache2/include/apr_tables.h new file mode 100644 index 00000000..f286b5c7 --- /dev/null +++ b/rubbos/app/apache2/include/apr_tables.h @@ -0,0 +1,422 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_TABLES_H +#define APR_TABLES_H + +/** + * @file apr_tables.h + * @brief APR Table library + */ + +#include "apr.h" +#include "apr_pools.h" + +#if APR_HAVE_STDARG_H +#include /* for va_list */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_tables Table and Array Functions + * @ingroup APR + * Tables are used to store entirely opaque structures + * for applications, while Arrays are usually used to + * deal with string lists. + * @{ + */ + +/** the table abstract data type */ +typedef struct apr_table_t apr_table_t; + +/** @see apr_array_header_t */ +typedef struct apr_array_header_t apr_array_header_t; + +/** An opaque array type */ +struct apr_array_header_t { + /** The pool the array is allocated out of */ + apr_pool_t *pool; + /** The amount of memory allocated for each element of the array */ + int elt_size; + /** The number of active elements in the array */ + int nelts; + /** The number of elements allocated in the array */ + int nalloc; + /** The elements in the array */ + char *elts; +}; + +/** + * The (opaque) structure for string-content tables. + */ +typedef struct apr_table_entry_t apr_table_entry_t; + +/** The type for each entry in a string-content table */ +struct apr_table_entry_t { + /** The key for the current table entry */ + char *key; /* maybe NULL in future; + * check when iterating thru table_elts + */ + /** The value for the current table entry */ + char *val; + + /** A checksum for the key, for use by the apr_table internals */ + apr_uint32_t key_checksum; +}; + +/** + * Get the elements from a table + * @param t The table + * @return An array containing the contents of the table + */ +APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t); + +/** + * Determine if the table is empty + * @param t The table to check + * @return True if empty, False otherwise + */ +APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t); + +/** + * Determine if the array is empty + * @param a The array to check + * @return True if empty, False otherwise + */ +APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a); + +/** + * Create an array + * @param p The pool to allocate the memory out of + * @param nelts the number of elements in the initial array + * @param elt_size The size of each element in the array. + * @return The new array + */ +APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, + int nelts, int elt_size); + +/** + * Add a new element to an array + * @param arr The array to add an element to. + * @return Location for the new element in the array. + * @remark If there are no free spots in the array, then this function will + * allocate new space for the new element. + */ +APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr); + +/** + * Remove an element from an array + * @param arr The array to remove an element from. + * @return Location of the element in the array. + * @remark If there are no elements in the array, NULL is returned. + */ +APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr); + +/** + * Concatenate two arrays together + * @param dst The destination array, and the one to go first in the combined + * array + * @param src The source array to add to the destination array + */ +APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst, + const apr_array_header_t *src); + +/** + * Copy the entire array + * @param p The pool to allocate the copy of the array out of + * @param arr The array to copy + * @return An exact copy of the array passed in + * @remark The alternate apr_array_copy_hdr copies only the header, and arranges + * for the elements to be copied if (and only if) the code subsequently + * does a push or arraycat. + */ +APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p, + const apr_array_header_t *arr); +/** + * Copy the headers of the array, and arrange for the elements to be copied if + * and only if the code subsequently does a push or arraycat. + * @param p The pool to allocate the copy of the array out of + * @param arr The array to copy + * @return An exact copy of the array passed in + * @remark The alternate apr_array_copy copies the *entire* array. + */ +APR_DECLARE(apr_array_header_t *) apr_array_copy_hdr(apr_pool_t *p, + const apr_array_header_t *arr); + +/** + * Append one array to the end of another, creating a new array in the process. + * @param p The pool to allocate the new array out of + * @param first The array to put first in the new array. + * @param second The array to put second in the new array. + * @return A new array containing the data from the two arrays passed in. +*/ +APR_DECLARE(apr_array_header_t *) apr_array_append(apr_pool_t *p, + const apr_array_header_t *first, + const apr_array_header_t *second); + +/** + * Generates a new string from the apr_pool_t containing the concatenated + * sequence of substrings referenced as elements within the array. The string + * will be empty if all substrings are empty or null, or if there are no + * elements in the array. If sep is non-NUL, it will be inserted between + * elements as a separator. + * @param p The pool to allocate the string out of + * @param arr The array to generate the string from + * @param sep The separator to use + * @return A string containing all of the data in the array. + */ +APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, + const apr_array_header_t *arr, + const char sep); + +/** + * Make a new table + * @param p The pool to allocate the pool out of + * @param nelts The number of elements in the initial table. + * @return The new table. + * @warning This table can only store text data + */ +APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts); + +/** + * Create a new table and copy another table into it + * @param p The pool to allocate the new table out of + * @param t The table to copy + * @return A copy of the table passed in + */ +APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, + const apr_table_t *t); + +/** + * Delete all of the elements from a table + * @param t The table to clear + */ +APR_DECLARE(void) apr_table_clear(apr_table_t *t); + +/** + * Get the value associated with a given key from the table. After this call, + * The data is still in the table + * @param t The table to search for the key + * @param key The key to search for + * @return The value associated with the key + */ +APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key); + +/** + * Add a key/value pair to a table, if another element already exists with the + * same key, this will over-write the old data. + * @param t The table to add the data to. + * @param key The key fo use + * @param val The value to add + * @remark When adding data, this function makes a copy of both the key and the + * value. + */ +APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, + const char *val); + +/** + * Add a key/value pair to a table, if another element already exists with the + * same key, this will over-write the old data. + * @param t The table to add the data to. + * @param key The key to use + * @param val The value to add + * @warning When adding data, this function does not make a copy of the key or + * the value, so care should be taken to ensure that the values will + * not change after they have been added.. + */ +APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, + const char *val); + +/** + * Remove data from the table + * @param t The table to remove data from + * @param key The key of the data being removed + */ +APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key); + +/** + * Add data to a table by merging the value with data that has already been + * stored + * @param t The table to search for the data + * @param key The key to merge data for + * @param val The data to add + * @remark If the key is not found, then this function acts like apr_table_add + */ +APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, + const char *val); + +/** + * Add data to a table by merging the value with data that has already been + * stored + * @param t The table to search for the data + * @param key The key to merge data for + * @param val The data to add + * @remark If the key is not found, then this function acts like apr_table_addn + */ +APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, + const char *val); + +/** + * Add data to a table, regardless of whether there is another element with the + * same key. + * @param t The table to add to + * @param key The key to use + * @param val The value to add. + * @remark When adding data, this function makes a copy of both the key and the + * value. + */ +APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key, + const char *val); + +/** + * Add data to a table, regardless of whether there is another element with the + * same key. + * @param t The table to add to + * @param key The key to use + * @param val The value to add. + * @remark When adding data, this function does not make a copy of the key or the + * value, so care should be taken to ensure that the values will not + * change after they have been added.. + */ +APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key, + const char *val); + +/** + * Merge two tables into one new table + * @param p The pool to use for the new table + * @param overlay The first table to put in the new table + * @param base The table to add at the end of the new table + * @return A new table containing all of the data from the two passed in + */ +APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p, + const apr_table_t *overlay, + const apr_table_t *base); + +/** + * Declaration prototype for the iterator callback function of apr_table_do() + * and apr_table_vdo(). + * @param rec The data passed as the first argument to apr_table_[v]do() + * @param key The key from this iteration of the table + * @param value The value from this iteration of the table + * @remark Iteration continues while this callback function returns non-zero. + * To export the callback function for apr_table_[v]do() it must be declared + * in the _NONSTD convention. + */ +typedef int (apr_table_do_callback_fn_t)(void *rec, const char *key, + const char *value); + +/** + * Iterate over a table running the provided function once for every + * element in the table. If there is data passed in as a vararg, then the + * function is only run on those elements whose key matches something in + * the vararg. If the vararg is NULL, then every element is run through the + * function. Iteration continues while the function returns non-zero. + * @param comp The function to run + * @param rec The data to pass as the first argument to the function + * @param t The table to iterate over + * @param ... The vararg. If this is NULL, then all elements in the table are + * run through the function, otherwise only those whose key matches + * are run. + * @return FALSE if one of the comp() iterations returned zero; TRUE if all + * iterations returned non-zero + * @see apr_table_do_callback_fn_t + */ +APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, + void *rec, const apr_table_t *t, ...); + +/** + * Iterate over a table running the provided function once for every + * element in the table. If there is data passed in as a vararg, then the + * function is only run on those element's whose key matches something in + * the vararg. If the vararg is NULL, then every element is run through the + * function. Iteration continues while the function returns non-zero. + * @param comp The function to run + * @param rec The data to pass as the first argument to the function + * @param t The table to iterate over + * @param vp The vararg table. If this is NULL, then all elements in the + * table are run through the function, otherwise only those + * whose key matches are run. + * @return FALSE if one of the comp() iterations returned zero; TRUE if all + * iterations returned non-zero + * @see apr_table_do_callback_fn_t + */ +APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, + void *rec, const apr_table_t *t, va_list vp); + +/** flag for overlap to use apr_table_setn */ +#define APR_OVERLAP_TABLES_SET (0) +/** flag for overlap to use apr_table_mergen */ +#define APR_OVERLAP_TABLES_MERGE (1) +/** + * For each element in table b, either use setn or mergen to add the data + * to table a. Which method is used is determined by the flags passed in. + * @param a The table to add the data to. + * @param b The table to iterate over, adding its data to table a + * @param flags How to add the table to table a. One of: + * APR_OVERLAP_TABLES_SET Use apr_table_setn + * APR_OVERLAP_TABLES_MERGE Use apr_table_mergen + * @remark This function is highly optimized, and uses less memory and CPU cycles + * than a function that just loops through table b calling other functions. + */ +/** + *
    + * Conceptually, apr_table_overlap does this:
    + *
    + *  apr_array_header_t *barr = apr_table_elts(b);
    + *  apr_table_entry_t *belt = (apr_table_entry_t *)barr->elts;
    + *  int i;
    + *
    + *  for (i = 0; i < barr->nelts; ++i) {
    + *      if (flags & APR_OVERLAP_TABLES_MERGE) {
    + *          apr_table_mergen(a, belt[i].key, belt[i].val);
    + *      }
    + *      else {
    + *          apr_table_setn(a, belt[i].key, belt[i].val);
    + *      }
    + *  }
    + *
    + *  Except that it is more efficient (less space and cpu-time) especially
    + *  when b has many elements.
    + *
    + *  Notice the assumptions on the keys and values in b -- they must be
    + *  in an ancestor of a's pool.  In practice b and a are usually from
    + *  the same pool.
    + * 
    + */ + +APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b, + unsigned flags); + +/** + * Eliminate redunandant entries in a table by either overwriting + * or merging duplicates + * + * @param t Table. + * @param flags APR_OVERLAP_TABLES_MERGE to merge, or + * APR_OVERLAP_TABLES_SET to overwrite + */ +APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_TABLES_H */ diff --git a/rubbos/app/apache2/include/apr_thread_cond.h b/rubbos/app/apache2/include/apr_thread_cond.h new file mode 100644 index 00000000..520fb309 --- /dev/null +++ b/rubbos/app/apache2/include/apr_thread_cond.h @@ -0,0 +1,128 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_THREAD_COND_H +#define APR_THREAD_COND_H + +/** + * @file apr_thread_cond.h + * @brief APR Condition Variable Routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" +#include "apr_time.h" +#include "apr_thread_mutex.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if APR_HAS_THREADS || defined(DOXYGEN) + +/** + * @defgroup apr_thread_cond Condition Variable Routines + * @ingroup APR + * @{ + */ + +/** Opaque structure for thread condition variables */ +typedef struct apr_thread_cond_t apr_thread_cond_t; + +/** + * Create and initialize a condition variable that can be used to signal + * and schedule threads in a single process. + * @param cond the memory address where the newly created condition variable + * will be stored. + * @param pool the pool from which to allocate the mutex. + */ +APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, + apr_pool_t *pool); + +/** + * Put the active calling thread to sleep until signaled to wake up. Each + * condition variable must be associated with a mutex, and that mutex must + * be locked before calling this function, or the behavior will be + * undefined. As the calling thread is put to sleep, the given mutex + * will be simultaneously released; and as this thread wakes up the lock + * is again simultaneously acquired. + * @param cond the condition variable on which to block. + * @param mutex the mutex that must be locked upon entering this function, + * is released while the thread is asleep, and is again acquired before + * returning from this function. + */ +APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, + apr_thread_mutex_t *mutex); + +/** + * Put the active calling thread to sleep until signaled to wake up or + * the timeout is reached. Each condition variable must be associated + * with a mutex, and that mutex must be locked before calling this + * function, or the behavior will be undefined. As the calling thread + * is put to sleep, the given mutex will be simultaneously released; + * and as this thread wakes up the lock is again simultaneously acquired. + * @param cond the condition variable on which to block. + * @param mutex the mutex that must be locked upon entering this function, + * is released while the thread is asleep, and is again acquired before + * returning from this function. + * @param timeout The amount of time in microseconds to wait. This is + * a maximum, not a minimum. If the condition is signaled, we + * will wake up before this time, otherwise the error APR_TIMEUP + * is returned. + */ +APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, + apr_thread_mutex_t *mutex, + apr_interval_time_t timeout); + +/** + * Signals a singla thread, if one exists, that is blocking on the given + * condition variable. That thread is then scheduled to wake up and acquire + * the associated mutex. Although it is not required, if predictible schedule + * is desired, that mutex must be locked while calling this function. + * @param cond the condition variable on which to produce the signal. + */ +APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond); + +/** + * Signals all threads blocking on the given condition variable. + * Each thread that was signaled is then schedule to wake up and acquire + * the associated mutex. This will happen in a serialized manner. + * @param cond the condition variable on which to produce the broadcast. + */ +APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond); + +/** + * Destroy the condition variable and free the associated memory. + * @param cond the condition variable to destroy. + */ +APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond); + +/** + * Get the pool used by this thread_cond. + * @return apr_pool_t the pool + */ +APR_POOL_DECLARE_ACCESSOR(thread_cond); + +#endif /* APR_HAS_THREADS */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_THREAD_COND_H */ diff --git a/rubbos/app/apache2/include/apr_thread_mutex.h b/rubbos/app/apache2/include/apr_thread_mutex.h new file mode 100644 index 00000000..4596dce5 --- /dev/null +++ b/rubbos/app/apache2/include/apr_thread_mutex.h @@ -0,0 +1,110 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_THREAD_MUTEX_H +#define APR_THREAD_MUTEX_H + +/** + * @file apr_thread_mutex.h + * @brief APR Thread Mutex Routines + */ + +#include "apr.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if APR_HAS_THREADS || defined(DOXYGEN) + +/** + * @defgroup apr_thread_mutex Thread Mutex Routines + * @ingroup APR + * @{ + */ + +/** Opaque thread-local mutex structure */ +typedef struct apr_thread_mutex_t apr_thread_mutex_t; + +#define APR_THREAD_MUTEX_DEFAULT 0x0 /**< platform-optimal lock behavior */ +#define APR_THREAD_MUTEX_NESTED 0x1 /**< enable nested (recursive) locks */ +#define APR_THREAD_MUTEX_UNNESTED 0x2 /**< disable nested locks */ + +/* Delayed the include to avoid a circular reference */ +#include "apr_pools.h" + +/** + * Create and initialize a mutex that can be used to synchronize threads. + * @param mutex the memory address where the newly created mutex will be + * stored. + * @param flags Or'ed value of: + *
    + *           APR_THREAD_MUTEX_DEFAULT   platform-optimal lock behavior.
    + *           APR_THREAD_MUTEX_NESTED    enable nested (recursive) locks.
    + *           APR_THREAD_MUTEX_UNNESTED  disable nested locks (non-recursive).
    + * 
    + * @param pool the pool from which to allocate the mutex. + * @warning Be cautious in using APR_THREAD_MUTEX_DEFAULT. While this is the + * most optimial mutex based on a given platform's performance charateristics, + * it will behave as either a nested or an unnested lock. + */ +APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, + unsigned int flags, + apr_pool_t *pool); +/** + * Acquire the lock for the given mutex. If the mutex is already locked, + * the current thread will be put to sleep until the lock becomes available. + * @param mutex the mutex on which to acquire the lock. + */ +APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex); + +/** + * Attempt to acquire the lock for the given mutex. If the mutex has already + * been acquired, the call returns immediately with APR_EBUSY. Note: it + * is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine + * if the return value was APR_EBUSY, for portability reasons. + * @param mutex the mutex on which to attempt the lock acquiring. + */ +APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex); + +/** + * Release the lock for the given mutex. + * @param mutex the mutex from which to release the lock. + */ +APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex); + +/** + * Destroy the mutex and free the memory associated with the lock. + * @param mutex the mutex to destroy. + */ +APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex); + +/** + * Get the pool used by this thread_mutex. + * @return apr_pool_t the pool + */ +APR_POOL_DECLARE_ACCESSOR(thread_mutex); + +#endif /* APR_HAS_THREADS */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_THREAD_MUTEX_H */ diff --git a/rubbos/app/apache2/include/apr_thread_proc.h b/rubbos/app/apache2/include/apr_thread_proc.h new file mode 100644 index 00000000..be586040 --- /dev/null +++ b/rubbos/app/apache2/include/apr_thread_proc.h @@ -0,0 +1,772 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_THREAD_PROC_H +#define APR_THREAD_PROC_H + +/** + * @file apr_thread_proc.h + * @brief APR Thread and Process Library + */ + +#include "apr.h" +#include "apr_file_io.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#if APR_HAVE_STRUCT_RLIMIT +#include +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_thread_proc Threads and Process Functions + * @ingroup APR + * @{ + */ + +typedef enum { + APR_SHELLCMD, /**< use the shell to invoke the program */ + APR_PROGRAM, /**< invoke the program directly, no copied env */ + APR_PROGRAM_ENV, /**< invoke the program, replicating our environment */ + APR_PROGRAM_PATH, /**< find program on PATH, use our environment */ + APR_SHELLCMD_ENV /**< use the shell to invoke the program, + * replicating our environment + */ +} apr_cmdtype_e; + +typedef enum { + APR_WAIT, /**< wait for the specified process to finish */ + APR_NOWAIT /**< do not wait -- just see if it has finished */ +} apr_wait_how_e; + +/* I am specifically calling out the values so that the macros below make + * more sense. Yes, I know I don't need to, but I am hoping this makes what + * I am doing more clear. If you want to add more reasons to exit, continue + * to use bitmasks. + */ +typedef enum { + APR_PROC_EXIT = 1, /**< process exited normally */ + APR_PROC_SIGNAL = 2, /**< process exited due to a signal */ + APR_PROC_SIGNAL_CORE = 4 /**< process exited and dumped a core file */ +} apr_exit_why_e; + +/** did we exit the process */ +#define APR_PROC_CHECK_EXIT(x) (x & APR_PROC_EXIT) +/** did we get a signal */ +#define APR_PROC_CHECK_SIGNALED(x) (x & APR_PROC_SIGNAL) +/** did we get core */ +#define APR_PROC_CHECK_CORE_DUMP(x) (x & APR_PROC_SIGNAL_CORE) + +/** @see apr_procattr_io_set */ +#define APR_NO_PIPE 0 + +/** @see apr_procattr_io_set */ +#define APR_FULL_BLOCK 1 +/** @see apr_procattr_io_set */ +#define APR_FULL_NONBLOCK 2 +/** @see apr_procattr_io_set */ +#define APR_PARENT_BLOCK 3 +/** @see apr_procattr_io_set */ +#define APR_CHILD_BLOCK 4 + +/** @see apr_procattr_limit_set */ +#define APR_LIMIT_CPU 0 +/** @see apr_procattr_limit_set */ +#define APR_LIMIT_MEM 1 +/** @see apr_procattr_limit_set */ +#define APR_LIMIT_NPROC 2 +/** @see apr_procattr_limit_set */ +#define APR_LIMIT_NOFILE 3 + +/** + * @defgroup APR_OC Other Child Flags + * @{ + */ +#define APR_OC_REASON_DEATH 0 /**< child has died, caller must call + * unregister still */ +#define APR_OC_REASON_UNWRITABLE 1 /**< write_fd is unwritable */ +#define APR_OC_REASON_RESTART 2 /**< a restart is occuring, perform + * any necessary cleanup (including + * sending a special signal to child) + */ +#define APR_OC_REASON_UNREGISTER 3 /**< unregister has been called, do + * whatever is necessary (including + * kill the child) */ +#define APR_OC_REASON_LOST 4 /**< somehow the child exited without + * us knowing ... buggy os? */ +#define APR_OC_REASON_RUNNING 5 /**< a health check is occuring, + * for most maintainence functions + * this is a no-op. + */ +/** @} */ + +/** The APR process type */ +typedef struct apr_proc_t { + /** The process ID */ + pid_t pid; + /** Parent's side of pipe to child's stdin */ + apr_file_t *in; + /** Parent's side of pipe to child's stdout */ + apr_file_t *out; + /** Parent's side of pipe to child's stdouterr */ + apr_file_t *err; +#if APR_HAS_PROC_INVOKED || defined(DOXYGEN) + /** Diagnositics/debugging string of the command invoked for + * this process [only present if APR_HAS_PROC_INVOKED is true] + * @remark Only enabled on Win32 by default. + * @bug This should either always or never be present in release + * builds - since it breaks binary compatibility. We may enable + * it always in APR 1.0 yet leave it undefined in most cases. + */ + char *invoked; +#endif +#if defined(WIN32) || defined(DOXYGEN) + /** (Win32 only) Creator's handle granting access to the process + * @remark This handle is closed and reset to NULL in every case + * corresponding to a waitpid() on Unix which returns the exit status. + * Therefore Win32 correspond's to Unix's zombie reaping characteristics + * and avoids potential handle leaks. + */ + HANDLE hproc; +#endif +} apr_proc_t; + +/** + * The prototype for APR child errfn functions. (See the description + * of apr_procattr_child_errfn_set() for more information.) + * It is passed the following parameters: + * @param pool Pool associated with the apr_proc_t. If your child + * error function needs user data, associate it with this + * pool. + * @param err APR error code describing the error + * @param description Text description of type of processing which failed + */ +typedef void (apr_child_errfn_t)(apr_pool_t *proc, apr_status_t err, + const char *description); + +/** Opaque Thread structure. */ +typedef struct apr_thread_t apr_thread_t; + +/** Opaque Thread attributes structure. */ +typedef struct apr_threadattr_t apr_threadattr_t; + +/** Opaque Process attributes structure. */ +typedef struct apr_procattr_t apr_procattr_t; + +/** Opaque control variable for one-time atomic variables. */ +typedef struct apr_thread_once_t apr_thread_once_t; + +/** Opaque thread private address space. */ +typedef struct apr_threadkey_t apr_threadkey_t; + +/** Opaque record of child process. */ +typedef struct apr_other_child_rec_t apr_other_child_rec_t; + +/** + * The prototype for any APR thread worker functions. + */ +typedef void *(APR_THREAD_FUNC *apr_thread_start_t)(apr_thread_t*, void*); + +typedef enum { + APR_KILL_NEVER, /**< process is never sent any signals */ + APR_KILL_ALWAYS, /**< process is sent SIGKILL on apr_pool_t cleanup */ + APR_KILL_AFTER_TIMEOUT, /**< SIGTERM, wait 3 seconds, SIGKILL */ + APR_JUST_WAIT, /**< wait forever for the process to complete */ + APR_KILL_ONLY_ONCE /**< send SIGTERM and then wait */ +} apr_kill_conditions_e; + +/* Thread Function definitions */ + +#if APR_HAS_THREADS + +/** + * Create and initialize a new threadattr variable + * @param new_attr The newly created threadattr. + * @param cont The pool to use + */ +APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new_attr, + apr_pool_t *cont); + +/** + * Set if newly created threads should be created in detached state. + * @param attr The threadattr to affect + * @param on Thread detach state on or off + */ +APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, + apr_int32_t on); + +/** + * Get the detach state for this threadattr. + * @param attr The threadattr to reference + */ +APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr); + +/** + * Set the stack size of newly created threads. + * @param attr The threadattr to affect + * @param stacksize The stack size in bytes + */ +APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, + apr_size_t stacksize); + +/** + * Create a new thread of execution + * @param new_thread The newly created thread handle. + * @param attr The threadattr to use to determine how to create the thread + * @param func The function to start the new thread in + * @param data Any data to be passed to the starting function + * @param cont The pool to use + */ +APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new_thread, + apr_threadattr_t *attr, + apr_thread_start_t func, + void *data, apr_pool_t *cont); + +/** + * stop the current thread + * @param thd The thread to stop + * @param retval The return value to pass back to any thread that cares + */ +APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, + apr_status_t retval); + +/** + * block until the desired thread stops executing. + * @param retval The return value from the dead thread. + * @param thd The thread to join + */ +APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, + apr_thread_t *thd); + +/** + * force the current thread to yield the processor + */ +APR_DECLARE(void) apr_thread_yield(void); + +/** + * Initialize the control variable for apr_thread_once. If this isn't + * called, apr_initialize won't work. + * @param control The control variable to initialize + * @param p The pool to allocate data from. + */ +APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, + apr_pool_t *p); + +/** + * Run the specified function one time, regardless of how many threads + * call it. + * @param control The control variable. The same variable should + * be passed in each time the function is tried to be + * called. This is how the underlying functions determine + * if the function has ever been called before. + * @param func The function to call. + */ +APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, + void (*func)(void)); + +/** + * detach a thread + * @param thd The thread to detach + */ +APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd); + +/** + * Return the pool associated with the current thread. + * @param data The user data associated with the thread. + * @param key The key to associate with the data + * @param thread The currently open thread. + */ +APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, + apr_thread_t *thread); + +/** + * Return the pool associated with the current thread. + * @param data The user data to associate with the thread. + * @param key The key to use for associating the data with the thread + * @param cleanup The cleanup routine to use when the thread is destroyed. + * @param thread The currently open thread. + */ +APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, + apr_status_t (*cleanup) (void *), + apr_thread_t *thread); + +/** + * Create and initialize a new thread private address space + * @param key The thread private handle. + * @param dest The destructor to use when freeing the private memory. + * @param cont The pool to use + */ +APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, + void (*dest)(void *), + apr_pool_t *cont); + +/** + * Get a pointer to the thread private memory + * @param new_mem The data stored in private memory + * @param key The handle for the desired thread private memory + */ +APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new_mem, + apr_threadkey_t *key); + +/** + * Set the data to be stored in thread private memory + * @param priv The data to be stored in private memory + * @param key The handle for the desired thread private memory + */ +APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, + apr_threadkey_t *key); + +/** + * Free the thread private memory + * @param key The handle for the desired thread private memory + */ +APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key); + +/** + * Return the pool associated with the current threadkey. + * @param data The user data associated with the threadkey. + * @param key The key associated with the data + * @param threadkey The currently open threadkey. + */ +APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, + apr_threadkey_t *threadkey); + +/** + * Return the pool associated with the current threadkey. + * @param data The data to set. + * @param key The key to associate with the data. + * @param cleanup The cleanup routine to use when the file is destroyed. + * @param threadkey The currently open threadkey. + */ +APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, + apr_status_t (*cleanup) (void *), + apr_threadkey_t *threadkey); + +#endif + +/** + * Create and initialize a new procattr variable + * @param new_attr The newly created procattr. + * @param cont The pool to use + */ +APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new_attr, + apr_pool_t *cont); + +/** + * Determine if any of stdin, stdout, or stderr should be linked to pipes + * when starting a child process. + * @param attr The procattr we care about. + * @param in Should stdin be a pipe back to the parent? + * @param out Should stdout be a pipe back to the parent? + * @param err Should stderr be a pipe back to the parent? + */ +APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, + apr_int32_t in, apr_int32_t out, + apr_int32_t err); + +/** + * Set the child_in and/or parent_in values to existing apr_file_t values. + * @param attr The procattr we care about. + * @param child_in apr_file_t value to use as child_in. Must be a valid file. + * @param parent_in apr_file_t value to use as parent_in. Must be a valid file. + * @remark This is NOT a required initializer function. This is + * useful if you have already opened a pipe (or multiple files) + * that you wish to use, perhaps persistently across multiple + * process invocations - such as a log file. You can save some + * extra function calls by not creating your own pipe since this + * creates one in the process space for you. + */ +APR_DECLARE(apr_status_t) apr_procattr_child_in_set(struct apr_procattr_t *attr, + apr_file_t *child_in, + apr_file_t *parent_in); + +/** + * Set the child_out and parent_out values to existing apr_file_t values. + * @param attr The procattr we care about. + * @param child_out apr_file_t value to use as child_out. Must be a valid file. + * @param parent_out apr_file_t value to use as parent_out. Must be a valid file. + * @remark This is NOT a required initializer function. This is + * useful if you have already opened a pipe (or multiple files) + * that you wish to use, perhaps persistently across multiple + * process invocations - such as a log file. + */ +APR_DECLARE(apr_status_t) apr_procattr_child_out_set(struct apr_procattr_t *attr, + apr_file_t *child_out, + apr_file_t *parent_out); + +/** + * Set the child_err and parent_err values to existing apr_file_t values. + * @param attr The procattr we care about. + * @param child_err apr_file_t value to use as child_err. Must be a valid file. + * @param parent_err apr_file_t value to use as parent_err. Must be a valid file. + * @remark This is NOT a required initializer function. This is + * useful if you have already opened a pipe (or multiple files) + * that you wish to use, perhaps persistently across multiple + * process invocations - such as a log file. + */ +APR_DECLARE(apr_status_t) apr_procattr_child_err_set(struct apr_procattr_t *attr, + apr_file_t *child_err, + apr_file_t *parent_err); + +/** + * Set which directory the child process should start executing in. + * @param attr The procattr we care about. + * @param dir Which dir to start in. By default, this is the same dir as + * the parent currently resides in, when the createprocess call + * is made. + */ +APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, + const char *dir); + +/** + * Set what type of command the child process will call. + * @param attr The procattr we care about. + * @param cmd The type of command. One of: + *
    + *            APR_SHELLCMD     --  Anything that the shell can handle
    + *            APR_PROGRAM      --  Executable program   (default) 
    + *            APR_PROGRAM_ENV  --  Executable program, copy environment
    + *            APR_PROGRAM_PATH --  Executable program on PATH, copy env
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, + apr_cmdtype_e cmd); + +/** + * Determine if the child should start in detached state. + * @param attr The procattr we care about. + * @param detach Should the child start in detached state? Default is no. + */ +APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, + apr_int32_t detach); + +#if APR_HAVE_STRUCT_RLIMIT +/** + * Set the Resource Utilization limits when starting a new process. + * @param attr The procattr we care about. + * @param what Which limit to set, one of: + *
    + *                 APR_LIMIT_CPU
    + *                 APR_LIMIT_MEM
    + *                 APR_LIMIT_NPROC
    + *                 APR_LIMIT_NOFILE
    + * 
    + * @param limit Value to set the limit to. + */ +APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, + apr_int32_t what, + struct rlimit *limit); +#endif + +/** + * Specify an error function to be called in the child process if APR + * encounters an error in the child prior to running the specified program. + * @param attr The procattr describing the child process to be created. + * @param errfn The function to call in the child process. + * @remark At the present time, it will only be called from apr_proc_create() + * on platforms where fork() is used. It will never be called on other + * platforms, on those platforms apr_proc_create() will return the error + * in the parent process rather than invoke the callback in the now-forked + * child process. + */ +APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, + apr_child_errfn_t *errfn); + +/** + * Specify that apr_proc_create() should do whatever it can to report + * failures to the caller of apr_proc_create(), rather than find out in + * the child. + * @param attr The procattr describing the child process to be created. + * @param chk Flag to indicate whether or not extra work should be done + * to try to report failures to the caller. + * @remark This flag only affects apr_proc_create() on platforms where + * fork() is used. This leads to extra overhead in the calling + * process, but that may help the application handle such + * errors more gracefully. + */ +APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, + apr_int32_t chk); + +/** + * Determine if the child should start in its own address space or using the + * current one from its parent + * @param attr The procattr we care about. + * @param addrspace Should the child start in its own address space? Default + * is no on NetWare and yes on other platforms. + */ +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace); + +#if APR_HAS_FORK +/** + * This is currently the only non-portable call in APR. This executes + * a standard unix fork. + * @param proc The resulting process handle. + * @param cont The pool to use. + */ +APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont); +#endif + +/** + * Create a new process and execute a new program within that process. + * @param new_proc The resulting process handle. + * @param progname The program to run + * @param args the arguments to pass to the new program. The first + * one should be the program name. + * @param env The new environment table for the new process. This + * should be a list of NULL-terminated strings. This argument + * is ignored for APR_PROGRAM_ENV, APR_PROGRAM_PATH, and + * APR_SHELLCMD_ENV types of commands. + * @param attr the procattr we should use to determine how to create the new + * process + * @param cont The pool to use. + */ +APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new_proc, + const char *progname, + const char * const *args, + const char * const *env, + apr_procattr_t *attr, + apr_pool_t *cont); + +/** + * Wait for a child process to die + * @param proc The process handle that corresponds to the desired child process + * @param exitcode The returned exit status of the child, if a child process + * dies, or the signal that caused the child to die. + * On platforms that don't support obtaining this information, + * the status parameter will be returned as APR_ENOTIMPL. + * @param exitwhy Why the child died, the bitwise or of: + *
    + *            APR_PROC_EXIT         -- process terminated normally
    + *            APR_PROC_SIGNAL       -- process was killed by a signal
    + *            APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
    + *                                     generated a core dump.
    + * 
    + * @param waithow How should we wait. One of: + *
    + *            APR_WAIT   -- block until the child process dies.
    + *            APR_NOWAIT -- return immediately regardless of if the 
    + *                          child is dead or not.
    + * 
    + * @remark The childs status is in the return code to this process. It is one of: + *
    + *            APR_CHILD_DONE     -- child is no longer running.
    + *            APR_CHILD_NOTDONE  -- child is still running.
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, + int *exitcode, apr_exit_why_e *exitwhy, + apr_wait_how_e waithow); + +/** + * Wait for any current child process to die and return information + * about that child. + * @param proc Pointer to NULL on entry, will be filled out with child's + * information + * @param exitcode The returned exit status of the child, if a child process + * dies, or the signal that caused the child to die. + * On platforms that don't support obtaining this information, + * the status parameter will be returned as APR_ENOTIMPL. + * @param exitwhy Why the child died, the bitwise or of: + *
    + *            APR_PROC_EXIT         -- process terminated normally
    + *            APR_PROC_SIGNAL       -- process was killed by a signal
    + *            APR_PROC_SIGNAL_CORE  -- process was killed by a signal, and
    + *                                     generated a core dump.
    + * 
    + * @param waithow How should we wait. One of: + *
    + *            APR_WAIT   -- block until the child process dies.
    + *            APR_NOWAIT -- return immediately regardless of if the 
    + *                          child is dead or not.
    + * 
    + * @param p Pool to allocate child information out of. + * @bug Passing proc as a *proc rather than **proc was an odd choice + * for some platforms... this should be revisited in 1.0 + */ +APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, + int *exitcode, + apr_exit_why_e *exitwhy, + apr_wait_how_e waithow, + apr_pool_t *p); + +#define APR_PROC_DETACH_FOREGROUND 0 /**< Do not detach */ +#define APR_PROC_DETACH_DAEMONIZE 1 /**< Detach */ + +/** + * Detach the process from the controlling terminal. + * @param daemonize set to non-zero if the process should daemonize + * and become a background process, else it will + * stay in the foreground. + */ +APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize); + +/** + * Register an other_child -- a child associated to its registered + * maintence callback. This callback is invoked when the process + * dies, is disconnected or disappears. + * @param proc The child process to register. + * @param maintenance maintenance is a function that is invoked with a + * reason and the data pointer passed here. + * @param data Opaque context data passed to the maintenance function. + * @param write_fd An fd that is probed for writing. If it is ever unwritable + * then the maintenance is invoked with reason + * OC_REASON_UNWRITABLE. + * @param p The pool to use for allocating memory. + * @bug write_fd duplicates the proc->out stream, it's really redundant + * and should be replaced in the APR 1.0 API with a bitflag of which + * proc->in/out/err handles should be health checked. + * @bug no platform currently tests the pipes health. + */ +APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, + void (*maintenance) (int reason, + void *, + int status), + void *data, apr_file_t *write_fd, + apr_pool_t *p); + +/** + * Stop watching the specified other child. + * @param data The data to pass to the maintenance function. This is + * used to find the process to unregister. + * @warning Since this can be called by a maintenance function while we're + * scanning the other_children list, all scanners should protect + * themself by loading ocr->next before calling any maintenance + * function. + */ +APR_DECLARE(void) apr_proc_other_child_unregister(void *data); + +/** + * Notify the maintenance callback of a registered other child process + * that application has detected an event, such as death. + * @param proc The process to check + * @param reason The reason code to pass to the maintenance function + * @param status The status to pass to the maintenance function + * @remark An example of code using this behavior; + *
    + * rv = apr_proc_wait_all_procs(&proc, &exitcode, &status, APR_WAIT, p);
    + * if (APR_STATUS_IS_CHILD_DONE(rv)) {
    + * #if APR_HAS_OTHER_CHILD
    + *     if (apr_proc_other_child_alert(&proc, APR_OC_REASON_DEATH, status)
    + *             == APR_SUCCESS) {
    + *         ;  (already handled)
    + *     }
    + *     else
    + * #endif
    + *         [... handling non-otherchild processes death ...]
    + * 
    + */ +APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, + int reason, + int status); + +/** + * Test one specific other child processes and invoke the maintenance callback + * with the appropriate reason code, if still running, or the appropriate reason + * code if the process is no longer healthy. + * @param ocr The registered other child + * @param reason The reason code (e.g. APR_OC_REASON_RESTART) if still running + */ +APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, + int reason); + +/** + * Test all registered other child processes and invoke the maintenance callback + * with the appropriate reason code, if still running, or the appropriate reason + * code if the process is no longer healthy. + * @param reason The reason code (e.g. APR_OC_REASON_RESTART) to running processes + */ +APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason); + +/** @deprecated @see apr_proc_other_child_refresh_all + * @remark Call apr_proc_other_child_refresh_all(APR_OC_REASON_RESTART) + * or apr_proc_other_child_refresh_all(APR_OC_REASON_RUNNING) instead. + * @bug The differing implementations of this function on Win32 (_RUNNING checks) + * and Unix (used only for _RESTART) are the reason it will be dropped with APR 1.0. + */ +APR_DECLARE(void) apr_proc_other_child_check(void); + +/** @deprecated @see apr_proc_other_child_alert + * @bug This function's name had nothing to do with it's purpose + */ +APR_DECLARE(apr_status_t) apr_proc_other_child_read(apr_proc_t *proc, int status); + + +/** + * Terminate a process. + * @param proc The process to terminate. + * @param sig How to kill the process. + */ +APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int sig); + +/** + * Register a process to be killed when a pool dies. + * @param a The pool to use to define the processes lifetime + * @param proc The process to register + * @param how How to kill the process, one of: + *
    + *         APR_KILL_NEVER         -- process is never sent any signals
    + *         APR_KILL_ALWAYS        -- process is sent SIGKILL on apr_pool_t cleanup
    + *         APR_KILL_AFTER_TIMEOUT -- SIGTERM, wait 3 seconds, SIGKILL
    + *         APR_JUST_WAIT          -- wait forever for the process to complete
    + *         APR_KILL_ONLY_ONCE     -- send SIGTERM and then wait
    + * 
    + */ +APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *a, apr_proc_t *proc, + apr_kill_conditions_e how); + +#if APR_HAS_THREADS + +#if (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2) + +/** + * Setup the process for a single thread to be used for all signal handling. + * @warning This must be called before any threads are created + */ +APR_DECLARE(apr_status_t) apr_setup_signal_thread(void); + +/** + * Make the current thread listen for signals. This thread will loop + * forever, calling a provided function whenever it receives a signal. That + * functions should return 1 if the signal has been handled, 0 otherwise. + * @param signal_handler The function to call when a signal is received + * apr_status_t apr_signal_thread((int)(*signal_handler)(int signum)) + */ +APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum)); + +#endif /* (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2) */ + +/** + * Get the child-pool used by the thread from the thread info. + * @return apr_pool_t the pool + */ +APR_POOL_DECLARE_ACCESSOR(thread); + +#endif /* APR_HAS_THREADS */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_THREAD_PROC_H */ + diff --git a/rubbos/app/apache2/include/apr_thread_rwlock.h b/rubbos/app/apache2/include/apr_thread_rwlock.h new file mode 100644 index 00000000..0e69a2a4 --- /dev/null +++ b/rubbos/app/apache2/include/apr_thread_rwlock.h @@ -0,0 +1,120 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_THREAD_RWLOCK_H +#define APR_THREAD_RWLOCK_H + +/** + * @file apr_thread_rwlock.h + * @brief APR Reader/Writer Lock Routines + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if APR_HAS_THREADS + +/** + * @defgroup apr_thread_rwlock Reader/Writer Lock Routines + * @ingroup APR + * @{ + */ + +/** Opaque read-write thread-safe lock. */ +typedef struct apr_thread_rwlock_t apr_thread_rwlock_t; + +/** + * Create and initialize a read-write lock that can be used to synchronize + * threads. + * @param rwlock the memory address where the newly created readwrite lock + * will be stored. + * @param pool the pool from which to allocate the mutex. + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, + apr_pool_t *pool); +/** + * Acquire a shared-read lock on the given read-write lock. This will allow + * multiple threads to enter the same critical section while they have acquired + * the read lock. + * @param rwlock the read-write lock on which to acquire the shared read. + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock); + +/** + * Attempt to acquire the shread-read lock on the given read-write lock. This + * is the same as apr_thread_rwlock_rdlock(), only that the funtion fails + * if there is another thread holding the write lock, or if there are any + * write threads blocking on the lock. If the function failes for this case, + * APR_EBUSY will be returned. Note: it is important that the + * APR_STATUS_IS_EBUSY(s) macro be used to determine if the return value was + * APR_EBUSY, for portability reasons. + * @param rwlock the rwlock on which to attempt the shared read. + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock); + +/** + * Acquire an exclusive-write lock on the given read-write lock. This will + * allow only one single thread to enter the critical sections. If there + * are any threads currently holding thee read-lock, this thread is put to + * sleep until it can have exclusive access to the lock. + * @param rwlock the read-write lock on which to acquire the exclusive write. + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock); + +/** + * Attempt to acquire the exclusive-write lock on the given read-write lock. + * This is the same as apr_thread_rwlock_wrlock(), only that the funtion fails + * if there is any other thread holding the lock (for reading or writing), + * in which case the function will return APR_EBUSY. Note: it is important + * that the APR_STATUS_IS_EBUSY(s) macro be used to determine if the return + * value was APR_EBUSY, for portability reasons. + * @param rwlock the rwlock on which to attempt the exclusive write. + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock); + +/** + * Release either the read or write lock currently held by the calling thread + * associated with the given read-write lock. + * @param rwlock the read-write lock to be released (unlocked). + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock); + +/** + * Destroy the read-write lock and free the associated memory. + * @param rwlock the rwlock to destroy. + */ +APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock); + +/** + * Get the pool used by this thread_rwlock. + * @return apr_pool_t the pool + */ +APR_POOL_DECLARE_ACCESSOR(thread_rwlock); + +#endif /* APR_HAS_THREADS */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_THREAD_RWLOCK_H */ diff --git a/rubbos/app/apache2/include/apr_time.h b/rubbos/app/apache2/include/apr_time.h new file mode 100644 index 00000000..d313910b --- /dev/null +++ b/rubbos/app/apache2/include/apr_time.h @@ -0,0 +1,245 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_TIME_H +#define APR_TIME_H + +/** + * @file apr_time.h + * @brief APR Time Library + */ + +#include "apr.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_time Time Routines + * @ingroup APR + * @{ + */ + +/** month names */ +APR_DECLARE_DATA extern const char apr_month_snames[12][4]; +/** day names */ +APR_DECLARE_DATA extern const char apr_day_snames[7][4]; + + +/** number of microseconds since 00:00:00 january 1, 1970 UTC */ +typedef apr_int64_t apr_time_t; + + +/** mechanism to properly type apr_time_t literals */ +#define APR_TIME_C(val) APR_INT64_C(val) + +/** mechanism to properly print apr_time_t values */ +#define APR_TIME_T_FMT APR_INT64_T_FMT + +/** intervals for I/O timeouts, in microseconds */ +typedef apr_int64_t apr_interval_time_t; +/** short interval for I/O timeouts, in microseconds */ +typedef apr_int32_t apr_short_interval_time_t; + +/** number of microseconds per second */ +#define APR_USEC_PER_SEC APR_TIME_C(1000000) + +/** @return apr_time_t as a second */ +#define apr_time_sec(time) ((time) / APR_USEC_PER_SEC) + +/** @return apr_time_t as a usec */ +#define apr_time_usec(time) ((time) % APR_USEC_PER_SEC) + +/** @return apr_time_t as a msec */ +#define apr_time_msec(time) (((time) / 1000) % 1000) + +/** @return apr_time_t as a msec */ +#define apr_time_as_msec(time) ((time) / 1000) + +/** @return a second as an apr_time_t */ +#define apr_time_from_sec(sec) ((apr_time_t)(sec) * APR_USEC_PER_SEC) + +/** @return a second and usec combination as an apr_time_t */ +#define apr_time_make(sec, usec) ((apr_time_t)(sec) * APR_USEC_PER_SEC \ + + (apr_time_t)(usec)) + +/** + * @return the current time + */ +APR_DECLARE(apr_time_t) apr_time_now(void); + +/** @see apr_time_exp_t */ +typedef struct apr_time_exp_t apr_time_exp_t; + +/** + * a structure similar to ANSI struct tm with the following differences: + * - tm_usec isn't an ANSI field + * - tm_gmtoff isn't an ANSI field (it's a bsdism) + */ +struct apr_time_exp_t { + /** microseconds past tm_sec */ + apr_int32_t tm_usec; + /** (0-61) seconds past tm_min */ + apr_int32_t tm_sec; + /** (0-59) minutes past tm_hour */ + apr_int32_t tm_min; + /** (0-23) hours past midnight */ + apr_int32_t tm_hour; + /** (1-31) day of the month */ + apr_int32_t tm_mday; + /** (0-11) month of the year */ + apr_int32_t tm_mon; + /** year since 1900 */ + apr_int32_t tm_year; + /** (0-6) days since sunday */ + apr_int32_t tm_wday; + /** (0-365) days since jan 1 */ + apr_int32_t tm_yday; + /** daylight saving time */ + apr_int32_t tm_isdst; + /** seconds east of UTC */ + apr_int32_t tm_gmtoff; +}; + +/** + * convert an ansi time_t to an apr_time_t + * @param result the resulting apr_time_t + * @param input the time_t to convert + */ +APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, + time_t input); + +/** + * convert a time to its human readable components using an offset + * from GMT + * @param result the exploded time + * @param input the time to explode + * @param offs the number of seconds offset to apply + */ +APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result, + apr_time_t input, + apr_int32_t offs); + +/** @deprecated @see apr_time_exp_tz */ +APR_DECLARE(apr_status_t) apr_explode_time(apr_time_exp_t *result, + apr_time_t input, + apr_int32_t offs); + +/** + * convert a time to its human readable components in GMT timezone + * @param result the exploded time + * @param input the time to explode + */ +APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, + apr_time_t input); + +/** + * convert a time to its human readable components in local timezone + * @param result the exploded time + * @param input the time to explode + */ +APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, + apr_time_t input); + +/** @deprecated @see apr_time_exp_lt */ +APR_DECLARE(apr_status_t) apr_explode_localtime(apr_time_exp_t *result, + apr_time_t input); + +/** + * Convert time value from human readable format to a numeric apr_time_t + * e.g. elapsed usec since epoch + * @param result the resulting imploded time + * @param input the input exploded time + */ +APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *result, + apr_time_exp_t *input); + +/** + * Convert time value from human readable format to a numeric apr_time_t that + * always represents GMT + * @param result the resulting imploded time + * @param input the input exploded time + */ +APR_DECLARE(apr_status_t) apr_time_exp_gmt_get(apr_time_t *result, + apr_time_exp_t *input); + +/** @deprecated @see apr_time_exp_gmt_get */ +APR_DECLARE(apr_status_t) apr_implode_gmt(apr_time_t *result, + apr_time_exp_t *input); + +/** + * Sleep for the specified number of micro-seconds. + * @param t desired amount of time to sleep. + * @warning May sleep for longer than the specified time. + */ +APR_DECLARE(void) apr_sleep(apr_interval_time_t t); + +/** length of a RFC822 Date */ +#define APR_RFC822_DATE_LEN (30) +/** + * apr_rfc822_date formats dates in the RFC822 + * format in an efficient manner. It is a fixed length + * format which requires the indicated amount of storage, + * including the trailing null byte. + * @param date_str String to write to. + * @param t the time to convert + */ +APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t); + +/** length of a CTIME date */ +#define APR_CTIME_LEN (25) +/** + * apr_ctime formats dates in the ctime() format + * in an efficient manner. it is a fixed length format + * and requires the indicated amount of storage including + * the trailing null byte. + * Unlike ANSI/ISO C ctime(), apr_ctime() does not include + * a \n at the end of the string. + * @param date_str String to write to. + * @param t the time to convert + */ +APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t); + +/** + * formats the exploded time according to the format specified + * @param s string to write to + * @param retsize The length of the returned string + * @param max The maximum length of the string + * @param format The format for the time string + * @param tm The time to convert + */ +APR_DECLARE(apr_status_t) apr_strftime(char *s, apr_size_t *retsize, + apr_size_t max, const char *format, + apr_time_exp_t *tm); + +/** + * Improve the clock resolution for the lifetime of the given pool. + * Generally this is only desireable on benchmarking and other very + * time-sensitive applications, and has no impact on most platforms. + * @param p The pool to associate the finer clock resolution + */ +APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_TIME_H */ diff --git a/rubbos/app/apache2/include/apr_uri.h b/rubbos/app/apache2/include/apr_uri.h new file mode 100644 index 00000000..877e51a0 --- /dev/null +++ b/rubbos/app/apache2/include/apr_uri.h @@ -0,0 +1,181 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * apr_uri.h: External Interface of apr_uri.c + */ + +/** + * @file apr_uri.h + * @brief APR-UTIL URI Routines + */ + +#ifndef APR_URI_H +#define APR_URI_H + +#include "apu.h" + +#include "apr_network_io.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup APR_Util_URI URI + * @ingroup APR_Util + * @{ + */ + +#define APR_URI_FTP_DEFAULT_PORT 21 /**< default FTP port */ +#define APR_URI_SSH_DEFAULT_PORT 22 /**< default SSH port */ +#define APR_URI_TELNET_DEFAULT_PORT 23 /**< default telnet port */ +#define APR_URI_GOPHER_DEFAULT_PORT 70 /**< default Gopher port */ +#define APR_URI_HTTP_DEFAULT_PORT 80 /**< default HTTP port */ +#define APR_URI_POP_DEFAULT_PORT 110 /**< default POP port */ +#define APR_URI_NNTP_DEFAULT_PORT 119 /**< default NNTP port */ +#define APR_URI_IMAP_DEFAULT_PORT 143 /**< default IMAP port */ +#define APR_URI_PROSPERO_DEFAULT_PORT 191 /**< default Prospero port */ +#define APR_URI_WAIS_DEFAULT_PORT 210 /**< default WAIS port */ +#define APR_URI_LDAP_DEFAULT_PORT 389 /**< default LDAP port */ +#define APR_URI_HTTPS_DEFAULT_PORT 443 /**< default HTTPS port */ +#define APR_URI_RTSP_DEFAULT_PORT 554 /**< default RTSP port */ +#define APR_URI_SNEWS_DEFAULT_PORT 563 /**< default SNEWS port */ +#define APR_URI_ACAP_DEFAULT_PORT 674 /**< default ACAP port */ +#define APR_URI_NFS_DEFAULT_PORT 2049 /**< default NFS port */ +#define APR_URI_TIP_DEFAULT_PORT 3372 /**< default TIP port */ +#define APR_URI_SIP_DEFAULT_PORT 5060 /**< default SIP port */ + +/** Flags passed to unparse_uri_components(): */ +/** suppress "scheme://user\@site:port" */ +#define APR_URI_UNP_OMITSITEPART (1U<<0) +/** Just omit user */ +#define APR_URI_UNP_OMITUSER (1U<<1) +/** Just omit password */ +#define APR_URI_UNP_OMITPASSWORD (1U<<2) +/** omit "user:password\@" part */ +#define APR_URI_UNP_OMITUSERINFO (APR_URI_UNP_OMITUSER | \ + APR_URI_UNP_OMITPASSWORD) +/** Show plain text password (default: show XXXXXXXX) */ +#define APR_URI_UNP_REVEALPASSWORD (1U<<3) +/** Show "scheme://user\@site:port" only */ +#define APR_URI_UNP_OMITPATHINFO (1U<<4) +/** Omit the "?queryarg" from the path */ +#define APR_URI_UNP_OMITQUERY (1U<<5) + +/** @see apr_uri_t */ +typedef struct apr_uri_t apr_uri_t; + +/** + * A structure to encompass all of the fields in a uri + */ +struct apr_uri_t { + /** scheme ("http"/"ftp"/...) */ + char *scheme; + /** combined [user[:password]\@]host[:port] */ + char *hostinfo; + /** user name, as in http://user:passwd\@host:port/ */ + char *user; + /** password, as in http://user:passwd\@host:port/ */ + char *password; + /** hostname from URI (or from Host: header) */ + char *hostname; + /** port string (integer representation is in "port") */ + char *port_str; + /** the request path (or "/" if only scheme://host was given) */ + char *path; + /** Everything after a '?' in the path, if present */ + char *query; + /** Trailing "#fragment" string, if present */ + char *fragment; + + /** structure returned from gethostbyname() */ + struct hostent *hostent; + + /** The port number, numeric, valid only if port_str != NULL */ + apr_port_t port; + + /** has the structure been initialized */ + unsigned is_initialized:1; + + /** has the DNS been looked up yet */ + unsigned dns_looked_up:1; + /** has the dns been resolved yet */ + unsigned dns_resolved:1; +}; + +/* apr_uri.c */ +/** + * Return the default port for a given scheme. The schemes recognized are + * http, ftp, https, gopher, wais, nntp, snews, and prospero + * @param scheme_str The string that contains the current scheme + * @return The default port for this scheme + */ +APU_DECLARE(apr_port_t) apr_uri_port_of_scheme(const char *scheme_str); + +/** @deprecated @see apr_uri_port_of_scheme */ +APU_DECLARE(apr_port_t) apr_uri_default_port_for_scheme(const char *scheme_str); + +/** + * Unparse a apr_uri_t structure to an URI string. Optionally + * suppress the password for security reasons. + * @param p The pool to allocate out of + * @param uptr All of the parts of the uri + * @param flags How to unparse the uri. One of: + *
    + *    APR_URI_UNP_OMITSITEPART        Suppress "scheme://user\@site:port" 
    + *    APR_URI_UNP_OMITUSER            Just omit user 
    + *    APR_URI_UNP_OMITPASSWORD        Just omit password 
    + *    APR_URI_UNP_OMITUSERINFO        Omit "user:password\@" part
    + *    APR_URI_UNP_REVEALPASSWORD      Show plain text password (default: show XXXXXXXX)
    + *    APR_URI_UNP_OMITPATHINFO        Show "scheme://user\@site:port" only 
    + *    APR_URI_UNP_OMITQUERY           Omit "?queryarg" or "#fragment" 
    + * 
    + * @return The uri as a string + */ +APU_DECLARE(char *) apr_uri_unparse(apr_pool_t *p, + const apr_uri_t *uptr, + unsigned flags); + +/** + * Parse a given URI, fill in all supplied fields of a apr_uri_t + * structure. This eliminates the necessity of extracting host, port, + * path, query info repeatedly in the modules. + * @param p The pool to allocate out of + * @param uri The uri to parse + * @param uptr The apr_uri_t to fill out + * @return APR_SUCCESS for success or error code + */ +APU_DECLARE(apr_status_t) apr_uri_parse(apr_pool_t *p, const char *uri, + apr_uri_t *uptr); + +/** + * Special case for CONNECT parsing: it comes with the hostinfo part only + * @param p The pool to allocate out of + * @param hostinfo The hostinfo string to parse + * @param uptr The apr_uri_t to fill out + * @return APR_SUCCESS for success or error code + */ +APU_DECLARE(apr_status_t) apr_uri_parse_hostinfo(apr_pool_t *p, + const char *hostinfo, + apr_uri_t *uptr); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* APR_URI_H */ diff --git a/rubbos/app/apache2/include/apr_user.h b/rubbos/app/apache2/include/apr_user.h new file mode 100644 index 00000000..d96d5407 --- /dev/null +++ b/rubbos/app/apache2/include/apr_user.h @@ -0,0 +1,195 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_USER_H +#define APR_USER_H + +/** + * @file apr_user.h + * @brief APR User ID Services + */ + +#include "apr.h" +#include "apr_errno.h" +#include "apr_pools.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup apr_user User and Group ID Services + * @ingroup APR + * @{ + */ + +/** + * Structure for determining user ownership. + */ +#ifdef WIN32 +typedef PSID apr_uid_t; +#else +typedef uid_t apr_uid_t; +#endif + +/** + * Structure for determining group ownership. + */ +#ifdef WIN32 +typedef PSID apr_gid_t; +#else +typedef gid_t apr_gid_t; +#endif + +#if APR_HAS_USER + +/** + * Get the userid (and groupid) of the calling process + * @param userid Returns the user id + * @param groupid Returns the user's group id + * @param p The pool from which to allocate working space + * @remark This function is available only if APR_HAS_USER is defined. + */ +APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *userid, + apr_gid_t *groupid, + apr_pool_t *p); + +/** @deprecated @see apr_uid_current */ +APR_DECLARE(apr_status_t) apr_current_userid(apr_uid_t *userid, + apr_gid_t *groupid, + apr_pool_t *p); +/** + * Get the user name for a specified userid + * @param username Pointer to new string containing user name (on output) + * @param userid The userid + * @param p The pool from which to allocate the string + * @remark This function is available only if APR_HAS_USER is defined. + */ +APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, + apr_pool_t *p); + +/** @deprecated @see apr_uid_name_get */ +APR_DECLARE(apr_status_t) apr_get_username(char **username, apr_uid_t userid, + apr_pool_t *p); +/** + * Get the userid (and groupid) for the specified username + * @param userid Returns the user id + * @param groupid Returns the user's group id + * @param username The username to lookup + * @param p The pool from which to allocate working space + * @remark This function is available only if APR_HAS_USER is defined. + */ +APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *userid, apr_gid_t *groupid, + const char *username, apr_pool_t *p); + +/** @deprecated @see apr_uid_get */ +APR_DECLARE(apr_status_t) apr_get_userid(apr_uid_t *userid, apr_gid_t *groupid, + const char *username, apr_pool_t *p); + +/** + * Get the home directory for the named user + * @param dirname Pointer to new string containing directory name (on output) + * @param username The named user + * @param p The pool from which to allocate the string + * @remark This function is available only if APR_HAS_USER is defined. + */ +APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, + const char *username, + apr_pool_t *p); + +/** @deprecated @see apr_uid_homepath_get */ +APR_DECLARE(apr_status_t) apr_get_home_directory(char **dirname, + const char *username, + apr_pool_t *p); + +/** + * Compare two user identifiers for equality. + * @param left One uid to test + * @param right Another uid to test + * @return APR_SUCCESS if the apr_uid_t strutures identify the same user, + * APR_EMISMATCH if not, APR_BADARG if an apr_uid_t is invalid. + * @remark This function is available only if APR_HAS_USER is defined. + */ +#if defined(WIN32) +APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right); + +/** @deprecated @see apr_uid_compare */ +APR_DECLARE(apr_status_t) apr_compare_users(apr_uid_t left, apr_uid_t right); +#else +#define apr_uid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) +/** @deprecated @see apr_uid_compare */ +#define apr_compare_users(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) +#endif + +/** + * Get the group name for a specified groupid + * @param groupname Pointer to new string containing group name (on output) + * @param groupid The groupid + * @param p The pool from which to allocate the string + * @remark This function is available only if APR_HAS_USER is defined. + */ +APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, + apr_gid_t groupid, apr_pool_t *p); + +/** @deprecated @see apr_gid_name_get */ +APR_DECLARE(apr_status_t) apr_group_name_get(char **groupname, + apr_gid_t groupid, apr_pool_t *p); + +/** @deprecated @see apr_gid_name_get */ +APR_DECLARE(apr_status_t) apr_get_groupname(char **groupname, + apr_gid_t groupid, apr_pool_t *p); + +/** + * Get the groupid for a specified group name + * @param groupid Pointer to the group id (on output) + * @param groupname The group name to look up + * @param p The pool from which to allocate the string + * @remark This function is available only if APR_HAS_USER is defined. + */ +APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, + const char *groupname, apr_pool_t *p); + +/** @deprecated @see apr_gid_get */ +APR_DECLARE(apr_status_t) apr_get_groupid(apr_gid_t *groupid, + const char *groupname, apr_pool_t *p); + +/** + * Compare two group identifiers for equality. + * @param left One gid to test + * @param right Another gid to test + * @return APR_SUCCESS if the apr_gid_t strutures identify the same group, + * APR_EMISMATCH if not, APR_BADARG if an apr_gid_t is invalid. + * @remark This function is available only if APR_HAS_USER is defined. + */ +#if defined(WIN32) +APR_DECLARE(apr_status_t) apr_gid_compare(apr_gid_t left, apr_gid_t right); +/** @deprecated @see apr_gid_compare */ +APR_DECLARE(apr_status_t) apr_compare_groups(apr_gid_t left, apr_gid_t right); +#else +#define apr_gid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) +/** @deprecated @see apr_gid_compare */ +#define apr_compare_groups(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) +#endif + +#endif /* ! APR_HAS_USER */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_USER_H */ diff --git a/rubbos/app/apache2/include/apr_uuid.h b/rubbos/app/apache2/include/apr_uuid.h new file mode 100644 index 00000000..820d7409 --- /dev/null +++ b/rubbos/app/apache2/include/apr_uuid.h @@ -0,0 +1,76 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file apr_uuid.h + * @brief APR UUID library + */ +#ifndef APR_UUID_H +#define APR_UUID_H + +#include "apu.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @defgroup APR_UUID UUID Handling + * @ingroup APR + * @{ + */ + +/** + * we represent a UUID as a block of 16 bytes. + */ + +typedef struct { + unsigned char data[16]; /**< the actual UUID */ +} apr_uuid_t; + +/** UUIDs are formatted as: 00112233-4455-6677-8899-AABBCCDDEEFF */ +#define APR_UUID_FORMATTED_LENGTH 36 + + +/** + * Generate and return a (new) UUID + * @param uuid The resulting UUID + */ +APU_DECLARE(void) apr_uuid_get(apr_uuid_t *uuid); + +/** + * Format a UUID into a string, following the standard format + * @param buffer The buffer to place the formatted UUID string into. It must + * be at least APR_UUID_FORMATTED_LENGTH + 1 bytes long to hold + * the formatted UUID and a null terminator + * @param uuid The UUID to format + */ +APU_DECLARE(void) apr_uuid_format(char *buffer, const apr_uuid_t *uuid); + +/** + * Parse a standard-format string into a UUID + * @param uuid The resulting UUID + * @param uuid_str The formatted UUID + */ +APU_DECLARE(apr_status_t) apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* APR_UUID_H */ diff --git a/rubbos/app/apache2/include/apr_version.h b/rubbos/app/apache2/include/apr_version.h new file mode 100644 index 00000000..08bcd288 --- /dev/null +++ b/rubbos/app/apache2/include/apr_version.h @@ -0,0 +1,115 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_VERSION_H +#define APR_VERSION_H + +#include "apr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file apr_version.h + * @brief APR Versioning Interface + * + * APR's Version + * + * There are several different mechanisms for accessing the version. There + * is a string form, and a set of numbers; in addition, there are constants + * which can be compiled into your application, and you can query the library + * being used for its actual version. + * + * Note that it is possible for an application to detect that it has been + * compiled against a different version of APR by use of the compile-time + * constants and the use of the run-time query function. + * + * APR version numbering follows the guidelines specified in: + * + * http://apr.apache.org/versioning.html + */ + +/* The numeric compile-time version constants. These constants are the + * authoritative version numbers for APR. + */ + +/** major version + * Major API changes that could cause compatibility problems for older + * programs such as structure size changes. No binary compatibility is + * possible across a change in the major version. + */ +#define APR_MAJOR_VERSION 0 + +/** + * Minor API changes that do not cause binary compatibility problems. + * Should be reset to 0 when upgrading APR_MAJOR_VERSION + */ +#define APR_MINOR_VERSION 9 + +/** patch level */ +#define APR_PATCH_VERSION 19 + +/** + * This symbol is defined for internal, "development" copies of APR. This + * symbol will be #undef'd for releases. + */ +/* #define APR_IS_DEV_VERSION */ + + +/** The formatted string of APR's version */ +#define APR_VERSION_STRING \ + APR_STRINGIFY(APR_MAJOR_VERSION) "." \ + APR_STRINGIFY(APR_MINOR_VERSION) "." \ + APR_STRINGIFY(APR_PATCH_VERSION) \ + APR_IS_DEV_STRING + + +/** + * The numeric version information is broken out into fields within this + * structure. + */ +typedef struct { + int major; /**< major number */ + int minor; /**< minor number */ + int patch; /**< patch number */ + int is_dev; /**< is development (1 or 0) */ +} apr_version_t; + +/** + * Return APR's version information information in a numeric form. + * + * @param pvsn Pointer to a version structure for returning the version + * information. + */ +APR_DECLARE(void) apr_version(apr_version_t *pvsn); + +/** Return APR's version information as a string. */ +APR_DECLARE(const char *) apr_version_string(void); + + +/** Internal: string form of the "is dev" flag */ +#ifdef APR_IS_DEV_VERSION +#define APR_IS_DEV_STRING "-dev" +#else +#define APR_IS_DEV_STRING "" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* APR_VERSION_H */ diff --git a/rubbos/app/apache2/include/apr_want.h b/rubbos/app/apache2/include/apr_want.h new file mode 100644 index 00000000..39cc4fcb --- /dev/null +++ b/rubbos/app/apache2/include/apr_want.h @@ -0,0 +1,109 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "apr.h" /* configuration data */ +/** + * @file apr_want.h + * @brief APR Standard Headers Support + * + *
    + * Features:
    + *
    + *   APR_WANT_STRFUNC:  strcmp, strcat, strcpy, etc
    + *   APR_WANT_MEMFUNC:  memcmp, memcpy, etc
    + *   APR_WANT_STDIO:     and related bits
    + *   APR_WANT_IOVEC:    struct iovec
    + *   APR_WANT_BYTEFUNC: htons, htonl, ntohl, ntohs
    + *
    + * Typical usage:
    + *
    + *   #define APR_WANT_STRFUNC
    + *   #define APR_WANT_MEMFUNC
    + *   #include "apr_want.h"
    + *
    + * The appropriate headers will be included.
    + *
    + * Note: it is safe to use this in a header (it won't interfere with other
    + *       headers' or source files' use of apr_want.h)
    + * 
    + */ + +/* --------------------------------------------------------------------- */ + +#ifdef APR_WANT_STRFUNC + +#if APR_HAVE_STRING_H +#include +#endif +#if APR_HAVE_STRINGS_H +#include +#endif + +#undef APR_WANT_STRFUNC +#endif + +/* --------------------------------------------------------------------- */ + +#ifdef APR_WANT_MEMFUNC + +#if APR_HAVE_STRING_H +#include +#endif + +#undef APR_WANT_MEMFUNC +#endif + +/* --------------------------------------------------------------------- */ + +#ifdef APR_WANT_STDIO + +#if APR_HAVE_STDIO_H +#include +#endif + +#undef APR_WANT_STDIO +#endif + +/* --------------------------------------------------------------------- */ + +#ifdef APR_WANT_IOVEC + +#if APR_HAVE_SYS_UIO_H +#include +#endif + +#undef APR_WANT_IOVEC +#endif + +/* --------------------------------------------------------------------- */ + +#ifdef APR_WANT_BYTEFUNC + +/* Single Unix says they are in arpa/inet.h. Linux has them in + * netinet/in.h. FreeBSD has them in arpa/inet.h but requires that + * netinet/in.h be included first. + */ +#if APR_HAVE_NETINET_IN_H +#include +#endif +#if APR_HAVE_ARPA_INET_H +#include +#endif + +#undef APR_WANT_BYTEFUNC +#endif + +/* --------------------------------------------------------------------- */ diff --git a/rubbos/app/apache2/include/apr_xlate.h b/rubbos/app/apache2/include/apr_xlate.h new file mode 100644 index 00000000..92e77464 --- /dev/null +++ b/rubbos/app/apache2/include/apr_xlate.h @@ -0,0 +1,158 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_XLATE_H +#define APR_XLATE_H + +#include "apu.h" +#include "apr_pools.h" +#include "apr_errno.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @file apr_xlate.h + * @brief APR I18N translation library + */ + +/** + * @defgroup APR_XLATE I18N translation library + * @ingroup APR + * @{ + */ +/** Opaque translation buffer */ +typedef struct apr_xlate_t apr_xlate_t; + +/** + * Set up for converting text from one charset to another. + * @param convset The handle to be filled in by this function + * @param topage The name of the target charset + * @param frompage The name of the source charset + * @param pool The pool to use + * @remark + * Specify APR_DEFAULT_CHARSET for one of the charset + * names to indicate the charset of the source code at + * compile time. This is useful if there are literal + * strings in the source code which must be translated + * according to the charset of the source code. + * APR_DEFAULT_CHARSET is not useful if the source code + * of the caller was not encoded in the same charset as + * APR at compile time. + * + * @remark + * Specify APR_LOCALE_CHARSET for one of the charset + * names to indicate the charset of the current locale. + * + * @remark + * Return APR_EINVAL if unable to procure a convset, or APR_ENOTIMPL + * if charset transcoding is not available in this instance of + * apr-util at all (i.e., APR_HAS_XLATE is undefined). + */ +APU_DECLARE(apr_status_t) apr_xlate_open(apr_xlate_t **convset, + const char *topage, + const char *frompage, + apr_pool_t *pool); + +/** + * This is to indicate the charset of the sourcecode at compile time + * names to indicate the charset of the source code at + * compile time. This is useful if there are literal + * strings in the source code which must be translated + * according to the charset of the source code. + */ +#define APR_DEFAULT_CHARSET (const char *)0 +/** + * To indicate charset names of the current locale + */ +#define APR_LOCALE_CHARSET (const char *)1 + +/** + * Find out whether or not the specified conversion is single-byte-only. + * @param convset The handle allocated by apr_xlate_open, specifying the + * parameters of conversion + * @param onoff Output: whether or not the conversion is single-byte-only + * @remark + * Return APR_ENOTIMPL if charset transcoding is not available + * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). + */ +APU_DECLARE(apr_status_t) apr_xlate_sb_get(apr_xlate_t *convset, int *onoff); + +/** @deprecated @see apr_xlate_sb_get */ +APU_DECLARE(apr_status_t) apr_xlate_get_sb(apr_xlate_t *convset, int *onoff); + +/** + * Convert a buffer of text from one codepage to another. + * @param convset The handle allocated by apr_xlate_open, specifying + * the parameters of conversion + * @param inbuf The address of the source buffer + * @param inbytes_left Input: the amount of input data to be translated + * Output: the amount of input data not yet translated + * @param outbuf The address of the destination buffer + * @param outbytes_left Input: the size of the output buffer + * Output: the amount of the output buffer not yet used + * @remark + * Return APR_ENOTIMPL if charset transcoding is not available + * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). + */ +APU_DECLARE(apr_status_t) apr_xlate_conv_buffer(apr_xlate_t *convset, + const char *inbuf, + apr_size_t *inbytes_left, + char *outbuf, + apr_size_t *outbytes_left); + +/* @see apr_file_io.h the comment in apr_file_io.h about this hack */ +#ifdef APR_NOT_DONE_YET +/** + * The purpose of apr_xlate_conv_char is to translate one character + * at a time. This needs to be written carefully so that it works + * with double-byte character sets. + * @param convset The handle allocated by apr_xlate_open, specifying the + * parameters of conversion + * @param inchar The character to convert + * @param outchar The converted character + */ +APU_DECLARE(apr_status_t) apr_xlate_conv_char(apr_xlate_t *convset, + char inchar, char outchar); +#endif + +/** + * Convert a single-byte character from one charset to another. + * @param convset The handle allocated by apr_xlate_open, specifying the + * parameters of conversion + * @param inchar The single-byte character to convert. + * @warning This only works when converting between single-byte character sets. + * -1 will be returned if the conversion can't be performed. + */ +APU_DECLARE(apr_int32_t) apr_xlate_conv_byte(apr_xlate_t *convset, + unsigned char inchar); + +/** + * Close a codepage translation handle. + * @param convset The codepage translation handle to close + * @remark + * Return APR_ENOTIMPL if charset transcoding is not available + * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). + */ +APU_DECLARE(apr_status_t) apr_xlate_close(apr_xlate_t *convset); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* ! APR_XLATE_H */ diff --git a/rubbos/app/apache2/include/apr_xml.h b/rubbos/app/apache2/include/apr_xml.h new file mode 100644 index 00000000..551283e6 --- /dev/null +++ b/rubbos/app/apache2/include/apr_xml.h @@ -0,0 +1,340 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file apr_xml.h + * @brief APR-UTIL XML Library + */ +#ifndef APR_XML_H +#define APR_XML_H + +/** + * @defgroup APR_Util_XML XML + * @ingroup APR_Util + * @{ + */ +#include "apr_pools.h" +#include "apr_tables.h" +#include "apr_file_io.h" + +#include "apu.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Apache XML library + */ + +/* -------------------------------------------------------------------- */ + +/* ### these will need to move at some point to a more logical spot */ + +/** @see apr_text */ +typedef struct apr_text apr_text; + +/** Structure to keep a linked list of pieces of text */ +struct apr_text { + /** The current piece of text */ + const char *text; + /** a pointer to the next piece of text */ + struct apr_text *next; +}; + +/** @see apr_text_header */ +typedef struct apr_text_header apr_text_header; + +/** A list of pieces of text */ +struct apr_text_header { + /** The first piece of text in the list */ + apr_text *first; + /** The last piece of text in the list */ + apr_text *last; +}; + +/** + * Append a piece of text to the end of a list + * @param p The pool to allocate out of + * @param hdr The text header to append to + * @param text The new text to append + */ +APU_DECLARE(void) apr_text_append(apr_pool_t *p, apr_text_header *hdr, + const char *text); + + +/* -------------------------------------------------------------------- +** +** XML PARSING +*/ + +/* +** Qualified namespace values +** +** APR_XML_NS_DAV_ID +** We always insert the "DAV:" namespace URI at the head of the +** namespace array. This means that it will always be at ID==0, +** making it much easier to test for. +** +** APR_XML_NS_NONE +** This special ID is used for two situations: +** +** 1) The namespace prefix begins with "xml" (and we do not know +** what it means). Namespace prefixes with "xml" (any case) as +** their first three characters are reserved by the XML Namespaces +** specification for future use. mod_dav will pass these through +** unchanged. When this identifier is used, the prefix is LEFT in +** the element/attribute name. Downstream processing should not +** prepend another prefix. +** +** 2) The element/attribute does not have a namespace. +** +** a) No prefix was used, and a default namespace has not been +** defined. +** b) No prefix was used, and the default namespace was specified +** to mean "no namespace". This is done with a namespace +** declaration of: xmlns="" +** (this declaration is typically used to override a previous +** specification for the default namespace) +** +** In these cases, we need to record that the elem/attr has no +** namespace so that we will not attempt to prepend a prefix. +** All namespaces that are used will have a prefix assigned to +** them -- mod_dav will never set or use the default namespace +** when generating XML. This means that "no prefix" will always +** mean "no namespace". +** +** In both cases, the XML generation will avoid prepending a prefix. +** For the first case, this means the original prefix/name will be +** inserted into the output stream. For the latter case, it means +** the name will have no prefix, and since we never define a default +** namespace, this means it will have no namespace. +** +** Note: currently, mod_dav understands the "xmlns" prefix and the +** "xml:lang" attribute. These are handled specially (they aren't +** left within the XML tree), so the APR_XML_NS_NONE value won't ever +** really apply to these values. +*/ +#define APR_XML_NS_DAV_ID 0 /**< namespace ID for "DAV:" */ +#define APR_XML_NS_NONE -10 /**< no namespace for this elem/attr */ + +#define APR_XML_NS_ERROR_BASE -100 /**< used only during processing */ +/** Is this namespace an error? */ +#define APR_XML_NS_IS_ERROR(e) ((e) <= APR_XML_NS_ERROR_BASE) + +/** @see apr_xml_attr */ +typedef struct apr_xml_attr apr_xml_attr; +/** @see apr_xml_elem */ +typedef struct apr_xml_elem apr_xml_elem; +/** @see apr_xml_doc */ +typedef struct apr_xml_doc apr_xml_doc; + +/** apr_xml_attr: holds a parsed XML attribute */ +struct apr_xml_attr { + /** attribute name */ + const char *name; + /** index into namespace array */ + int ns; + + /** attribute value */ + const char *value; + + /** next attribute */ + struct apr_xml_attr *next; +}; + +/** apr_xml_elem: holds a parsed XML element */ +struct apr_xml_elem { + /** element name */ + const char *name; + /** index into namespace array */ + int ns; + /** xml:lang for attrs/contents */ + const char *lang; + + /** cdata right after start tag */ + apr_text_header first_cdata; + /** cdata after MY end tag */ + apr_text_header following_cdata; + + /** parent element */ + struct apr_xml_elem *parent; + /** next (sibling) element */ + struct apr_xml_elem *next; + /** first child element */ + struct apr_xml_elem *first_child; + /** first attribute */ + struct apr_xml_attr *attr; + + /* used only during parsing */ + /** last child element */ + struct apr_xml_elem *last_child; + /** namespaces scoped by this elem */ + struct apr_xml_ns_scope *ns_scope; + + /* used by modules during request processing */ + /** Place for modules to store private data */ + void *priv; +}; + +/** Is this XML element empty? */ +#define APR_XML_ELEM_IS_EMPTY(e) ((e)->first_child == NULL && \ + (e)->first_cdata.first == NULL) + +/** apr_xml_doc: holds a parsed XML document */ +struct apr_xml_doc { + /** root element */ + apr_xml_elem *root; + /** array of namespaces used */ + apr_array_header_t *namespaces; +}; + +/** Opaque XML parser structure */ +typedef struct apr_xml_parser apr_xml_parser; + +/** + * Create an XML parser + * @param pool The pool for allocating the parser and the parse results. + * @return The new parser. + */ +APU_DECLARE(apr_xml_parser *) apr_xml_parser_create(apr_pool_t *pool); + +/** + * Parse a File, producing a xml_doc + * @param p The pool for allocating the parse results. + * @param parser A pointer to *parser (needed so calling function can get + * errors), will be set to NULL on successfull completion. + * @param ppdoc A pointer to *apr_xml_doc (which has the parsed results in it) + * @param xmlfd A file to read from. + * @param buffer_length Buffer length which would be suitable + * @return Any errors found during parsing. + */ +APU_DECLARE(apr_status_t) apr_xml_parse_file(apr_pool_t *p, + apr_xml_parser **parser, + apr_xml_doc **ppdoc, + apr_file_t *xmlfd, + apr_size_t buffer_length); + + +/** + * Feed input into the parser + * @param parser The XML parser for parsing this data. + * @param data The data to parse. + * @param len The length of the data. + * @return Any errors found during parsing. + * @remark Use apr_xml_parser_geterror() to get more error information. + */ +APU_DECLARE(apr_status_t) apr_xml_parser_feed(apr_xml_parser *parser, + const char *data, + apr_size_t len); + +/** + * Terminate the parsing and return the result + * @param parser The XML parser for parsing this data. + * @param pdoc The resulting parse information. May be NULL to simply + * terminate the parsing without fetching the info. + * @return Any errors found during the final stage of parsing. + * @remark Use apr_xml_parser_geterror() to get more error information. + */ +APU_DECLARE(apr_status_t) apr_xml_parser_done(apr_xml_parser *parser, + apr_xml_doc **pdoc); + +/** + * Fetch additional error information from the parser. + * @param parser The XML parser to query for errors. + * @param errbuf A buffer for storing error text. + * @param errbufsize The length of the error text buffer. + * @return The error buffer + */ +APU_DECLARE(char *) apr_xml_parser_geterror(apr_xml_parser *parser, + char *errbuf, + apr_size_t errbufsize); + + +/** + * Converts an XML element tree to flat text + * @param p The pool to allocate out of + * @param elem The XML element to convert + * @param style How to covert the XML. One of: + *
    + *     APR_XML_X2T_FULL                start tag, contents, end tag 
    + *     APR_XML_X2T_INNER               contents only 
    + *     APR_XML_X2T_LANG_INNER          xml:lang + inner contents 
    + *     APR_XML_X2T_FULL_NS_LANG        FULL + ns defns + xml:lang 
    + * 
    + * @param namespaces The namespace of the current XML element + * @param ns_map Namespace mapping + * @param pbuf Buffer to put the converted text into + * @param psize Size of the converted text + */ +APU_DECLARE(void) apr_xml_to_text(apr_pool_t *p, const apr_xml_elem *elem, + int style, apr_array_header_t *namespaces, + int *ns_map, const char **pbuf, + apr_size_t *psize); + +/* style argument values: */ +#define APR_XML_X2T_FULL 0 /**< start tag, contents, end tag */ +#define APR_XML_X2T_INNER 1 /**< contents only */ +#define APR_XML_X2T_LANG_INNER 2 /**< xml:lang + inner contents */ +#define APR_XML_X2T_FULL_NS_LANG 3 /**< FULL + ns defns + xml:lang */ + +/** + * empty XML element + * @param p The pool to allocate out of + * @param elem The XML element to empty + * @return the string that was stored in the XML element + */ +APU_DECLARE(const char *) apr_xml_empty_elem(apr_pool_t *p, + const apr_xml_elem *elem); + +/** + * quote an XML string + * Replace '<', '>', and '&' with '<', '>', and '&'. + * @param p The pool to allocate out of + * @param s The string to quote + * @param quotes If quotes is true, then replace '"' with '"'. + * @return The quoted string + * @note If the string does not contain special characters, it is not + * duplicated into the pool and the original string is returned. + */ +APU_DECLARE(const char *) apr_xml_quote_string(apr_pool_t *p, const char *s, + int quotes); + +/** + * Quote an XML element + * @param p The pool to allocate out of + * @param elem The element to quote + */ +APU_DECLARE(void) apr_xml_quote_elem(apr_pool_t *p, apr_xml_elem *elem); + +/* manage an array of unique URIs: apr_xml_insert_uri() and APR_XML_URI_ITEM() */ + +/** + * return the URI's (existing) index, or insert it and return a new index + * @param uri_array array to insert into + * @param uri The uri to insert + * @return int The uri's index + */ +APU_DECLARE(int) apr_xml_insert_uri(apr_array_header_t *uri_array, + const char *uri); + +/** Get the URI item for this XML element */ +#define APR_XML_GET_URI_ITEM(ary, i) (((const char * const *)(ary)->elts)[i]) + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif /* APR_XML_H */ diff --git a/rubbos/app/apache2/include/apu.h b/rubbos/app/apache2/include/apu.h new file mode 100644 index 00000000..42edff8d --- /dev/null +++ b/rubbos/app/apache2/include/apu.h @@ -0,0 +1,85 @@ +/* Copyright 2000-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * apu.h is generated from apu.h.in by configure -- do not edit apu.h + */ +/* @file apu.h + * @brief APR-Utility main file + */ +/** + * @defgroup APR_Util APR Utility Functions + * @{ + */ + + +#ifndef APU_H +#define APU_H + +/** + * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, + * so that all public symbols are exported. + * + * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, + * to provide static linkage when the dynamic library may be unavailable. + * + * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when + * including the APR-UTIL public headers, to import and link the symbols from + * the dynamic APR-UTIL library and assure appropriate indirection and calling + * conventions at compile time. + */ + +/** + * The public APR-UTIL functions are declared with APU_DECLARE(), so they may + * use the most appropriate calling convention. Public APR functions with + * variable arguments must use APU_DECLARE_NONSTD(). + * + * @deffunc APU_DECLARE(rettype) apr_func(args); + */ +#define APU_DECLARE(type) type +/** + * The public APR-UTIL functions using variable arguments are declared with + * APU_DECLARE_NONSTD(), as they must use the C language calling convention. + * + * @deffunc APU_DECLARE_NONSTD(rettype) apr_func(args, ...); + */ +#define APU_DECLARE_NONSTD(type) type +/** + * The public APR-UTIL variables are declared with APU_DECLARE_DATA. + * This assures the appropriate indirection is invoked at compile time. + * + * @deffunc APU_DECLARE_DATA type apr_variable; + * @tip APU_DECLARE_DATA extern type apr_variable; syntax is required for + * declarations within headers to properly import the variable. + */ +#define APU_DECLARE_DATA +/* + * we always have SDBM (it's in our codebase) + */ +#define APU_HAVE_SDBM 1 +#define APU_HAVE_GDBM 0 +#define APU_HAVE_NDBM 0 +#define APU_HAVE_DB 0 + +#if APU_HAVE_DB +#define APU_HAVE_DB_VERSION 0 +#endif /* APU_HAVE_DB */ + +#define APU_HAVE_APR_ICONV 0 +#define APU_HAVE_ICONV 1 +#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) + +#endif /* APU_H */ +/** @} */ diff --git a/rubbos/app/apache2/include/apu_compat.h b/rubbos/app/apache2/include/apu_compat.h new file mode 100644 index 00000000..533f4945 --- /dev/null +++ b/rubbos/app/apache2/include/apu_compat.h @@ -0,0 +1,116 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file apu_compat.h + * @brief APR-UTIL Compabitlity Functions + * @deprecated These functions are only present for historical purposes + */ +#ifndef APU_COMPAT_H +#define APU_COMPAT_H +/** + * @defgroup APR_Util_compat 1.3 Compatibility Functions + * @ingroup APR_Util + * @{ + */ + + +/* Include the apr compatibility changes, since apr-util users are + * always apr users. + */ +#include "apr_compat.h" + +/* -------------------------------------------------------------------- + * redefine 1.3.x symbols to those that now live in libapr-util + */ +/** @deprecated @see apr_base64_decode */ +#define ap_base64decode apr_base64_decode +/** @deprecated @see apr_base64_decode_binary */ +#define ap_base64decode_binary apr_base64_decode_binary +/** @deprecated @see apr_base64_decode_len */ +#define ap_base64decode_len apr_base64_decode_len +/** @deprecated @see apr_base64_encode */ +#define ap_base64encode apr_base64_encode +/** @deprecated @see apr_base64_encode_binary */ +#define ap_base64encode_binary apr_base64_encode_binary +/** @deprecated @see apr_base64_encode_len */ +#define ap_base64encode_len apr_base64_encode_len +/** @deprecated @see apr_hook_deregister_all */ +#define ap_hook_deregister_all apr_hook_deregister_all +/** @deprecated @see apr_hook_sort_register */ +#define ap_hook_sort_register apr_hook_sort_register +/** @deprecated @see apr_hook_debug_show */ +#define ap_show_hook apr_hook_debug_show + +/* -------------------------------------------------------------------- + * the following symbols were moved from httpd-2.0/.../util_date.[ch] + */ +/** @deprecated @see apr_date_parse_http */ +#define ap_parseHTTPdate apr_date_parse_http +/** @deprecated @see apr_date_checkmask */ +#define ap_checkmask apr_date_checkmask + +/* -------------------------------------------------------------------- + * the following symbols were moved from httpd-2.0/.../util_xml.[ch] + */ +/** @deprecated @see apr_text */ +#define ap_text apr_text +/** @deprecated @see apr_text_header */ +#define ap_text_header apr_text_header +/** @deprecated @see apr_text_append */ +#define ap_text_append apr_text_append + +/** @deprecated @see APR_XML_NS_DAV_ID */ +#define AP_XML_NS_DAV_ID APR_XML_NS_DAV_ID +/** @deprecated @see APR_XML_NS_NONE */ +#define AP_XML_NS_NONE APR_XML_NS_NONE +/** @deprecated @see APR_XML_NS_ERROR_BASE */ +#define AP_XML_NS_ERROR_BASE APR_XML_NS_ERROR_BASE +/** @deprecated @see APR_XML_NS_IS_ERROR */ +#define AP_XML_NS_IS_ERROR(e) APR_XML_NS_IS_ERROR(e) +/** @deprecated @see APR_XML_ELEM_IS_EMPTY */ +#define AP_XML_ELEM_IS_EMPTY(e) APR_XML_ELEM_IS_EMPTY(e) + +/** @deprecated @see apr_xml_attr */ +#define ap_xml_attr apr_xml_attr +/** @deprecated @see apr_xml_elem */ +#define ap_xml_elem apr_xml_elem +/** @deprecated @see apr_xml_doc */ +#define ap_xml_doc apr_xml_doc + +/** @deprecated @see apr_xml_to_text */ +#define ap_xml_to_text apr_xml_to_text +/** @deprecated @see APR_XML_X2T_FULL */ +#define AP_XML_X2T_FULL APR_XML_X2T_FULL +/** @deprecated @see APR_XML_X2T_INNER */ +#define AP_XML_X2T_INNER APR_XML_X2T_INNER +/** @deprecated @see APR_XML_X2T_LANG_INNER */ +#define AP_XML_X2T_LANG_INNER APR_XML_X2T_LANG_INNER +/** @deprecated @see APR_XML_X2T_FULL_NS_LANG */ +#define AP_XML_X2T_FULL_NS_LANG APR_XML_X2T_FULL_NS_LANG + +/** @deprecated @see apr_xml_empty_elem */ +#define ap_xml_empty_elem apr_xml_empty_elem +/** @deprecated @see apr_xml_quote_string */ +#define ap_xml_quote_string apr_xml_quote_string +/** @deprecated @see apr_xml_quote_elem */ +#define ap_xml_quote_elem apr_xml_quote_elem +/** @deprecated @see apr_xml_insert_uri */ +#define ap_xml_insert_uri apr_xml_insert_uri +/** @deprecated @see APR_XML_GET_URI_ITEM */ +#define AP_XML_GET_URI_ITEM(a,i) APR_XML_GET_URI_ITEM(a,i) +/** @} */ +#endif /* APU_COMPAT_H */ diff --git a/rubbos/app/apache2/include/apu_version.h b/rubbos/app/apache2/include/apu_version.h new file mode 100644 index 00000000..248e8ef5 --- /dev/null +++ b/rubbos/app/apache2/include/apu_version.h @@ -0,0 +1,105 @@ +/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APU_VERSION_H +#define APU_VERSION_H + +#include "apr_version.h" + +#include "apu.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file apu_version.h + * @brief + * + * APR-util's Version + * + * There are several different mechanisms for accessing the version. There + * is a string form, and a set of numbers; in addition, there are constants + * which can be compiled into your application, and you can query the library + * being used for its actual version. + * + * Note that it is possible for an application to detect that it has been + * compiled against a different version of APU by use of the compile-time + * constants and the use of the run-time query function. + * + * APU version numbering follows the guidelines specified in: + * + * http://apr.apache.org/versioning.html + */ + +/* The numeric compile-time version constants. These constants are the + * authoritative version numbers for APU. + */ + +/** major version + * Major API changes that could cause compatibility problems for older + * programs such as structure size changes. No binary compatibility is + * possible across a change in the major version. + */ +#define APU_MAJOR_VERSION 0 + +/** + * Minor API changes that do not cause binary compatibility problems. + * Should be reset to 0 when upgrading APU_MAJOR_VERSION + */ +#define APU_MINOR_VERSION 9 + +/** patch level */ +#define APU_PATCH_VERSION 19 + +/** + * This symbol is defined for internal, "development" copies of APU. This + * symbol will be #undef'd for releases. + */ +/* #define APU_IS_DEV_VERSION */ + + +/** The formatted string of APU's version */ +#define APU_VERSION_STRING \ + APR_STRINGIFY(APU_MAJOR_VERSION) "." \ + APR_STRINGIFY(APU_MINOR_VERSION) "." \ + APR_STRINGIFY(APU_PATCH_VERSION) \ + APU_IS_DEV_STRING + +/** + * Return APR-util's version information information in a numeric form. + * + * @param pvsn Pointer to a version structure for returning the version + * information. + */ +APU_DECLARE(void) apu_version(apr_version_t *pvsn); + +/** Return APU's version information as a string. */ +APU_DECLARE(const char *) apu_version_string(void); + + +/** Internal: string form of the "is dev" flag */ +#ifdef APU_IS_DEV_VERSION +#define APU_IS_DEV_STRING "-dev" +#else +#define APU_IS_DEV_STRING "" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* APU_VERSION_H */ diff --git a/rubbos/app/apache2/include/apu_want.h b/rubbos/app/apache2/include/apu_want.h new file mode 100644 index 00000000..facf6b31 --- /dev/null +++ b/rubbos/app/apache2/include/apu_want.h @@ -0,0 +1,50 @@ +/* Copyright 2000-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "apu.h" /* configuration data */ + +/** + * @file apu_want.h + * @brief APR Standard Headers Support + * + *
    + * Features:
    + *
    + *   APU_WANT_DB:       
    + *
    + * Typical usage:
    + *
    + *   #define APU_WANT_DB
    + *   #include "apu_want.h"
    + *
    + * The appropriate headers will be included.
    + *
    + * Note: it is safe to use this in a header (it won't interfere with other
    + *       headers' or source files' use of apu_want.h)
    + * 
    + */ + +/* --------------------------------------------------------------------- */ + +#ifdef APU_WANT_DB + +#if APU_HAVE_DB +#include +#endif + +#undef APU_WANT_DB +#endif + +/* --------------------------------------------------------------------- */ diff --git a/rubbos/app/apache2/include/expat.h b/rubbos/app/apache2/include/expat.h new file mode 100644 index 00000000..f3130d45 --- /dev/null +++ b/rubbos/app/apache2/include/expat.h @@ -0,0 +1,1001 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef XmlParse_INCLUDED +#define XmlParse_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler +#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler +#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler +#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg +#endif + +#include + +#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) +#define XML_USE_MSC_EXTENSIONS 1 +#endif + +/* Expat tries very hard to make the API boundary very specifically + defined. There are two macros defined to control this boundary; + each of these can be defined before including this header to + achieve some different behavior, but doing so it not recommended or + tested frequently. + + XMLCALL - The calling convention to use for all calls across the + "library boundary." This will default to cdecl, and + try really hard to tell the compiler that's what we + want. + + XMLIMPORT - Whatever magic is needed to note that a function is + to be imported from a dynamically loaded library + (.dll, .so, or .sl, depending on your platform). + + The XMLCALL macro was added in Expat 1.95.7. The only one which is + expected to be directly useful in client code is XMLCALL. + + Note that on at least some Unix versions, the Expat library must be + compiled with the cdecl calling convention as the default since + system headers may assume the cdecl convention. +*/ +#ifndef XMLCALL +#if defined(XML_USE_MSC_EXTENSIONS) +#define XMLCALL __cdecl +#elif defined(__GNUC__) && defined(__i386) +#define XMLCALL __attribute__((cdecl)) +#else +/* For any platform which uses this definition and supports more than + one calling convention, we need to extend this definition to + declare the convention used on that platform, if it's possible to + do so. + + If this is the case for your platform, please file a bug report + with information on how to identify your platform via the C + pre-processor and how to specify the same calling convention as the + platform's malloc() implementation. +*/ +#define XMLCALL +#endif +#endif /* not defined XMLCALL */ + + +#if !defined(XML_STATIC) && !defined(XMLIMPORT) +#ifndef XML_BUILDING_EXPAT +/* using Expat from an application */ + +#ifdef XML_USE_MSC_EXTENSIONS +#define XMLIMPORT __declspec(dllimport) +#endif + +#endif +#endif /* not defined XML_STATIC */ + +/* If we didn't define it above, define it away: */ +#ifndef XMLIMPORT +#define XMLIMPORT +#endif + + +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_UNICODE_WCHAR_T +#define XML_UNICODE +#endif + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +#ifdef XML_UNICODE_WCHAR_T +typedef wchar_t XML_Char; +typedef wchar_t XML_LChar; +#else +typedef unsigned short XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ +typedef char XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE */ + +/* Should this be defined using stdbool.h when C99 is available? */ +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool) 1) +#define XML_FALSE ((XML_Bool) 0) + +/* The XML_Status enum gives the possible return values for several + API functions. The preprocessor #defines are included so this + stanza can be added to code that still needs to support older + versions of Expat 1.95.x: + + #ifndef XML_STATUS_OK + #define XML_STATUS_OK 1 + #define XML_STATUS_ERROR 0 + #endif + + Otherwise, the #define hackery is quite ugly and would have been + dropped. +*/ +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1 +#define XML_STATUS_OK XML_STATUS_OK +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + XML_ERROR_UNBOUND_PREFIX +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be + XML_CQUANT_NONE, and the other fields will be zero or NULL. + If type == XML_CTYPE_MIXED, then quant will be NONE or REP and + numchildren will contain number of elements that may be mixed in + and children point to an array of XML_Content cells that will be + all of XML_CTYPE_NAME type with no quantification. + + If type == XML_CTYPE_NAME, then the name points to the name, and + the numchildren field will be zero and children will be NULL. The + quant fields indicates any quantifiers placed on the name. + + CHOICE and SEQ will have name NULL, the number of children in + numchildren and children will point, recursively, to an array + of XML_Content cells. + + The EMPTY, ANY, and MIXED types will only occur at top level. +*/ + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char * name; + unsigned int numchildren; + XML_Content * children; +}; + + +/* This is called for an element declaration. See above for + description of the model argument. It's the caller's responsibility + to free model when finished with it. +*/ +typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, + const XML_Char *name, + XML_Content *model); + +XMLPARSEAPI(void) +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl); + +/* The Attlist declaration handler is called for *each* attribute. So + a single Attlist declaration with multiple attributes declared will + generate multiple calls to this handler. The "default" parameter + may be NULL in the case of the "#IMPLIED" or "#REQUIRED" + keyword. The "isrequired" parameter will be true and the default + value will be NULL in the case of "#REQUIRED". If "isrequired" is + true and default is non-NULL, then this is a "#FIXED" default. +*/ +typedef void (XMLCALL *XML_AttlistDeclHandler) ( + void *userData, + const XML_Char *elname, + const XML_Char *attname, + const XML_Char *att_type, + const XML_Char *dflt, + int isrequired); + +XMLPARSEAPI(void) +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl); + +/* The XML declaration handler is called for *both* XML declarations + and text declarations. The way to distinguish is that the version + parameter will be NULL for text declarations. The encoding + parameter may be NULL for XML declarations. The standalone + parameter will be -1, 0, or 1 indicating respectively that there + was no standalone parameter in the declaration, that it was given + as no, or that it was given as yes. +*/ +typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +XMLPARSEAPI(void) +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl); + + +typedef struct { + void *(XMLCALL *malloc_fcn)(size_t size); + void *(XMLCALL *realloc_fcn)(void *ptr, size_t size); + void (XMLCALL *free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +/* Constructs a new parser; encoding is the encoding specified by the + external protocol or NULL if there is none specified. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate(const XML_Char *encoding); + +/* Constructs a new parser and namespace processor. Element type + names and attribute names that belong to a namespace will be + expanded; unprefixed attribute names are never expanded; unprefixed + element type names are expanded only if there is a default + namespace. The expanded name is the concatenation of the namespace + URI, the namespace separator character, and the local part of the + name. If the namespace separator is '\0' then the namespace URI + and the local part will be concatenated without any separator. + When a namespace is not declared, the name and prefix will be + passed through without expansion. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + + +/* Constructs a new parser using the memory management suite referred to + by memsuite. If memsuite is NULL, then use the standard library memory + suite. If namespaceSeparator is non-NULL it creates a parser with + namespace processing as described above. The character pointed at + will serve as the namespace separator. + + All further memory operations used for the created parser will come from + the given suite. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +/* Prepare a parser object to be re-used. This is particularly + valuable when memory allocation overhead is disproportionatly high, + such as when a large number of small documnents need to be parsed. + All handlers are cleared from the parser, except for the + unknownEncodingHandler. The parser's external state is re-initialized + except for the values of ns and ns_triplets. + + Added in Expat 1.95.3. +*/ +XMLPARSEAPI(XML_Bool) +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +/* atts is array of name/value pairs, terminated by 0; + names and values are 0 terminated. +*/ +typedef void (XMLCALL *XML_StartElementHandler) (void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void (XMLCALL *XML_EndElementHandler) (void *userData, + const XML_Char *name); + + +/* s is not 0 terminated. */ +typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, + const XML_Char *s, + int len); + +/* target and data are 0 terminated */ +typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( + void *userData, + const XML_Char *target, + const XML_Char *data); + +/* data is 0 terminated */ +typedef void (XMLCALL *XML_CommentHandler) (void *userData, + const XML_Char *data); + +typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); +typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); + +/* This is called for any characters in the XML document for which + there is no applicable handler. This includes both characters that + are part of markup which is of a kind that is not reported + (comments, markup declarations), or characters that are part of a + construct which could be reported but for which no handler has been + supplied. The characters are passed exactly as they were in the XML + document except that they will be encoded in UTF-8 or UTF-16. + Line boundaries are not normalized. Note that a byte order mark + character is not passed to the default handler. There are no + guarantees about how characters are divided between calls to the + default handler: for example, a comment might be split between + multiple calls. +*/ +typedef void (XMLCALL *XML_DefaultHandler) (void *userData, + const XML_Char *s, + int len); + +/* This is called for the start of the DOCTYPE declaration, before + any DTD or internal subset is parsed. +*/ +typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( + void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +/* This is called for the start of the DOCTYPE declaration when the + closing > is encountered, but after processing any external + subset. +*/ +typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); + +/* This is called for entity declarations. The is_parameter_entity + argument will be non-zero if the entity is a parameter entity, zero + otherwise. + + For internal entities (), value will + be non-NULL and systemId, publicID, and notationName will be NULL. + The value string is NOT nul-terminated; the length is provided in + the value_length argument. Since it is legal to have zero-length + values, do not use this argument to test for internal entities. + + For external entities, value will be NULL and systemId will be + non-NULL. The publicId argument will be NULL unless a public + identifier was provided. The notationName argument will have a + non-NULL value only for unparsed entity declarations. + + Note that is_parameter_entity can't be changed to XML_Bool, since + that would break binary compatibility. +*/ +typedef void (XMLCALL *XML_EntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity, + const XML_Char *value, + int value_length, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +XMLPARSEAPI(void) +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler); + +/* OBSOLETE -- OBSOLETE -- OBSOLETE + This handler has been superceded by the EntityDeclHandler above. + It is provided here for backward compatibility. + + This is called for a declaration of an unparsed (NDATA) entity. + The base argument is whatever was set by XML_SetBase. The + entityName, systemId and notationName arguments will never be + NULL. The other arguments may be. +*/ +typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +/* This is called for a declaration of notation. The base argument is + whatever was set by XML_SetBase. The notationName will never be + NULL. The other arguments can be. +*/ +typedef void (XMLCALL *XML_NotationDeclHandler) ( + void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* When namespace processing is enabled, these are called once for + each namespace declaration. The call to the start and end element + handlers occur between the calls to the start and end namespace + declaration handlers. For an xmlns attribute, prefix will be + NULL. For an xmlns="" attribute, uri will be NULL. +*/ +typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix); + +/* This is called if the document is not standalone, that is, it has an + external subset or a reference to a parameter entity, but does not + have standalone="yes". If this handler returns XML_STATUS_ERROR, + then processing will not continue, and the parser will return a + XML_ERROR_NOT_STANDALONE error. + If parameter entity parsing is enabled, then in addition to the + conditions above this handler will only be called if the referenced + entity was actually read. +*/ +typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); + +/* This is called for a reference to an external parsed general + entity. The referenced entity is not automatically parsed. The + application can parse it immediately or later using + XML_ExternalEntityParserCreate. + + The parser argument is the parser parsing the entity containing the + reference; it can be passed as the parser argument to + XML_ExternalEntityParserCreate. The systemId argument is the + system identifier as specified in the entity declaration; it will + not be NULL. + + The base argument is the system identifier that should be used as + the base for resolving systemId if systemId was relative; this is + set by XML_SetBase; it may be NULL. + + The publicId argument is the public identifier as specified in the + entity declaration, or NULL if none was specified; the whitespace + in the public identifier will have been normalized as required by + the XML spec. + + The context argument specifies the parsing context in the format + expected by the context argument to XML_ExternalEntityParserCreate; + context is valid only until the handler returns, so if the + referenced entity is to be parsed later, it must be copied. + context is NULL only when the entity is a parameter entity. + + The handler should return XML_STATUS_ERROR if processing should not + continue because of a fatal error in the handling of the external + entity. In this case the calling parser will return an + XML_ERROR_EXTERNAL_ENTITY_HANDLING error. + + Note that unlike other handlers the first argument is the parser, + not userData. +*/ +typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( + XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* This is called in two situations: + 1) An entity reference is encountered for which no declaration + has been read *and* this is not an error. + 2) An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler has been called. + Note: skipped parameter entities in declarations and skipped general + entities in attribute values cannot be reported, because + the event would be out of sync with the reporting of the + declarations or attribute values +*/ +typedef void (XMLCALL *XML_SkippedEntityHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +/* This structure is filled in by the XML_UnknownEncodingHandler to + provide information to the parser about encodings that are unknown + to the parser. + + The map[b] member gives information about byte sequences whose + first byte is b. + + If map[b] is c where c is >= 0, then b by itself encodes the + Unicode scalar value c. + + If map[b] is -1, then the byte sequence is malformed. + + If map[b] is -n, where n >= 2, then b is the first byte of an + n-byte sequence that encodes a single Unicode scalar value. + + The data member will be passed as the first argument to the convert + function. + + The convert function is used to convert multibyte sequences; s will + point to a n-byte sequence where map[(unsigned char)*s] == -n. The + convert function must return the Unicode scalar value represented + by this byte sequence or -1 if the byte sequence is malformed. + + The convert function may be NULL if the encoding is a single-byte + encoding, that is if map[b] >= -1 for all bytes b. + + When the parser is finished with the encoding, then if release is + not NULL, it will call release passing it the data member; once + release has been called, the convert function will not be called + again. + + Expat places certain restrictions on the encodings that are supported + using this mechanism. + + 1. Every ASCII character that can appear in a well-formed XML document, + other than the characters + + $@\^`{}~ + + must be represented by a single byte, and that byte must be the + same byte that represents that character in ASCII. + + 2. No character may require more than 4 bytes to encode. + + 3. All characters encoded must have Unicode scalar values <= + 0xFFFF, (i.e., characters that would be encoded by surrogates in + UTF-16 are not allowed). Note that this restriction doesn't + apply to the built-in support for UTF-8 and UTF-16. + + 4. No Unicode character may be encoded by more than one distinct + sequence of bytes. +*/ +typedef struct { + int map[256]; + void *data; + int (XMLCALL *convert)(void *data, const char *s); + void (XMLCALL *release)(void *data); +} XML_Encoding; + +/* This is called for an encoding that is unknown to the parser. + + The encodingHandlerData argument is that which was passed as the + second argument to XML_SetUnknownEncodingHandler. + + The name argument gives the name of the encoding as specified in + the encoding declaration. + + If the callback can provide information about the encoding, it must + fill in the XML_Encoding structure, and return XML_STATUS_OK. + Otherwise it must return XML_STATUS_ERROR. + + If info does not describe a suitable encoding, then the parser will + return an XML_UNKNOWN_ENCODING error. +*/ +typedef int (XMLCALL *XML_UnknownEncodingHandler) ( + void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +XMLPARSEAPI(void) +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end); + +XMLPARSEAPI(void) +XML_SetStartElementHandler(XML_Parser, XML_StartElementHandler); + +XMLPARSEAPI(void) +XML_SetEndElementHandler(XML_Parser, XML_EndElementHandler); + +XMLPARSEAPI(void) +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +XMLPARSEAPI(void) +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +XMLPARSEAPI(void) +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler); + +XMLPARSEAPI(void) +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +XMLPARSEAPI(void) +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +XMLPARSEAPI(void) +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +/* This sets the default handler and also inhibits expansion of + internal entities. These entity references will be passed to the + default handler, or to the skipped entity handler, if one is set. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler); + +/* This sets the default handler but does not inhibit expansion of + internal entities. The entity reference will not be passed to the + default handler. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler); + +XMLPARSEAPI(void) +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +/* If a non-NULL value for arg is specified here, then it will be + passed as the first argument to the external entity ref handler + instead of the parser object. +*/ +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandlerArg(XML_Parser, void *arg); + +XMLPARSEAPI(void) +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +XMLPARSEAPI(void) +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +/* This can be called within a handler for a start element, end + element, processing instruction or character data. It causes the + corresponding markup to be passed to the default handler. +*/ +XMLPARSEAPI(void) +XML_DefaultCurrent(XML_Parser parser); + +/* If do_nst is non-zero, and namespace processing is in effect, and + a name has a prefix (i.e. an explicit namespace qualifier) then + that name is returned as a triplet in a single string separated by + the separator character specified when the parser was created: URI + + sep + local_name + sep + prefix. + + If do_nst is zero, then namespace information is returned in the + default manner (URI + sep + local_name) whether or not the name + has a prefix. + + Note: Calling XML_SetReturnNSTriplet after XML_Parse or + XML_ParseBuffer has no effect. +*/ + +XMLPARSEAPI(void) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +/* This value is passed as the userData argument to callbacks. */ +XMLPARSEAPI(void) +XML_SetUserData(XML_Parser parser, void *userData); + +/* Returns the last value set by XML_SetUserData or NULL. */ +#define XML_GetUserData(parser) (*(void **)(parser)) + +/* This is equivalent to supplying an encoding argument to + XML_ParserCreate. On success XML_SetEncoding returns non-zero, + zero otherwise. + Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer + has no effect and returns XML_STATUS_ERROR. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +/* If this function is called, then the parser will be passed as the + first argument to callbacks instead of userData. The userData will + still be accessible using XML_GetUserData. +*/ +XMLPARSEAPI(void) +XML_UseParserAsHandlerArg(XML_Parser parser); + +/* If useDTD == XML_TRUE is passed to this function, then the parser + will assume that there is an external subset, even if none is + specified in the document. In such a case the parser will call the + externalEntityRefHandler with a value of NULL for the systemId + argument (the publicId and context arguments will be NULL as well). + Note: If this function is called, then this must be done before + the first call to XML_Parse or XML_ParseBuffer, since it will + have no effect after that. Returns + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. + Note: If the document does not have a DOCTYPE declaration at all, + then startDoctypeDeclHandler and endDoctypeDeclHandler will not + be called, despite an external subset being parsed. + Note: If XML_DTD is not defined when Expat is compiled, returns + XML_ERROR_FEATURE_REQUIRES_XML_DTD. +*/ +XMLPARSEAPI(enum XML_Error) +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + + +/* Sets the base to be used for resolving relative URIs in system + identifiers in declarations. Resolving relative identifiers is + left to the application: this value will be passed through as the + base argument to the XML_ExternalEntityRefHandler, + XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base + argument will be copied. Returns XML_STATUS_ERROR if out of memory, + XML_STATUS_OK otherwise. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetBase(XML_Parser parser, const XML_Char *base); + +XMLPARSEAPI(const XML_Char *) +XML_GetBase(XML_Parser parser); + +/* Returns the number of the attribute/value pairs passed in last call + to the XML_StartElementHandler that were specified in the start-tag + rather than defaulted. Each attribute/value pair counts as 2; thus + this correspondds to an index into the atts array passed to the + XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +/* Returns the index of the ID attribute passed in the last call to + XML_StartElementHandler, or -1 if there is no ID attribute. Each + attribute/value pair counts as 2; thus this correspondds to an + index into the atts array passed to the XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetIdAttributeIndex(XML_Parser parser); + +/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is + detected. The last call to XML_Parse must have isFinal true; len + may be zero for this call (or any other). + + Though the return values for these functions has always been + described as a Boolean value, the implementation, at least for the + 1.95.x series, has always returned exactly one of the XML_Status + values. +*/ +XMLPARSEAPI(enum XML_Status) +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +XMLPARSEAPI(void *) +XML_GetBuffer(XML_Parser parser, int len); + +XMLPARSEAPI(enum XML_Status) +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +/* Creates an XML_Parser object that can parse an external general + entity; context is a '\0'-terminated string specifying the parse + context; encoding is a '\0'-terminated string giving the name of + the externally specified encoding, or NULL if there is no + externally specified encoding. The context string consists of a + sequence of tokens separated by formfeeds (\f); a token consisting + of a name specifies that the general entity of the name is open; a + token of the form prefix=uri specifies the namespace for a + particular prefix; a token of the form =uri specifies the default + namespace. This can be called at any point after the first call to + an ExternalEntityRefHandler so longer as the parser has not yet + been freed. The new parser is completely independent and may + safely be used in a separate thread. The handlers and userData are + initialized from the parser argument. Returns NULL if out of memory. + Otherwise returns a new XML_Parser object. +*/ +XMLPARSEAPI(XML_Parser) +XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +/* Controls parsing of parameter entities (including the external DTD + subset). If parsing of parameter entities is enabled, then + references to external parameter entities (including the external + DTD subset) will be passed to the handler set with + XML_SetExternalEntityRefHandler. The context passed will be 0. + + Unlike external general entities, external parameter entities can + only be parsed synchronously. If the external parameter entity is + to be parsed, it must be parsed during the call to the external + entity ref handler: the complete sequence of + XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and + XML_ParserFree calls must be made during this call. After + XML_ExternalEntityParserCreate has been called to create the parser + for the external parameter entity (context must be 0 for this + call), it is illegal to make any calls on the old parser until + XML_ParserFree has been called on the newly created parser. + If the library has been compiled without support for parameter + entity parsing (ie without XML_DTD being defined), then + XML_SetParamEntityParsing will return 0 if parsing of parameter + entities is requested; otherwise it will return non-zero. + Note: If XML_SetParamEntityParsing is called after XML_Parse or + XML_ParseBuffer, then it has no effect and will always return 0. +*/ +XMLPARSEAPI(int) +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then + XML_GetErrorCode returns information about the error. +*/ +XMLPARSEAPI(enum XML_Error) +XML_GetErrorCode(XML_Parser parser); + +/* These functions return information about the current parse + location. They may be called from any callback called to report + some parse event; in this case the location is the location of the + first of the sequence of characters that generated the event. When + called from callbacks generated by declarations in the document + prologue, the location identified isn't as neatly defined, but will + be within the relevant markup. When called outside of the callback + functions, the position indicated will be just past the last parse + event (regardless of whether there was an associated callback). + + They may also be called after returning from a call to XML_Parse + or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then + the location is the location of the character at which the error + was detected; otherwise the location is the location of the last + parse event, as described above. +*/ +XMLPARSEAPI(int) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(int) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(long) XML_GetCurrentByteIndex(XML_Parser parser); + +/* Return the number of bytes in the current event. + Returns 0 if the event is in an internal entity. +*/ +XMLPARSEAPI(int) +XML_GetCurrentByteCount(XML_Parser parser); + +/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets + the integer pointed to by offset to the offset within this buffer + of the current parse position, and sets the integer pointed to by size + to the size of this buffer (the number of input bytes). Otherwise + returns a NULL pointer. Also returns a NULL pointer if a parse isn't + active. + + NOTE: The character pointer returned should not be used outside + the handler that makes the call. +*/ +XMLPARSEAPI(const char *) +XML_GetInputContext(XML_Parser parser, + int *offset, + int *size); + +/* For backwards compatibility with previous versions. */ +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +/* Frees the content model passed to the element declaration handler */ +XMLPARSEAPI(void) +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +/* Exposing the memory handling functions used in Expat */ +XMLPARSEAPI(void *) +XML_MemMalloc(XML_Parser parser, size_t size); + +XMLPARSEAPI(void *) +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +XMLPARSEAPI(void) +XML_MemFree(XML_Parser parser, void *ptr); + +/* Frees memory used by the parser. */ +XMLPARSEAPI(void) +XML_ParserFree(XML_Parser parser); + +/* Returns a string describing the error. */ +XMLPARSEAPI(const XML_LChar *) +XML_ErrorString(enum XML_Error code); + +/* Return a string containing the version number of this expat */ +XMLPARSEAPI(const XML_LChar *) +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +/* Return an XML_Expat_Version structure containing numeric version + number information for this version of expat. +*/ +XMLPARSEAPI(XML_Expat_Version) +XML_ExpatVersionInfo(void); + +/* Added in Expat 1.95.5. */ +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR + /* Additional features must be added to the end of this enum. */ +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +XMLPARSEAPI(const XML_Feature *) +XML_GetFeatureList(void); + + +/* Expat follows the GNU/Linux convention of odd number minor version for + beta/development releases and even number minor version for stable + releases. Micro is bumped with each release, and set to 0 with each + change to major or minor version. +*/ +#define XML_MAJOR_VERSION 1 +#define XML_MINOR_VERSION 95 +#define XML_MICRO_VERSION 7 + +#ifdef __cplusplus +} +#endif + +#endif /* not XmlParse_INCLUDED */ diff --git a/rubbos/app/apache2/include/fdqueue.h b/rubbos/app/apache2/include/fdqueue.h new file mode 100644 index 00000000..6dd55e03 --- /dev/null +++ b/rubbos/app/apache2/include/fdqueue.h @@ -0,0 +1,64 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FDQUEUE_H +#define FDQUEUE_H +#include "httpd.h" +#include +#if APR_HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#if APR_HAVE_SYS_SOCKET_H +#include +#endif +#include + +typedef struct fd_queue_info_t fd_queue_info_t; + +apr_status_t ap_queue_info_create(fd_queue_info_t **queue_info, + apr_pool_t *pool, int max_idlers); +apr_status_t ap_queue_info_set_idle(fd_queue_info_t *queue_info, + apr_pool_t *pool_to_recycle); +apr_status_t ap_queue_info_wait_for_idler(fd_queue_info_t *queue_info, + apr_pool_t **recycled_pool); +apr_status_t ap_queue_info_term(fd_queue_info_t *queue_info); + +struct fd_queue_elem_t { + apr_socket_t *sd; + apr_pool_t *p; +}; +typedef struct fd_queue_elem_t fd_queue_elem_t; + +struct fd_queue_t { + fd_queue_elem_t *data; + int nelts; + int bounds; + apr_thread_mutex_t *one_big_mutex; + apr_thread_cond_t *not_empty; + int terminated; +}; +typedef struct fd_queue_t fd_queue_t; + +apr_status_t ap_queue_init(fd_queue_t *queue, int queue_capacity, apr_pool_t *a); +apr_status_t ap_queue_push(fd_queue_t *queue, apr_socket_t *sd, apr_pool_t *p); +apr_status_t ap_queue_pop(fd_queue_t *queue, apr_socket_t **sd, apr_pool_t **p); +apr_status_t ap_queue_interrupt_all(fd_queue_t *queue); +apr_status_t ap_queue_term(fd_queue_t *queue); + +#endif /* FDQUEUE_H */ diff --git a/rubbos/app/apache2/include/http_config.h b/rubbos/app/apache2/include/http_config.h new file mode 100644 index 00000000..783e44b4 --- /dev/null +++ b/rubbos/app/apache2/include/http_config.h @@ -0,0 +1,1018 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_CONFIG_H +#define APACHE_HTTP_CONFIG_H + +#include "apr_hooks.h" +#include "util_cfgtree.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file http_config.h + * @brief Apache Configuration + */ + +/* + * The central data structures around here... + */ + +/* Command dispatch structures... */ + +/** + * How the directives arguments should be parsed. + * @remark Note that for all of these except RAW_ARGS, the config routine is + * passed a freshly allocated string which can be modified or stored + * or whatever... + */ +enum cmd_how { + RAW_ARGS, /**< cmd_func parses command line itself */ + TAKE1, /**< one argument only */ + TAKE2, /**< two arguments only */ + ITERATE, /**< one argument, occuring multiple times + * (e.g., IndexIgnore) + */ + ITERATE2, /**< two arguments, 2nd occurs multiple times + * (e.g., AddIcon) + */ + FLAG, /**< One of 'On' or 'Off' */ + NO_ARGS, /**< No args at all, e.g. */ + TAKE12, /**< one or two arguments */ + TAKE3, /**< three arguments only */ + TAKE23, /**< two or three arguments */ + TAKE123, /**< one, two or three arguments */ + TAKE13 /**< one or three arguments */ +}; +/** + * This structure is passed to a command which is being invoked, + * to carry a large variety of miscellaneous data which is all of + * use to *somebody*... + */ +typedef struct cmd_parms_struct cmd_parms; + +#if defined(AP_HAVE_DESIGNATED_INITIALIZER) || defined(DOXYGEN) + +/** + * All the types of functions that can be used in directives + * @internal + */ +typedef union { + /** function to call for a no-args */ + const char *(*no_args) (cmd_parms *parms, void *mconfig); + /** function to call for a raw-args */ + const char *(*raw_args) (cmd_parms *parms, void *mconfig, + const char *args); + /** function to call for a take1 */ + const char *(*take1) (cmd_parms *parms, void *mconfig, const char *w); + /** function to call for a take2 */ + const char *(*take2) (cmd_parms *parms, void *mconfig, const char *w, + const char *w2); + /** function to call for a take3 */ + const char *(*take3) (cmd_parms *parms, void *mconfig, const char *w, + const char *w2, const char *w3); + /** function to call for a flag */ + const char *(*flag) (cmd_parms *parms, void *mconfig, int on); +} cmd_func; + +/** This configuration directive does not take any arguments */ +# define AP_NO_ARGS func.no_args +/** This configuration directive will handle it's own parsing of arguments*/ +# define AP_RAW_ARGS func.raw_args +/** This configuration directive takes 1 argument*/ +# define AP_TAKE1 func.take1 +/** This configuration directive takes 2 arguments */ +# define AP_TAKE2 func.take2 +/** This configuration directive takes 3 arguments */ +# define AP_TAKE3 func.take3 +/** This configuration directive takes a flag (on/off) as a argument*/ +# define AP_FLAG func.flag + +/** method of declaring a directive with no arguments */ +# define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \ + { directive, { .no_args=func }, mconfig, where, RAW_ARGS, help } +/** method of declaring a directive with raw argument parsing */ +# define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \ + { directive, { .raw_args=func }, mconfig, where, RAW_ARGS, help } +/** method of declaring a directive which takes 1 argument */ +# define AP_INIT_TAKE1(directive, func, mconfig, where, help) \ + { directive, { .take1=func }, mconfig, where, TAKE1, help } +/** method of declaring a directive which takes multiple arguments */ +# define AP_INIT_ITERATE(directive, func, mconfig, where, help) \ + { directive, { .take1=func }, mconfig, where, ITERATE, help } +/** method of declaring a directive which takes 2 arguments */ +# define AP_INIT_TAKE2(directive, func, mconfig, where, help) \ + { directive, { .take2=func }, mconfig, where, TAKE2, help } +/** method of declaring a directive which takes 1 or 2 arguments */ +# define AP_INIT_TAKE12(directive, func, mconfig, where, help) \ + { directive, { .take2=func }, mconfig, where, TAKE12, help } +/** method of declaring a directive which takes multiple 2 arguments */ +# define AP_INIT_ITERATE2(directive, func, mconfig, where, help) \ + { directive, { .take2=func }, mconfig, where, ITERATE2, help } +/** method of declaring a directive which takes 1 or 3 arguments */ +# define AP_INIT_TAKE13(directive, func, mconfig, where, help) \ + { directive, { .take3=func }, mconfig, where, TAKE13, help } +/** method of declaring a directive which takes 2 or 3 arguments */ +# define AP_INIT_TAKE23(directive, func, mconfig, where, help) \ + { directive, { .take3=func }, mconfig, where, TAKE23, help } +/** method of declaring a directive which takes 1 to 3 arguments */ +# define AP_INIT_TAKE123(directive, func, mconfig, where, help) \ + { directive, { .take3=func }, mconfig, where, TAKE123, help } +/** method of declaring a directive which takes 3 arguments */ +# define AP_INIT_TAKE3(directive, func, mconfig, where, help) \ + { directive, { .take3=func }, mconfig, where, TAKE3, help } +/** method of declaring a directive which takes a flag (on/off) as a argument*/ +# define AP_INIT_FLAG(directive, func, mconfig, where, help) \ + { directive, { .flag=func }, mconfig, where, FLAG, help } + +#else /* AP_HAVE_DESIGNATED_INITIALIZER */ + +typedef const char *(*cmd_func) (); + +# define AP_NO_ARGS func +# define AP_RAW_ARGS func +# define AP_TAKE1 func +# define AP_TAKE2 func +# define AP_TAKE3 func +# define AP_FLAG func + +# define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, RAW_ARGS, help } +# define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, RAW_ARGS, help } +# define AP_INIT_TAKE1(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE1, help } +# define AP_INIT_ITERATE(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, ITERATE, help } +# define AP_INIT_TAKE2(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE2, help } +# define AP_INIT_TAKE12(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE12, help } +# define AP_INIT_ITERATE2(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, ITERATE2, help } +# define AP_INIT_TAKE13(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE13, help } +# define AP_INIT_TAKE23(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE23, help } +# define AP_INIT_TAKE123(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE123, help } +# define AP_INIT_TAKE3(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, TAKE3, help } +# define AP_INIT_FLAG(directive, func, mconfig, where, help) \ + { directive, func, mconfig, where, FLAG, help } + +#endif /* AP_HAVE_DESIGNATED_INITIALIZER */ + +/** + * The command record structure. Each modules can define a table of these + * to define the directives it will implement. + */ +typedef struct command_struct command_rec; +struct command_struct { + /** Name of this command */ + const char *name; + /** The function to be called when this directive is parsed */ + cmd_func func; + /** Extra data, for functions which implement multiple commands... */ + void *cmd_data; + /** What overrides need to be allowed to enable this command. */ + int req_override; + /** What the command expects as arguments + * @defvar cmd_how args_how*/ + enum cmd_how args_how; + + /** 'usage' message, in case of syntax errors */ + const char *errmsg; +}; + +/** + * @defgroup ConfigDirectives Allowed locations for configuration directives. + * + * The allowed locations for a configuration directive are the union of + * those indicated by each set bit in the req_override mask. + * + * @{ + */ +#define OR_NONE 0 /**< *.conf is not available anywhere in this override */ +#define OR_LIMIT 1 /**< *.conf inside or + and .htaccess when AllowOverride Limit */ +#define OR_OPTIONS 2 /**< *.conf anywhere + and .htaccess when AllowOverride Options */ +#define OR_FILEINFO 4 /**< *.conf anywhere + and .htaccess when AllowOverride FileInfo */ +#define OR_AUTHCFG 8 /**< *.conf inside or + and .htaccess when AllowOverride AuthConfig */ +#define OR_INDEXES 16 /**< *.conf anywhere + and .htaccess when AllowOverride Indexes */ +#define OR_UNSET 32 /**< unset a directive (in Allow) */ +#define ACCESS_CONF 64 /**< *.conf inside or */ +#define RSRC_CONF 128 /**< *.conf outside or */ +#define EXEC_ON_READ 256 /**< force directive to execute a command + which would modify the configuration (like including another + file, or IFModule */ +/** this directive can be placed anywhere */ +#define OR_ALL (OR_LIMIT|OR_OPTIONS|OR_FILEINFO|OR_AUTHCFG|OR_INDEXES) + +/** @} */ + +/** + * This can be returned by a function if they don't wish to handle + * a command. Make it something not likely someone will actually use + * as an error code. + */ +#define DECLINE_CMD "\a\b" + +/** Common structure for reading of config files / passwd files etc. */ +typedef struct ap_configfile_t ap_configfile_t; +struct ap_configfile_t { + int (*getch) (void *param); /**< a getc()-like function */ + void *(*getstr) (void *buf, size_t bufsiz, void *param); + /**< a fgets()-like function */ + int (*close) (void *param); /**< a close handler function */ + void *param; /**< the argument passed to getch/getstr/close */ + const char *name; /**< the filename / description */ + unsigned line_number; /**< current line number, starting at 1 */ +}; + +/** + * This structure is passed to a command which is being invoked, + * to carry a large variety of miscellaneous data which is all of + * use to *somebody*... + */ +struct cmd_parms_struct { + /** Argument to command from cmd_table */ + void *info; + /** Which allow-override bits are set */ + int override; + /** Which methods are ed */ + apr_int64_t limited; + /** methods which are limited */ + apr_array_header_t *limited_xmethods; + /** methods which are xlimited */ + ap_method_list_t *xlimited; + + /** Config file structure. */ + ap_configfile_t *config_file; + /** the directive specifying this command */ + ap_directive_t *directive; + + /** Pool to allocate new storage in */ + apr_pool_t *pool; + /** Pool for scratch memory; persists during configuration, but + * wiped before the first request is served... */ + apr_pool_t *temp_pool; + /** Server_rec being configured for */ + server_rec *server; + /** If configuring for a directory, pathname of that directory. + * NOPE! That's what it meant previous to the existance of , + * and regex matching. Now the only usefulness that can be + * derived from this field is whether a command is being called in a + * server context (path == NULL) or being called in a dir context + * (path != NULL). */ + char *path; + /** configuration command */ + const command_rec *cmd; + + /** per_dir_config vector passed to handle_command */ + struct ap_conf_vector_t *context; + /** directive with syntax error */ + const ap_directive_t *err_directive; +}; + +/** + * Module structures. Just about everything is dispatched through + * these, directly or indirectly (through the command and handler + * tables). + */ +typedef struct module_struct module; +struct module_struct { + /** API version, *not* module version; check that module is + * compatible with this version of the server. + */ + int version; + /** API minor version. Provides API feature milestones. Not checked + * during module init */ + int minor_version; + /** Index to this modules structures in config vectors. */ + int module_index; + + /** The name of the module's C file */ + const char *name; + /** The handle for the DSO. Internal use only */ + void *dynamic_load_handle; + + /** A pointer to the next module in the list + * @defvar module_struct *next */ + struct module_struct *next; + + /** Magic Cookie to identify a module structure; It's mainly + * important for the DSO facility (see also mod_so). */ + unsigned long magic; + + /** Function to allow MPMs to re-write command line arguments. This + * hook is only available to MPMs. + * @param The process that the server is running in. + */ + void (*rewrite_args) (process_rec *process); + /** Function to allow all modules to create per directory configuration + * structures. + * @param p The pool to use for all allocations. + * @param dir The directory currently being processed. + * @return The per-directory structure created + */ + void *(*create_dir_config) (apr_pool_t *p, char *dir); + /** Function to allow all modules to merge the per directory configuration + * structures for two directories. + * @param p The pool to use for all allocations. + * @param base_conf The directory structure created for the parent directory. + * @param new_conf The directory structure currently being processed. + * @return The new per-directory structure created + */ + void *(*merge_dir_config) (apr_pool_t *p, void *base_conf, void *new_conf); + /** Function to allow all modules to create per server configuration + * structures. + * @param p The pool to use for all allocations. + * @param s The server currently being processed. + * @return The per-server structure created + */ + void *(*create_server_config) (apr_pool_t *p, server_rec *s); + /** Function to allow all modules to merge the per server configuration + * structures for two servers. + * @param p The pool to use for all allocations. + * @param base_conf The directory structure created for the parent directory. + * @param new_conf The directory structure currently being processed. + * @return The new per-directory structure created + */ + void *(*merge_server_config) (apr_pool_t *p, void *base_conf, + void *new_conf); + + /** A command_rec table that describes all of the directives this module + * defines. */ + const command_rec *cmds; + + /** A hook to allow modules to hook other points in the request processing. + * In this function, modules should call the ap_hook_*() functions to + * register an interest in a specific step in processing the current + * request. + * @param p the pool to use for all allocations + */ + void (*register_hooks) (apr_pool_t *p); +}; + +/** + * @defgroup ModuleInit Module structure initializers + * + * Initializer for the first few module slots, which are only + * really set up once we start running. Note that the first two slots + * provide a version check; this should allow us to deal with changes to + * the API. The major number should reflect changes to the API handler table + * itself or removal of functionality. The minor number should reflect + * additions of functionality to the existing API. (the server can detect + * an old-format module, and either handle it back-compatibly, or at least + * signal an error). See src/include/ap_mmn.h for MMN version history. + * @{ + */ + +/** The one used in Apache 1.3, which will deliberately cause an error */ +#define STANDARD_MODULE_STUFF this_module_needs_to_be_ported_to_apache_2_0 + +/** Use this in all standard modules */ +#define STANDARD20_MODULE_STUFF MODULE_MAGIC_NUMBER_MAJOR, \ + MODULE_MAGIC_NUMBER_MINOR, \ + -1, \ + __FILE__, \ + NULL, \ + NULL, \ + MODULE_MAGIC_COOKIE, \ + NULL /* rewrite args spot */ + +/** Use this only in MPMs */ +#define MPM20_MODULE_STUFF MODULE_MAGIC_NUMBER_MAJOR, \ + MODULE_MAGIC_NUMBER_MINOR, \ + -1, \ + __FILE__, \ + NULL, \ + NULL, \ + MODULE_MAGIC_COOKIE + +/** @} */ + +/* CONFIGURATION VECTOR FUNCTIONS */ + +/** configuration vector structure */ +typedef struct ap_conf_vector_t ap_conf_vector_t; + +/** + * Generic accessors for other modules to get at their own module-specific + * data + * @param conf_vector The vector in which the modules configuration is stored. + * usually r->per_dir_config or s->module_config + * @param m The module to get the data for. + * @return The module-specific data + */ +AP_DECLARE(void *) ap_get_module_config(const ap_conf_vector_t *cv, + const module *m); + +/** + * Generic accessors for other modules to set at their own module-specific + * data + * @param conf_vector The vector in which the modules configuration is stored. + * usually r->per_dir_config or s->module_config + * @param m The module to set the data for. + * @param val The module-specific data to set + */ +AP_DECLARE(void) ap_set_module_config(ap_conf_vector_t *cv, const module *m, + void *val); + +#if !defined(AP_DEBUG) + +#define ap_get_module_config(v,m) \ + (((void **)(v))[(m)->module_index]) +#define ap_set_module_config(v,m,val) \ + ((((void **)(v))[(m)->module_index]) = (val)) + +#endif /* AP_DEBUG */ + + +/** + * Generic command handling function for strings + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive + * @return An error string or NULL on success + */ +AP_DECLARE_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd, + void *struct_ptr, + const char *arg); + +/** + * Generic command handling function for integers + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive + * @return An error string or NULL on success + */ +AP_DECLARE_NONSTD(const char *) ap_set_int_slot(cmd_parms *cmd, + void *struct_ptr, + const char *arg); + +/** + * Return true if the specified method is limited by being listed in + * a container, or by *not* being listed in a + * container. + * + * @param method Pointer to a string specifying the method to check. + * @param cmd Pointer to the cmd_parms structure passed to the + * directive handler. + * @return 0 if the method is not limited in the current scope + */ +AP_DECLARE(int) ap_method_is_limited(cmd_parms *cmd, const char *method); + +/** + * Generic command handling function for strings, always sets the value + * to a lowercase string + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive + * @return An error string or NULL on success + */ +AP_DECLARE_NONSTD(const char *) ap_set_string_slot_lower(cmd_parms *cmd, + void *struct_ptr, + const char *arg); +/** + * Generic command handling function for flags + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive (either 1 or 0) + * @return An error string or NULL on success + */ +AP_DECLARE_NONSTD(const char *) ap_set_flag_slot(cmd_parms *cmd, + void *struct_ptr, + int arg); +/** + * Generic command handling function for files + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive + * @return An error string or NULL on success + */ +AP_DECLARE_NONSTD(const char *) ap_set_file_slot(cmd_parms *cmd, + void *struct_ptr, + const char *arg); +/** + * Generic command handling function to respond with cmd->help as an error + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive + * @return The cmd->help value as the error string + * @tip This allows simple declarations such as; + *
    + *     AP_INIT_RAW_ARGS("Foo", ap_set_deprecated, NULL, OR_ALL, 
    + *         "The Foo directive is no longer supported, use Bar"),
    + * 
    + */ +AP_DECLARE_NONSTD(const char *) ap_set_deprecated(cmd_parms *cmd, + void *struct_ptr, + const char *arg); +/** + * For modules which need to read config files, open logs, etc. this returns + * the canonical form of fname made absolute to ap_server_root. + * @param p pool to allocate data from + * @param fname The file name + */ +AP_DECLARE(char *) ap_server_root_relative(apr_pool_t *p, const char *fname); + +/* Finally, the hook for dynamically loading modules in... */ + +/** + * Add a module to the server + * @param m The module structure of the module to add + * @param p The pool of the same lifetime as the module + */ +AP_DECLARE(void) ap_add_module(module *m, apr_pool_t *p); + +/** + * Remove a module from the server. There are some caveats: + * when the module is removed, its slot is lost so all the current + * per-dir and per-server configurations are invalid. So we should + * only ever call this function when you are invalidating almost + * all our current data. I.e. when doing a restart. + * @param m the module structure of the module to remove + */ +AP_DECLARE(void) ap_remove_module(module *m); +/** + * Add a module to the chained modules list and the list of loaded modules + * @param m The module structure of the module to add + * @param p The pool with the same lifetime as the module + */ +AP_DECLARE(void) ap_add_loaded_module(module *mod, apr_pool_t *p); +/** + * Remove a module fromthe chained modules list and the list of loaded modules + * @param m the module structure of the module to remove + */ +AP_DECLARE(void) ap_remove_loaded_module(module *mod); +/** + * Add a module to the list of loaded module based on the name of the + * module + * @param name The name of the module + * @param p The pool valid for the lifetime of the module + * @return 1 on success, 0 on failure + */ +AP_DECLARE(int) ap_add_named_module(const char *name, apr_pool_t *p); +/** + * Find the name of the specified module + * @param m The module to get the name for + * @return the name of the module + */ +AP_DECLARE(const char *) ap_find_module_name(module *m); +/** + * Find a module based on the name of the module + * @param name the name of the module + * @return the module structure if found, NULL otherwise + */ +AP_DECLARE(module *) ap_find_linked_module(const char *name); + +/** + * Open a ap_configfile_t as apr_file_t + * @param ret_cfg open ap_configfile_t struct pointer + * @param p The pool to allocate the structure from + * @param name the name of the file to open + */ +AP_DECLARE(apr_status_t) ap_pcfg_openfile(ap_configfile_t **ret_cfg, + apr_pool_t *p, const char *name); + +/** + * Allocate a ap_configfile_t handle with user defined functions and params + * @param p The pool to allocate from + * @param descr The name of the file + * @param param The argument passed to getch/getstr/close + * @param getc_func The getch function + * @param gets_func The getstr function + * @param close_func The close function + */ +AP_DECLARE(ap_configfile_t *) ap_pcfg_open_custom(apr_pool_t *p, + const char *descr, + void *param, + int(*getc_func)(void*), + void *(*gets_func) (void *buf, size_t bufsiz, void *param), + int(*close_func)(void *param)); + +/** + * Read one line from open ap_configfile_t, strip LF, increase line number + * @param buf place to store the line read + * @param bufsize size of the buffer + * @param cfp File to read from + * @return 1 on success, 0 on failure + */ +AP_DECLARE(int) ap_cfg_getline(char *buf, size_t bufsize, ap_configfile_t *cfp); + +/** + * Read one char from open configfile_t, increase line number upon LF + * @param cfp The file to read from + * @return the character read + */ +AP_DECLARE(int) ap_cfg_getc(ap_configfile_t *cfp); + +/** + * Detach from open ap_configfile_t, calling the close handler + * @param cfp The file to close + * @return 1 on sucess, 0 on failure + */ +AP_DECLARE(int) ap_cfg_closefile(ap_configfile_t *cfp); + +/** + * Read all data between the current and the matching . All + * of this data is forgotten immediately. + * @param cmd The cmd_parms to pass to the directives inside the container + * @param directive The directive name to read until + * @return Error string on failure, NULL on success + */ +AP_DECLARE(const char *) ap_soak_end_container(cmd_parms *cmd, char *directive); + +/** + * Read all data between the current and the matching and build + * a config tree from it + * @param p pool to allocate from + * @param temp_pool Temporary pool to allocate from + * @param parms The cmd_parms to pass to all directives read + * @param current The current node in the tree + * @param curr_parent The current parent node + * @param orig_directive The directive to read until hit. + * @return Error string on failure, NULL on success +*/ +AP_DECLARE(const char *) ap_build_cont_config(apr_pool_t *p, + apr_pool_t *temp_pool, + cmd_parms *parms, + ap_directive_t **current, + ap_directive_t **curr_parent, + char *orig_directive); + +/** + * Build a config tree from a config file + * @param parms The cmd_parms to pass to all of the directives in the file + * @param conf_pool The pconf pool + * @param temp_pool The temporary pool + * @param conftree Place to store the root node of the config tree + * @return Error string on erro, NULL otherwise + */ +AP_DECLARE(const char *) ap_build_config(cmd_parms *parms, + apr_pool_t *conf_pool, + apr_pool_t *temp_pool, + ap_directive_t **conftree); + +/** + * Walk a config tree and setup the server's internal structures + * @param conftree The config tree to walk + * @param parms The cmd_parms to pass to all functions + * @param section_vector The per-section config vector. + * @return Error string on error, NULL otherwise + */ +AP_DECLARE(const char *) ap_walk_config(ap_directive_t *conftree, + cmd_parms *parms, + ap_conf_vector_t *section_vector); + +/** + * @defgroup ap_check_cmd_context ap_check_cmd_context + * @{ + */ +/** + * Check the context a command is used in. + * @param cmd The command to check + * @param forbidden Where the command is forbidden. + * @return Error string on error, NULL on success + */ +AP_DECLARE(const char *) ap_check_cmd_context(cmd_parms *cmd, + unsigned forbidden); + +#define NOT_IN_VIRTUALHOST 0x01 /**< Forbidden in */ +#define NOT_IN_LIMIT 0x02 /**< Forbidden in */ +#define NOT_IN_DIRECTORY 0x04 /**< Forbidden in */ +#define NOT_IN_LOCATION 0x08 /**< Forbidden in */ +#define NOT_IN_FILES 0x10 /**< Forbidden in */ +/** Forbidden in //*/ +#define NOT_IN_DIR_LOC_FILE (NOT_IN_DIRECTORY|NOT_IN_LOCATION|NOT_IN_FILES) +/** Forbidden in //// */ +#define GLOBAL_ONLY (NOT_IN_VIRTUALHOST|NOT_IN_LIMIT|NOT_IN_DIR_LOC_FILE) + +/** @} */ + +#ifdef CORE_PRIVATE + +/** + * The topmost module in the list + * @defvar module *ap_top_module + */ +AP_DECLARE_DATA extern module *ap_top_module; + +/** + * Array of all statically linked modules + * @defvar module *ap_prelinked_modules[] + */ +AP_DECLARE_DATA extern module *ap_prelinked_modules[]; +/** + * Array of all preloaded modules + * @defvar module *ap_preloaded_modules[] + */ +AP_DECLARE_DATA extern module *ap_preloaded_modules[]; +/** + * Array of all loaded modules + * @defvar module **ap_loaded_modules + */ +AP_DECLARE_DATA extern module **ap_loaded_modules; + +/* For mod_so.c... */ +/** Run a single module's two create_config hooks + * @param p the pool to allocate from + * @param s The server to configure for. + * @param m The module to configure + */ +AP_DECLARE(void) ap_single_module_configure(apr_pool_t *p, server_rec *s, + module *m); + +/* For http_main.c... */ +/** + * Add all of the prelinked modules into the loaded module list + * @param process The process that is currently running the server + */ +AP_DECLARE(void) ap_setup_prelinked_modules(process_rec *process); + +/** + * Show the preloaded configuration directives, the help string explaining + * the directive arguments, in what module they are handled, and in + * what parts of the configuration they are allowed. Used for httpd -h. + */ +AP_DECLARE(void) ap_show_directives(void); + +/** + * Show the preloaded module names. Used for httpd -l. + */ +AP_DECLARE(void) ap_show_modules(void); + +/** + * Show the MPM name. Used in reporting modules such as mod_info to + * provide extra information to the user + */ +AP_DECLARE(const char *) ap_show_mpm(void); + +/** + * Read all config files and setup the server + * @param process The process running the server + * @param temp_pool A pool to allocate temporary data from. + * @param config_name The name of the config file + * @param conftree Place to store the root of the config tree + * @return The setup server_rec list. + */ +AP_DECLARE(server_rec *) ap_read_config(process_rec *process, + apr_pool_t *temp_pool, + const char *config_name, + ap_directive_t **conftree); + +/** + * Run all rewrite args hooks for loaded modules + * @param process The process currently running the server + */ +AP_DECLARE(void) ap_run_rewrite_args(process_rec *process); + +/** + * Run the register hooks function for a specified module + * @param m The module to run the register hooks function fo + * @param p The pool valid for the lifetime of the module + */ +AP_DECLARE(void) ap_register_hooks(module *m, apr_pool_t *p); + +/** + * Setup all virtual hosts + * @param p The pool to allocate from + * @param main_server The head of the server_rec list + */ +AP_DECLARE(void) ap_fixup_virtual_hosts(apr_pool_t *p, + server_rec *main_server); + +/* For http_request.c... */ + +/** + * Setup the config vector for a request_rec + * @param p The pool to allocate the config vector from + * @return The config vector + */ +AP_CORE_DECLARE(ap_conf_vector_t*) ap_create_request_config(apr_pool_t *p); + +/** + * Setup the config vector for per dir module configs + * @param p The pool to allocate the config vector from + * @return The config vector + */ +AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_per_dir_config(apr_pool_t *p); + +/** + * Run all of the modules merge per dir config functions + * @param p The pool to pass to the merge functions + * @param base The base directory config structure + * @param new_conf The new directory config structure + */ +AP_CORE_DECLARE(ap_conf_vector_t*) ap_merge_per_dir_configs(apr_pool_t *p, + ap_conf_vector_t *base, + ap_conf_vector_t *new_conf); + +/* For http_connection.c... */ +/** + * Setup the config vector for a connection_rec + * @param p The pool to allocate the config vector from + * @return The config vector + */ +AP_CORE_DECLARE(ap_conf_vector_t*) ap_create_conn_config(apr_pool_t *p); + +/* For http_core.c... ( command and virtual hosts) */ + +/** + * parse an htaccess file + * @param resulting htaccess_result + * @param r The request currently being served + * @param override Which overrides are active + * @param path The path to the htaccess file + * @param access_name The list of possible names for .htaccess files + * int The status of the current request + */ +AP_CORE_DECLARE(int) ap_parse_htaccess(ap_conf_vector_t **result, + request_rec *r, int override, + const char *path, + const char *access_name); + +/** + * Setup a virtual host + * @param p The pool to allocate all memory from + * @param hostname The hostname of the virtual hsot + * @param main_server The main server for this Apache configuration + * @param ps Place to store the new server_rec + * return Error string on error, NULL on success + */ +AP_CORE_DECLARE(const char *) ap_init_virtual_host(apr_pool_t *p, + const char *hostname, + server_rec *main_server, + server_rec **); + +/** + * Process the config file for Apache + * @param s The server rec to use for the command parms + * @param fname The name of the config file + * @param conftree The root node of the created config tree + * @param p Pool for general allocation + * @param ptem Pool for temporary allocation + */ +AP_DECLARE(void) ap_process_resource_config(server_rec *s, const char *fname, + ap_directive_t **conftree, + apr_pool_t *p, apr_pool_t *ptemp); + +/** + * Process all directives in the config tree + * @param s The server rec to use in the command parms + * @param conftree The config tree to process + * @param p The pool for general allocation + * @param ptemp The pool for temporary allocations + */ +AP_DECLARE(void) ap_process_config_tree(server_rec *s, ap_directive_t *conftree, + apr_pool_t *p, apr_pool_t *ptemp); + +/* Module-method dispatchers, also for http_request.c */ +/** + * Run the handler phase of each module until a module accepts the + * responsibility of serving the request + * @param r The current request + * @return The status of the current request + */ +AP_CORE_DECLARE(int) ap_invoke_handler(request_rec *r); + +/* for mod_perl */ + +/** + * Find a given directive in a command_rec table + * @param name The directive to search for + * @param cmds The table to search + * @return The directive definition of the specified directive + */ +AP_CORE_DECLARE(const command_rec *) ap_find_command(const char *name, + const command_rec *cmds); + +/** + * Find a given directive in a list module + * @param cmd_name The directive to search for + * @param mod The module list to search + * @return The directive definition of the specified directive + */ +AP_CORE_DECLARE(const command_rec *) ap_find_command_in_modules(const char *cmd_name, + module **mod); + +/** + * Ask a module to create per-server and per-section (dir/loc/file) configs + * (if it hasn't happened already). The results are stored in the server's + * config, and the specified per-section config vector. + * @param server The server to operate upon. + * @param section_vector The per-section config vector. + * @param section Which section to create a config for. + * @param mod The module which is defining the config data. + * @param pconf A pool for all configuration allocations. + * @return The (new) per-section config data. + */ +AP_CORE_DECLARE(void *) ap_set_config_vectors(server_rec *server, + ap_conf_vector_t *section_vector, + const char *section, + module *mod, apr_pool_t *pconf); + +#endif + + /* Hooks */ + +/** + * Run the header parser functions for each module + * @param r The current request + * @return OK or DECLINED + */ +AP_DECLARE_HOOK(int,header_parser,(request_rec *r)) + +/** + * Run the pre_config function for each module + * @param pconf The config pool + * @param plog The logging streams pool + * @param ptemp The temporary pool + * @return OK or DECLINED on success anything else is a error + */ +AP_DECLARE_HOOK(int,pre_config,(apr_pool_t *pconf,apr_pool_t *plog, + apr_pool_t *ptemp)) + + +/** + * Run the post_config function for each module + * @param pconf The config pool + * @param plog The logging streams pool + * @param ptemp The temporary pool + * @param s The list of server_recs + * @return OK or DECLINED on success anything else is a error + */ +AP_DECLARE_HOOK(int,post_config,(apr_pool_t *pconf,apr_pool_t *plog, + apr_pool_t *ptemp,server_rec *s)) + +/** + * Run the open_logs functions for each module + * @param pconf The config pool + * @param plog The logging streams pool + * @param ptemp The temporary pool + * @param s The list of server_recs + * @return OK or DECLINED on success anything else is a error + */ +AP_DECLARE_HOOK(int,open_logs,(apr_pool_t *pconf,apr_pool_t *plog, + apr_pool_t *ptemp,server_rec *s)) + +/** + * Run the child_init functions for each module + * @param pchild The child pool + * @param s The list of server_recs in this server + */ +AP_DECLARE_HOOK(void,child_init,(apr_pool_t *pchild, server_rec *s)) + +/** + * Run the handler functions for each module + * @param r The request_rec + * @remark non-wildcard handlers should HOOK_MIDDLE, wildcard HOOK_LAST + */ +AP_DECLARE_HOOK(int,handler,(request_rec *r)) + +/** + * Run the quick handler functions for each module. The quick_handler + * is run before any other requests hooks are called (location_walk, + * directory_walk, access checking, et. al.). This hook was added + * to provide a quick way to serve content from a URI keyed cache. + * + * @param r The request_rec + * @param lookup_uri Controls whether the caller actually wants content or not. + * lookup is set when the quick_handler is called out of + * ap_sub_req_lookup_uri() + */ +AP_DECLARE_HOOK(int,quick_handler,(request_rec *r, int lookup_uri)) + +/** + * Retrieve the optional functions for each module. + * This is run immediately before the server starts. Optional functions should + * be registered during the hook registration phase. + */ +AP_DECLARE_HOOK(void,optional_fn_retrieve,(void)) + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_CONFIG_H */ diff --git a/rubbos/app/apache2/include/http_connection.h b/rubbos/app/apache2/include/http_connection.h new file mode 100644 index 00000000..2b7d379f --- /dev/null +++ b/rubbos/app/apache2/include/http_connection.h @@ -0,0 +1,139 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_CONNECTION_H +#define APACHE_HTTP_CONNECTION_H + +#include "apr_hooks.h" +#include "apr_network_io.h" +#include "apr_buckets.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Apache connection library + */ +#ifdef CORE_PRIVATE +/** + * This is the protocol module driver. This calls all of the + * pre-connection and connection hooks for all protocol modules. + * @param c The connection on which the request is read + * @param csd The mechanism on which this connection is to be read. + * Most times this will be a socket, but it is up to the module + * that accepts the request to determine the exact type. + * @deffunc void ap_process_connection(conn_rec *c, void *csd) + */ +AP_CORE_DECLARE(void) ap_process_connection(conn_rec *c, void *csd); + +AP_CORE_DECLARE(void) ap_flush_conn(conn_rec *c); + +/** + * This function is responsible for the following cases: + *
    + * we now proceed to read from the client until we get EOF, or until
    + * MAX_SECS_TO_LINGER has passed.  the reasons for doing this are
    + * documented in a draft:
    + *
    + * http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt
    + *
    + * in a nutshell -- if we don't make this effort we risk causing
    + * TCP RST packets to be sent which can tear down a connection before
    + * all the response data has been sent to the client.
    + * 
    + * @param c The connection we are closing + */ +AP_DECLARE(void) ap_lingering_close(conn_rec *c); +#endif + + /* Hooks */ +/** + * create_connection is a RUN_FIRST hook which allows modules to create + * connections. In general, you should not install filters with the + * create_connection hook. If you require vhost configuration information + * to make filter installation decisions, you must use the pre_connection + * or install_network_transport hook. This hook should close the connection + * if it encounters a fatal error condition. + * + * @param p The pool from which to allocate the connection record + * @param csd The socket that has been accepted + * @param conn_id A unique identifier for this connection. The ID only + * needs to be unique at that time, not forever. + * @param sbh A handle to scoreboard information for this connection. + * @return An allocated connection record or NULL. + */ +AP_DECLARE_HOOK(conn_rec *, create_connection, + (apr_pool_t *p, server_rec *server, apr_socket_t *csd, + long conn_id, void *sbh, apr_bucket_alloc_t *alloc)) + +/** + * This hook gives protocol modules an opportunity to set everything up + * before calling the protocol handler. All pre-connection hooks are + * run until one returns something other than ok or decline + * @param c The connection on which the request has been received. + * @param csd The mechanism on which this connection is to be read. + * Most times this will be a socket, but it is up to the module + * that accepts the request to determine the exact type. + * @return OK or DECLINED + * @deffunc int ap_run_pre_connection(conn_rec *c, void *csd) + */ +AP_DECLARE_HOOK(int,pre_connection,(conn_rec *c, void *csd)) + +/** + * This hook implements different protocols. After a connection has been + * established, the protocol module must read and serve the request. This + * function does that for each protocol module. The first protocol module + * to handle the request is the last module run. + * @param c The connection on which the request has been received. + * @return OK or DECLINED + * @deffunc int ap_run_process_connection(conn_rec *c) + */ +AP_DECLARE_HOOK(int,process_connection,(conn_rec *c)) + +/* End Of Connection (EOC) bucket */ + +AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_eoc; + +/** + * Determine if a bucket is an End Of Connection (EOC) bucket + * @param e The bucket to inspect + * @return true or false + */ +#define AP_BUCKET_IS_EOC(e) (e->type == &ap_bucket_type_eoc) + +/** + * Make the bucket passed in an End Of Connection (EOC) bucket + * @param b The bucket to make into an EOC bucket + * @return The new bucket, or NULL if allocation failed + * @deffunc apr_bucket *ap_bucket_eoc_make(apr_bucket *b) + */ +AP_DECLARE(apr_bucket *) ap_bucket_eoc_make(apr_bucket *b); + +/** + * Create a bucket referring to an End Of Connection (EOC). This indicates + * that the connection will be closed. + * @param list The freelist from which this bucket should be allocated + * @return The new bucket, or NULL if allocation failed + * @deffunc apr_bucket *ap_bucket_eoc_create(apr_bucket_alloc_t *list) + */ +AP_DECLARE(apr_bucket *) ap_bucket_eoc_create(apr_bucket_alloc_t *list); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_REQUEST_H */ diff --git a/rubbos/app/apache2/include/http_core.h b/rubbos/app/apache2/include/http_core.h new file mode 100644 index 00000000..99b17a90 --- /dev/null +++ b/rubbos/app/apache2/include/http_core.h @@ -0,0 +1,640 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_CORE_H +#define APACHE_HTTP_CORE_H + +#include "apr.h" +#include "apr_hash.h" +#include "apr_optional.h" +#include "util_filter.h" + +#if APR_HAVE_STRUCT_RLIMIT +#include +#include +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package CORE HTTP Daemon + */ + +/* **************************************************************** + * + * The most basic server code is encapsulated in a single module + * known as the core, which is just *barely* functional enough to + * serve documents, though not terribly well. + * + * Largely for NCSA back-compatibility reasons, the core needs to + * make pieces of its config structures available to other modules. + * The accessors are declared here, along with the interpretation + * of one of them (allow_options). + */ + +#define OPT_NONE 0 +#define OPT_INDEXES 1 +#define OPT_INCLUDES 2 +#define OPT_SYM_LINKS 4 +#define OPT_EXECCGI 8 +#define OPT_UNSET 16 +#define OPT_INCNOEXEC 32 +#define OPT_SYM_OWNER 64 +#define OPT_MULTI 128 +#define OPT_ALL (OPT_INDEXES|OPT_INCLUDES|OPT_SYM_LINKS|OPT_EXECCGI) + +/* options for get_remote_host() */ +/* REMOTE_HOST returns the hostname, or NULL if the hostname + * lookup fails. It will force a DNS lookup according to the + * HostnameLookups setting. + */ +#define REMOTE_HOST (0) + +/* REMOTE_NAME returns the hostname, or the dotted quad if the + * hostname lookup fails. It will force a DNS lookup according + * to the HostnameLookups setting. + */ +#define REMOTE_NAME (1) + +/* REMOTE_NOLOOKUP is like REMOTE_NAME except that a DNS lookup is + * never forced. + */ +#define REMOTE_NOLOOKUP (2) + +/* REMOTE_DOUBLE_REV will always force a DNS lookup, and also force + * a double reverse lookup, regardless of the HostnameLookups + * setting. The result is the (double reverse checked) hostname, + * or NULL if any of the lookups fail. + */ +#define REMOTE_DOUBLE_REV (3) + +#define SATISFY_ALL 0 +#define SATISFY_ANY 1 +#define SATISFY_NOSPEC 2 + +/* Make sure we don't write less than 8000 bytes at any one time. + */ +#define AP_MIN_BYTES_TO_WRITE 8000 + +/* default maximum of internal redirects */ +# define AP_DEFAULT_MAX_INTERNAL_REDIRECTS 10 + +/* default maximum subrequest nesting level */ +# define AP_DEFAULT_MAX_SUBREQ_DEPTH 10 + +/** + * Retrieve the value of Options for this request + * @param r The current request + * @return the Options bitmask + * @deffunc int ap_allow_options(request_rec *r) + */ +AP_DECLARE(int) ap_allow_options(request_rec *r); + +/** + * Retrieve the value of the AllowOverride for this request + * @param r The current request + * @return the overrides bitmask + * @deffunc int ap_allow_overrides(request_rec *r) + */ +AP_DECLARE(int) ap_allow_overrides(request_rec *r); + +/** + * Retrieve the value of the DefaultType directive, or text/plain if not set + * @param r The current request + * @return The default type + * @deffunc const char *ap_default_type(request_rec *r) + */ +AP_DECLARE(const char *) ap_default_type(request_rec *r); + +/** + * Retrieve the document root for this server + * @param r The current request + * @warning Don't use this! If your request went through a Userdir, or + * something like that, it'll screw you. But it's back-compatible... + * @return The document root + * @deffunc const char *ap_document_root(request_rec *r) + */ +AP_DECLARE(const char *) ap_document_root(request_rec *r); + +/** + * Lookup the remote client's DNS name or IP address + * @param conn The current connection + * @param dir_config The directory config vector from the request + * @param type The type of lookup to perform. One of: + *
    + *     REMOTE_HOST returns the hostname, or NULL if the hostname
    + *                 lookup fails.  It will force a DNS lookup according to the
    + *                 HostnameLookups setting.
    + *     REMOTE_NAME returns the hostname, or the dotted quad if the
    + *                 hostname lookup fails.  It will force a DNS lookup according
    + *                 to the HostnameLookups setting.
    + *     REMOTE_NOLOOKUP is like REMOTE_NAME except that a DNS lookup is
    + *                     never forced.
    + *     REMOTE_DOUBLE_REV will always force a DNS lookup, and also force
    + *                   a double reverse lookup, regardless of the HostnameLookups
    + *                   setting.  The result is the (double reverse checked) 
    + *                   hostname, or NULL if any of the lookups fail.
    + * 
    + * @param str_is_ip unless NULL is passed, this will be set to non-zero on output when an IP address + * string is returned + * @return The remote hostname + * @deffunc const char *ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip) + */ +AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip); + +/** + * Retrieve the login name of the remote user. Undef if it could not be + * determined + * @param r The current request + * @return The user logged in to the client machine + * @deffunc const char *ap_get_remote_logname(request_rec *r) + */ +AP_DECLARE(const char *) ap_get_remote_logname(request_rec *r); + +/* Used for constructing self-referencing URLs, and things like SERVER_PORT, + * and SERVER_NAME. + */ +/** + * build a fully qualified URL from the uri and information in the request rec + * @param p The pool to allocate the URL from + * @param uri The path to the requested file + * @param r The current request + * @return A fully qualified URL + * @deffunc char *ap_construct_url(apr_pool_t *p, const char *uri, request_rec *r) + */ +AP_DECLARE(char *) ap_construct_url(apr_pool_t *p, const char *uri, request_rec *r); + +/** + * Get the current server name from the request + * @param r The current request + * @return the server name + * @deffunc const char *ap_get_server_name(request_rec *r) + */ +AP_DECLARE(const char *) ap_get_server_name(request_rec *r); + +/** + * Get the current server port + * @param The current request + * @return The server's port + * @deffunc apr_port_t ap_get_server_port(const request_rec *r) + */ +AP_DECLARE(apr_port_t) ap_get_server_port(const request_rec *r); + +/** + * Return the limit on bytes in request msg body + * @param r The current request + * @return the maximum number of bytes in the request msg body + * @deffunc apr_off_t ap_get_limit_req_body(const request_rec *r) + */ +AP_DECLARE(apr_off_t) ap_get_limit_req_body(const request_rec *r); + +/** + * Return the limit on bytes in XML request msg body + * @param r The current request + * @return the maximum number of bytes in XML request msg body + * @deffunc size_t ap_get_limit_xml_body(const request_rec *r) + */ +AP_DECLARE(size_t) ap_get_limit_xml_body(const request_rec *r); + +/** + * Install a custom response handler for a given status + * @param r The current request + * @param status The status for which the custom response should be used + * @param string The custom response. This can be a static string, a file + * or a URL + */ +AP_DECLARE(void) ap_custom_response(request_rec *r, int status, const char *string); + +/** + * Check if the current request is beyond the configured max. number of redirects or subrequests + * @param r The current request + * @return true (is exceeded) or false + * @deffunc int ap_is_recursion_limit_exceeded(const request_rec *r) + */ +AP_DECLARE(int) ap_is_recursion_limit_exceeded(const request_rec *r); + +/** + * Check for a definition from the server command line + * @param name The define to check for + * @return 1 if defined, 0 otherwise + * @deffunc int ap_exists_config_define(const char *name) + */ +AP_DECLARE(int) ap_exists_config_define(const char *name); +/* FIXME! See STATUS about how */ +AP_DECLARE_NONSTD(int) ap_core_translate(request_rec *r); + +/* Authentication stuff. This is one of the places where compatibility + * with the old config files *really* hurts; they don't discriminate at + * all between different authentication schemes, meaning that we need + * to maintain common state for all of them in the core, and make it + * available to the other modules through interfaces. + */ +typedef struct require_line require_line; + +/** A structure to keep track of authorization requirements */ +struct require_line { + /** Where the require line is in the config file. */ + apr_int64_t method_mask; + /** The complete string from the command line */ + char *requirement; +}; + +/** + * Return the type of authorization required for this request + * @param r The current request + * @return The authorization required + * @deffunc const char *ap_auth_type(request_rec *r) + */ +AP_DECLARE(const char *) ap_auth_type(request_rec *r); + +/** + * Return the current Authorization realm + * @param r The current request + * @return The current authorization realm + * @deffunc const char *ap_auth_name(request_rec *r) + */ +AP_DECLARE(const char *) ap_auth_name(request_rec *r); + +/** + * How the requires lines must be met. + * @param r The current request + * @return How the requirements must be met. One of: + *
    + *      SATISFY_ANY    -- any of the requirements must be met.
    + *      SATISFY_ALL    -- all of the requirements must be met.
    + *      SATISFY_NOSPEC -- There are no applicable satisfy lines
    + * 
    + * @deffunc int ap_satisfies(request_rec *r) + */ +AP_DECLARE(int) ap_satisfies(request_rec *r); + +/** + * Retrieve information about all of the requires directives for this request + * @param r The current request + * @return An array of all requires directives for this request + * @deffunc const apr_array_header_t *ap_requires(request_rec *r) + */ +AP_DECLARE(const apr_array_header_t *) ap_requires(request_rec *r); + +#ifdef CORE_PRIVATE + +/* + * Core is also unlike other modules in being implemented in more than + * one file... so, data structures are declared here, even though most of + * the code that cares really is in http_core.c. Also, another accessor. + */ + +AP_DECLARE_DATA extern module core_module; + +/* Per-request configuration */ + +typedef struct { + /* bucket brigade used by getline for look-ahead and + * ap_get_client_block for holding left-over request body */ + struct apr_bucket_brigade *bb; + + /* an array of per-request working data elements, accessed + * by ID using ap_get_request_note() + * (Use ap_register_request_note() during initialization + * to add elements) + */ + void **notes; + + /* There is a script processor installed on the output filter chain, + * so it needs the default_handler to deliver a (script) file into + * the chain so it can process it. Normally, default_handler only + * serves files on a GET request (assuming the file is actual content), + * since other methods are not content-retrieval. This flag overrides + * that behavior, stating that the "content" is actually a script and + * won't actually be delivered as the response for the non-GET method. + */ + int deliver_script; + + /* Custom response strings registered via ap_custom_response(), + * or NULL; check per-dir config if nothing found here + */ + char **response_code_strings; /* from ap_custom_response(), not from + * ErrorDocument + */ + /* Should addition of charset= be suppressed for this request? + */ + int suppress_charset; +} core_request_config; + +/* Standard entries that are guaranteed to be accessible via + * ap_get_request_note() for each request (additional entries + * can be added with ap_register_request_note()) + */ +#define AP_NOTE_DIRECTORY_WALK 0 +#define AP_NOTE_LOCATION_WALK 1 +#define AP_NOTE_FILE_WALK 2 +#define AP_NUM_STD_NOTES 3 + +/** + * Reserve an element in the core_request_config->notes array + * for some application-specific data + * @return An integer key that can be passed to ap_get_request_note() + * during request processing to access this element for the + * current request. + */ +AP_DECLARE(apr_size_t) ap_register_request_note(void); + +/** + * Retrieve a pointer to an element in the core_request_config->notes array + * @param r The request + * @param note_num A key for the element: either a value obtained from + * ap_register_request_note() or one of the predefined AP_NOTE_* + * values. + * @return NULL if the note_num is invalid, otherwise a pointer to the + * requested note element. + * @remark At the start of a request, each note element is NULL. The + * handle provided by ap_get_request_note() is a pointer-to-pointer + * so that the caller can point the element to some app-specific + * data structure. The caller should guarantee that any such + * structure will last as long as the request itself. + */ +AP_DECLARE(void **) ap_get_request_note(request_rec *r, apr_size_t note_num); + +/* Per-directory configuration */ + +typedef unsigned char allow_options_t; +typedef unsigned char overrides_t; + +/* + * Bits of info that go into making an ETag for a file + * document. Why a long? Because char historically + * proved too short for Options, and int can be different + * sizes on different platforms. + */ +typedef unsigned long etag_components_t; + +#define ETAG_UNSET 0 +#define ETAG_NONE (1 << 0) +#define ETAG_MTIME (1 << 1) +#define ETAG_INODE (1 << 2) +#define ETAG_SIZE (1 << 3) +#define ETAG_BACKWARD (ETAG_MTIME | ETAG_INODE | ETAG_SIZE) +#define ETAG_ALL (ETAG_MTIME | ETAG_INODE | ETAG_SIZE) + +typedef enum { + srv_sig_unset, + srv_sig_off, + srv_sig_on, + srv_sig_withmail +} server_signature_e; + +typedef struct { + /* path of the directory/regex/etc. see also d_is_fnmatch/absolute below */ + char *d; + /* the number of slashes in d */ + unsigned d_components; + + /* If (opts & OPT_UNSET) then no absolute assignment to options has + * been made. + * invariant: (opts_add & opts_remove) == 0 + * Which said another way means that the last relative (options + or -) + * assignment made to each bit is recorded in exactly one of opts_add + * or opts_remove. + */ + allow_options_t opts; + allow_options_t opts_add; + allow_options_t opts_remove; + overrides_t override; + + /* MIME typing --- the core doesn't do anything at all with this, + * but it does know what to slap on a request for a document which + * goes untyped by other mechanisms before it slips out the door... + */ + + char *ap_default_type; + + /* Authentication stuff. Groan... */ + + int *satisfy; /* for every method one */ + char *ap_auth_type; + char *ap_auth_name; + apr_array_header_t *ap_requires; + + /* Custom response config. These can contain text or a URL to redirect to. + * if response_code_strings is NULL then there are none in the config, + * if it's not null then it's allocated to sizeof(char*)*RESPONSE_CODES. + * This lets us do quick merges in merge_core_dir_configs(). + */ + + char **response_code_strings; /* from ErrorDocument, not from + * ap_custom_response() */ + + /* Hostname resolution etc */ +#define HOSTNAME_LOOKUP_OFF 0 +#define HOSTNAME_LOOKUP_ON 1 +#define HOSTNAME_LOOKUP_DOUBLE 2 +#define HOSTNAME_LOOKUP_UNSET 3 + unsigned int hostname_lookups : 4; + + signed int do_rfc1413 : 2; /* See if client is advertising a username? */ + + signed int content_md5 : 2; /* calculate Content-MD5? */ + +#define USE_CANONICAL_NAME_OFF (0) +#define USE_CANONICAL_NAME_ON (1) +#define USE_CANONICAL_NAME_DNS (2) +#define USE_CANONICAL_NAME_UNSET (3) + unsigned use_canonical_name : 2; + + /* since is_fnmatch(conf->d) was being called so frequently in + * directory_walk() and its relatives, this field was created and + * is set to the result of that call. + */ + unsigned d_is_fnmatch : 1; + + /* should we force a charset on any outgoing parameterless content-type? + * if so, which charset? + */ +#define ADD_DEFAULT_CHARSET_OFF (0) +#define ADD_DEFAULT_CHARSET_ON (1) +#define ADD_DEFAULT_CHARSET_UNSET (2) + unsigned add_default_charset : 2; + const char *add_default_charset_name; + + /* System Resource Control */ +#ifdef RLIMIT_CPU + struct rlimit *limit_cpu; +#endif +#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) + struct rlimit *limit_mem; +#endif +#ifdef RLIMIT_NPROC + struct rlimit *limit_nproc; +#endif + apr_off_t limit_req_body; /* limit on bytes in request msg body */ + long limit_xml_body; /* limit on bytes in XML request msg body */ + + /* logging options */ + + server_signature_e server_signature; + + int loglevel; + + /* Access control */ + apr_array_header_t *sec_file; + regex_t *r; + + const char *mime_type; /* forced with ForceType */ + const char *handler; /* forced with SetHandler */ + const char *output_filters; /* forced with SetOutputFilters */ + const char *input_filters; /* forced with SetInputFilters */ + int accept_path_info; /* forced with AcceptPathInfo */ + + apr_hash_t *ct_output_filters; /* added with AddOutputFilterByType */ + + /* + * What attributes/data should be included in ETag generation? + */ + etag_components_t etag_bits; + etag_components_t etag_add; + etag_components_t etag_remove; + + /* + * Run-time performance tuning + */ +#define ENABLE_MMAP_OFF (0) +#define ENABLE_MMAP_ON (1) +#define ENABLE_MMAP_UNSET (2) + unsigned int enable_mmap : 2; /* whether files in this dir can be mmap'ed */ + +#define ENABLE_SENDFILE_OFF (0) +#define ENABLE_SENDFILE_ON (1) +#define ENABLE_SENDFILE_UNSET (2) + unsigned int enable_sendfile : 2; /* files in this dir can be mmap'ed */ + unsigned int allow_encoded_slashes : 1; /* URLs may contain %2f w/o being + * pitched indiscriminately */ +} core_dir_config; + +/* Per-server core configuration */ + +typedef struct { + +#ifdef GPROF + char *gprof_dir; +#endif + + /* Name translations --- we want the core to be able to do *something* + * so it's at least a minimally functional web server on its own (and + * can be tested that way). But let's keep it to the bare minimum: + */ + const char *ap_document_root; + + /* Access control */ + + char *access_name; + apr_array_header_t *sec_dir; + apr_array_header_t *sec_url; + + /* recursion backstopper */ + int redirect_limit; /* maximum number of internal redirects */ + int subreq_limit; /* maximum nesting level of subrequests */ + + /* TRACE control */ +#define AP_TRACE_UNSET -1 +#define AP_TRACE_DISABLE 0 +#define AP_TRACE_ENABLE 1 +#define AP_TRACE_EXTENDED 2 + int trace_enable; + +} core_server_config; + +/* for AddOutputFiltersByType in core.c */ +void ap_add_output_filters_by_type(request_rec *r); + +/* for http_config.c */ +void ap_core_reorder_directories(apr_pool_t *, server_rec *); + +/* for mod_perl */ +AP_CORE_DECLARE(void) ap_add_per_dir_conf(server_rec *s, void *dir_config); +AP_CORE_DECLARE(void) ap_add_per_url_conf(server_rec *s, void *url_config); +AP_CORE_DECLARE(void) ap_add_file_conf(core_dir_config *conf, void *url_config); +AP_CORE_DECLARE_NONSTD(const char *) ap_limit_section(cmd_parms *cmd, void *dummy, const char *arg); + +#endif + + +/* ---------------------------------------------------------------------- + * + * Runtime status/management + */ + +typedef enum { + ap_mgmt_type_string, + ap_mgmt_type_long, + ap_mgmt_type_hash +} ap_mgmt_type_e; + +typedef union { + const char *s_value; + long i_value; + apr_hash_t *h_value; +} ap_mgmt_value; + +typedef struct { + const char *description; + const char *name; + ap_mgmt_type_e vtype; + ap_mgmt_value v; +} ap_mgmt_item_t; + +/* Handles for core filters */ +extern AP_DECLARE_DATA ap_filter_rec_t *ap_subreq_core_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_core_output_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_content_length_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_net_time_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_core_input_filter_handle; + +/** + * This hook provdes a way for modules to provide metrics/statistics about + * their operational status. + * + * @param p A pool to use to create entries in the hash table + * @param val The name of the parameter(s) that is wanted. This is + * tree-structured would be in the form ('*' is all the tree, + * 'module.*' all of the module , 'module.foo.*', or + * 'module.foo.bar' ) + * @param ht The hash table to store the results. Keys are item names, and + * the values point to ap_mgmt_item_t structures. + * @ingroup hooks + */ +AP_DECLARE_HOOK(int, get_mgmt_items, + (apr_pool_t *p, const char * val, apr_hash_t *ht)) + +/* ---------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + * + * I/O logging with mod_logio + */ + +APR_DECLARE_OPTIONAL_FN(void, ap_logio_add_bytes_out, + (conn_rec *c, apr_off_t bytes)); + +/* ---------------------------------------------------------------------- */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_CORE_H */ diff --git a/rubbos/app/apache2/include/http_log.h b/rubbos/app/apache2/include/http_log.h new file mode 100644 index 00000000..52880585 --- /dev/null +++ b/rubbos/app/apache2/include/http_log.h @@ -0,0 +1,334 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_LOG_H +#define APACHE_HTTP_LOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "apr_thread_proc.h" + +/** + * @package Apache logging library + */ + +#ifdef HAVE_SYSLOG +#include + +#ifndef LOG_PRIMASK +#define LOG_PRIMASK 7 +#endif + +#define APLOG_EMERG LOG_EMERG /* system is unusable */ +#define APLOG_ALERT LOG_ALERT /* action must be taken immediately */ +#define APLOG_CRIT LOG_CRIT /* critical conditions */ +#define APLOG_ERR LOG_ERR /* error conditions */ +#define APLOG_WARNING LOG_WARNING /* warning conditions */ +#define APLOG_NOTICE LOG_NOTICE /* normal but significant condition */ +#define APLOG_INFO LOG_INFO /* informational */ +#define APLOG_DEBUG LOG_DEBUG /* debug-level messages */ + +#define APLOG_LEVELMASK LOG_PRIMASK /* mask off the level value */ + +#else + +#define APLOG_EMERG 0 /* system is unusable */ +#define APLOG_ALERT 1 /* action must be taken immediately */ +#define APLOG_CRIT 2 /* critical conditions */ +#define APLOG_ERR 3 /* error conditions */ +#define APLOG_WARNING 4 /* warning conditions */ +#define APLOG_NOTICE 5 /* normal but significant condition */ +#define APLOG_INFO 6 /* informational */ +#define APLOG_DEBUG 7 /* debug-level messages */ + +#define APLOG_LEVELMASK 7 /* mask off the level value */ + +#endif + +/* APLOG_NOERRNO is ignored and should not be used. It will be + * removed in a future release of Apache. + */ +#define APLOG_NOERRNO (APLOG_LEVELMASK + 1) + +/* Use APLOG_TOCLIENT on ap_log_rerror() to give content + * handlers the option of including the error text in the + * ErrorDocument sent back to the client. Setting APLOG_TOCLIENT + * will cause the error text to be saved in the request_rec->notes + * table, keyed to the string "error-notes", if and only if: + * - the severity level of the message is APLOG_WARNING or greater + * - there are no other "error-notes" set in request_rec->notes + * Once error-notes is set, it is up to the content handler to + * determine whether this text should be sent back to the client. + * Note: Client generated text streams sent back to the client MUST + * be escaped to prevent CSS attacks. + */ +#define APLOG_TOCLIENT ((APLOG_LEVELMASK + 1) * 2) + +/* normal but significant condition on startup, usually printed to stderr */ +#define APLOG_STARTUP ((APLOG_LEVELMASK + 1) * 4) + +#ifndef DEFAULT_LOGLEVEL +#define DEFAULT_LOGLEVEL APLOG_WARNING +#endif + +extern int AP_DECLARE_DATA ap_default_loglevel; + +#define APLOG_MARK __FILE__,__LINE__ + +/** + * Set up for logging to stderr. + * @param p The pool to allocate out of + */ +AP_DECLARE(void) ap_open_stderr_log(apr_pool_t *p); + +/** + * Replace logging to stderr with logging to the given file. + * @param p The pool to allocate out of + * @param file Name of the file to log stderr output + */ +AP_DECLARE(apr_status_t) ap_replace_stderr_log(apr_pool_t *p, + const char *file); + +/** + * Open the error log and replace stderr with it. + * @param pconf Not used + * @param plog The pool to allocate the logs from + * @param ptemp Pool used for temporary allocations + * @param s_main The main server + * @tip ap_open_logs isn't expected to be used by modules, it is + * an internal core function + */ +int ap_open_logs(apr_pool_t *pconf, apr_pool_t *plog, + apr_pool_t *ptemp, server_rec *s_main); + +#ifdef CORE_PRIVATE + +/** + * Perform special processing for piped loggers in MPM child + * processes. + * @param p Not used + * @param s Not used + * @tip ap_logs_child_init is not for use by modules; it is an + * internal core function + */ +void ap_logs_child_init(apr_pool_t *p, server_rec *s); + +#endif /* CORE_PRIVATE */ + +/* + * The primary logging functions, ap_log_error, ap_log_rerror, ap_log_cerror, + * and ap_log_perror use a printf style format string to build the log message. + * It is VERY IMPORTANT that you not include any raw data from the network, + * such as the request-URI or request header fields, within the format + * string. Doing so makes the server vulnerable to a denial-of-service + * attack and other messy behavior. Instead, use a simple format string + * like "%s", followed by the string containing the untrusted data. + */ + +/** + * ap_log_error() - log messages which are not related to a particular + * request or connection. This uses a printf-like format to log messages + * to the error_log. + * @param file The file in which this function is called + * @param line The line number on which this function is called + * @param level The level of this error message + * @param status The status code from the previous command + * @param s The server on which we are logging + * @param fmt The format string + * @param ... The arguments to use to fill out fmt. + * @tip Use APLOG_MARK to fill out file and line + * @tip If a request_rec is available, use that with ap_log_rerror() + * in preference to calling this function. Otherwise, if a conn_rec is + * available, use that with ap_log_cerror() in preference to calling + * this function. + * @warning It is VERY IMPORTANT that you not include any raw data from + * the network, such as the request-URI or request header fields, within + * the format string. Doing so makes the server vulnerable to a + * denial-of-service attack and other messy behavior. Instead, use a + * simple format string like "%s", followed by the string containing the + * untrusted data. + * @deffunc void ap_log_error(const char *file, int line, int level, apr_status_t status, const server_rec *s, const char *fmt, ...) + */ +AP_DECLARE(void) ap_log_error(const char *file, int line, int level, + apr_status_t status, const server_rec *s, + const char *fmt, ...) + __attribute__((format(printf,6,7))); + +/** + * ap_log_perror() - log messages which are not related to a particular + * request, connection, or virtual server. This uses a printf-like + * format to log messages to the error_log. + * @param file The file in which this function is called + * @param line The line number on which this function is called + * @param level The level of this error message + * @param status The status code from the previous command + * @param p The pool which we are logging for + * @param fmt The format string + * @param ... The arguments to use to fill out fmt. + * @tip Use APLOG_MARK to fill out file and line + * @warning It is VERY IMPORTANT that you not include any raw data from + * the network, such as the request-URI or request header fields, within + * the format string. Doing so makes the server vulnerable to a + * denial-of-service attack and other messy behavior. Instead, use a + * simple format string like "%s", followed by the string containing the + * untrusted data. + * @deffunc void ap_log_perror(const char *file, int line, int level, apr_status_t status, apr_pool_t *p, const char *fmt, ...) + */ +AP_DECLARE(void) ap_log_perror(const char *file, int line, int level, + apr_status_t status, apr_pool_t *p, + const char *fmt, ...) + __attribute__((format(printf,6,7))); + +/** + * ap_log_rerror() - log messages which are related to a particular + * request. This uses a a printf-like format to log messages to the + * error_log. + * @param file The file in which this function is called + * @param line The line number on which this function is called + * @param level The level of this error message + * @param status The status code from the previous command + * @param r The request which we are logging for + * @param fmt The format string + * @param ... The arguments to use to fill out fmt. + * @tip Use APLOG_MARK to fill out file and line + * @warning It is VERY IMPORTANT that you not include any raw data from + * the network, such as the request-URI or request header fields, within + * the format string. Doing so makes the server vulnerable to a + * denial-of-service attack and other messy behavior. Instead, use a + * simple format string like "%s", followed by the string containing the + * untrusted data. + * @deffunc void ap_log_rerror(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...) + */ +AP_DECLARE(void) ap_log_rerror(const char *file, int line, int level, + apr_status_t status, const request_rec *r, + const char *fmt, ...) + __attribute__((format(printf,6,7))); + +/** + * ap_log_cerror() - log messages which are related to a particular + * connection. This uses a a printf-like format to log messages to the + * error_log. + * @param file The file in which this function is called + * @param line The line number on which this function is called + * @param level The level of this error message + * @param status The status code from the previous command + * @param c The connection which we are logging for + * @param fmt The format string + * @param ... The arguments to use to fill out fmt. + * @tip Use APLOG_MARK to fill out file and line + * @tip If a request_rec is available, use that with ap_log_rerror() + * in preference to calling this function. + * @warning It is VERY IMPORTANT that you not include any raw data from + * the network, such as the request-URI or request header fields, within + * the format string. Doing so makes the server vulnerable to a + * denial-of-service attack and other messy behavior. Instead, use a + * simple format string like "%s", followed by the string containing the + * untrusted data. + * @note ap_log_cerror() is available starting with Apache 2.0.55. + * @deffunc void ap_log_cerror(const char *file, int line, int level, apr_status_t status, const conn_rec *c, const char *fmt, ...) + */ +AP_DECLARE(void) ap_log_cerror(const char *file, int line, int level, + apr_status_t status, const conn_rec *c, + const char *fmt, ...) + __attribute__((format(printf,6,7))); + +/** + * Convert stderr to the error log + * @param s The current server + * @deffunc void ap_error_log2stderr(server_rec *s) + */ +AP_DECLARE(void) ap_error_log2stderr(server_rec *s); + +/** + * Log the current pid of the parent process + * @param p The pool to use for logging + * @param fname The name of the file to log to + */ +AP_DECLARE(void) ap_log_pid(apr_pool_t *p, const char *fname); + +/** + * Retrieve the pid from a pidfile. + * @param p The pool to use for logging + * @param filename The name of the file containing the pid + * @param mypid Pointer to pid_t (valid only if return APR_SUCCESS) + */ +AP_DECLARE(apr_status_t) ap_read_pid(apr_pool_t *p, const char *filename, pid_t *mypid); + +typedef struct piped_log piped_log; + +/** + * The piped logging structure. Piped logs are used to move functionality + * out of the main server. For example, log rotation is done with piped logs. + */ +struct piped_log { + /** The pool to use for the piped log */ + apr_pool_t *p; + /** The pipe between the server and the logging process */ + apr_file_t *fds[2]; + /* XXX - an #ifdef that needs to be eliminated from public view. Shouldn't + * be hard */ +#ifdef AP_HAVE_RELIABLE_PIPED_LOGS + /** The name of the program the logging process is running */ + char *program; + /** The pid of the logging process */ + apr_proc_t *pid; +#endif +}; + +/** + * Open the piped log process + * @param p The pool to allocate out of + * @param program The program to run in the logging process + * @return The piped log structure + * @deffunc piped_log *ap_open_piped_log(apr_pool_t *p, const char *program) + */ +AP_DECLARE(piped_log *) ap_open_piped_log(apr_pool_t *p, const char *program); + +/** + * Close the piped log and kill the logging process + * @param pl The piped log structure + * @deffunc void ap_close_piped_log(piped_log *pl) + */ +AP_DECLARE(void) ap_close_piped_log(piped_log *pl); + +/** + * A macro to access the read side of the piped log pipe + * @param pl The piped log structure + * @return The native file descriptor + * @deffunc ap_piped_log_read_fd(pl) + */ +#define ap_piped_log_read_fd(pl) ((pl)->fds[0]) + +/** + * A macro to access the write side of the piped log pipe + * @param pl The piped log structure + * @return The native file descriptor + * @deffunc ap_piped_log_read_fd(pl) + */ +#define ap_piped_log_write_fd(pl) ((pl)->fds[1]) + +AP_DECLARE_HOOK(void, error_log, (const char *file, int line, int level, + apr_status_t status, const server_rec *s, + const request_rec *r, apr_pool_t *pool, + const char *errstr)) + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_LOG_H */ diff --git a/rubbos/app/apache2/include/http_main.h b/rubbos/app/apache2/include/http_main.h new file mode 100644 index 00000000..cc4ce59d --- /dev/null +++ b/rubbos/app/apache2/include/http_main.h @@ -0,0 +1,58 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_MAIN_H +#define APACHE_HTTP_MAIN_H + +#include "apr_optional.h" + +/* AP_SERVER_BASEARGS is the command argument list parsed by http_main.c + * in apr_getopt() format. Use this for default'ing args that the MPM + * can safely ignore and pass on from its rewrite_args() handler. + */ +#define AP_SERVER_BASEARGS "C:c:D:d:E:e:f:vVlLtSh?X" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Command line options + */ + +/** The name of the Apache executable */ +AP_DECLARE_DATA extern const char *ap_server_argv0; +/** The global server's ServerRoot */ +AP_DECLARE_DATA extern const char *ap_server_root; + +/* for -C, -c and -D switches */ +/** An array of all -C directives. These are processed before the server's + * config file */ +AP_DECLARE_DATA extern apr_array_header_t *ap_server_pre_read_config; +/** An array of all -c directives. These are processed after the server's + * config file */ +AP_DECLARE_DATA extern apr_array_header_t *ap_server_post_read_config; +/** An array of all -D defines on the command line. This allows people to + * effect the server based on command line options */ +AP_DECLARE_DATA extern apr_array_header_t *ap_server_config_defines; + +APR_DECLARE_OPTIONAL_FN(int, ap_signal_server, (int *, apr_pool_t *)); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_MAIN_H */ diff --git a/rubbos/app/apache2/include/http_protocol.h b/rubbos/app/apache2/include/http_protocol.h new file mode 100644 index 00000000..6287589f --- /dev/null +++ b/rubbos/app/apache2/include/http_protocol.h @@ -0,0 +1,697 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_PROTOCOL_H +#define APACHE_HTTP_PROTOCOL_H + +#include "httpd.h" +#include "apr_hooks.h" +#include "apr_portable.h" +#include "apr_mmap.h" +#include "apr_buckets.h" +#include "util_filter.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package HTTP protocol handling + */ + +/** + * This hook allows modules to insert filters for the current error response + * @param r the current request + * @ingroup hooks + */ +AP_DECLARE_HOOK(void,insert_error_filter,(request_rec *r)) + +/* This is an optimization. We keep a record of the filter_rec that + * stores the old_write filter, so that we can avoid strcmp's later. + */ +AP_DECLARE_DATA extern ap_filter_rec_t *ap_old_write_func; + +/* + * Prototypes for routines which either talk directly back to the user, + * or control the ones that eventually do. + */ + +/** + * Read a request and fill in the fields. + * @param c The current connection + * @return The new request_rec + */ +request_rec *ap_read_request(conn_rec *c); + +/** + * Read the mime-encoded headers. + * @param r The current request + */ +AP_DECLARE(void) ap_get_mime_headers(request_rec *r); + +/** + * Optimized version of ap_get_mime_headers() that requires a + * temporary brigade to work with + * @param r The current request + * @param bb temp brigade + */ +AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r, + apr_bucket_brigade *bb); + +/* Finish up stuff after a request */ + +/** + * Called at completion of sending the response. It sends the terminating + * protocol information. + * @param r The current request + * @deffunc void ap_finalize_request_protocol(request_rec *r) + */ +AP_DECLARE(void) ap_finalize_request_protocol(request_rec *r); + +/** + * Send error back to client. + * @param r The current request + * @param recursive_error last arg indicates error status in case we get + * an error in the process of trying to deal with an ErrorDocument + * to handle some other error. In that case, we print the default + * report for the first thing that went wrong, and more briefly report + * on the problem with the ErrorDocument. + * @deffunc void ap_send_error_response(request_rec *r, int recursive_error) + */ +AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error); + +/* Set last modified header line from the lastmod date of the associated file. + * Also, set content length. + * + * May return an error status, typically HTTP_NOT_MODIFIED (that when the + * permit_cache argument is set to one). + */ + +/** + * Set the content length for this request + * @param r The current request + * @param length The new content length + * @deffunc void ap_set_content_length(request_rec *r, apr_off_t length) + */ +AP_DECLARE(void) ap_set_content_length(request_rec *r, apr_off_t length); + +/** + * Set the keepalive status for this request + * @param r The current request + * @return 1 if keepalive can be set, 0 otherwise + * @deffunc int ap_set_keepalive(request_rec *r) + */ +AP_DECLARE(int) ap_set_keepalive(request_rec *r); + +/** + * Return the latest rational time from a request/mtime pair. Mtime is + * returned unless it's in the future, in which case we return the current time. + * @param r The current request + * @param mtime The last modified time + * @return the latest rational time. + * @deffunc apr_time_t ap_rationalize_mtime(request_rec *r, apr_time_t mtime) + */ +AP_DECLARE(apr_time_t) ap_rationalize_mtime(request_rec *r, apr_time_t mtime); + +/** + * Build the content-type that should be sent to the client from the + * content-type specified. The following rules are followed: + * - if type is NULL, type is set to ap_default_type(r) + * - if charset adding is disabled, stop processing and return type. + * - then, if there are no parameters on type, add the default charset + * - return type + * @param r The current request + * @return The content-type + * @deffunc const char *ap_make_content_type(request_rec *r, const char *type); + */ +AP_DECLARE(const char *) ap_make_content_type(request_rec *r, + const char *type); + +#ifdef CORE_PRIVATE +/** + * Precompile metadata structures used by ap_make_content_type() + * @param r The pool to use for allocations + * @deffunc void ap_setup_make_content_type(apr_pool_t *pool) + */ +AP_DECLARE(void) ap_setup_make_content_type(apr_pool_t *pool); +#endif /* CORE_PRIVATE */ + +/** + * Construct an entity tag from the resource information. If it's a real + * file, build in some of the file characteristics. + * @param r The current request + * @param force_weak Force the entity tag to be weak - it could be modified + * again in as short an interval. + * @return The entity tag + * @deffunc char *ap_make_etag(request_rec *r, int force_weak) + */ +AP_DECLARE(char *) ap_make_etag(request_rec *r, int force_weak); + +/** + * Set the E-tag outgoing header + * @param The current request + * @deffunc void ap_set_etag(request_rec *r) + */ +AP_DECLARE(void) ap_set_etag(request_rec *r); + +/** + * Set the last modified time for the file being sent + * @param r The current request + * @deffunc void ap_set_last_modified(request_rec *r) + */ +AP_DECLARE(void) ap_set_last_modified(request_rec *r); + +/** + * Implements condition GET rules for HTTP/1.1 specification. This function + * inspects the client headers and determines if the response fulfills + * the requirements specified. + * @param r The current request + * @return OK if the response fulfills the condition GET rules, some + * other status code otherwise + * @deffunc int ap_meets_conditions(request_rec *r) + */ +AP_DECLARE(int) ap_meets_conditions(request_rec *r); + +/* Other ways to send stuff at the client. All of these keep track + * of bytes_sent automatically. This indirection is intended to make + * it a little more painless to slide things like HTTP-NG packetization + * underneath the main body of the code later. In the meantime, it lets + * us centralize a bit of accounting (bytes_sent). + * + * These also return the number of bytes written by the call. + * They should only be called with a timeout registered, for obvious reaasons. + * (Ditto the send_header stuff). + */ + +/** + * Send an entire file to the client, using sendfile if supported by the + * current platform + * @param fd The file to send. + * @param r The current request + * @param offset Offset into the file to start sending. + * @param length Amount of data to send + * @param nbytes Amount of data actually sent + * @deffunc apr_status_t ap_send_fd(apr_file_t *fd, request_rec *r, apr_off_t offset, apr_size_t length, apr_size_t *nbytes); + */ +AP_DECLARE(apr_status_t) ap_send_fd(apr_file_t *fd, request_rec *r, apr_off_t offset, + apr_size_t length, apr_size_t *nbytes); + +#if APR_HAS_MMAP +/** + * Send an MMAP'ed file to the client + * @param mm The MMAP'ed file to send + * @param r The current request + * @param offset The offset into the MMAP to start sending + * @param length The amount of data to send + * @return The number of bytes sent + * @deffunc size_t ap_send_mmap(apr_mmap_t *mm, request_rec *r, size_t offset, size_t length) + */ +AP_DECLARE(size_t) ap_send_mmap(apr_mmap_t *mm, request_rec *r, size_t offset, + size_t length); +#endif + + +/** + * Register a new request method, and return the offset that will be + * associated with that method. + * + * @param p The pool to create registered method numbers from. + * @param methname The name of the new method to register. + * @return Ab int value representing an offset into a bitmask. + */ +AP_DECLARE(int) ap_method_register(apr_pool_t *p, const char *methname); + +/** + * Initialize the method_registry and allocate memory for it. + * + * @param p Pool to allocate memory for the registry from. + */ +AP_DECLARE(void) ap_method_registry_init(apr_pool_t *p); + +/* + * This is a convenience macro to ease with checking a mask + * against a method name. + */ +#define AP_METHOD_CHECK_ALLOWED(mask, methname) \ + ((mask) & (AP_METHOD_BIT << ap_method_number_of((methname)))) + +/** + * Create a new method list with the specified number of preallocated + * slots for extension methods. + * + * @param p Pointer to a pool in which the structure should be + * allocated. + * @param nelts Number of preallocated extension slots + * @return Pointer to the newly created structure. + * @deffunc ap_method_list_t ap_make_method_list(apr_pool_t *p, int nelts) + */ +AP_DECLARE(ap_method_list_t *) ap_make_method_list(apr_pool_t *p, int nelts); +AP_DECLARE(void) ap_copy_method_list(ap_method_list_t *dest, + ap_method_list_t *src); +AP_DECLARE_NONSTD(void) ap_method_list_do(int (*comp) (void *urec, const char *mname, + int mnum), + void *rec, + const ap_method_list_t *ml, ...); +AP_DECLARE(void) ap_method_list_vdo(int (*comp) (void *urec, const char *mname, + int mnum), + void *rec, const ap_method_list_t *ml, + va_list vp); +/** + * Search for an HTTP method name in an ap_method_list_t structure, and + * return true if found. + * + * @param method String containing the name of the method to check. + * @param l Pointer to a method list, such as cmd->methods_limited. + * @return 1 if method is in the list, otherwise 0 + * @deffunc int ap_method_in_list(const char *method, ap_method_list_t *l) + */ +AP_DECLARE(int) ap_method_in_list(ap_method_list_t *l, const char *method); + +/** + * Add an HTTP method name to an ap_method_list_t structure if it isn't + * already listed. + * + * @param method String containing the name of the method to check. + * @param l Pointer to a method list, such as cmd->methods_limited. + * @return None. + * @deffunc void ap_method_in_list(ap_method_list_t *l, const char *method) + */ +AP_DECLARE(void) ap_method_list_add(ap_method_list_t *l, const char *method); + +/** + * Remove an HTTP method name from an ap_method_list_t structure. + * + * @param l Pointer to a method list, such as cmd->methods_limited. + * @param method String containing the name of the method to remove. + * @return None. + * @deffunc void ap_method_list_remove(ap_method_list_t *l, const char *method) + */ +AP_DECLARE(void) ap_method_list_remove(ap_method_list_t *l, + const char *method); + +/** + * Reset a method list to be completely empty. + * + * @param l Pointer to a method list, such as cmd->methods_limited. + * @return None. + * @deffunc void ap_clear_method_list(ap_method_list_t *l) + */ +AP_DECLARE(void) ap_clear_method_list(ap_method_list_t *l); + +/** + * Set the content type for this request (r->content_type). + * @param r The current request + * @param ct The new content type + * @deffunc void ap_set_content_type(request_rec *r, const char* ct) + * @warning This function must be called to set r->content_type in order + * for the AddOutputFilterByType directive to work correctly. + */ +AP_DECLARE(void) ap_set_content_type(request_rec *r, const char *ct); + +/* Hmmm... could macrofy these for now, and maybe forever, though the + * definitions of the macros would get a whole lot hairier. + */ + +/** + * Output one character for this request + * @param c the character to output + * @param r the current request + * @return The number of bytes sent + * @deffunc int ap_rputc(int c, request_rec *r) + */ +AP_DECLARE(int) ap_rputc(int c, request_rec *r); + +/** + * Output a string for the current request + * @param str The string to output + * @param r The current request + * @return The number of bytes sent + * @deffunc int ap_rputs(const char *str, request_rec *r) + */ +AP_DECLARE(int) ap_rputs(const char *str, request_rec *r); + +/** + * Write a buffer for the current request + * @param buf The buffer to write + * @param nbyte The number of bytes to send from the buffer + * @param r The current request + * @return The number of bytes sent + * @deffunc int ap_rwrite(const void *buf, int nbyte, request_rec *r) + */ +AP_DECLARE(int) ap_rwrite(const void *buf, int nbyte, request_rec *r); + +/** + * Write an unspecified number of strings to the request + * @param r The current request + * @param ... The strings to write + * @return The number of bytes sent + * @deffunc int ap_rvputs(request_rec *r, ...) + */ +AP_DECLARE_NONSTD(int) ap_rvputs(request_rec *r,...); + +/** + * Output data to the client in a printf format + * @param r The current request + * @param fmt The format string + * @param vlist The arguments to use to fill out the format string + * @return The number of bytes sent + * @deffunc int ap_vrprintf(request_rec *r, const char *fmt, va_list vlist) + */ +AP_DECLARE(int) ap_vrprintf(request_rec *r, const char *fmt, va_list vlist); + +/** + * Output data to the client in a printf format + * @param r The current request + * @param fmt The format string + * @param ... The arguments to use to fill out the format string + * @return The number of bytes sent + * @deffunc int ap_rprintf(request_rec *r, const char *fmt, ...) + */ +AP_DECLARE_NONSTD(int) ap_rprintf(request_rec *r, const char *fmt,...) + __attribute__((format(printf,2,3))); +/** + * Flush all of the data for the current request to the client + * @param r The current request + * @return The number of bytes sent + * @deffunc int ap_rflush(request_rec *r) + */ +AP_DECLARE(int) ap_rflush(request_rec *r); + +/** + * Index used in custom_responses array for a specific error code + * (only use outside protocol.c is in getting them configured). + * @param status HTTP status code + * @return The index of the response + * @deffunc int ap_index_of_response(int status) + */ +AP_DECLARE(int) ap_index_of_response(int status); + +/** + * Return the Status-Line for a given status code (excluding the + * HTTP-Version field). If an invalid or unknown status code is + * passed, "500 Internal Server Error" will be returned. + * @param status The HTTP status code + * @return The Status-Line + * @deffunc const char *ap_get_status_line(int status) + */ +AP_DECLARE(const char *) ap_get_status_line(int status); + +/* Reading a block of data from the client connection (e.g., POST arg) */ + +/** + * Setup the client to allow Apache to read the request body. + * @param r The current request + * @param read_policy How the server should interpret a chunked + * transfer-encoding. One of:
    + *    REQUEST_NO_BODY          Send 413 error if message has any body
    + *    REQUEST_CHUNKED_ERROR    Send 411 error if body without Content-Length
    + *    REQUEST_CHUNKED_DECHUNK  If chunked, remove the chunks for me.
    + * 
    + * @return either OK or an error code + * @deffunc int ap_setup_client_block(request_rec *r, int read_policy) + */ +AP_DECLARE(int) ap_setup_client_block(request_rec *r, int read_policy); + +/** + * Determine if the client has sent any data. This also sends a + * 100 Continue response to HTTP/1.1 clients, so modules should not be called + * until the module is ready to read content. + * @warning Never call this function more than once. + * @param r The current request + * @return 0 if there is no message to read, 1 otherwise + * @deffunc int ap_should_client_block(request_rec *r) + */ +AP_DECLARE(int) ap_should_client_block(request_rec *r); + +/** + * Call this in a loop. It will put data into a buffer and return the length + * of the input block + * @param r The current request + * @param buffer The buffer in which to store the data + * @param bufsiz The size of the buffer + * @return Number of bytes inserted into the buffer. When done reading, 0 + * if EOF, or -1 if there was an error + * @deffunc long ap_get_client_block(request_rec *r, char *buffer, apr_size_t bufsiz) + */ +AP_DECLARE(long) ap_get_client_block(request_rec *r, char *buffer, apr_size_t bufsiz); + +/** + * In HTTP/1.1, any method can have a body. However, most GET handlers + * wouldn't know what to do with a request body if they received one. + * This helper routine tests for and reads any message body in the request, + * simply discarding whatever it receives. We need to do this because + * failing to read the request body would cause it to be interpreted + * as the next request on a persistent connection. + * @param r The current request + * @return error status if request is malformed, OK otherwise + * @deffunc int ap_discard_request_body(request_rec *r) + */ +AP_DECLARE(int) ap_discard_request_body(request_rec *r); + + +/** + * Setup the output headers so that the client knows how to authenticate + * itself the next time, if an authentication request failed. This function + * works for both basic and digest authentication + * @param r The current request + * @deffunc void ap_note_auth_failure(request_rec *r) + */ +AP_DECLARE(void) ap_note_auth_failure(request_rec *r); + +/** + * Setup the output headers so that the client knows how to authenticate + * itself the next time, if an authentication request failed. This function + * works only for basic authentication + * @param r The current request + * @deffunc void ap_note_basic_auth_failure(request_rec *r) + */ +AP_DECLARE(void) ap_note_basic_auth_failure(request_rec *r); + +/** + * Setup the output headers so that the client knows how to authenticate + * itself the next time, if an authentication request failed. This function + * works only for digest authentication + * @param r The current request + * @deffunc void ap_note_digest_auth_failure(request_rec *r) + */ +AP_DECLARE(void) ap_note_digest_auth_failure(request_rec *r); + +/** + * Get the password from the request headers + * @param r The current request + * @param pw The password as set in the headers + * @return 0 (OK) if it set the 'pw' argument (and assured + * a correct value in r->user); otherwise it returns + * an error code, either HTTP_INTERNAL_SERVER_ERROR if things are + * really confused, HTTP_UNAUTHORIZED if no authentication at all + * seemed to be in use, or DECLINED if there was authentication but + * it wasn't Basic (in which case, the caller should presumably + * decline as well). + * @deffunc int ap_get_basic_auth_pw(request_rec *r, const char **pw) + */ +AP_DECLARE(int) ap_get_basic_auth_pw(request_rec *r, const char **pw); + +/** + * parse_uri: break apart the uri + * @warning Side Effects:
    + *    - sets r->args to rest after '?' (or NULL if no '?')
    + *    - sets r->uri to request uri (without r->args part)
    + *    - sets r->hostname (if not set already) from request (scheme://host:port)
    + * 
    + * @param r The current request + * @param uri The uri to break apart + * @deffunc void ap_parse_uri(request_rec *r, const char *uri) + */ +AP_CORE_DECLARE(void) ap_parse_uri(request_rec *r, const char *uri); + +/** + * Get the next line of input for the request + * @param s The buffer into which to read the line + * @param n The size of the buffer + * @param r The request + * @param fold Whether to merge continuation lines + * @return The length of the line, if successful + * n, if the line is too big to fit in the buffer + * -1 for miscellaneous errors + * @deffunc int ap_method_number_of(const char *method) + */ +AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int fold); + +/** + * Get the next line of input for the request + * + * Note: on ASCII boxes, ap_rgetline is a macro which simply calls + * ap_rgetline_core to get the line of input. + * + * on EBCDIC boxes, ap_rgetline is a wrapper function which + * translates ASCII protocol lines to the local EBCDIC code page + * after getting the line of input. + * + * @param s Pointer to the pointer to the buffer into which the line + * should be read; if *s==NULL, a buffer of the necessary size + * to hold the data will be allocated from the request pool + * @param n The size of the buffer + * @param read The length of the line. + * @param r The request + * @param fold Whether to merge continuation lines + * @param bb Working brigade to use when reading buckets + * @return APR_SUCCESS, if successful + * APR_ENOSPC, if the line is too big to fit in the buffer + * Other errors where appropriate + */ +#if APR_CHARSET_EBCDIC +AP_DECLARE(apr_status_t) ap_rgetline(char **s, apr_size_t n, + apr_size_t *read, + request_rec *r, int fold, + apr_bucket_brigade *bb); +#else /* ASCII box */ +#define ap_rgetline(s, n, read, r, fold, bb) \ + ap_rgetline_core((s), (n), (read), (r), (fold), (bb)) +#endif +AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, + apr_size_t *read, + request_rec *r, int fold, + apr_bucket_brigade *bb); + +/** + * Get the method number associated with the given string, assumed to + * contain an HTTP method. Returns M_INVALID if not recognized. + * @param method A string containing a valid HTTP method + * @return The method number + */ +AP_DECLARE(int) ap_method_number_of(const char *method); + +/** + * Get the method name associated with the given internal method + * number. Returns NULL if not recognized. + * @param p A pool to use for temporary allocations. + * @param methnum An integer value corresponding to an internal method number + * @return The name corresponding to the method number + */ +AP_DECLARE(const char *) ap_method_name_of(apr_pool_t *p, int methnum); + + + /* Hooks */ + /* + * post_read_request --- run right after read_request or internal_redirect, + * and not run during any subrequests. + */ +/** + * This hook allows modules to affect the request immediately after the request + * has been read, and before any other phases have been processes. This allows + * modules to make decisions based upon the input header fields + * @param r The current request + * @return OK or DECLINED + * @deffunc ap_run_post_read_request(request_rec *r) + */ +AP_DECLARE_HOOK(int,post_read_request,(request_rec *r)) + +/** + * This hook allows modules to perform any module-specific logging activities + * over and above the normal server things. + * @param r The current request + * @return OK, DECLINED, or HTTP_... + * @deffunc int ap_run_log_transaction(request_rec *r) + */ +AP_DECLARE_HOOK(int,log_transaction,(request_rec *r)) + +/** + * This hook allows modules to retrieve the http method from a request. This + * allows Apache modules to easily extend the methods that Apache understands + * @param r The current request + * @return The http method from the request + * @deffunc const char *ap_run_http_method(const request_rec *r) + */ +AP_DECLARE_HOOK(const char *,http_method,(const request_rec *r)) + +/** + * Return the default port from the current request + * @param r The current request + * @return The current port + * @deffunc apr_port_t ap_run_default_port(const request_rec *r) + */ +AP_DECLARE_HOOK(apr_port_t,default_port,(const request_rec *r)) + +typedef struct ap_bucket_error ap_bucket_error; + +/** + * A bucket referring to an HTTP error + * This bucket can be passed down the filter stack to indicate that an + * HTTP error occurred while running a filter. In order for this bucket + * to be used successfully, it MUST be sent as the first bucket in the + * first brigade to be sent from a given filter. + */ +struct ap_bucket_error { + /** Number of buckets using this memory */ + apr_bucket_refcount refcount; + /** The error code */ + int status; + /** The error string */ + const char *data; +}; + +AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_error; + +/** + * Determine if a bucket is an error bucket + * @param e The bucket to inspect + * @return true or false + */ +#define AP_BUCKET_IS_ERROR(e) (e->type == &ap_bucket_type_error) + +/** + * Make the bucket passed in an error bucket + * @param b The bucket to make into an error bucket + * @param error The HTTP error code to put in the bucket. + * @param buf An optional error string to put in the bucket. + * @param p A pool to allocate out of. + * @return The new bucket, or NULL if allocation failed + * @deffunc apr_bucket *ap_bucket_error_make(apr_bucket *b, int error, const char *buf, apr_pool_t *p) + */ +AP_DECLARE(apr_bucket *) ap_bucket_error_make(apr_bucket *b, int error, + const char *buf, apr_pool_t *p); + +/** + * Create a bucket referring to an HTTP error. + * @param error The HTTP error code to put in the bucket. + * @param buf An optional error string to put in the bucket. + * @param p A pool to allocate the error string out of. + * @param list The bucket allocator from which to allocate the bucket + * @return The new bucket, or NULL if allocation failed + * @deffunc apr_bucket *ap_bucket_error_create(int error, const char *buf, apr_pool_t *p, apr_bucket_alloc_t *list) + */ +AP_DECLARE(apr_bucket *) ap_bucket_error_create(int error, const char *buf, + apr_pool_t *p, + apr_bucket_alloc_t *list); + +AP_DECLARE_NONSTD(apr_status_t) ap_byterange_filter(ap_filter_t *f, apr_bucket_brigade *b); +AP_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, apr_bucket_brigade *b); +AP_DECLARE_NONSTD(apr_status_t) ap_content_length_filter(ap_filter_t *, + apr_bucket_brigade *); +AP_DECLARE_NONSTD(apr_status_t) ap_old_write_filter(ap_filter_t *f, apr_bucket_brigade *b); + +/* + * Setting up the protocol fields for subsidiary requests... + * Also, a wrapup function to keep the internal accounting straight. + */ +AP_DECLARE(void) ap_set_sub_req_protocol(request_rec *rnew, const request_rec *r); +AP_DECLARE(void) ap_finalize_sub_req_protocol(request_rec *sub_r); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_PROTOCOL_H */ diff --git a/rubbos/app/apache2/include/http_request.h b/rubbos/app/apache2/include/http_request.h new file mode 100644 index 00000000..c10e44db --- /dev/null +++ b/rubbos/app/apache2/include/http_request.h @@ -0,0 +1,373 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_REQUEST_H +#define APACHE_HTTP_REQUEST_H + +#include "apr_hooks.h" +#include "util_filter.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define AP_SUBREQ_NO_ARGS 0 +#define AP_SUBREQ_MERGE_ARGS 1 + +/** + * @file http_request.h + * @brief Apache Request library + */ + +/* http_request.c is the code which handles the main line of request + * processing, once a request has been read in (finding the right per- + * directory configuration, building it if necessary, and calling all + * the module dispatch functions in the right order). + * + * The pieces here which are public to the modules, allow them to learn + * how the server would handle some other file or URI, or perhaps even + * direct the server to serve that other file instead of the one the + * client requested directly. + * + * There are two ways to do that. The first is the sub_request mechanism, + * which handles looking up files and URIs as adjuncts to some other + * request (e.g., directory entries for multiviews and directory listings); + * the lookup functions stop short of actually running the request, but + * (e.g., for includes), a module may call for the request to be run + * by calling run_sub_req. The space allocated to create sub_reqs can be + * reclaimed by calling destroy_sub_req --- be sure to copy anything you care + * about which was allocated in its apr_pool_t elsewhere before doing this. + */ + +/** + * An internal handler used by the ap_process_request, all subrequest mechanisms + * and the redirect mechanism. + * @param r The request, subrequest or internal redirect to pre-process + * @return The return code for the request + */ +AP_DECLARE(int) ap_process_request_internal(request_rec *r); + +/** + * Create a subrequest from the given URI. This subrequest can be + * inspected to find information about the requested URI + * @param new_uri The URI to lookup + * @param r The current request + * @param next_filter The first filter the sub_request should use. If this is + * NULL, it defaults to the first filter for the main request + * @return The new request record + * @deffunc request_rec * ap_sub_req_lookup_uri(const char *new_uri, const request_rec *r) + */ +AP_DECLARE(request_rec *) ap_sub_req_lookup_uri(const char *new_uri, + const request_rec *r, + ap_filter_t *next_filter); + +/** + * Create a subrequest for the given file. This subrequest can be + * inspected to find information about the requested file + * @param new_file The file to lookup + * @param r The current request + * @param next_filter The first filter the sub_request should use. If this is + * NULL, it defaults to the first filter for the main request + * @return The new request record + * @deffunc request_rec * ap_sub_req_lookup_file(const char *new_file, const request_rec *r) + */ +AP_DECLARE(request_rec *) ap_sub_req_lookup_file(const char *new_file, + const request_rec *r, + ap_filter_t *next_filter); +/** + * Create a subrequest for the given apr_dir_read result. This subrequest + * can be inspected to find information about the requested file + * @param finfo The apr_dir_read result to lookup + * @param r The current request + * @param subtype What type of subrequest to perform, one of; + *
    + *      AP_SUBREQ_NO_ARGS     ignore r->args and r->path_info
    + *      AP_SUBREQ_MERGE_ARGS  merge r->args and r->path_info
    + * 
    + * @param next_filter The first filter the sub_request should use. If this is + * NULL, it defaults to the first filter for the main request + * @return The new request record + * @deffunc request_rec * ap_sub_req_lookup_dirent(apr_finfo_t *finfo, int subtype, const request_rec *r) + * @tip The apr_dir_read flags value APR_FINFO_MIN|APR_FINFO_NAME flag is the + * minimum recommended query if the results will be passed to apr_dir_read. + * The file info passed must include the name, and must have the same relative + * directory as the current request. + */ +AP_DECLARE(request_rec *) ap_sub_req_lookup_dirent(const apr_finfo_t *finfo, + const request_rec *r, + int subtype, + ap_filter_t *next_filter); +/** + * Create a subrequest for the given URI using a specific method. This + * subrequest can be inspected to find information about the requested URI + * @param method The method to use in the new subrequest + * @param new_uri The URI to lookup + * @param r The current request + * @param next_filter The first filter the sub_request should use. If this is + * NULL, it defaults to the first filter for the main request + * @return The new request record + * @deffunc request_rec * ap_sub_req_method_uri(const char *method, const char *new_uri, const request_rec *r) + */ +AP_DECLARE(request_rec *) ap_sub_req_method_uri(const char *method, + const char *new_uri, + const request_rec *r, + ap_filter_t *next_filter); +/** + * An output filter to strip EOS buckets from sub-requests. This always + * has to be inserted at the end of a sub-requests filter stack. + * @param f The current filter + * @param bb The brigade to filter + * @deffunc apr_status_t ap_sub_req_output_filter(ap_filter_t *f, apr_bucket_brigade *bb) + */ +AP_CORE_DECLARE_NONSTD(apr_status_t) ap_sub_req_output_filter(ap_filter_t *f, + apr_bucket_brigade *bb); + +/** + * Run the handler for the subrequest + * @param r The subrequest to run + * @return The return code for the subrequest + * @deffunc int ap_run_sub_req(request_rec *r) + */ +AP_DECLARE(int) ap_run_sub_req(request_rec *r); + +/** + * Free the memory associated with a subrequest + * @param r The subrequest to finish + * @deffunc void ap_destroy_sub_req(request_rec *r) + */ +AP_DECLARE(void) ap_destroy_sub_req(request_rec *r); + +/* + * Then there's the case that you want some other request to be served + * as the top-level request INSTEAD of what the client requested directly. + * If so, call this from a handler, and then immediately return OK. + */ + +/** + * Redirect the current request to some other uri + * @param new_uri The URI to replace the current request with + * @param r The current request + * @deffunc void ap_internal_redirect(const char *new_uri, request_rec *r) + */ +AP_DECLARE(void) ap_internal_redirect(const char *new_uri, request_rec *r); + +/** + * This function is designed for things like actions or CGI scripts, when + * using AddHandler, and you want to preserve the content type across + * an internal redirect. + * @param new_uri The URI to replace the current request with. + * @param r The current request + * @deffunc void ap_internal_redirect_handler(const char *new_uri, request_rec *r) + */ +AP_DECLARE(void) ap_internal_redirect_handler(const char *new_uri, request_rec *r); + +/** + * Redirect the current request to a sub_req, merging the pools + * @param sub_req A subrequest created from this request + * @param r The current request + * @deffunc void ap_internal_fast_redirect(request_rec *sub_req, request_rec *r) + * @tip the sub_req's pool will be merged into r's pool, be very careful + * not to destroy this subrequest, it will be destroyed with the main request! + */ +AP_DECLARE(void) ap_internal_fast_redirect(request_rec *sub_req, request_rec *r); + +/** + * Can be used within any handler to determine if any authentication + * is required for the current request + * @param r The current request + * @return 1 if authentication is required, 0 otherwise + * @deffunc int ap_some_auth_required(request_rec *r) + */ +AP_DECLARE(int) ap_some_auth_required(request_rec *r); + +/** + * Determine if the current request is the main request or a subrequest + * @param r The current request + * @return 1 if this is the main request, 0 otherwise + * @deffunc int ap_is_initial_req(request_rec *r) + */ +AP_DECLARE(int) ap_is_initial_req(request_rec *r); + +/** + * Function to set the r->mtime field to the specified value if it's later + * than what's already there. + * @param r The current request + * @param dependency_time Time to set the mtime to + * @deffunc void ap_update_mtime(request_rec *r, apr_time_t dependency_mtime) + */ +AP_DECLARE(void) ap_update_mtime(request_rec *r, apr_time_t dependency_mtime); + +/** + * Add one or more methods to the list permitted to access the resource. + * Usually executed by the content handler before the response header is + * sent, but sometimes invoked at an earlier phase if a module knows it + * can set the list authoritatively. Note that the methods are ADDED + * to any already permitted unless the reset flag is non-zero. The + * list is used to generate the Allow response header field when it + * is needed. + * @param r The pointer to the request identifying the resource. + * @param reset Boolean flag indicating whether this list should + * completely replace any current settings. + * @param ... A NULL-terminated list of strings, each identifying a + * method name to add. + * @return None. + * @deffunc void ap_allow_methods(request_rec *r, int reset, ...) + */ +AP_DECLARE(void) ap_allow_methods(request_rec *r, int reset, ...); + +/** + * Add one or more methods to the list permitted to access the resource. + * Usually executed by the content handler before the response header is + * sent, but sometimes invoked at an earlier phase if a module knows it + * can set the list authoritatively. Note that the methods are ADDED + * to any already permitted unless the reset flag is non-zero. The + * list is used to generate the Allow response header field when it + * is needed. + * @param r The pointer to the request identifying the resource. + * @param reset Boolean flag indicating whether this list should + * completely replace any current settings. + * @param ... A list of method identifiers, from the "M_" series + * defined in httpd.h, terminated with a value of -1 + * (e.g., "M_GET, M_POST, M_OPTIONS, -1") + * @return None. + * @deffunc void ap_allow_standard_methods(request_rec *r, int reset, ...) + */ +AP_DECLARE(void) ap_allow_standard_methods(request_rec *r, int reset, ...); + +#define MERGE_ALLOW 0 +#define REPLACE_ALLOW 1 + +#ifdef CORE_PRIVATE +/* Function called by main.c to handle first-level request */ +void ap_process_request(request_rec *); +/** + * Kill the current request + * @param type Why the request is dieing + * @param r The current request + * @deffunc void ap_die(int type, request_rec *r) + */ +AP_DECLARE(void) ap_die(int type, request_rec *r); +#endif + +/* Hooks */ + +/** + * Gives modules a chance to create their request_config entry when the + * request is created. + * @param r The current request + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,create_request,(request_rec *r)) + +/** + * This hook allow modules an opportunity to translate the URI into an + * actual filename. If no modules do anything special, the server's default + * rules will be followed. + * @param r The current request + * @return OK, DECLINED, or HTTP_... + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,translate_name,(request_rec *r)) + +/** + * This hook allow modules to set the per_dir_config based on their own + * context (such as sections) and responds to contextless requests + * such as TRACE that need no security or filesystem mapping. + * based on the filesystem. + * @param r The current request + * @return DONE (or HTTP_) if this contextless request was just fulfilled + * (such as TRACE), OK if this is not a file, and DECLINED if this is a file. + * The core map_to_storage (HOOK_RUN_REALLY_LAST) will directory_walk + * and file_walk the r->filename. + * + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,map_to_storage,(request_rec *r)) + +/** + * This hook is used to analyze the request headers, authenticate the user, + * and set the user information in the request record (r->user and + * r->ap_auth_type). This hook is only run when Apache determines that + * authentication/authorization is required for this resource (as determined + * by the 'Require' directive). It runs after the access_checker hook, and + * before the auth_checker hook. + * + * @param r The current request + * @return OK, DECLINED, or HTTP_... + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,check_user_id,(request_rec *r)) + +/** + * Allows modules to perform module-specific fixing of header fields. This + * is invoked just before any content-handler + * @param r The current request + * @return OK, DECLINED, or HTTP_... + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,fixups,(request_rec *r)) + +/** + * This routine is called to determine and/or set the various document type + * information bits, like Content-type (via r->content_type), language, et + * cetera. + * @param r the current request + * @return OK, DECLINED, or HTTP_... + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,type_checker,(request_rec *r)) + +/** + * This hook is used to apply additional access control to this resource. + * It runs *before* a user is authenticated, so this hook is really to + * apply additional restrictions independent of a user. It also runs + * independent of 'Require' directive usage. + * + * @param r the current request + * @return OK, DECLINED, or HTTP_... + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,access_checker,(request_rec *r)) + +/** + * This hook is used to check to see if the resource being requested + * is available for the authenticated user (r->user and r->ap_auth_type). + * It runs after the access_checker and check_user_id hooks. Note that + * it will *only* be called if Apache determines that access control has + * been applied to this resource (through a 'Require' directive). + * + * @param r the current request + * @return OK, DECLINED, or HTTP_... + * @ingroup hooks + */ +AP_DECLARE_HOOK(int,auth_checker,(request_rec *r)) + +/** + * This hook allows modules to insert filters for the current request + * @param r the current request + * @ingroup hooks + */ +AP_DECLARE_HOOK(void,insert_filter,(request_rec *r)) + +AP_DECLARE(int) ap_location_walk(request_rec *r); +AP_DECLARE(int) ap_directory_walk(request_rec *r); +AP_DECLARE(int) ap_file_walk(request_rec *r); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_REQUEST_H */ diff --git a/rubbos/app/apache2/include/http_vhost.h b/rubbos/app/apache2/include/http_vhost.h new file mode 100644 index 00000000..1acfd95f --- /dev/null +++ b/rubbos/app/apache2/include/http_vhost.h @@ -0,0 +1,109 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTP_VHOST_H +#define APACHE_HTTP_VHOST_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Virtual Host package + */ + +/** + * called before any config is read + * @param p Pool to allocate out of + */ +AP_DECLARE(void) ap_init_vhost_config(apr_pool_t *p); + +/** + * called after the config has been read to compile the tables needed to do + * the run-time vhost lookups + * @param p The pool to allocate out of + * @param main_server The start of the virtual host list + * @deffunc ap_fini_vhost_config(apr_pool_t *p, server_rec *main_server) + */ +AP_DECLARE(void) ap_fini_vhost_config(apr_pool_t *p, server_rec *main_server); + +/** + * handle addresses in statement + * @param p The pool to allocate out of + * @param hostname The hostname in the VirtualHost statement + * @param s The list of Virtual Hosts. + */ +const char *ap_parse_vhost_addrs(apr_pool_t *p, const char *hostname, server_rec *s); + +/* handle NameVirtualHost directive */ +const char *ap_set_name_virtual_host (cmd_parms *cmd, void *dummy, + const char *arg); + +/** + * Callback function for every Name Based Virtual Host. + * @param baton Opaque user object + * @param conn The current Connection + * @param s The current Server + * @see ap_vhost_iterate_given_conn + * @return 0 on success, any non-zero return will stop the iteration. + */ +typedef int(*ap_vhost_iterate_conn_cb)(void* baton, conn_rec* conn, server_rec* s); + +/** + * For every virtual host on this connection, call func_cb. + * @param conn The current connection + * @param func_cb Function called for every Name Based Virtual Host for this + * connection. + * @param baton Opaque object passed to func_cb. + * @return The return value from func_cb. + * @note If func_cb returns non-zero, the function will return at this point, + * and not continue iterating the virtual hosts. + */ +AP_DECLARE(int) ap_vhost_iterate_given_conn(conn_rec *conn, + ap_vhost_iterate_conn_cb func_cb, + void* baton); + +/** + * given an ip address only, give our best guess as to what vhost it is + * @param conn The current connection + */ +AP_DECLARE(void) ap_update_vhost_given_ip(conn_rec *conn); + +/** + * ap_update_vhost_given_ip is never enough, and this is always called after + * the headers have been read. It may change r->server. + * @param r The current request + */ +AP_DECLARE(void) ap_update_vhost_from_headers(request_rec *r); + +/** + * Match the host in the header with the hostname of the server for this + * request. + * @param r The current request + * @param host The hostname in the headers + * @param port The port from the headers + * @return return 1 if the host:port matches any of the aliases of r->server, + * return 0 otherwise + * @deffunc int ap_matches_request_vhost(request_rec *r, const char *host, apr_port_t port) + */ +AP_DECLARE(int) ap_matches_request_vhost(request_rec *r, const char *host, + apr_port_t port); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTP_VHOST_H */ diff --git a/rubbos/app/apache2/include/httpd.h b/rubbos/app/apache2/include/httpd.h new file mode 100644 index 00000000..4ad2df22 --- /dev/null +++ b/rubbos/app/apache2/include/httpd.h @@ -0,0 +1,1760 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_HTTPD_H +#define APACHE_HTTPD_H + +/** + * @file httpd.h + * @brief HTTP Daemon routines + */ + +/* XXX - We need to push more stuff to other .h files, or even .c files, to + * make this file smaller + */ + +/* Headers in which EVERYONE has an interest... */ +#include "ap_config.h" +#include "ap_mmn.h" + +#include "ap_release.h" + +#include "apr_general.h" +#include "apr_tables.h" +#include "apr_pools.h" +#include "apr_time.h" +#include "apr_network_io.h" +#include "apr_buckets.h" + +#include "os.h" + +#include "pcreposix.h" + +/* Note: util_uri.h is also included, see below */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef CORE_PRIVATE + +/* ----------------------------- config dir ------------------------------ */ + +/* Define this to be the default server home dir. Most things later in this + * file with a relative pathname will have this added. + */ +#ifndef HTTPD_ROOT +#ifdef OS2 +/* Set default for OS/2 file system */ +#define HTTPD_ROOT "/os2httpd" +#elif defined(WIN32) +/* Set default for Windows file system */ +#define HTTPD_ROOT "/apache" +#elif defined (BEOS) +/* Set the default for BeOS */ +#define HTTPD_ROOT "/boot/home/apache" +#elif defined (NETWARE) +/* Set the default for NetWare */ +#define HTTPD_ROOT "/apache" +#else +#define HTTPD_ROOT "/usr/local/apache" +#endif +#endif /* HTTPD_ROOT */ + +/* + * --------- You shouldn't have to edit anything below this line ---------- + * + * Any modifications to any defaults not defined above should be done in the + * respective configuration file. + * + */ + +/* Default location of documents. Can be overridden by the DocumentRoot + * directive. + */ +#ifndef DOCUMENT_LOCATION +#ifdef OS2 +/* Set default for OS/2 file system */ +#define DOCUMENT_LOCATION HTTPD_ROOT "/docs" +#else +#define DOCUMENT_LOCATION HTTPD_ROOT "/htdocs" +#endif +#endif /* DOCUMENT_LOCATION */ + +/* Maximum number of dynamically loaded modules */ +#ifndef DYNAMIC_MODULE_LIMIT +#define DYNAMIC_MODULE_LIMIT 64 +#endif + +/* Default administrator's address */ +#define DEFAULT_ADMIN "[no address given]" + +/* The name of the log files */ +#ifndef DEFAULT_ERRORLOG +#if defined(OS2) || defined(WIN32) +#define DEFAULT_ERRORLOG "logs/error.log" +#else +#define DEFAULT_ERRORLOG "logs/error_log" +#endif +#endif /* DEFAULT_ERRORLOG */ + +/* Define this to be what your per-directory security files are called */ +#ifndef DEFAULT_ACCESS_FNAME +#ifdef OS2 +/* Set default for OS/2 file system */ +#define DEFAULT_ACCESS_FNAME "htaccess" +#else +#define DEFAULT_ACCESS_FNAME ".htaccess" +#endif +#endif /* DEFAULT_ACCESS_FNAME */ + +/* The name of the server config file */ +#ifndef SERVER_CONFIG_FILE +#define SERVER_CONFIG_FILE "conf/httpd.conf" +#endif + +/* Whether we should enable rfc1413 identity checking */ +#ifndef DEFAULT_RFC1413 +#define DEFAULT_RFC1413 0 +#endif + +/* The default path for CGI scripts if none is currently set */ +#ifndef DEFAULT_PATH +#define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin" +#endif + +/* The path to the suExec wrapper, can be overridden in Configuration */ +#ifndef SUEXEC_BIN +#define SUEXEC_BIN HTTPD_ROOT "/bin/suexec" +#endif + +/* The timeout for waiting for messages */ +#ifndef DEFAULT_TIMEOUT +#define DEFAULT_TIMEOUT 300 +#endif + +/* The timeout for waiting for keepalive timeout until next request */ +#ifndef DEFAULT_KEEPALIVE_TIMEOUT +#define DEFAULT_KEEPALIVE_TIMEOUT 15 +#endif + +/* The number of requests to entertain per connection */ +#ifndef DEFAULT_KEEPALIVE +#define DEFAULT_KEEPALIVE 100 +#endif + +/* Limits on the size of various request items. These limits primarily + * exist to prevent simple denial-of-service attacks on a server based + * on misuse of the protocol. The recommended values will depend on the + * nature of the server resources -- CGI scripts and database backends + * might require large values, but most servers could get by with much + * smaller limits than we use below. The request message body size can + * be limited by the per-dir config directive LimitRequestBody. + * + * Internal buffer sizes are two bytes more than the DEFAULT_LIMIT_REQUEST_LINE + * and DEFAULT_LIMIT_REQUEST_FIELDSIZE below, which explains the 8190. + * These two limits can be lowered (but not raised) by the server config + * directives LimitRequestLine and LimitRequestFieldsize, respectively. + * + * DEFAULT_LIMIT_REQUEST_FIELDS can be modified or disabled (set = 0) by + * the server config directive LimitRequestFields. + */ +#ifndef DEFAULT_LIMIT_REQUEST_LINE +#define DEFAULT_LIMIT_REQUEST_LINE 8190 +#endif /* default limit on bytes in Request-Line (Method+URI+HTTP-version) */ +#ifndef DEFAULT_LIMIT_REQUEST_FIELDSIZE +#define DEFAULT_LIMIT_REQUEST_FIELDSIZE 8190 +#endif /* default limit on bytes in any one header field */ +#ifndef DEFAULT_LIMIT_REQUEST_FIELDS +#define DEFAULT_LIMIT_REQUEST_FIELDS 100 +#endif /* default limit on number of request header fields */ + + +/** + * The default default character set name to add if AddDefaultCharset is + * enabled. Overridden with AddDefaultCharsetName. + */ +#define DEFAULT_ADD_DEFAULT_CHARSET_NAME "iso-8859-1" + +#endif /* CORE_PRIVATE */ + +/** default HTTP Server protocol */ +#define AP_SERVER_PROTOCOL "HTTP/1.1" + + +/* ------------------ stuff that modules are allowed to look at ----------- */ + +/** Define this to be what your HTML directory content files are called */ +#ifndef AP_DEFAULT_INDEX +#define AP_DEFAULT_INDEX "index.html" +#endif + + +/** + * Define this to be what type you'd like returned for files with unknown + * suffixes. + * @warning MUST be all lower case. + */ +#ifndef DEFAULT_CONTENT_TYPE +#define DEFAULT_CONTENT_TYPE "text/plain" +#endif + +/** The name of the MIME types file */ +#ifndef AP_TYPES_CONFIG_FILE +#define AP_TYPES_CONFIG_FILE "conf/mime.types" +#endif + +/* + * Define the HTML doctype strings centrally. + */ +/** HTML 2.0 Doctype */ +#define DOCTYPE_HTML_2_0 "\n" +/** HTML 3.2 Doctype */ +#define DOCTYPE_HTML_3_2 "\n" +/** HTML 4.0 Strict Doctype */ +#define DOCTYPE_HTML_4_0S "\n" +/** HTML 4.0 Transitional Doctype */ +#define DOCTYPE_HTML_4_0T "\n" +/** HTML 4.0 Frameset Doctype */ +#define DOCTYPE_HTML_4_0F "\n" +/** XHTML 1.0 Strict Doctype */ +#define DOCTYPE_XHTML_1_0S "\n" +/** XHTML 1.0 Transitional Doctype */ +#define DOCTYPE_XHTML_1_0T "\n" +/** XHTML 1.0 Frameset Doctype */ +#define DOCTYPE_XHTML_1_0F "" + +/** Internal representation for a HTTP protocol number, e.g., HTTP/1.1 */ + +#define HTTP_VERSION(major,minor) (1000*(major)+(minor)) +/** Major part of HTTP protocol */ +#define HTTP_VERSION_MAJOR(number) ((number)/1000) +/** Minor part of HTTP protocol */ +#define HTTP_VERSION_MINOR(number) ((number)%1000) + +/* -------------- Port number for server running standalone --------------- */ + +/** default HTTP Port */ +#define DEFAULT_HTTP_PORT 80 +/** default HTTPS Port */ +#define DEFAULT_HTTPS_PORT 443 +/** + * Check whether @a port is the default port for the request @a r. + * @param port The port number + * @param r The request + * @see #ap_default_port + */ +#define ap_is_default_port(port,r) ((port) == ap_default_port(r)) +/** + * Get the default port for a request (which depends on the scheme). + * @param r The request + */ +#define ap_default_port(r) ap_run_default_port(r) +/** + * Get the scheme for a request. + * @param r The request + * @bug This should be called ap_http_scheme! + */ +#define ap_http_method(r) ap_run_http_method(r) + +/** The default string lengths */ +#define MAX_STRING_LEN HUGE_STRING_LEN +#define HUGE_STRING_LEN 8192 + +/** The size of the server's internal read-write buffers */ +#define AP_IOBUFSIZE 8192 + +/** The max number of regex captures that can be expanded by ap_pregsub */ +#define AP_MAX_REG_MATCH 10 + +/** + * APR_HAS_LARGE_FILES introduces the problem of spliting sendfile into + * mutiple buckets, no greater than MAX(apr_size_t), and more granular + * than that in case the brigade code/filters attempt to read it directly. + * ### 16mb is an invention, no idea if it is reasonable. + */ +#define AP_MAX_SENDFILE 16777216 /* 2^24 */ + +/** + * Special Apache error codes. These are basically used + * in http_main.c so we can keep track of various errors. + * + */ +/** a normal exit */ +#define APEXIT_OK 0x0 +/** A fatal error arising during the server's init sequence */ +#define APEXIT_INIT 0x2 +/** The child died during its init sequence */ +#define APEXIT_CHILDINIT 0x3 +/** + * The child exited due to a resource shortage. + * The parent should limit the rate of forking until + * the situation is resolved. + */ +#define APEXIT_CHILDSICK 0x7 +/** + * A fatal error, resulting in the whole server aborting. + * If a child exits with this error, the parent process + * considers this a server-wide fatal error and aborts. + */ +#define APEXIT_CHILDFATAL 0xf + +#ifndef AP_DECLARE +/** + * Stuff marked #AP_DECLARE is part of the API, and intended for use + * by modules. Its purpose is to allow us to add attributes that + * particular platforms or compilers require to every exported function. + */ +# define AP_DECLARE(type) type +#endif + +#ifndef AP_DECLARE_NONSTD +/** + * Stuff marked #AP_DECLARE_NONSTD is part of the API, and intended for + * use by modules. The difference between #AP_DECLARE and + * #AP_DECLARE_NONSTD is that the latter is required for any functions + * which use varargs or are used via indirect function call. This + * is to accomodate the two calling conventions in windows dlls. + */ +# define AP_DECLARE_NONSTD(type) type +#endif +#ifndef AP_DECLARE_DATA +# define AP_DECLARE_DATA +#endif + +#ifndef AP_MODULE_DECLARE +# define AP_MODULE_DECLARE(type) type +#endif +#ifndef AP_MODULE_DECLARE_NONSTD +# define AP_MODULE_DECLARE_NONSTD(type) type +#endif +#ifndef AP_MODULE_DECLARE_DATA +# define AP_MODULE_DECLARE_DATA +#endif + +/** + * @internal + * modules should not used functions marked AP_CORE_DECLARE + */ +#ifndef AP_CORE_DECLARE +# define AP_CORE_DECLARE AP_DECLARE +#endif +/** + * @internal + * modules should not used functions marked AP_CORE_DECLARE_NONSTD + */ + +#ifndef AP_CORE_DECLARE_NONSTD +# define AP_CORE_DECLARE_NONSTD AP_DECLARE_NONSTD +#endif + +/** + * The numeric version information is broken out into fields within this + * structure. + */ +typedef struct { + int major; /**< major number */ + int minor; /**< minor number */ + int patch; /**< patch number */ + const char *add_string; /**< additional string like "-dev" */ +} ap_version_t; + +/** + * Return httpd's version information in a numeric form. + * + * @param version Pointer to a version structure for returning the version + * information. + */ +AP_DECLARE(void) ap_get_server_revision(ap_version_t *version); + +/** + * Get the server version string + * @return The server version string + */ +AP_DECLARE(const char *) ap_get_server_version(void); + +/** + * Add a component to the version string + * @param pconf The pool to allocate the component from + * @param component The string to add + */ +AP_DECLARE(void) ap_add_version_component(apr_pool_t *pconf, const char *component); + +/** + * Get the date a time that the server was built + * @return The server build time string + */ +AP_DECLARE(const char *) ap_get_server_built(void); + +#define DECLINED -1 /**< Module declines to handle */ +#define DONE -2 /**< Module has served the response completely + * - it's safe to die() with no more output + */ +#define OK 0 /**< Module has handled this stage. */ + + +/** + * @defgroup HTTP_Status HTTP Status Codes + * @{ + */ +/** + * The size of the static array in http_protocol.c for storing + * all of the potential response status-lines (a sparse table). + * A future version should dynamically generate the apr_table_t at startup. + */ +#define RESPONSE_CODES 57 + +#define HTTP_CONTINUE 100 +#define HTTP_SWITCHING_PROTOCOLS 101 +#define HTTP_PROCESSING 102 +#define HTTP_OK 200 +#define HTTP_CREATED 201 +#define HTTP_ACCEPTED 202 +#define HTTP_NON_AUTHORITATIVE 203 +#define HTTP_NO_CONTENT 204 +#define HTTP_RESET_CONTENT 205 +#define HTTP_PARTIAL_CONTENT 206 +#define HTTP_MULTI_STATUS 207 +#define HTTP_MULTIPLE_CHOICES 300 +#define HTTP_MOVED_PERMANENTLY 301 +#define HTTP_MOVED_TEMPORARILY 302 +#define HTTP_SEE_OTHER 303 +#define HTTP_NOT_MODIFIED 304 +#define HTTP_USE_PROXY 305 +#define HTTP_TEMPORARY_REDIRECT 307 +#define HTTP_BAD_REQUEST 400 +#define HTTP_UNAUTHORIZED 401 +#define HTTP_PAYMENT_REQUIRED 402 +#define HTTP_FORBIDDEN 403 +#define HTTP_NOT_FOUND 404 +#define HTTP_METHOD_NOT_ALLOWED 405 +#define HTTP_NOT_ACCEPTABLE 406 +#define HTTP_PROXY_AUTHENTICATION_REQUIRED 407 +#define HTTP_REQUEST_TIME_OUT 408 +#define HTTP_CONFLICT 409 +#define HTTP_GONE 410 +#define HTTP_LENGTH_REQUIRED 411 +#define HTTP_PRECONDITION_FAILED 412 +#define HTTP_REQUEST_ENTITY_TOO_LARGE 413 +#define HTTP_REQUEST_URI_TOO_LARGE 414 +#define HTTP_UNSUPPORTED_MEDIA_TYPE 415 +#define HTTP_RANGE_NOT_SATISFIABLE 416 +#define HTTP_EXPECTATION_FAILED 417 +#define HTTP_UNPROCESSABLE_ENTITY 422 +#define HTTP_LOCKED 423 +#define HTTP_FAILED_DEPENDENCY 424 +#define HTTP_UPGRADE_REQUIRED 426 +#define HTTP_INTERNAL_SERVER_ERROR 500 +#define HTTP_NOT_IMPLEMENTED 501 +#define HTTP_BAD_GATEWAY 502 +#define HTTP_SERVICE_UNAVAILABLE 503 +#define HTTP_GATEWAY_TIME_OUT 504 +#define HTTP_VERSION_NOT_SUPPORTED 505 +#define HTTP_VARIANT_ALSO_VARIES 506 +#define HTTP_INSUFFICIENT_STORAGE 507 +#define HTTP_NOT_EXTENDED 510 + +/** is the status code informational */ +#define ap_is_HTTP_INFO(x) (((x) >= 100)&&((x) < 200)) +/** is the status code OK ?*/ +#define ap_is_HTTP_SUCCESS(x) (((x) >= 200)&&((x) < 300)) +/** is the status code a redirect */ +#define ap_is_HTTP_REDIRECT(x) (((x) >= 300)&&((x) < 400)) +/** is the status code a error (client or server) */ +#define ap_is_HTTP_ERROR(x) (((x) >= 400)&&((x) < 600)) +/** is the status code a client error */ +#define ap_is_HTTP_CLIENT_ERROR(x) (((x) >= 400)&&((x) < 500)) +/** is the status code a server error */ +#define ap_is_HTTP_SERVER_ERROR(x) (((x) >= 500)&&((x) < 600)) + +/** should the status code drop the connection */ +#define ap_status_drops_connection(x) \ + (((x) == HTTP_BAD_REQUEST) || \ + ((x) == HTTP_REQUEST_TIME_OUT) || \ + ((x) == HTTP_LENGTH_REQUIRED) || \ + ((x) == HTTP_REQUEST_ENTITY_TOO_LARGE) || \ + ((x) == HTTP_REQUEST_URI_TOO_LARGE) || \ + ((x) == HTTP_INTERNAL_SERVER_ERROR) || \ + ((x) == HTTP_SERVICE_UNAVAILABLE) || \ + ((x) == HTTP_NOT_IMPLEMENTED)) +/** @} */ +/** + * @defgroup Methods List of Methods recognized by the server + * @{ + */ +/** + * Methods recognized (but not necessarily handled) by the server. + * These constants are used in bit shifting masks of size int, so it is + * unsafe to have more methods than bits in an int. HEAD == M_GET. + * This list must be tracked by the list in http_protocol.c in routine + * ap_method_name_of(). + */ +#define M_GET 0 /* RFC 2616: HTTP */ +#define M_PUT 1 /* : */ +#define M_POST 2 +#define M_DELETE 3 +#define M_CONNECT 4 +#define M_OPTIONS 5 +#define M_TRACE 6 /* RFC 2616: HTTP */ +#define M_PATCH 7 /* no rfc(!) ### remove this one? */ +#define M_PROPFIND 8 /* RFC 2518: WebDAV */ +#define M_PROPPATCH 9 /* : */ +#define M_MKCOL 10 +#define M_COPY 11 +#define M_MOVE 12 +#define M_LOCK 13 +#define M_UNLOCK 14 /* RFC 2518: WebDAV */ +#define M_VERSION_CONTROL 15 /* RFC 3253: WebDAV Versioning */ +#define M_CHECKOUT 16 /* : */ +#define M_UNCHECKOUT 17 +#define M_CHECKIN 18 +#define M_UPDATE 19 +#define M_LABEL 20 +#define M_REPORT 21 +#define M_MKWORKSPACE 22 +#define M_MKACTIVITY 23 +#define M_BASELINE_CONTROL 24 +#define M_MERGE 25 +#define M_INVALID 26 /* RFC 3253: WebDAV Versioning */ + +/** + * METHODS needs to be equal to the number of bits + * we are using for limit masks. + */ +#define METHODS 64 + +/** + * The method mask bit to shift for anding with a bitmask. + */ +#define AP_METHOD_BIT ((apr_int64_t)1) +/** @} */ + + +/** + * Structure for handling HTTP methods. Methods known to the server are + * accessed via a bitmask shortcut; extension methods are handled by + * an array. + */ +typedef struct ap_method_list_t ap_method_list_t; +struct ap_method_list_t { + /* The bitmask used for known methods */ + apr_int64_t method_mask; + /* the array used for extension methods */ + apr_array_header_t *method_list; +}; +/** + * @defgroup module_magic Module Magic mime types + * @{ + */ +/** Magic for mod_cgi[d] */ +#define CGI_MAGIC_TYPE "application/x-httpd-cgi" +/** Magic for mod_include */ +#define INCLUDES_MAGIC_TYPE "text/x-server-parsed-html" +/** Magic for mod_include */ +#define INCLUDES_MAGIC_TYPE3 "text/x-server-parsed-html3" +/** Magic for mod_dir */ +#define DIR_MAGIC_TYPE "httpd/unix-directory" + +/** @} */ +/* Just in case your linefeed isn't the one the other end is expecting. */ +#if !APR_CHARSET_EBCDIC +/** linefeed */ +#define LF 10 +/** carrige return */ +#define CR 13 +/** carrige return /Line Feed Combo */ +#define CRLF "\015\012" +#else /* APR_CHARSET_EBCDIC */ +/* For platforms using the EBCDIC charset, the transition ASCII->EBCDIC is done + * in the buff package (bread/bputs/bwrite). Everywhere else, we use + * "native EBCDIC" CR and NL characters. These are therefore + * defined as + * '\r' and '\n'. + */ +#define CR '\r' +#define LF '\n' +#define CRLF "\r\n" +#endif /* APR_CHARSET_EBCDIC */ + +/** + * @defgroup values_request_rec_body Possible values for request_rec.read_body + * @{ + * Possible values for request_rec.read_body (set by handling module): + */ + +/** Send 413 error if message has any body */ +#define REQUEST_NO_BODY 0 +/** Send 411 error if body without Content-Length */ +#define REQUEST_CHUNKED_ERROR 1 +/** If chunked, remove the chunks for me. */ +#define REQUEST_CHUNKED_DECHUNK 2 +/** @} */ + +/** + * @defgroup values_request_rec_used_path_info Possible values for request_rec.used_path_info + * @{ + * Possible values for request_rec.used_path_info: + */ + +/** Accept the path_info from the request */ +#define AP_REQ_ACCEPT_PATH_INFO 0 +/** Return a 404 error if path_info was given */ +#define AP_REQ_REJECT_PATH_INFO 1 +/** Module may chose to use the given path_info */ +#define AP_REQ_DEFAULT_PATH_INFO 2 +/** @} */ + +/* + * Things which may vary per file-lookup WITHIN a request --- + * e.g., state of MIME config. Basically, the name of an object, info + * about the object, and any other info we may ahve which may need to + * change as we go poking around looking for it (e.g., overridden by + * .htaccess files). + * + * Note how the default state of almost all these things is properly + * zero, so that allocating it with pcalloc does the right thing without + * a whole lot of hairy initialization... so long as we are willing to + * make the (fairly) portable assumption that the bit pattern of a NULL + * pointer is, in fact, zero. + */ + +/** + * This represents the result of calling htaccess; these are cached for + * each request. + */ +struct htaccess_result { + /** the directory to which this applies */ + const char *dir; + /** the overrides allowed for the .htaccess file */ + int override; + /** the configuration directives */ + struct ap_conf_vector_t *htaccess; + /** the next one, or NULL if no more; N.B. never change this */ + const struct htaccess_result *next; +}; + +/* The following four types define a hierarchy of activities, so that + * given a request_rec r you can write r->connection->server->process + * to get to the process_rec. While this reduces substantially the + * number of arguments that various hooks require beware that in + * threaded versions of the server you must consider multiplexing + * issues. */ + + +/** A structure that represents one process */ +typedef struct process_rec process_rec; +/** A structure that represents a virtual server */ +typedef struct server_rec server_rec; +/** A structure that represents one connection */ +typedef struct conn_rec conn_rec; +/** A structure that represents the current request */ +typedef struct request_rec request_rec; + +/* ### would be nice to not include this from httpd.h ... */ +/* This comes after we have defined the request_rec type */ +#include "apr_uri.h" + +/** A structure that represents one process */ +struct process_rec { + /** Global pool. Cleared upon normal exit */ + apr_pool_t *pool; + /** Configuration pool. Cleared upon restart */ + apr_pool_t *pconf; + /** Number of command line arguments passed to the program */ + int argc; + /** The command line arguments */ + const char * const *argv; + /** The program name used to execute the program */ + const char *short_name; +}; + +/** A structure that represents the current request */ +struct request_rec { + /** The pool associated with the request */ + apr_pool_t *pool; + /** The connection to the client */ + conn_rec *connection; + /** The virtual host for this request */ + server_rec *server; + + /** Pointer to the redirected request if this is an external redirect */ + request_rec *next; + /** Pointer to the previous request if this is an internal redirect */ + request_rec *prev; + + /** Pointer to the main request if this is a sub-request + * (see http_request.h) */ + request_rec *main; + + /* Info about the request itself... we begin with stuff that only + * protocol.c should ever touch... + */ + /** First line of request */ + char *the_request; + /** HTTP/0.9, "simple" request (e.g. GET /foo\n w/no headers) */ + int assbackwards; + /** A proxy request (calculated during post_read_request/translate_name) + * possible values PROXYREQ_NONE, PROXYREQ_PROXY, PROXYREQ_REVERSE, + * PROXYREQ_RESPONSE + */ + int proxyreq; + /** HEAD request, as opposed to GET */ + int header_only; + /** Protocol string, as given to us, or HTTP/0.9 */ + char *protocol; + /** Protocol version number of protocol; 1.1 = 1001 */ + int proto_num; + /** Host, as set by full URI or Host: */ + const char *hostname; + + /** Time when the request started */ + apr_time_t request_time; + + /** Status line, if set by script */ + const char *status_line; + /** Status line */ + int status; + + /* Request method, two ways; also, protocol, etc.. Outside of protocol.c, + * look, but don't touch. + */ + + /** Request method (eg. GET, HEAD, POST, etc.) */ + const char *method; + /** M_GET, M_POST, etc. */ + int method_number; + + /** + * 'allowed' is a bitvector of the allowed methods. + * + * A handler must ensure that the request method is one that + * it is capable of handling. Generally modules should DECLINE + * any request methods they do not handle. Prior to aborting the + * handler like this the handler should set r->allowed to the list + * of methods that it is willing to handle. This bitvector is used + * to construct the "Allow:" header required for OPTIONS requests, + * and HTTP_METHOD_NOT_ALLOWED and HTTP_NOT_IMPLEMENTED status codes. + * + * Since the default_handler deals with OPTIONS, all modules can + * usually decline to deal with OPTIONS. TRACE is always allowed, + * modules don't need to set it explicitly. + * + * Since the default_handler will always handle a GET, a + * module which does *not* implement GET should probably return + * HTTP_METHOD_NOT_ALLOWED. Unfortunately this means that a Script GET + * handler can't be installed by mod_actions. + */ + apr_int64_t allowed; + /** Array of extension methods */ + apr_array_header_t *allowed_xmethods; + /** List of allowed methods */ + ap_method_list_t *allowed_methods; + + /** byte count in stream is for body */ + apr_off_t sent_bodyct; + /** body byte count, for easy access */ + apr_off_t bytes_sent; + /** Last modified time of the requested resource */ + apr_time_t mtime; + + /* HTTP/1.1 connection-level features */ + + /** sending chunked transfer-coding */ + int chunked; + /** The Range: header */ + const char *range; + /** The "real" content length */ + apr_off_t clength; + + /** Remaining bytes left to read from the request body */ + apr_off_t remaining; + /** Number of bytes that have been read from the request body */ + apr_off_t read_length; + /** Method for reading the request body + * (eg. REQUEST_CHUNKED_ERROR, REQUEST_NO_BODY, + * REQUEST_CHUNKED_DECHUNK, etc...) */ + int read_body; + /** reading chunked transfer-coding */ + int read_chunked; + /** is client waiting for a 100 response? */ + unsigned expecting_100; + + /* MIME header environments, in and out. Also, an array containing + * environment variables to be passed to subprocesses, so people can + * write modules to add to that environment. + * + * The difference between headers_out and err_headers_out is that the + * latter are printed even on error, and persist across internal redirects + * (so the headers printed for ErrorDocument handlers will have them). + * + * The 'notes' apr_table_t is for notes from one module to another, with no + * other set purpose in mind... + */ + + /** MIME header environment from the request */ + apr_table_t *headers_in; + /** MIME header environment for the response */ + apr_table_t *headers_out; + /** MIME header environment for the response, printed even on errors and + * persist across internal redirects */ + apr_table_t *err_headers_out; + /** Array of environment variables to be used for sub processes */ + apr_table_t *subprocess_env; + /** Notes from one module to another */ + apr_table_t *notes; + + /* content_type, handler, content_encoding, and all content_languages + * MUST be lowercased strings. They may be pointers to static strings; + * they should not be modified in place. + */ + /** The content-type for the current request */ + const char *content_type; /* Break these out --- we dispatch on 'em */ + /** The handler string that we use to call a handler function */ + const char *handler; /* What we *really* dispatch on */ + + /** How to encode the data */ + const char *content_encoding; + /** Array of strings representing the content languages */ + apr_array_header_t *content_languages; + + /** variant list validator (if negotiated) */ + char *vlist_validator; + + /** If an authentication check was made, this gets set to the user name. */ + char *user; + /** If an authentication check was made, this gets set to the auth type. */ + char *ap_auth_type; + + /** This response can not be cached */ + int no_cache; + /** There is no local copy of this response */ + int no_local_copy; + + /* What object is being requested (either directly, or via include + * or content-negotiation mapping). + */ + + /** The URI without any parsing performed */ + char *unparsed_uri; + /** The path portion of the URI, or "/" if no path provided */ + char *uri; + /** The filename on disk corresponding to this response */ + char *filename; + /* XXX: What does this mean? Please define "canonicalize" -aaron */ + /** The true filename, we canonicalize r->filename if these don't match */ + char *canonical_filename; + /** The PATH_INFO extracted from this request */ + char *path_info; + /** The QUERY_ARGS extracted from this request */ + char *args; + /** finfo.protection (st_mode) set to zero if no such file */ + apr_finfo_t finfo; + /** A struct containing the components of URI */ + apr_uri_t parsed_uri; + + /** + * Flag for the handler to accept or reject path_info on + * the current request. All modules should respect the + * AP_REQ_ACCEPT_PATH_INFO and AP_REQ_REJECT_PATH_INFO + * values, while AP_REQ_DEFAULT_PATH_INFO indicates they + * may follow existing conventions. This is set to the + * user's preference upon HOOK_VERY_FIRST of the fixups. + */ + int used_path_info; + + /* Various other config info which may change with .htaccess files + * These are config vectors, with one void* pointer for each module + * (the thing pointed to being the module's business). + */ + + /** Options set in config files, etc. */ + struct ap_conf_vector_t *per_dir_config; + /** Notes on *this* request */ + struct ap_conf_vector_t *request_config; + + /** + * A linked list of the .htaccess configuration directives + * accessed by this request. + * N.B. always add to the head of the list, _never_ to the end. + * that way, a sub request's list can (temporarily) point to a parent's list + */ + const struct htaccess_result *htaccess; + + /** A list of output filters to be used for this request */ + struct ap_filter_t *output_filters; + /** A list of input filters to be used for this request */ + struct ap_filter_t *input_filters; + + /** A list of protocol level output filters to be used for this + * request */ + struct ap_filter_t *proto_output_filters; + /** A list of protocol level input filters to be used for this + * request */ + struct ap_filter_t *proto_input_filters; + + /** A flag to determine if the eos bucket has been sent yet */ + int eos_sent; + +/* Things placed at the end of the record to avoid breaking binary + * compatibility. It would be nice to remember to reorder the entire + * record to improve 64bit alignment the next time we need to break + * binary compatibility for some other reason. + */ +}; + +/** + * @defgroup ProxyReq Proxy request types + * + * Possible values of request_rec->proxyreq. A request could be normal, + * proxied or reverse proxied. Normally proxied and reverse proxied are + * grouped together as just "proxied", but sometimes it's necessary to + * tell the difference between the two, such as for authentication. + * @{ + */ + +#define PROXYREQ_NONE 0 /**< No proxy */ +#define PROXYREQ_PROXY 1 /**< Standard proxy */ +#define PROXYREQ_REVERSE 2 /**< Reverse proxy */ +#define PROXYREQ_RESPONSE 3 /**< Origin response */ + +/* @} */ + +typedef enum { + AP_CONN_UNKNOWN, + AP_CONN_CLOSE, + AP_CONN_KEEPALIVE +} ap_conn_keepalive_e; + +/** Structure to store things which are per connection */ +struct conn_rec { + /** Pool associated with this connection */ + apr_pool_t *pool; + /** Physical vhost this conn came in on */ + server_rec *base_server; + /** used by http_vhost.c */ + void *vhost_lookup_data; + + /* Information about the connection itself */ + /** local address */ + apr_sockaddr_t *local_addr; + /** remote address */ + apr_sockaddr_t *remote_addr; + + /** Client's IP address */ + char *remote_ip; + /** Client's DNS name, if known. NULL if DNS hasn't been checked, + * "" if it has and no address was found. N.B. Only access this though + * get_remote_host() */ + char *remote_host; + /** Only ever set if doing rfc1413 lookups. N.B. Only access this through + * get_remote_logname() */ + char *remote_logname; + + /** Are we still talking? */ + unsigned aborted:1; + + /** Are we going to keep the connection alive for another request? + * @see ap_conn_keepalive_e */ + ap_conn_keepalive_e keepalive; + + /** have we done double-reverse DNS? -1 yes/failure, 0 not yet, + * 1 yes/success */ + signed int double_reverse:2; + + /** How many times have we used it? */ + int keepalives; + /** server IP address */ + char *local_ip; + /** used for ap_get_server_name when UseCanonicalName is set to DNS + * (ignores setting of HostnameLookups) */ + char *local_host; + + /** ID of this connection; unique at any point in time */ + long id; + /** Config vector containing pointers to connections per-server + * config structures. */ + struct ap_conf_vector_t *conn_config; + /** Notes on *this* connection: send note from one module to + * another. must remain valid for all requests on this conn */ + apr_table_t *notes; + /** A list of input filters to be used for this connection */ + struct ap_filter_t *input_filters; + /** A list of output filters to be used for this connection */ + struct ap_filter_t *output_filters; + /** handle to scoreboard information for this connection */ + void *sbh; + /** The bucket allocator to use for all bucket/brigade creations */ + struct apr_bucket_alloc_t *bucket_alloc; +}; + +/* Per-vhost config... */ + +/** + * The address 255.255.255.255, when used as a virtualhost address, + * will become the "default" server when the ip doesn't match other vhosts. + */ +#define DEFAULT_VHOST_ADDR 0xfffffffful + + +/** A structure to be used for Per-vhost config */ +typedef struct server_addr_rec server_addr_rec; +struct server_addr_rec { + /** The next server in the list */ + server_addr_rec *next; + /** The bound address, for this server */ + apr_sockaddr_t *host_addr; + /** The bound port, for this server */ + apr_port_t host_port; + /** The name given in */ + char *virthost; +}; + +/** A structure to store information for each virtual server */ +struct server_rec { + /** The process this server is running in */ + process_rec *process; + /** The next server in the list */ + server_rec *next; + + /** The name of the server */ + const char *defn_name; + /** The line of the config file that the server was defined on */ + unsigned defn_line_number; + + /* Contact information */ + + /** The admin's contact information */ + char *server_admin; + /** The server hostname */ + char *server_hostname; + /** for redirects, etc. */ + apr_port_t port; + + /* Log files --- note that transfer log is now in the modules... */ + + /** The name of the error log */ + char *error_fname; + /** A file descriptor that references the error log */ + apr_file_t *error_log; + /** The log level for this server */ + int loglevel; + + /* Module-specific configuration for server, and defaults... */ + + /** true if this is the virtual server */ + int is_virtual; + /** Config vector containing pointers to modules' per-server config + * structures. */ + struct ap_conf_vector_t *module_config; + /** MIME type info, etc., before we start checking per-directory info */ + struct ap_conf_vector_t *lookup_defaults; + + /* Transaction handling */ + + /** I haven't got a clue */ + server_addr_rec *addrs; + /** Timeout, as an apr interval, before we give up */ + apr_interval_time_t timeout; + /** The apr interval we will wait for another request */ + apr_interval_time_t keep_alive_timeout; + /** Maximum requests per connection */ + int keep_alive_max; + /** Use persistent connections? */ + int keep_alive; + + /** Pathname for ServerPath */ + const char *path; + /** Length of path */ + int pathlen; + + /** Normal names for ServerAlias servers */ + apr_array_header_t *names; + /** Wildcarded names for ServerAlias servers */ + apr_array_header_t *wild_names; + + /** limit on size of the HTTP request line */ + int limit_req_line; + /** limit on size of any request header field */ + int limit_req_fieldsize; + /** limit on number of request header fields */ + int limit_req_fields; +}; + +typedef struct core_output_filter_ctx { + apr_bucket_brigade *b; + apr_pool_t *deferred_write_pool; /* subpool of c->pool used for resources + * which may outlive the request + */ +} core_output_filter_ctx_t; + +typedef struct core_filter_ctx { + apr_bucket_brigade *b; + apr_bucket_brigade *tmpbb; +} core_ctx_t; + +typedef struct core_net_rec { + /** Connection to the client */ + apr_socket_t *client_socket; + + /** connection record */ + conn_rec *c; + + core_output_filter_ctx_t *out_ctx; + core_ctx_t *in_ctx; +} core_net_rec; + +/** + * Examine a field value (such as a media-/content-type) string and return + * it sans any parameters; e.g., strip off any ';charset=foo' and the like. + * @param p Pool to allocate memory from + * @param intype The field to examine + * @return A copy of the field minus any parameters + */ +AP_DECLARE(char *) ap_field_noparam(apr_pool_t *p, const char *intype); + +/** + * Convert a time from an integer into a string in a specified format + * @param p The pool to allocate memory from + * @param t The time to convert + * @param fmt The format to use for the conversion + * @param gmt Convert the time for GMT? + * @return The string that represents the specified time + */ +AP_DECLARE(char *) ap_ht_time(apr_pool_t *p, apr_time_t t, const char *fmt, int gmt); + +/* String handling. The *_nc variants allow you to use non-const char **s as + arguments (unfortunately C won't automatically convert a char ** to a const + char **) */ + +/** + * Get the characters until the first occurance of a specified character + * @param p The pool to allocate memory from + * @param line The string to get the characters from + * @param stop The character to stop at + * @return A copy of the characters up to the first stop character + */ +AP_DECLARE(char *) ap_getword(apr_pool_t *p, const char **line, char stop); +/** + * Get the characters until the first occurance of a specified character + * @param p The pool to allocate memory from + * @param line The string to get the characters from + * @param stop The character to stop at + * @return A copy of the characters up to the first stop character + * @note This is the same as ap_getword(), except it doesn't use const char **. + */ +AP_DECLARE(char *) ap_getword_nc(apr_pool_t *p, char **line, char stop); + +/** + * Get the first word from a given string. A word is defined as all characters + * up to the first whitespace. + * @param p The pool to allocate memory from + * @param line The string to traverse + * @return The first word in the line + */ +AP_DECLARE(char *) ap_getword_white(apr_pool_t *p, const char **line); +/** + * Get the first word from a given string. A word is defined as all characters + * up to the first whitespace. + * @param p The pool to allocate memory from + * @param line The string to traverse + * @return The first word in the line + * @note The same as ap_getword_white(), except it doesn't use const char **. + */ +AP_DECLARE(char *) ap_getword_white_nc(apr_pool_t *p, char **line); + +/** + * Get all characters from the first occurance of @a stop to the first '\0' + * @param p The pool to allocate memory from + * @param line The line to traverse + * @param stop The character to start at + * @return A copy of all caracters after the first occurance of the specified + * character + */ +AP_DECLARE(char *) ap_getword_nulls(apr_pool_t *p, const char **line, + char stop); +/** + * Get all characters from the first occurance of @a stop to the first '\0' + * @param p The pool to allocate memory from + * @param line The line to traverse + * @param stop The character to start at + * @return A copy of all caracters after the first occurance of the specified + * character + * @note The same as ap_getword_nulls(), except it doesn't use const char **. + */ +AP_DECLARE(char *) ap_getword_nulls_nc(apr_pool_t *p, char **line, char stop); + +/** + * Get the second word in the string paying attention to quoting + * @param p The pool to allocate from + * @param line The line to traverse + * @return A copy of the string + */ +AP_DECLARE(char *) ap_getword_conf(apr_pool_t *p, const char **line); +/** + * Get the second word in the string paying attention to quoting + * @param p The pool to allocate from + * @param line The line to traverse + * @return A copy of the string + * @note The same as ap_getword_conf(), except it doesn't use const char **. + */ +AP_DECLARE(char *) ap_getword_conf_nc(apr_pool_t *p, char **line); + +/** + * Check a string for any ${ENV} environment variable construct and replace + * each them by the value of that environment variable, if it exists. If the + * environment value does not exist, leave the ${ENV} construct alone; it + * means something else. + * @param p The pool to allocate from + * @param word The string to check + * @return The string with the replaced environment variables + */ +AP_DECLARE(const char *) ap_resolve_env(apr_pool_t *p, const char * word); + +/** + * Size an HTTP header field list item, as separated by a comma. + * @param field The field to size + * @param len The length of the field + * @return The return value is a pointer to the beginning of the non-empty + * list item within the original string (or NULL if there is none) and the + * address of field is shifted to the next non-comma, non-whitespace + * character. len is the length of the item excluding any beginning whitespace. + */ +AP_DECLARE(const char *) ap_size_list_item(const char **field, int *len); + +/** + * Retrieve an HTTP header field list item, as separated by a comma, + * while stripping insignificant whitespace and lowercasing anything not in + * a quoted string or comment. + * @param p The pool to allocate from + * @param field The field to retrieve + * @return The return value is a new string containing the converted list + * item (or NULL if none) and the address pointed to by field is + * shifted to the next non-comma, non-whitespace. + */ +AP_DECLARE(char *) ap_get_list_item(apr_pool_t *p, const char **field); + +/** + * Find an item in canonical form (lowercase, no extra spaces) within + * an HTTP field value list. + * @param p The pool to allocate from + * @param line The field value list to search + * @param tok The token to search for + * @return 1 if found, 0 if not found. + */ +AP_DECLARE(int) ap_find_list_item(apr_pool_t *p, const char *line, const char *tok); + +/** + * Retrieve a token, spacing over it and returning a pointer to + * the first non-white byte afterwards. Note that these tokens + * are delimited by semis and commas and can also be delimited + * by whitespace at the caller's option. + * @param p The pool to allocate from + * @param accept_line The line to retrieve the token from + * @param accept_white Is it delimited by whitespace + * @return the first non-white byte after the token + */ +AP_DECLARE(char *) ap_get_token(apr_pool_t *p, const char **accept_line, int accept_white); + +/** + * Find http tokens, see the definition of token from RFC2068 + * @param p The pool to allocate from + * @param line The line to find the token + * @param tok The token to find + * @return 1 if the token is found, 0 otherwise + */ +AP_DECLARE(int) ap_find_token(apr_pool_t *p, const char *line, const char *tok); + +/** + * find http tokens from the end of the line + * @param p The pool to allocate from + * @param line The line to find the token + * @param tok The token to find + * @return 1 if the token is found, 0 otherwise + */ +AP_DECLARE(int) ap_find_last_token(apr_pool_t *p, const char *line, const char *tok); + +/** + * Check for an Absolute URI syntax + * @param u The string to check + * @return 1 if URI, 0 otherwise + */ +AP_DECLARE(int) ap_is_url(const char *u); + +/** + * Unescape a URL + * @param url The url to unescape + * @return 0 on success, non-zero otherwise + */ +AP_DECLARE(int) ap_unescape_url(char *url); +/** + * Unescape a URL, but leaving %2f (slashes) escaped + * @param url The url to unescape + * @return 0 on success, non-zero otherwise + */ +AP_DECLARE(int) ap_unescape_url_keep2f(char *url); +/** + * Convert all double slashes to single slashes + * @param name The string to convert + */ +AP_DECLARE(void) ap_no2slash(char *name); + +/** + * Remove all ./ and xx/../ substrings from a file name. Also remove + * any leading ../ or /../ substrings. + * @param name the file name to parse + */ +AP_DECLARE(void) ap_getparents(char *name); + +/** + * Escape a path segment, as defined in RFC 1808 + * @param p The pool to allocate from + * @param s The path to convert + * @return The converted URL + */ +AP_DECLARE(char *) ap_escape_path_segment(apr_pool_t *p, const char *s); +/** + * convert an OS path to a URL in an OS dependant way. + * @param p The pool to allocate from + * @param path The path to convert + * @param partial if set, assume that the path will be appended to something + * with a '/' in it (and thus does not prefix "./") + * @return The converted URL + */ +AP_DECLARE(char *) ap_os_escape_path(apr_pool_t *p, const char *path, int partial); +/** @see ap_os_escape_path */ +#define ap_escape_uri(ppool,path) ap_os_escape_path(ppool,path,1) + +/** + * Escape an html string + * @param p The pool to allocate from + * @param s The html to escape + * @return The escaped string + */ +AP_DECLARE(char *) ap_escape_html(apr_pool_t *p, const char *s); + +/** + * Escape a string for logging + * @param p The pool to allocate from + * @param str The string to escape + * @return The escaped string + */ +AP_DECLARE(char *) ap_escape_logitem(apr_pool_t *p, const char *str); + +/** + * Escape a string for logging into the error log (without a pool) + * @param dest The buffer to write to + * @param source The string to escape + * @param buflen The buffer size for the escaped string (including \0) + * @return The len of the escaped string (always < maxlen) + */ +AP_DECLARE(apr_size_t) ap_escape_errorlog_item(char *dest, const char *source, + apr_size_t buflen); + +/** + * Construct a full hostname + * @param p The pool to allocate from + * @param hostname The hostname of the server + * @param port The port the server is running on + * @param r The current request + * @return The server's hostname + */ +AP_DECLARE(char *) ap_construct_server(apr_pool_t *p, const char *hostname, + apr_port_t port, const request_rec *r); +/** + * Escape a shell command + * @param p The pool to allocate from + * @param s The command to escape + * @return The escaped shell command + */ +AP_DECLARE(char *) ap_escape_shell_cmd(apr_pool_t *p, const char *s); + +/** + * Count the number of directories in a path + * @param path The path to count + * @return The number of directories + */ +AP_DECLARE(int) ap_count_dirs(const char *path); + +/** + * Copy at most @a n leading directories of @a s into @a d. @a d + * should be at least as large as @a s plus 1 extra byte + * + * @param d The location to copy to + * @param s The location to copy from + * @param n The number of directories to copy + * @return value is the ever useful pointer to the trailing \0 of d + * @note on platforms with drive letters, n = 0 returns the "/" root, + * whereas n = 1 returns the "d:/" root. On all other platforms, n = 0 + * returns the empty string. */ +AP_DECLARE(char *) ap_make_dirstr_prefix(char *d, const char *s, int n); + +/** + * Return the parent directory name (including trailing /) of the file + * @a s + * @param p The pool to allocate from + * @param s The file to get the parent of + * @return A copy of the file's parent directory + */ +AP_DECLARE(char *) ap_make_dirstr_parent(apr_pool_t *p, const char *s); + +/** + * Given a directory and filename, create a single path from them. This + * function is smart enough to ensure that there is a sinlge '/' between the + * directory and file names + * @param a The pool to allocate from + * @param dir The directory name + * @param f The filename + * @return A copy of the full path + * @tip Never consider using this function if you are dealing with filesystem + * names that need to remain canonical, unless you are merging an apr_dir_read + * path and returned filename. Otherwise, the result is not canonical. + */ +AP_DECLARE(char *) ap_make_full_path(apr_pool_t *a, const char *dir, const char *f); + +/** + * Test if the given path has an an absolute path. + * @param p The pool to allocate from + * @param dir The directory name + * @tip The converse is not necessarily true, some OS's (Win32/OS2/Netware) have + * multiple forms of absolute paths. This only reports if the path is absolute + * in a canonical sense. + */ +AP_DECLARE(int) ap_os_is_path_absolute(apr_pool_t *p, const char *dir); + +/** + * Does the provided string contain wildcard characters? This is useful + * for determining if the string should be passed to strcmp_match or to strcmp. + * The only wildcard characters recognized are '?' and '*' + * @param str The string to check + * @return 1 if the string has wildcards, 0 otherwise + */ +AP_DECLARE(int) ap_is_matchexp(const char *str); + +/** + * Determine if a string matches a patterm containing the wildcards '?' or '*' + * @param str The string to check + * @param expected The pattern to match against + * @return 1 if the two strings match, 0 otherwise + */ +AP_DECLARE(int) ap_strcmp_match(const char *str, const char *expected); +/** + * Determine if a string matches a patterm containing the wildcards '?' or '*', + * ignoring case + * @param str The string to check + * @param expected The pattern to match against + * @return 1 if the two strings match, 0 otherwise + */ +AP_DECLARE(int) ap_strcasecmp_match(const char *str, const char *expected); + +/** + * Find the first occurrence of the substring s2 in s1, regardless of case + * @param s1 The string to search + * @param s2 The substring to search for + * @return A pointer to the beginning of the substring + * @remark See apr_strmatch() for a faster alternative + */ +AP_DECLARE(char *) ap_strcasestr(const char *s1, const char *s2); + +/** + * Return a pointer to the location inside of bigstring immediately after prefix + * @param bigstring The input string + * @param prefix The prefix to strip away + * @return A pointer relative to bigstring after prefix + */ +AP_DECLARE(const char *) ap_stripprefix(const char *bigstring, + const char *prefix); + +/** + * Decode a base64 encoded string into memory allocated from a pool + * @param p The pool to allocate from + * @param bufcoded The encoded string + * @return The decoded string + */ +AP_DECLARE(char *) ap_pbase64decode(apr_pool_t *p, const char *bufcoded); + +/** + * Encode a string into memory allocated from a pool in base 64 format + * @param p The pool to allocate from + * @param strin The plaintext string + * @return The encoded string + */ +AP_DECLARE(char *) ap_pbase64encode(apr_pool_t *p, char *string); + + +/** + * Compile a regular expression to be used later + * @param p The pool to allocate from + * @param pattern the regular expression to compile + * @param cflags The bitwise or of one or more of the following: + * @li #REG_EXTENDED - Use POSIX extended Regular Expressions + * @li #REG_ICASE - Ignore case + * @li #REG_NOSUB - Support for substring addressing of matches + * not required + * @li #REG_NEWLINE - Match-any-character operators don't match new-line + * @return The compiled regular expression + */ +AP_DECLARE(regex_t *) ap_pregcomp(apr_pool_t *p, const char *pattern, + int cflags); + +/** + * Free the memory associated with a compiled regular expression + * @param p The pool the regex was allocated from + * @param reg The regular expression to free + */ +AP_DECLARE(void) ap_pregfree(apr_pool_t *p, regex_t *reg); + +/** + * Match a null-terminated string against a pre-compiled regex. + * @param preg The pre-compiled regex + * @param string The string to match + * @param nmatch Provide information regarding the location of any matches + * @param pmatch Provide information regarding the location of any matches + * @param eflags Bitwise or of any of: + * @li #REG_NOTBOL - match-beginning-of-line operator always + * fails to match + * @li #REG_NOTEOL - match-end-of-line operator always fails to match + * @return 0 for successful match, #REG_NOMATCH otherwise + */ +AP_DECLARE(int) ap_regexec(regex_t *preg, const char *string, + size_t nmatch, regmatch_t pmatch[], int eflags); + +/** + * Return the error code returned by regcomp or regexec into error messages + * @param errcode the error code returned by regexec or regcomp + * @param preg The precompiled regex + * @param errbuf A buffer to store the error in + * @param errbuf_size The size of the buffer + */ +AP_DECLARE(size_t) ap_regerror(int errcode, const regex_t *preg, + char *errbuf, size_t errbuf_size); + +/** + * After performing a successful regex match, you may use this function to + * perform a series of string substitutions based on subexpressions that were + * matched during the call to ap_regexec + * @param p The pool to allocate from + * @param input An arbitrary string containing $1 through $9. These are + * replaced with the corresponding matched sub-expressions + * @param source The string that was originally matched to the regex + * @param nmatch the nmatch returned from ap_pregex + * @param pmatch the pmatch array returned from ap_pregex + */ +AP_DECLARE(char *) ap_pregsub(apr_pool_t *p, const char *input, const char *source, + size_t nmatch, regmatch_t pmatch[]); + +/** + * We want to downcase the type/subtype for comparison purposes + * but nothing else because ;parameter=foo values are case sensitive. + * @param s The content-type to convert to lowercase + */ +AP_DECLARE(void) ap_content_type_tolower(char *s); + +/** + * convert a string to all lowercase + * @param s The string to convert to lowercase + */ +AP_DECLARE(void) ap_str_tolower(char *s); + +/** + * Search a string from left to right for the first occurrence of a + * specific character + * @param str The string to search + * @param c The character to search for + * @return The index of the first occurrence of c in str + */ +AP_DECLARE(int) ap_ind(const char *str, char c); /* Sigh... */ + +/** + * Search a string from right to left for the first occurrence of a + * specific character + * @param str The string to search + * @param c The character to search for + * @return The index of the first occurrence of c in str + */ +AP_DECLARE(int) ap_rind(const char *str, char c); + +/** + * Given a string, replace any bare " with \" . + * @param p The pool to allocate memory from + * @param instring The string to search for " + * @return A copy of the string with escaped quotes + */ +AP_DECLARE(char *) ap_escape_quotes(apr_pool_t *p, const char *instring); + +/* Misc system hackery */ +/** + * Given the name of an object in the file system determine if it is a directory + * @param p The pool to allocate from + * @param name The name of the object to check + * @return 1 if it is a directory, 0 otherwise + */ +AP_DECLARE(int) ap_is_rdirectory(apr_pool_t *p, const char *name); + +/** + * Given the name of an object in the file system determine if it is a directory - this version is symlink aware + * @param p The pool to allocate from + * @param name The name of the object to check + * @return 1 if it is a directory, 0 otherwise + */ +AP_DECLARE(int) ap_is_directory(apr_pool_t *p, const char *name); + +#ifdef _OSD_POSIX +extern const char *os_set_account(apr_pool_t *p, const char *account); +extern int os_init_job_environment(server_rec *s, const char *user_name, int one_process); +#endif /* _OSD_POSIX */ + +/** + * Determine the local host name for the current machine + * @param p The pool to allocate from + * @return A copy of the local host name + */ +char *ap_get_local_host(apr_pool_t *p); + +/** + * Log an assertion to the error log + * @param szExp The assertion that failed + * @param szFile The file the assertion is in + * @param nLine The line the assertion is defined on + */ +AP_DECLARE(void) ap_log_assert(const char *szExp, const char *szFile, int nLine) + __attribute__((noreturn)); + +/** @internal */ +#define ap_assert(exp) ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__)) + +/** + * Redefine assert() to something more useful for an Apache... + * + * Use ap_assert() if the condition should always be checked. + * Use AP_DEBUG_ASSERT() if the condition should only be checked when AP_DEBUG + * is defined. + */ + +#ifdef AP_DEBUG +#define AP_DEBUG_ASSERT(exp) ap_assert(exp) +#else +#define AP_DEBUG_ASSERT(exp) ((void)0) +#endif + +/** + * @defgroup stopsignal flags which indicate places where the sever should stop for debugging. + * @{ + * A set of flags which indicate places where the server should raise(SIGSTOP). + * This is useful for debugging, because you can then attach to that process + * with gdb and continue. This is important in cases where one_process + * debugging isn't possible. + */ +/** stop on a Detach */ +#define SIGSTOP_DETACH 1 +/** stop making a child process */ +#define SIGSTOP_MAKE_CHILD 2 +/** stop spawning a child process */ +#define SIGSTOP_SPAWN_CHILD 4 +/** stop spawning a child process with a piped log */ +#define SIGSTOP_PIPED_LOG_SPAWN 8 +/** stop spawning a CGI child process */ +#define SIGSTOP_CGI_CHILD 16 + +/** Macro to get GDB started */ +#ifdef DEBUG_SIGSTOP +extern int raise_sigstop_flags; +#define RAISE_SIGSTOP(x) do { \ + if (raise_sigstop_flags & SIGSTOP_##x) raise(SIGSTOP);\ + } while (0) +#else +#define RAISE_SIGSTOP(x) +#endif +/** @} */ +/** + * Get HTML describing the address and (optionally) admin of the server. + * @param prefix Text which is prepended to the return value + * @param r The request_rec + * @return HTML describing the server, allocated in @a r's pool. + */ +AP_DECLARE(const char *) ap_psignature(const char *prefix, request_rec *r); + +/** strtoul does not exist on sunos4. */ +#ifdef strtoul +#undef strtoul +#endif +#define strtoul strtoul_is_not_a_portable_function_use_strtol_instead + + /* The C library has functions that allow const to be silently dropped ... + these macros detect the drop in maintainer mode, but use the native + methods for normal builds + + Note that on some platforms (e.g., AIX with gcc, Solaris with gcc), string.h needs + to be included before the macros are defined or compilation will fail. + */ +#include + +AP_DECLARE(char *) ap_strchr(char *s, int c); +AP_DECLARE(const char *) ap_strchr_c(const char *s, int c); +AP_DECLARE(char *) ap_strrchr(char *s, int c); +AP_DECLARE(const char *) ap_strrchr_c(const char *s, int c); +AP_DECLARE(char *) ap_strstr(char *s, const char *c); +AP_DECLARE(const char *) ap_strstr_c(const char *s, const char *c); + +#ifdef AP_DEBUG + +#undef strchr +# define strchr(s, c) ap_strchr(s,c) +#undef strrchr +# define strrchr(s, c) ap_strrchr(s,c) +#undef strstr +# define strstr(s, c) ap_strstr(s,c) + +#else + +/** use this instead of strchr */ +# define ap_strchr(s, c) strchr(s, c) +/** use this instead of strchr */ +# define ap_strchr_c(s, c) strchr(s, c) +/** use this instead of strrchr */ +# define ap_strrchr(s, c) strrchr(s, c) +/** use this instead of strrchr */ +# define ap_strrchr_c(s, c) strrchr(s, c) +/** use this instead of strrstr*/ +# define ap_strstr(s, c) strstr(s, c) +/** use this instead of strrstr*/ +# define ap_strstr_c(s, c) strstr(s, c) + +#endif + +#define AP_NORESTART APR_OS_START_USEERR + 1 + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_HTTPD_H */ diff --git a/rubbos/app/apache2/include/mod_cgi.h b/rubbos/app/apache2/include/mod_cgi.h new file mode 100644 index 00000000..9a54895a --- /dev/null +++ b/rubbos/app/apache2/include/mod_cgi.h @@ -0,0 +1,62 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _MOD_CGI_H +#define _MOD_CGI_H 1 + +#include "mod_include.h" + +#define AP_PROC_DETACHED 1 +#define AP_PROC_NEWADDRSPACE 2 + +typedef enum {RUN_AS_SSI, RUN_AS_CGI} prog_types; + +typedef struct { + apr_int32_t in_pipe; + apr_int32_t out_pipe; + apr_int32_t err_pipe; + int process_cgi; + apr_cmdtype_e cmd_type; + apr_int32_t detached; /* used as a bitfield for detached_ & addrspace_set, */ + /* when initializing apr_proc_attr structure */ + prog_types prog_type; + apr_bucket_brigade **bb; + include_ctx_t *ctx; + ap_filter_t *next; +} cgi_exec_info_t; + +/** + * Registerable optional function to override CGI behavior; + * Reprocess the command and arguments to execute the given CGI script. + * @param cmd Pointer to the command to execute (may be overridden) + * @param argv Pointer to the arguments to pass (may be overridden) + * @param r The current request + * @param p The pool to allocate correct cmd/argv elements within. + * @param process_cgi Set true if processing r->filename and r->args + * as a CGI invocation, otherwise false + * @param type Set to APR_SHELLCMD or APR_PROGRAM on entry, may be + * changed to invoke the program with alternate semantics. + * @param detach Should the child start in detached state? Default is no. + * @remark This callback may be registered by the os-specific module + * to correct the command and arguments for apr_proc_create invocation + * on a given os. mod_cgi will call the function if registered. + */ +APR_DECLARE_OPTIONAL_FN(apr_status_t, ap_cgi_build_command, + (const char **cmd, const char ***argv, + request_rec *r, apr_pool_t *p, + cgi_exec_info_t *e_info)); + +#endif /* _MOD_CGI_H */ diff --git a/rubbos/app/apache2/include/mod_core.h b/rubbos/app/apache2/include/mod_core.h new file mode 100644 index 00000000..093f38d1 --- /dev/null +++ b/rubbos/app/apache2/include/mod_core.h @@ -0,0 +1,80 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOD_CORE_H +#define MOD_CORE_H + +#include "apr.h" +#include "apr_buckets.h" + +#include "httpd.h" +#include "util_filter.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package mod_core private header file + */ + +/* Handles for core filters */ +extern AP_DECLARE_DATA ap_filter_rec_t *ap_http_input_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_http_header_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_chunk_filter_handle; +extern AP_DECLARE_DATA ap_filter_rec_t *ap_byterange_filter_handle; + +/* + * These (input) filters are internal to the mod_core operation. + */ +apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b, + ap_input_mode_t mode, apr_read_type_e block, + apr_off_t readbytes); + +char *ap_response_code_string(request_rec *r, int error_index); + +/** + * Send the minimal part of an HTTP response header. + * @param r The current request + * @param bb The brigade to add the header to. + * @warning Modules should be very careful about using this, and should + * the default behavior. Much of the HTTP/1.1 implementation + * correctness depends on the full headers. + * @deffunc void ap_basic_http_header(request_rec *r, apr_bucket_brigade *bb) + */ +AP_DECLARE(void) ap_basic_http_header(request_rec *r, apr_bucket_brigade *bb); + +/** + * Send an appropriate response to an http TRACE request. + * @param r The current request + * @tip returns DONE or the HTTP status error if it handles the TRACE, + * or DECLINED if the request was not for TRACE. + * request method was not TRACE. + */ +AP_DECLARE_NONSTD(int) ap_send_http_trace(request_rec *r); + +/** + * Send an appropriate response to an http OPTIONS request. + * @param r The current request + */ +AP_DECLARE(int) ap_send_http_options(request_rec *r); + +#ifdef __cplusplus +} +#endif + +#endif /* !MOD_CORE_H */ diff --git a/rubbos/app/apache2/include/mod_dav.h b/rubbos/app/apache2/include/mod_dav.h new file mode 100644 index 00000000..0fb9ac9b --- /dev/null +++ b/rubbos/app/apache2/include/mod_dav.h @@ -0,0 +1,2420 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* +** DAV extension module for Apache 2.0.* +*/ + +#ifndef _MOD_DAV_H_ +#define _MOD_DAV_H_ + +#include "apr_hooks.h" +#include "apr_hash.h" +#include "apr_dbm.h" +#include "apr_tables.h" + +#include "httpd.h" +#include "util_filter.h" +#include "util_xml.h" + +#include /* for INT_MAX */ +#include /* for time_t */ + +#ifdef __cplusplus +extern "C" { +#endif + + +#define DAV_VERSION AP_SERVER_BASEREVISION + +#define DAV_XML_HEADER "" +#define DAV_XML_CONTENT_TYPE "text/xml; charset=\"utf-8\"" + +#define DAV_READ_BLOCKSIZE 2048 /* used for reading input blocks */ + +#define DAV_RESPONSE_BODY_1 "\n\n" +#define DAV_RESPONSE_BODY_2 "\n\n

    " +#define DAV_RESPONSE_BODY_3 "

    \n

    " +#define DAV_RESPONSE_BODY_4 "

    \n" +#define DAV_RESPONSE_BODY_5 "\n" + +#define DAV_DO_COPY 0 +#define DAV_DO_MOVE 1 + + +#if 1 +#define DAV_DEBUG 1 +#define DEBUG_CR "\n" +#define DBG0(f) ap_log_error(APLOG_MARK, \ + APLOG_ERR, 0, NULL, (f)) +#define DBG1(f,a1) ap_log_error(APLOG_MARK, \ + APLOG_ERR, 0, NULL, f, a1) +#define DBG2(f,a1,a2) ap_log_error(APLOG_MARK, \ + APLOG_ERR, 0, NULL, f, a1, a2) +#define DBG3(f,a1,a2,a3) ap_log_error(APLOG_MARK, \ + APLOG_ERR, 0, NULL, f, a1, a2, a3) +#else +#undef DAV_DEBUG +#define DEBUG_CR "" +#endif + +#define DAV_INFINITY INT_MAX /* for the Depth: header */ + +/* Create a set of DAV_DECLARE(type), DAV_DECLARE_NONSTD(type) and + * DAV_DECLARE_DATA with appropriate export and import tags for the platform + */ +#if !defined(WIN32) +#define DAV_DECLARE(type) type +#define DAV_DECLARE_NONSTD(type) type +#define DAV_DECLARE_DATA +#elif defined(DAV_DECLARE_STATIC) +#define DAV_DECLARE(type) type __stdcall +#define DAV_DECLARE_NONSTD(type) type +#define DAV_DECLARE_DATA +#elif defined(DAV_DECLARE_EXPORT) +#define DAV_DECLARE(type) __declspec(dllexport) type __stdcall +#define DAV_DECLARE_NONSTD(type) __declspec(dllexport) type +#define DAV_DECLARE_DATA __declspec(dllexport) +#else +#define DAV_DECLARE(type) __declspec(dllimport) type __stdcall +#define DAV_DECLARE_NONSTD(type) __declspec(dllimport) type +#define DAV_DECLARE_DATA __declspec(dllimport) +#endif + +/* -------------------------------------------------------------------- +** +** ERROR MANAGEMENT +*/ + +/* +** dav_error structure. +** +** In most cases, mod_dav uses a pointer to a dav_error structure. If the +** pointer is NULL, then no error has occurred. +** +** In certain cases, a dav_error structure is directly used. In these cases, +** a status value of 0 means that an error has not occurred. +** +** Note: this implies that status != 0 whenever an error occurs. +** +** The desc field is optional (it may be NULL). When NULL, it typically +** implies that Apache has a proper description for the specified status. +*/ +typedef struct dav_error { + int status; /* suggested HTTP status (0 for no error) */ + int error_id; /* DAV-specific error ID */ + const char *desc; /* DAV:responsedescription and error log */ + + int save_errno; /* copy of errno causing the error */ + + const char *namespace; /* [optional] namespace of error */ + const char *tagname; /* name of error-tag */ + + struct dav_error *prev; /* previous error (in stack) */ + +} dav_error; + +/* +** Create a new error structure. save_errno will be filled with the current +** errno value. +*/ +DAV_DECLARE(dav_error*) dav_new_error(apr_pool_t *p, int status, + int error_id, const char *desc); + + +/* +** Create a new error structure with tagname and (optional) namespace; +** namespace may be NULL, which means "DAV:". save_errno will be +** filled with the current errno value. +*/ +DAV_DECLARE(dav_error*) dav_new_error_tag(apr_pool_t *p, int status, + int error_id, const char *desc, + const char *namespace, + const char *tagname); + + +/* +** Push a new error description onto the stack of errors. +** +** This function is used to provide an additional description to an existing +** error. +** +** should contain the caller's view of what the current status is, +** given the underlying error. If it doesn't have a better idea, then the +** caller should pass prev->status. +** +** can specify a new error_id since the topmost description has +** changed. +*/ +DAV_DECLARE(dav_error*) dav_push_error(apr_pool_t *p, int status, int error_id, + const char *desc, dav_error *prev); + + +/* error ID values... */ + +/* IF: header errors */ +#define DAV_ERR_IF_PARSE 100 /* general parsing error */ +#define DAV_ERR_IF_MULTIPLE_NOT 101 /* multiple "Not" found */ +#define DAV_ERR_IF_UNK_CHAR 102 /* unknown char in header */ +#define DAV_ERR_IF_ABSENT 103 /* no locktokens given */ +#define DAV_ERR_IF_TAGGED 104 /* in parsing tagged-list */ +#define DAV_ERR_IF_UNCLOSED_PAREN 105 /* in no-tagged-list */ + +/* Prop DB errors */ +#define DAV_ERR_PROP_BAD_MAJOR 200 /* major version was wrong */ +#define DAV_ERR_PROP_READONLY 201 /* prop is read-only */ +#define DAV_ERR_PROP_NO_DATABASE 202 /* writable db not avail */ +#define DAV_ERR_PROP_NOT_FOUND 203 /* prop not found */ +#define DAV_ERR_PROP_BAD_LOCKDB 204 /* could not open lockdb */ +#define DAV_ERR_PROP_OPENING 205 /* problem opening propdb */ +#define DAV_ERR_PROP_EXEC 206 /* problem exec'ing patch */ + +/* Predefined DB errors */ +/* ### any to define?? */ + +/* Predefined locking system errors */ +#define DAV_ERR_LOCK_OPENDB 400 /* could not open lockdb */ +#define DAV_ERR_LOCK_NO_DB 401 /* no database defined */ +#define DAV_ERR_LOCK_CORRUPT_DB 402 /* DB is corrupt */ +#define DAV_ERR_LOCK_UNK_STATE_TOKEN 403 /* unknown State-token */ +#define DAV_ERR_LOCK_PARSE_TOKEN 404 /* bad opaquelocktoken */ +#define DAV_ERR_LOCK_SAVE_LOCK 405 /* err saving locks */ + +/* +** Some comments on Error ID values: +** +** The numbers do not necessarily need to be unique. Uniqueness simply means +** that two errors that have not been predefined above can be distinguished +** from each other. At the moment, mod_dav does not use this distinguishing +** feature, but it could be used in the future to collapse elements +** into groups based on the error ID (and associated responsedescription). +** +** If a compute_desc is provided, then the error ID should be unique within +** the context of the compute_desc function (so the function can figure out +** what to filled into the desc). +** +** Basically, subsystems can ignore defining new error ID values if they want +** to. The subsystems *do* need to return the predefined errors when +** appropriate, so that mod_dav can figure out what to do. Subsystems can +** simply leave the error ID field unfilled (zero) if there isn't an error +** that must be placed there. +*/ + + +/* -------------------------------------------------------------------- +** +** HOOK STRUCTURES +** +** These are here for forward-declaration purposes. For more info, see +** the section title "HOOK HANDLING" for more information, plus each +** structure definition. +*/ + +/* forward-declare this structure */ +typedef struct dav_hooks_propdb dav_hooks_propdb; +typedef struct dav_hooks_locks dav_hooks_locks; +typedef struct dav_hooks_vsn dav_hooks_vsn; +typedef struct dav_hooks_repository dav_hooks_repository; +typedef struct dav_hooks_liveprop dav_hooks_liveprop; +typedef struct dav_hooks_binding dav_hooks_binding; +typedef struct dav_hooks_search dav_hooks_search; + +/* ### deprecated name */ +typedef dav_hooks_propdb dav_hooks_db; + + +/* -------------------------------------------------------------------- +** +** RESOURCE HANDLING +*/ + +/* +** Resource Types: +** The base protocol defines only file and collection resources. +** The versioning protocol defines several additional resource types +** to represent artifacts of a version control system. +** +** This enumeration identifies the type of URL used to identify the +** resource. Since the same resource may have more than one type of +** URL which can identify it, dav_resource_type cannot be used +** alone to determine the type of the resource; attributes of the +** dav_resource object must also be consulted. +*/ +typedef enum { + DAV_RESOURCE_TYPE_UNKNOWN, + + DAV_RESOURCE_TYPE_REGULAR, /* file or collection; could be + * unversioned, or version selector, + * or baseline selector */ + + DAV_RESOURCE_TYPE_VERSION, /* version or baseline URL */ + + DAV_RESOURCE_TYPE_HISTORY, /* version or baseline history URL */ + + DAV_RESOURCE_TYPE_WORKING, /* working resource URL */ + + DAV_RESOURCE_TYPE_WORKSPACE, /* workspace URL */ + + DAV_RESOURCE_TYPE_ACTIVITY, /* activity URL */ + + DAV_RESOURCE_TYPE_PRIVATE /* repository-private type */ + +} dav_resource_type; + +/* +** Opaque, repository-specific information for a resource. +*/ +typedef struct dav_resource_private dav_resource_private; + +/* +** Resource descriptor, generated by a repository provider. +** +** Note: the lock-null state is not explicitly represented here, +** since it may be expensive to compute. Use dav_get_resource_state() +** to determine whether a non-existent resource is a lock-null resource. +** +** A quick explanation of how the flags can apply to different resources: +** +** unversioned file or collection: +** type = DAV_RESOURCE_TYPE_REGULAR +** exists = ? (1 if exists) +** collection = ? (1 if collection) +** versioned = 0 +** baselined = 0 +** working = 0 +** +** version-controlled resource or configuration: +** type = DAV_RESOURCE_TYPE_REGULAR +** exists = 1 +** collection = ? (1 if collection) +** versioned = 1 +** baselined = ? (1 if configuration) +** working = ? (1 if checked out) +** +** version/baseline history: +** type = DAV_RESOURCE_TYPE_HISTORY +** exists = 1 +** collection = 0 +** versioned = 0 +** baselined = 0 +** working = 0 +** +** version/baseline: +** type = DAV_RESOURCE_TYPE_VERSION +** exists = 1 +** collection = ? (1 if collection) +** versioned = 1 +** baselined = ? (1 if baseline) +** working = 0 +** +** working resource: +** type = DAV_RESOURCE_TYPE_WORKING +** exists = 1 +** collection = ? (1 if collection) +** versioned = 1 +** baselined = 0 +** working = 1 +** +** workspace: +** type = DAV_RESOURCE_TYPE_WORKSPACE +** exists = ? (1 if exists) +** collection = 1 +** versioned = ? (1 if version-controlled) +** baselined = ? (1 if baseline-controlled) +** working = ? (1 if checked out) +** +** activity: +** type = DAV_RESOURCE_TYPE_ACTIVITY +** exists = ? (1 if exists) +** collection = 0 +** versioned = 0 +** baselined = 0 +** working = 0 +*/ +typedef struct dav_resource { + dav_resource_type type; + + int exists; /* 0 => null resource */ + + int collection; /* 0 => file; can be 1 for + * REGULAR, VERSION, and WORKING resources, + * and is always 1 for WORKSPACE */ + + int versioned; /* 0 => unversioned; can be 1 for + * REGULAR and WORKSPACE resources, + * and is always 1 for VERSION and WORKING */ + + int baselined; /* 0 => not baselined; can be 1 for + * REGULAR, VERSION, and WORKSPACE resources; + * versioned == 1 when baselined == 1 */ + + int working; /* 0 => not checked out; can be 1 for + * REGULAR and WORKSPACE resources, + * and is always 1 for WORKING */ + + const char *uri; /* the URI for this resource */ + + dav_resource_private *info; /* the provider's private info */ + + const dav_hooks_repository *hooks; /* hooks used for this resource */ + + /* When allocating items related specifically to this resource, the + following pool should be used. Its lifetime will be at least as + long as the dav_resource structure. */ + apr_pool_t *pool; + +} dav_resource; + +/* +** Lock token type. Lock providers define the details of a lock token. +** However, all providers are expected to at least be able to parse +** the "opaquelocktoken" scheme, which is represented by a uuid_t. +*/ +typedef struct dav_locktoken dav_locktoken; + + +/* -------------------------------------------------------------------- +** +** BUFFER HANDLING +** +** These buffers are used as a lightweight buffer reuse mechanism. Apache +** provides sub-pool creation and destruction to much the same effect, but +** the sub-pools are a bit more general and heavyweight than these buffers. +*/ + +/* buffer for reuse; can grow to accomodate needed size */ +typedef struct +{ + apr_size_t alloc_len; /* how much has been allocated */ + apr_size_t cur_len; /* how much is currently being used */ + char *buf; /* buffer contents */ +} dav_buffer; +#define DAV_BUFFER_MINSIZE 256 /* minimum size for buffer */ +#define DAV_BUFFER_PAD 64 /* amount of pad when growing */ + +/* set the cur_len to the given size and ensure space is available */ +DAV_DECLARE(void) dav_set_bufsize(apr_pool_t *p, dav_buffer *pbuf, + apr_size_t size); + +/* initialize a buffer and copy the specified (null-term'd) string into it */ +DAV_DECLARE(void) dav_buffer_init(apr_pool_t *p, dav_buffer *pbuf, + const char *str); + +/* check that the buffer can accomodate more bytes */ +DAV_DECLARE(void) dav_check_bufsize(apr_pool_t *p, dav_buffer *pbuf, + apr_size_t extra_needed); + +/* append a string to the end of the buffer, adjust length */ +DAV_DECLARE(void) dav_buffer_append(apr_pool_t *p, dav_buffer *pbuf, + const char *str); + +/* place a string on the end of the buffer, do NOT adjust length */ +DAV_DECLARE(void) dav_buffer_place(apr_pool_t *p, dav_buffer *pbuf, + const char *str); + +/* place some memory on the end of a buffer; do NOT adjust length */ +DAV_DECLARE(void) dav_buffer_place_mem(apr_pool_t *p, dav_buffer *pbuf, + const void *mem, apr_size_t amt, + apr_size_t pad); + + +/* -------------------------------------------------------------------- +** +** HANDY UTILITIES +*/ + +/* contains results from one of the getprop functions */ +typedef struct +{ + apr_text * propstats; /* element text */ + apr_text * xmlns; /* namespace decls for elem */ +} dav_get_props_result; + +/* holds the contents of a element */ +typedef struct dav_response +{ + const char *href; /* always */ + const char *desc; /* optional description at level */ + + /* use status if propresult.propstats is NULL. */ + dav_get_props_result propresult; + + int status; + + struct dav_response *next; +} dav_response; + +typedef struct +{ + request_rec *rnew; /* new subrequest */ + dav_error err; /* potential error response */ +} dav_lookup_result; + + +DAV_DECLARE(dav_lookup_result) dav_lookup_uri(const char *uri, request_rec *r, + int must_be_absolute); + +/* defines type of property info a provider is to return */ +typedef enum { + DAV_PROP_INSERT_NOTDEF, /* property is defined by this provider, + but nothing was inserted because the + (live) property is not defined for this + resource (it may be present as a dead + property). */ + DAV_PROP_INSERT_NOTSUPP, /* property is recognized by this provider, + but it is not supported, and cannot be + treated as a dead property */ + DAV_PROP_INSERT_NAME, /* a property name (empty elem) was + inserted into the text block */ + DAV_PROP_INSERT_VALUE, /* a property name/value pair was inserted + into the text block */ + DAV_PROP_INSERT_SUPPORTED /* a supported live property was added to + the text block as a + element */ +} dav_prop_insert; + +/* ### this stuff is private to dav/fs/repos.c; move it... */ +/* format a time string (buf must be at least DAV_TIMEBUF_SIZE chars) */ +#define DAV_STYLE_ISO8601 1 +#define DAV_STYLE_RFC822 2 +#define DAV_TIMEBUF_SIZE 30 + +DAV_DECLARE(int) dav_get_depth(request_rec *r, int def_depth); + +DAV_DECLARE(int) dav_validate_root(const apr_xml_doc *doc, + const char *tagname); +DAV_DECLARE(apr_xml_elem *) dav_find_child(const apr_xml_elem *elem, + const char *tagname); + +/* gather up all the CDATA into a single string */ +DAV_DECLARE(const char *) dav_xml_get_cdata(const apr_xml_elem *elem, apr_pool_t *pool, + int strip_white); + +/* +** XML namespace handling +** +** This structure tracks namespace declarations (xmlns:prefix="URI"). +** It maintains a one-to-many relationship of URIs-to-prefixes. In other +** words, one URI may be defined by many prefixes, but any specific +** prefix will specify only one URI. +** +** Prefixes using the "g###" pattern can be generated automatically if +** the caller does not have specific prefix requirements. +*/ +typedef struct { + apr_pool_t *pool; + apr_hash_t *uri_prefix; /* map URIs to an available prefix */ + apr_hash_t *prefix_uri; /* map all prefixes to their URIs */ + int count; /* counter for "g###" prefixes */ +} dav_xmlns_info; + +/* create an empty dav_xmlns_info structure */ +DAV_DECLARE(dav_xmlns_info *) dav_xmlns_create(apr_pool_t *pool); + +/* add a specific prefix/URI pair. the prefix/uri should have a lifetime + at least that of xmlns->pool */ +DAV_DECLARE(void) dav_xmlns_add(dav_xmlns_info *xi, + const char *prefix, const char *uri); + +/* add a URI (if not present); any prefix is acceptable and is returned. + the uri should have a lifetime at least that xmlns->pool */ +DAV_DECLARE(const char *) dav_xmlns_add_uri(dav_xmlns_info *xi, + const char *uri); + +/* return the URI for a specified prefix (or NULL if the prefix is unknown) */ +DAV_DECLARE(const char *) dav_xmlns_get_uri(dav_xmlns_info *xi, + const char *prefix); + +/* return an available prefix for a specified URI (or NULL if the URI + is unknown) */ +DAV_DECLARE(const char *) dav_xmlns_get_prefix(dav_xmlns_info *xi, + const char *uri); + +/* generate xmlns declarations (appending into the given text) */ +DAV_DECLARE(void) dav_xmlns_generate(dav_xmlns_info *xi, + apr_text_header *phdr); + +/* -------------------------------------------------------------------- +** +** DAV PLUGINS +*/ + +/* ### docco ... */ + +/* +** dav_provider +** +** This structure wraps up all of the hooks that a mod_dav provider can +** supply. The provider MUST supply and . The rest are +** optional and should contain NULL if that feature is not supplied. +** +** Note that a provider cannot pick and choose portions from various +** underlying implementations (which was theoretically possible in +** mod_dav 1.0). There are too many dependencies between a dav_resource +** (defined by ) and the other functionality. +** +** Live properties are not part of the dav_provider structure because they +** are handled through the APR_HOOK interface (to allow for multiple liveprop +** providers). The core always provides some properties, and then a given +** provider will add more properties. +** +** Some providers may need to associate a context with the dav_provider +** structure -- the ctx field is available for storing this context. Just +** leave it NULL if it isn't required. +*/ +typedef struct { + const dav_hooks_repository *repos; + const dav_hooks_propdb *propdb; + const dav_hooks_locks *locks; + const dav_hooks_vsn *vsn; + const dav_hooks_binding *binding; + const dav_hooks_search *search; + + void *ctx; +} dav_provider; + +/* +** gather_propsets: gather all live property propset-URIs +** +** The hook implementor should push one or more URIs into the specified +** array. These URIs are returned in the DAV: header to let clients know +** what sets of live properties are supported by the installation. mod_dav +** will place open/close angle brackets around each value (much like +** a Coded-URL); quotes and brackets should not be in the value. +** +** Example: http://apache.org/dav/props/ +** +** (of course, use your own domain to ensure a unique value) +*/ +APR_DECLARE_EXTERNAL_HOOK(dav, DAV, void, gather_propsets, + (apr_array_header_t *uris)) + +/* +** find_liveprop: find a live property, returning a non-zero, unique, +** opaque identifier. +** +** If the hook implementor determines the specified URI/name refers to +** one of its properties, then it should fill in HOOKS and return a +** non-zero value. The returned value is the "property ID" and will +** be passed to the various liveprop hook functions. +** +** Return 0 if the property is not defined by the hook implementor. +*/ +APR_DECLARE_EXTERNAL_HOOK(dav, DAV, int, find_liveprop, + (const dav_resource *resource, + const char *ns_uri, const char *name, + const dav_hooks_liveprop **hooks)) + +/* +** insert_all_liveprops: insert all (known) live property names/values. +** +** The hook implementor should append XML text to PHDR, containing liveprop +** names. If INSVALUE is true, then the property values should also be +** inserted into the output XML stream. +** +** The liveprop provider should insert *all* known and *defined* live +** properties on the specified resource. If a particular liveprop is +** not defined for this resource, then it should not be inserted. +*/ +APR_DECLARE_EXTERNAL_HOOK(dav, DAV, void, insert_all_liveprops, + (request_rec *r, const dav_resource *resource, + dav_prop_insert what, apr_text_header *phdr)) + +DAV_DECLARE(const dav_hooks_locks *) dav_get_lock_hooks(request_rec *r); +DAV_DECLARE(const dav_hooks_propdb *) dav_get_propdb_hooks(request_rec *r); +DAV_DECLARE(const dav_hooks_vsn *) dav_get_vsn_hooks(request_rec *r); +DAV_DECLARE(const dav_hooks_binding *) dav_get_binding_hooks(request_rec *r); +DAV_DECLARE(const dav_hooks_search *) dav_get_search_hooks(request_rec *r); + +DAV_DECLARE(void) dav_register_provider(apr_pool_t *p, const char *name, + const dav_provider *hooks); +DAV_DECLARE(const dav_provider *) dav_lookup_provider(const char *name); + + +/* ### deprecated */ +#define DAV_GET_HOOKS_PROPDB(r) dav_get_propdb_hooks(r) +#define DAV_GET_HOOKS_LOCKS(r) dav_get_lock_hooks(r) +#define DAV_GET_HOOKS_VSN(r) dav_get_vsn_hooks(r) +#define DAV_GET_HOOKS_BINDING(r) dav_get_binding_hooks(r) +#define DAV_GET_HOOKS_SEARCH(r) dav_get_search_hooks(r) + + +/* -------------------------------------------------------------------- +** +** IF HEADER PROCESSING +** +** Here is the definition of the If: header from RFC 2518, S9.4: +** +** If = "If" ":" (1*No-tag-list | 1*Tagged-list) +** No-tag-list = List +** Tagged-list = Resource 1*List +** Resource = Coded-URL +** List = "(" 1*(["Not"](State-token | "[" entity-tag "]")) ")" +** State-token = Coded-URL +** Coded-URL = "<" absoluteURI ">" ; absoluteURI from RFC 2616 +** +** List corresponds to dav_if_state_list. No-tag-list corresponds to +** dav_if_header with uri==NULL. Tagged-list corresponds to a sequence of +** dav_if_header structures with (duplicate) uri==Resource -- one +** dav_if_header per state_list. A second Tagged-list will start a new +** sequence of dav_if_header structures with the new URI. +** +** A summary of the semantics, mapped into our structures: +** - Chained dav_if_headers: OR +** - Chained dav_if_state_lists: AND +** - NULL uri matches all resources +*/ + +typedef enum +{ + dav_if_etag, + dav_if_opaquelock +} dav_if_state_type; + +typedef struct dav_if_state_list +{ + dav_if_state_type type; + + int condition; +#define DAV_IF_COND_NORMAL 0 +#define DAV_IF_COND_NOT 1 /* "Not" was applied */ + + const char *etag; + dav_locktoken *locktoken; + + struct dav_if_state_list *next; +} dav_if_state_list; + +typedef struct dav_if_header +{ + const char *uri; + apr_size_t uri_len; + struct dav_if_state_list *state; + struct dav_if_header *next; + + int dummy_header; /* used internally by the lock/etag validation */ +} dav_if_header; + +typedef struct dav_locktoken_list +{ + dav_locktoken *locktoken; + struct dav_locktoken_list *next; +} dav_locktoken_list; + +DAV_DECLARE(dav_error *) dav_get_locktoken_list(request_rec *r, + dav_locktoken_list **ltl); + + +/* -------------------------------------------------------------------- +** +** LIVE PROPERTY HANDLING +*/ + +/* opaque type for PROPPATCH rollback information */ +typedef struct dav_liveprop_rollback dav_liveprop_rollback; + +struct dav_hooks_liveprop +{ + /* + ** Insert property information into a text block. The property to + ** insert is identified by the propid value. The information to insert + ** is identified by the "what" argument, as follows: + ** DAV_PROP_INSERT_NAME + ** property name, as an empty XML element + ** DAV_PROP_INSERT_VALUE + ** property name/value, as an XML element + ** DAV_PROP_INSERT_SUPPORTED + ** if the property is defined on the resource, then + ** a DAV:supported-live-property element, as defined + ** by the DeltaV extensions to RFC2518. + ** + ** Providers should return DAV_PROP_INSERT_NOTDEF if the property is + ** known and not defined for this resource, so should be handled as a + ** dead property. If a provider recognizes, but does not support, a + ** property, and does not want it handled as a dead property, it should + ** return DAV_PROP_INSERT_NOTSUPP. + ** + ** Returns one of DAV_PROP_INSERT_* based on what happened. + ** + ** ### we may need more context... ie. the lock database + */ + dav_prop_insert (*insert_prop)(const dav_resource *resource, + int propid, dav_prop_insert what, + apr_text_header *phdr); + + /* + ** Determine whether a given property is writable. + ** + ** ### we may want a different semantic. i.e. maybe it should be + ** ### "can we write into this property?" + ** + ** Returns 1 if the live property can be written, 0 if read-only. + */ + int (*is_writable)(const dav_resource *resource, int propid); + + /* + ** This member defines the set of namespace URIs that the provider + ** uses for its properties. When insert_all is called, it will be + ** passed a list of integers that map from indices into this list + ** to namespace IDs for output generation. + ** + ** The last entry in this list should be a NULL value (sentinel). + */ + const char * const * namespace_uris; + + /* + ** ### this is not the final design. we want an open-ended way for + ** ### liveprop providers to attach *new* properties. To this end, + ** ### we'll have a "give me a list of the props you define", a way + ** ### to check for a prop's existence, a way to validate a set/remove + ** ### of a prop, and a way to execute/commit/rollback that change. + */ + + /* + ** Validate that the live property can be assigned a value, and that + ** the provided value is valid. + ** + ** elem will point to the XML element that names the property. For + ** example: + ** T + ** + ** The provider can access the cdata fields and the child elements + ** to extract the relevant pieces. + ** + ** operation is one of DAV_PROP_OP_SET or _DELETE. + ** + ** The provider may return a value in *context which will be passed + ** to each of the exec/commit/rollback functions. For example, this + ** may contain an internal value which has been processed from the + ** input element. + ** + ** The provider must set defer_to_dead to true (non-zero) or false. + ** If true, then the set/remove is deferred to the dead property + ** database. Note: it will be set to zero on entry. + */ + dav_error * (*patch_validate)(const dav_resource *resource, + const apr_xml_elem *elem, + int operation, + void **context, + int *defer_to_dead); + + /* ### doc... */ + dav_error * (*patch_exec)(const dav_resource *resource, + const apr_xml_elem *elem, + int operation, + void *context, + dav_liveprop_rollback **rollback_ctx); + + /* ### doc... */ + void (*patch_commit)(const dav_resource *resource, + int operation, + void *context, + dav_liveprop_rollback *rollback_ctx); + + /* ### doc... */ + dav_error * (*patch_rollback)(const dav_resource *resource, + int operation, + void *context, + dav_liveprop_rollback *rollback_ctx); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; +}; + +/* +** dav_liveprop_spec: specify a live property +** +** This structure is used as a standard way to determine if a particular +** property is a live property. Its use is not part of the mandated liveprop +** interface, but can be used by liveprop providers in conjuction with the +** utility routines below. +** +** spec->name == NULL is the defined end-sentinel for a list of specs. +*/ +typedef struct { + int ns; /* provider-local namespace index */ + const char *name; /* name of the property */ + + int propid; /* provider-local property ID */ + + int is_writable; /* is the property writable? */ + +} dav_liveprop_spec; + +/* +** dav_liveprop_group: specify a group of liveprops +** +** This structure specifies a group of live properties, their namespaces, +** and how to handle them. +*/ +typedef struct { + const dav_liveprop_spec *specs; + const char * const *namespace_uris; + const dav_hooks_liveprop *hooks; + +} dav_liveprop_group; + +/* ### docco */ +DAV_DECLARE(int) dav_do_find_liveprop(const char *ns_uri, const char *name, + const dav_liveprop_group *group, + const dav_hooks_liveprop **hooks); + +/* ### docco */ +DAV_DECLARE(int) dav_get_liveprop_info(int propid, + const dav_liveprop_group *group, + const dav_liveprop_spec **info); + +/* ### docco */ +DAV_DECLARE(void) dav_register_liveprop_group(apr_pool_t *pool, + const dav_liveprop_group *group); + +/* ### docco */ +DAV_DECLARE(int) dav_get_liveprop_ns_index(const char *uri); + +/* ### docco */ +DAV_DECLARE(int) dav_get_liveprop_ns_count(void); + +/* ### docco */ +DAV_DECLARE(void) dav_add_all_liveprop_xmlns(apr_pool_t *p, + apr_text_header *phdr); + +/* +** The following three functions are part of mod_dav's internal handling +** for the core WebDAV properties. They are not part of mod_dav's API. +*/ +DAV_DECLARE_NONSTD(int) dav_core_find_liveprop( + const dav_resource *resource, + const char *ns_uri, + const char *name, + const dav_hooks_liveprop **hooks); +DAV_DECLARE_NONSTD(void) dav_core_insert_all_liveprops( + request_rec *r, + const dav_resource *resource, + dav_prop_insert what, + apr_text_header *phdr); +DAV_DECLARE_NONSTD(void) dav_core_register_uris(apr_pool_t *p); + + +/* +** Standard WebDAV Property Identifiers +** +** A live property provider does not need to use these; they are simply +** provided for convenience. +** +** Property identifiers need to be unique within a given provider, but not +** *across* providers (note: this uniqueness constraint was different in +** older versions of mod_dav). +** +** The identifiers start at 20000 to make it easier for providers to avoid +** conflicts with the standard properties. The properties are arranged +** alphabetically, and may be reordered from time to time (as properties +** are introduced). +** +** NOTE: there is no problem with reordering (e.g. binary compat) since the +** identifiers are only used within a given provider, which would pick up +** the entire set of changes upon a recompile. +*/ +enum { + DAV_PROPID_BEGIN = 20000, + + /* Standard WebDAV properties (RFC 2518) */ + DAV_PROPID_creationdate, + DAV_PROPID_displayname, + DAV_PROPID_getcontentlanguage, + DAV_PROPID_getcontentlength, + DAV_PROPID_getcontenttype, + DAV_PROPID_getetag, + DAV_PROPID_getlastmodified, + DAV_PROPID_lockdiscovery, + DAV_PROPID_resourcetype, + DAV_PROPID_source, + DAV_PROPID_supportedlock, + + /* DeltaV properties (from the I-D (#14)) */ + DAV_PROPID_activity_checkout_set, + DAV_PROPID_activity_set, + DAV_PROPID_activity_version_set, + DAV_PROPID_auto_merge_set, + DAV_PROPID_auto_version, + DAV_PROPID_baseline_collection, + DAV_PROPID_baseline_controlled_collection, + DAV_PROPID_baseline_controlled_collection_set, + DAV_PROPID_checked_in, + DAV_PROPID_checked_out, + DAV_PROPID_checkin_fork, + DAV_PROPID_checkout_fork, + DAV_PROPID_checkout_set, + DAV_PROPID_comment, + DAV_PROPID_creator_displayname, + DAV_PROPID_current_activity_set, + DAV_PROPID_current_workspace_set, + DAV_PROPID_default_variant, + DAV_PROPID_eclipsed_set, + DAV_PROPID_label_name_set, + DAV_PROPID_merge_set, + DAV_PROPID_precursor_set, + DAV_PROPID_predecessor_set, + DAV_PROPID_root_version, + DAV_PROPID_subactivity_set, + DAV_PROPID_subbaseline_set, + DAV_PROPID_successor_set, + DAV_PROPID_supported_method_set, + DAV_PROPID_supported_live_property_set, + DAV_PROPID_supported_report_set, + DAV_PROPID_unreserved, + DAV_PROPID_variant_set, + DAV_PROPID_version_controlled_binding_set, + DAV_PROPID_version_controlled_configuration, + DAV_PROPID_version_history, + DAV_PROPID_version_name, + DAV_PROPID_workspace, + DAV_PROPID_workspace_checkout_set, + + DAV_PROPID_END +}; + +/* +** Property Identifier Registration +** +** At the moment, mod_dav requires live property providers to ensure that +** each property returned has a unique value. For now, this is done through +** central registration (there are no known providers other than the default, +** so this remains manageable). +** +** WARNING: the TEST ranges should never be "shipped". +*/ +#define DAV_PROPID_CORE 10000 /* ..10099. defined by mod_dav */ +#define DAV_PROPID_FS 10100 /* ..10299. + mod_dav filesystem provider. */ +#define DAV_PROPID_TEST1 10300 /* ..10399 */ +#define DAV_PROPID_TEST2 10400 /* ..10499 */ +#define DAV_PROPID_TEST3 10500 /* ..10599 */ +/* Next: 10600 */ + + +/* -------------------------------------------------------------------- +** +** DATABASE FUNCTIONS +*/ + +typedef struct dav_db dav_db; +typedef struct dav_namespace_map dav_namespace_map; +typedef struct dav_deadprop_rollback dav_deadprop_rollback; + +typedef struct { + const char *ns; /* "" signals "no namespace" */ + const char *name; +} dav_prop_name; + +/* hook functions to enable pluggable databases */ +struct dav_hooks_propdb +{ + dav_error * (*open)(apr_pool_t *p, const dav_resource *resource, int ro, + dav_db **pdb); + void (*close)(dav_db *db); + + /* + ** In bulk, define any namespaces that the values and their name + ** elements may need. + ** + ** Note: sometimes mod_dav will defer calling this until output_value + ** returns found==1. If the output process needs the dav_xmlns_info + ** filled for its work, then it will need to fill it on demand rather + ** than depending upon this hook to fill in the structure. + ** + ** Note: this will *always* be called during an output sequence. Thus, + ** the provider may rely solely on using this to fill the xmlns info. + */ + dav_error * (*define_namespaces)(dav_db *db, dav_xmlns_info *xi); + + /* + ** Output the value from the database (i.e. add an element name and + ** the value into *phdr). Set *found based on whether the name/value + ** was found in the propdb. + ** + ** Note: it is NOT an error for the key/value pair to not exist. + ** + ** The dav_xmlns_info passed to define_namespaces() is also passed to + ** each output_value() call so that namespaces can be added on-demand. + ** It can also be used to look up prefixes or URIs during the output + ** process. + */ + dav_error * (*output_value)(dav_db *db, const dav_prop_name *name, + dav_xmlns_info *xi, + apr_text_header *phdr, int *found); + + /* + ** Build a mapping from "global" namespaces (stored in apr_xml_*) + ** into provider-local namespace identifiers. + ** + ** This mapping should be done once per set of namespaces, and the + ** resulting mapping should be passed into the store() hook function. + ** + ** Note: usually, there is just a single document/namespaces for all + ** elements passed. However, the generality of creating multiple + ** mappings and passing them to store() is provided here. + ** + ** Note: this is only in preparation for a series of store() calls. + ** As a result, the propdb must be open for read/write access when + ** this function is called. + */ + dav_error * (*map_namespaces)(dav_db *db, + const apr_array_header_t *namespaces, + dav_namespace_map **mapping); + + /* + ** Store a property value for a given name. The value->combined field + ** MUST be set for this call. + ** + ** ### WARNING: current providers will quote the text within ELEM. + ** ### this implies you can call this function only once with a given + ** ### element structure (a second time will quote it again). + */ + dav_error * (*store)(dav_db *db, const dav_prop_name *name, + const apr_xml_elem *elem, + dav_namespace_map *mapping); + + /* remove a given property */ + dav_error * (*remove)(dav_db *db, const dav_prop_name *name); + + /* returns 1 if the record specified by "key" exists; 0 otherwise */ + int (*exists)(dav_db *db, const dav_prop_name *name); + + /* + ** Iterate over the property names in the database. + ** + ** iter->name.ns == iter->name.name == NULL when there are no more names. + ** + ** Note: only one iteration may occur over the propdb at a time. + */ + dav_error * (*first_name)(dav_db *db, dav_prop_name *pname); + dav_error * (*next_name)(dav_db *db, dav_prop_name *pname); + + /* + ** Rollback support: get rollback context, and apply it. + ** + ** struct dav_deadprop_rollback is a provider-private structure; it + ** should remember the name, and the name's old value (or the fact that + ** the value was not present, and should be deleted if a rollback occurs). + */ + dav_error * (*get_rollback)(dav_db *db, const dav_prop_name *name, + dav_deadprop_rollback **prollback); + dav_error * (*apply_rollback)(dav_db *db, + dav_deadprop_rollback *rollback); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; +}; + + +/* -------------------------------------------------------------------- +** +** LOCK FUNCTIONS +*/ + +/* Used to represent a Timeout header of "Infinity" */ +#define DAV_TIMEOUT_INFINITE 0 + +DAV_DECLARE(time_t) dav_get_timeout(request_rec *r); + +/* +** Opaque, provider-specific information for a lock database. +*/ +typedef struct dav_lockdb_private dav_lockdb_private; + +/* +** Opaque, provider-specific information for a lock record. +*/ +typedef struct dav_lock_private dav_lock_private; + +/* +** Lock database type. Lock providers are urged to implement a "lazy" open, so +** doing an "open" is cheap until something is actually needed from the DB. +*/ +typedef struct +{ + const dav_hooks_locks *hooks; /* the hooks used for this lockdb */ + int ro; /* was it opened readonly? */ + + dav_lockdb_private *info; + +} dav_lockdb; + +typedef enum { + DAV_LOCKSCOPE_UNKNOWN, + DAV_LOCKSCOPE_EXCLUSIVE, + DAV_LOCKSCOPE_SHARED +} dav_lock_scope; + +typedef enum { + DAV_LOCKTYPE_UNKNOWN, + DAV_LOCKTYPE_WRITE +} dav_lock_type; + +typedef enum { + DAV_LOCKREC_DIRECT, /* lock asserted on this resource */ + DAV_LOCKREC_INDIRECT, /* lock inherited from a parent */ + DAV_LOCKREC_INDIRECT_PARTIAL /* most info is not filled in */ +} dav_lock_rectype; + +/* +** dav_lock: hold information about a lock on a resource. +** +** This structure is used for both direct and indirect locks. A direct lock +** is a lock applied to a specific resource by the client. An indirect lock +** is one that is inherited from a parent resource by virtue of a non-zero +** Depth: header when the lock was applied. +** +** mod_dav records both types of locks in the lock database, managing their +** addition/removal as resources are moved about the namespace. +** +** Note that the lockdb is free to marshal this structure in any form that +** it likes. +** +** For a "partial" lock, the and fields must be filled +** in. All other (user) fields should be zeroed. The lock provider will +** usually fill in the field, and the field may be used to +** construct a list of partial locks. +** +** The lock provider MUST use the info field to store a value such that a +** dav_lock structure can locate itself in the underlying lock database. +** This requirement is needed for refreshing: when an indirect dav_lock is +** refreshed, its reference to the direct lock does not specify the direct's +** resource, so the only way to locate the (refreshed, direct) lock in the +** database is to use the info field. +** +** Note that only refers to the resource where this lock was +** found. +** ### hrm. that says the abstraction is wrong. is_locknull may disappear. +*/ +typedef struct dav_lock +{ + dav_lock_rectype rectype; /* type of lock record */ + int is_locknull; /* lock establishes a locknull resource */ + + /* ### put the resource in here? */ + + dav_lock_scope scope; /* scope of the lock */ + dav_lock_type type; /* type of lock */ + int depth; /* depth of the lock */ + time_t timeout; /* when the lock will timeout */ + + const dav_locktoken *locktoken; /* the token that was issued */ + + const char *owner; /* (XML) owner of the lock */ + const char *auth_user; /* auth'd username owning lock */ + + dav_lock_private *info; /* private to the lockdb */ + + struct dav_lock *next; /* for managing a list of locks */ +} dav_lock; + +/* Property-related public lock functions */ +DAV_DECLARE(const char *)dav_lock_get_activelock(request_rec *r, + dav_lock *locks, + dav_buffer *pbuf); + +/* LockDB-related public lock functions */ +DAV_DECLARE(dav_error *) dav_lock_parse_lockinfo(request_rec *r, + const dav_resource *resrouce, + dav_lockdb *lockdb, + const apr_xml_doc *doc, + dav_lock **lock_request); +DAV_DECLARE(int) dav_unlock(request_rec *r, + const dav_resource *resource, + const dav_locktoken *locktoken); +DAV_DECLARE(dav_error *) dav_add_lock(request_rec *r, + const dav_resource *resource, + dav_lockdb *lockdb, dav_lock *request, + dav_response **response); +DAV_DECLARE(dav_error *) dav_notify_created(request_rec *r, + dav_lockdb *lockdb, + const dav_resource *resource, + int resource_state, + int depth); + +DAV_DECLARE(dav_error*) dav_lock_query(dav_lockdb *lockdb, + const dav_resource *resource, + dav_lock **locks); + +DAV_DECLARE(dav_error *) dav_validate_request(request_rec *r, + dav_resource *resource, + int depth, + dav_locktoken *locktoken, + dav_response **response, + int flags, + dav_lockdb *lockdb); +/* +** flags: +** 0x0F -- reserved for values +** +** other flags, detailed below +*/ +#define DAV_VALIDATE_RESOURCE 0x0010 /* validate just the resource */ +#define DAV_VALIDATE_PARENT 0x0020 /* validate resource AND its parent */ +#define DAV_VALIDATE_ADD_LD 0x0040 /* add DAV:lockdiscovery into + the 424 DAV:response */ +#define DAV_VALIDATE_USE_424 0x0080 /* return 424 status, not 207 */ +#define DAV_VALIDATE_IS_PARENT 0x0100 /* for internal use */ + +/* Lock-null related public lock functions */ +DAV_DECLARE(int) dav_get_resource_state(request_rec *r, + const dav_resource *resource); + +/* Lock provider hooks. Locking is optional, so there may be no + * lock provider for a given repository. + */ +struct dav_hooks_locks +{ + /* Return the supportedlock property for a resource */ + const char * (*get_supportedlock)( + const dav_resource *resource + ); + + /* Parse a lock token URI, returning a lock token object allocated + * in the given pool. + */ + dav_error * (*parse_locktoken)( + apr_pool_t *p, + const char *char_token, + dav_locktoken **locktoken_p + ); + + /* Format a lock token object into a URI string, allocated in + * the given pool. + * + * Always returns non-NULL. + */ + const char * (*format_locktoken)( + apr_pool_t *p, + const dav_locktoken *locktoken + ); + + /* Compare two lock tokens. + * + * Result < 0 => lt1 < lt2 + * Result == 0 => lt1 == lt2 + * Result > 0 => lt1 > lt2 + */ + int (*compare_locktoken)( + const dav_locktoken *lt1, + const dav_locktoken *lt2 + ); + + /* Open the provider's lock database. + * + * The provider may or may not use a "real" database for locks + * (a lock could be an attribute on a resource, for example). + * + * The provider may choose to use the value of the DAVLockDB directive + * (as returned by dav_get_lockdb_path()) to decide where to place + * any storage it may need. + * + * The request storage pool should be associated with the lockdb, + * so it can be used in subsequent operations. + * + * If ro != 0, only readonly operations will be performed. + * If force == 0, the open can be "lazy"; no subsequent locking operations + * may occur. + * If force != 0, locking operations will definitely occur. + */ + dav_error * (*open_lockdb)( + request_rec *r, + int ro, + int force, + dav_lockdb **lockdb + ); + + /* Indicates completion of locking operations */ + void (*close_lockdb)( + dav_lockdb *lockdb + ); + + /* Take a resource out of the lock-null state. */ + dav_error * (*remove_locknull_state)( + dav_lockdb *lockdb, + const dav_resource *resource + ); + + /* + ** Create a (direct) lock structure for the given resource. A locktoken + ** will be created. + ** + ** The lock provider may store private information into lock->info. + */ + dav_error * (*create_lock)(dav_lockdb *lockdb, + const dav_resource *resource, + dav_lock **lock); + + /* + ** Get the locks associated with the specified resource. + ** + ** If resolve_locks is true (non-zero), then any indirect locks are + ** resolved to their actual, direct lock (i.e. the reference to followed + ** to the original lock). + ** + ** The locks, if any, are returned as a linked list in no particular + ** order. If no locks are present, then *locks will be NULL. + */ + dav_error * (*get_locks)(dav_lockdb *lockdb, + const dav_resource *resource, + int calltype, + dav_lock **locks); + +#define DAV_GETLOCKS_RESOLVED 0 /* resolve indirects to directs */ +#define DAV_GETLOCKS_PARTIAL 1 /* leave indirects partially filled */ +#define DAV_GETLOCKS_COMPLETE 2 /* fill out indirect locks */ + + /* + ** Find a particular lock on a resource (specified by its locktoken). + ** + ** *lock will be set to NULL if the lock is not found. + ** + ** Note that the provider can optimize the unmarshalling -- only one + ** lock (or none) must be constructed and returned. + ** + ** If partial_ok is true (non-zero), then an indirect lock can be + ** partially filled in. Otherwise, another lookup is done and the + ** lock structure will be filled out as a DAV_LOCKREC_INDIRECT. + */ + dav_error * (*find_lock)(dav_lockdb *lockdb, + const dav_resource *resource, + const dav_locktoken *locktoken, + int partial_ok, + dav_lock **lock); + + /* + ** Quick test to see if the resource has *any* locks on it. + ** + ** This is typically used to determine if a non-existent resource + ** has a lock and is (therefore) a locknull resource. + ** + ** WARNING: this function may return TRUE even when timed-out locks + ** exist (i.e. it may not perform timeout checks). + */ + dav_error * (*has_locks)(dav_lockdb *lockdb, + const dav_resource *resource, + int *locks_present); + + /* + ** Append the specified lock(s) to the set of locks on this resource. + ** + ** If "make_indirect" is true (non-zero), then the specified lock(s) + ** should be converted to an indirect lock (if it is a direct lock) + ** before appending. Note that the conversion to an indirect lock does + ** not alter the passed-in lock -- the change is internal the + ** append_locks function. + ** + ** Multiple locks are specified using the lock->next links. + */ + dav_error * (*append_locks)(dav_lockdb *lockdb, + const dav_resource *resource, + int make_indirect, + const dav_lock *lock); + + /* + ** Remove any lock that has the specified locktoken. + ** + ** If locktoken == NULL, then ALL locks are removed. + */ + dav_error * (*remove_lock)(dav_lockdb *lockdb, + const dav_resource *resource, + const dav_locktoken *locktoken); + + /* + ** Refresh all locks, found on the specified resource, which has a + ** locktoken in the provided list. + ** + ** If the lock is indirect, then the direct lock is referenced and + ** refreshed. + ** + ** Each lock that is updated is returned in the argument. + ** Note that the locks will be fully resolved. + */ + dav_error * (*refresh_locks)(dav_lockdb *lockdb, + const dav_resource *resource, + const dav_locktoken_list *ltl, + time_t new_time, + dav_lock **locks); + + /* + ** Look up the resource associated with a particular locktoken. + ** + ** The search begins at the specified and the lock + ** specified by . + ** + ** If the resource/token specifies an indirect lock, then the direct + ** lock will be looked up, and THAT resource will be returned. In other + ** words, this function always returns the resource where a particular + ** lock (token) was asserted. + ** + ** NOTE: this function pointer is allowed to be NULL, indicating that + ** the provider does not support this type of functionality. The + ** caller should then traverse up the repository hierarchy looking + ** for the resource defining a lock with this locktoken. + */ + dav_error * (*lookup_resource)(dav_lockdb *lockdb, + const dav_locktoken *locktoken, + const dav_resource *start_resource, + const dav_resource **resource); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; +}; + +/* what types of resources can be discovered by dav_get_resource_state() */ +#define DAV_RESOURCE_LOCK_NULL 10 /* resource lock-null */ +#define DAV_RESOURCE_NULL 11 /* resource null */ +#define DAV_RESOURCE_EXISTS 12 /* resource exists */ +#define DAV_RESOURCE_ERROR 13 /* an error occurred */ + + +/* -------------------------------------------------------------------- +** +** PROPERTY HANDLING +*/ + +typedef struct dav_propdb dav_propdb; + + +DAV_DECLARE(dav_error *) dav_open_propdb( + request_rec *r, + dav_lockdb *lockdb, + const dav_resource *resource, + int ro, + apr_array_header_t *ns_xlate, + dav_propdb **propdb); + +DAV_DECLARE(void) dav_close_propdb(dav_propdb *db); + +DAV_DECLARE(dav_get_props_result) dav_get_props( + dav_propdb *db, + apr_xml_doc *doc); + +DAV_DECLARE(dav_get_props_result) dav_get_allprops( + dav_propdb *db, + dav_prop_insert what); + +DAV_DECLARE(void) dav_get_liveprop_supported( + dav_propdb *propdb, + const char *ns_uri, + const char *propname, + apr_text_header *body); + +/* +** 3-phase property modification. +** +** 1) validate props. readable? unlocked? ACLs allow access? +** 2) execute operation (set/delete) +** 3) commit or rollback +** +** ### eventually, auth must be available. a ref to the request_rec (which +** ### contains the auth info) should be in the shared context struct. +** +** Each function may alter the error values and information contained within +** the context record. This should be done as an "increasing" level of +** error, rather than overwriting any previous error. +** +** Note that commit() cannot generate errors. It should simply free the +** rollback information. +** +** rollback() may generate additional errors because the rollback operation +** can sometimes fail(!). +** +** The caller should allocate an array of these, one per operation. It should +** be zero-initialized, then the db, operation, and prop fields should be +** filled in before calling dav_prop_validate. Note that the set/delete +** operations are order-dependent. For a given (logical) context, the same +** pointer must be passed to each phase. +** +** error_type is an internal value, but will have the same numeric value +** for each possible "desc" value. This allows the caller to group the +** descriptions via the error_type variable, rather than through string +** comparisons. Note that "status" does not provide enough granularity to +** differentiate/group the "desc" values. +** +** Note that the propdb will maintain some (global) context across all +** of the property change contexts. This implies that you can have only +** one open transaction per propdb. +*/ +typedef struct dav_prop_ctx +{ + dav_propdb *propdb; + + int operation; +#define DAV_PROP_OP_SET 1 /* set a property value */ +#define DAV_PROP_OP_DELETE 2 /* delete a prop value */ +/* ### add a GET? */ + + apr_xml_elem *prop; /* property to affect */ + + dav_error *err; /* error (if any) */ + + /* private items to the propdb */ + int is_liveprop; + void *liveprop_ctx; + struct dav_rollback_item *rollback; /* optional rollback info */ + + /* private to mod_dav.c */ + request_rec *r; + +} dav_prop_ctx; + +DAV_DECLARE_NONSTD(void) dav_prop_validate(dav_prop_ctx *ctx); +DAV_DECLARE_NONSTD(void) dav_prop_exec(dav_prop_ctx *ctx); +DAV_DECLARE_NONSTD(void) dav_prop_commit(dav_prop_ctx *ctx); +DAV_DECLARE_NONSTD(void) dav_prop_rollback(dav_prop_ctx *ctx); + +#define DAV_PROP_CTX_HAS_ERR(dpc) ((dpc).err && (dpc).err->status >= 300) + + +/* -------------------------------------------------------------------- +** +** WALKER STRUCTURE +*/ + +enum { + DAV_CALLTYPE_MEMBER = 1, /* called for a member resource */ + DAV_CALLTYPE_COLLECTION, /* called for a collection */ + DAV_CALLTYPE_LOCKNULL /* called for a locknull resource */ +}; + +typedef struct +{ + /* the client-provided context */ + void *walk_ctx; + + /* pool to use for allocations in the callback */ + apr_pool_t *pool; + + /* the current resource */ + const dav_resource *resource; + + /* OUTPUT: add responses to this */ + dav_response *response; + +} dav_walk_resource; + +typedef struct +{ + int walk_type; +#define DAV_WALKTYPE_AUTH 0x0001 /* limit to authorized files */ +#define DAV_WALKTYPE_NORMAL 0x0002 /* walk normal files */ +#define DAV_WALKTYPE_LOCKNULL 0x0004 /* walk locknull resources */ + + /* callback function and a client context for the walk */ + dav_error * (*func)(dav_walk_resource *wres, int calltype); + void *walk_ctx; + + /* what pool to use for allocations needed by walk logic */ + apr_pool_t *pool; + + /* beginning root of the walk */ + const dav_resource *root; + + /* lock database to enable walking LOCKNULL resources */ + dav_lockdb *lockdb; + +} dav_walk_params; + +/* directory tree walking context */ +typedef struct dav_walker_ctx +{ + /* input: */ + dav_walk_params w; + + + /* ### client data... phasing out this big glom */ + + /* this brigade buffers data being sent to r->output_filters */ + apr_bucket_brigade *bb; + + /* a scratch pool, used to stream responses and iteratively cleared. */ + apr_pool_t *scratchpool; + + request_rec *r; /* original request */ + + /* for PROPFIND operations */ + apr_xml_doc *doc; + int propfind_type; +#define DAV_PROPFIND_IS_ALLPROP 1 +#define DAV_PROPFIND_IS_PROPNAME 2 +#define DAV_PROPFIND_IS_PROP 3 + + apr_text *propstat_404; /* (cached) propstat giving a 404 error */ + + const dav_if_header *if_header; /* for validation */ + const dav_locktoken *locktoken; /* for UNLOCK */ + const dav_lock *lock; /* for LOCK */ + int skip_root; /* for dav_inherit_locks() */ + + int flags; + + dav_buffer work_buf; /* for dav_validate_request() */ + +} dav_walker_ctx; + +DAV_DECLARE(void) dav_add_response(dav_walk_resource *wres, + int status, + dav_get_props_result *propstats); + + +/* -------------------------------------------------------------------- +** +** "STREAM" STRUCTURE +** +** mod_dav uses this abstraction for interacting with the repository +** while fetching/storing resources. mod_dav views resources as a stream +** of bytes. +** +** Note that the structure is opaque -- it is private to the repository +** that created the stream in the repository's "open" function. +** +** ### THIS STUFF IS GOING AWAY ... GET/read requests are handled by +** ### having the provider jam stuff straight into the filter stack. +** ### this is only left for handling PUT/write requests. +*/ + +typedef struct dav_stream dav_stream; + +typedef enum { + DAV_MODE_WRITE_TRUNC, /* truncate and open for writing */ + DAV_MODE_WRITE_SEEKABLE /* open for writing; random access */ +} dav_stream_mode; + + +/* -------------------------------------------------------------------- +** +** REPOSITORY FUNCTIONS +*/ + +/* Repository provider hooks */ +struct dav_hooks_repository +{ + /* Flag for whether repository requires special GET handling. + * If resources in the repository are not visible in the + * filesystem location which URLs map to, then special handling + * is required to first fetch a resource from the repository, + * respond to the GET request, then free the resource copy. + */ + int handle_get; + + /* Get a resource descriptor for the URI in a request. A descriptor + * should always be returned even if the resource does not exist. This + * repository has been identified as handling the resource given by + * the URI, so an answer must be given. If there is a problem with the + * URI or accessing the resource or whatever, then an error should be + * returned. + * + * root_dir: + * the root of the directory for which this repository is configured. + * + * label: + * if a Label: header is present (and allowed), this is the label + * to use to identify a version resource from the resource's + * corresponding version history. Otherwise, it will be NULL. + * + * use_checked_in: + * use the DAV:checked-in property of the resource identified by the + * Request-URI to identify and return a version resource + * + * The provider may associate the request storage pool with the resource + * (in the resource->pool field), to use in other operations on that + * resource. + */ + dav_error * (*get_resource)( + request_rec *r, + const char *root_dir, + const char *label, + int use_checked_in, + dav_resource **resource + ); + + /* Get a resource descriptor for the parent of the given resource. + * The resources need not exist. NULL is returned if the resource + * is the root collection. + * + * An error should be returned only if there is a fatal error in + * fetching information about the parent resource. + */ + dav_error * (*get_parent_resource)( + const dav_resource *resource, + dav_resource **parent_resource + ); + + /* Determine whether two resource descriptors refer to the same resource. + * + * Result != 0 => the resources are the same. + */ + int (*is_same_resource)( + const dav_resource *res1, + const dav_resource *res2 + ); + + /* Determine whether one resource is a parent (immediate or otherwise) + * of another. + * + * Result != 0 => res1 is a parent of res2. + */ + int (*is_parent_resource)( + const dav_resource *res1, + const dav_resource *res2 + ); + + /* + ** Open a stream for this resource, using the specified mode. The + ** stream will be returned in *stream. + */ + dav_error * (*open_stream)(const dav_resource *resource, + dav_stream_mode mode, + dav_stream **stream); + + /* + ** Close the specified stream. + ** + ** mod_dav will (ideally) make sure to call this. For safety purposes, + ** a provider should (ideally) register a cleanup function with the + ** request pool to get this closed and cleaned up. + ** + ** Note the possibility of an error from the close -- it is entirely + ** feasible that the close does a "commit" of some kind, which can + ** produce an error. + ** + ** commit should be TRUE (non-zero) or FALSE (0) if the stream was + ** opened for writing. This flag states whether to retain the file + ** or not. + ** Note: the commit flag is ignored for streams opened for reading. + */ + dav_error * (*close_stream)(dav_stream *stream, int commit); + + /* + ** Write data to the stream. + ** + ** All of the bytes must be written, or an error should be returned. + */ + dav_error * (*write_stream)(dav_stream *stream, + const void *buf, apr_size_t bufsize); + + /* + ** Seek to an absolute position in the stream. This is used to support + ** Content-Range in a GET/PUT. + ** + ** NOTE: if this function is NULL (which is allowed), then any + ** operations using Content-Range will be refused. + */ + dav_error * (*seek_stream)(dav_stream *stream, apr_off_t abs_position); + + /* + ** If a GET is processed using a stream (open_stream, read_stream) + ** rather than via a sub-request (on get_pathname), then this function + ** is used to provide the repository with a way to set the headers + ** in the response. + ** + ** This function may be called without a following deliver(), to + ** handle a HEAD request. + ** + ** This may be NULL if handle_get is FALSE. + */ + dav_error * (*set_headers)(request_rec *r, + const dav_resource *resource); + + /* + ** The provider should deliver the resource into the specified filter. + ** Basically, this is the response to the GET method. + ** + ** Note that this is called for all resources, including collections. + ** The provider should determine what has content to deliver or not. + ** + ** set_headers will be called prior to this function, allowing the + ** provider to set the appropriate response headers. + ** + ** This may be NULL if handle_get is FALSE. + ** ### maybe toss handle_get and just use this function as the marker + */ + dav_error * (*deliver)(const dav_resource *resource, + ap_filter_t *output); + + /* Create a collection resource. The resource must not already exist. + * + * Result == NULL if the collection was created successfully. Also, the + * resource object is updated to reflect that the resource exists, and + * is a collection. + */ + dav_error * (*create_collection)( + dav_resource *resource + ); + + /* Copy one resource to another. The destination may exist, if it is + * versioned. + * Handles both files and collections. Properties are copied as well. + * If the destination exists and is versioned, the provider must update + * the destination to have identical content to the source, + * recursively for collections. + * The depth argument is ignored for a file, and can be either 0 or + * DAV_INFINITY for a collection. + * If an error occurs in a child resource, then the return value is + * non-NULL, and *response is set to a multistatus response. + * If the copy is successful, the dst resource object is + * updated to reflect that the resource exists. + */ + dav_error * (*copy_resource)( + const dav_resource *src, + dav_resource *dst, + int depth, + dav_response **response + ); + + /* Move one resource to another. The destination must not exist. + * Handles both files and collections. Properties are moved as well. + * If an error occurs in a child resource, then the return value is + * non-NULL, and *response is set to a multistatus response. + * If the move is successful, the src and dst resource objects are + * updated to reflect that the source no longer exists, and the + * destination does. + */ + dav_error * (*move_resource)( + dav_resource *src, + dav_resource *dst, + dav_response **response + ); + + /* Remove a resource. Handles both files and collections. + * Removes any associated properties as well. + * If an error occurs in a child resource, then the return value is + * non-NULL, and *response is set to a multistatus response. + * If the delete is successful, the resource object is updated to + * reflect that the resource no longer exists. + */ + dav_error * (*remove_resource)( + dav_resource *resource, + dav_response **response + ); + + /* Walk a resource hierarchy. + * + * Iterates over the resource hierarchy specified by params->root. + * Control of the walk and the callback are specified by 'params'. + * + * An error may be returned. *response will contain multistatus + * responses (if any) suitable for the body of the error. It is also + * possible to return NULL, yet still have multistatus responses. + * In this case, typically the caller should return a 207 (Multistatus) + * and the responses (in the body) as the HTTP response. + */ + dav_error * (*walk)(const dav_walk_params *params, int depth, + dav_response **response); + + /* Get the entity tag for a resource */ + const char * (*getetag)(const dav_resource *resource); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; +}; + + +/* -------------------------------------------------------------------- +** +** VERSIONING FUNCTIONS +*/ + + +/* dav_add_vary_header + * + * If there were any headers in the request which require a Vary header + * in the response, add it. + */ +DAV_DECLARE(void) dav_add_vary_header(request_rec *in_req, + request_rec *out_req, + const dav_resource *resource); + +/* +** Flags specifying auto-versioning behavior, returned by +** the auto_versionable hook. The value returned depends +** on both the state of the resource and the value of the +** DAV:auto-versioning property for the resource. +** +** If the resource does not exist (null or lock-null), +** DAV_AUTO_VERSION_ALWAYS causes creation of a new version-controlled resource +** +** If the resource is checked in, +** DAV_AUTO_VERSION_ALWAYS causes it to be checked out always, +** DAV_AUTO_VERSION_LOCKED causes it to be checked out only when locked +** +** If the resource is checked out, +** DAV_AUTO_VERSION_ALWAYS causes it to be checked in always, +** DAV_AUTO_VERSION_LOCKED causes it to be checked in when unlocked +** (note: a provider should allow auto-checkin only for resources which +** were automatically checked out) +** +** In all cases, DAV_AUTO_VERSION_NEVER results in no auto-versioning behavior. +*/ +typedef enum { + DAV_AUTO_VERSION_NEVER, + DAV_AUTO_VERSION_ALWAYS, + DAV_AUTO_VERSION_LOCKED +} dav_auto_version; + +/* +** This structure is used to record what auto-versioning operations +** were done to make a resource writable, so that they can be undone +** at the end of a request. +*/ +typedef struct { + int resource_versioned; /* 1 => resource was auto-version-controlled */ + int resource_checkedout; /* 1 => resource was auto-checked-out */ + int parent_checkedout; /* 1 => parent was auto-checked-out */ + dav_resource *parent_resource; /* parent resource, if it was needed */ +} dav_auto_version_info; + +/* Ensure that a resource is writable. If there is no versioning + * provider, then this is essentially a no-op. Versioning repositories + * require explicit resource creation and checkout before they can + * be written to. If a new resource is to be created, or an existing + * resource deleted, the parent collection must be checked out as well. + * + * Set the parent_only flag to only make the parent collection writable. + * Otherwise, both parent and child are made writable as needed. If the + * child does not exist, then a new versioned resource is created and + * checked out. + * + * If auto-versioning is not enabled for a versioned resource, then an error is + * returned, since the resource cannot be modified. + * + * The dav_auto_version_info structure is filled in with enough information + * to restore both parent and child resources to the state they were in + * before the auto-versioning operations occurred. + */ +DAV_DECLARE(dav_error *) dav_auto_checkout( + request_rec *r, + dav_resource *resource, + int parent_only, + dav_auto_version_info *av_info); + +/* Revert the writability of resources back to what they were + * before they were modified. If undo == 0, then the resource + * modifications are maintained (i.e. they are checked in). + * If undo != 0, then resource modifications are discarded + * (i.e. they are unchecked out). + * + * Set the unlock flag to indicate that the resource is about + * to be unlocked; it will be checked in if the resource + * auto-versioning property indicates it should be. In this case, + * av_info is ignored, so it can be NULL. + * + * The resource argument may be NULL if only the parent resource + * was checked out (i.e. the parent_only was != 0 in the + * dav_auto_checkout call). + */ +DAV_DECLARE(dav_error *) dav_auto_checkin( + request_rec *r, + dav_resource *resource, + int undo, + int unlock, + dav_auto_version_info *av_info); + +/* +** This structure is used to describe available reports +** +** "nmspace" should be valid XML and URL-quoted. mod_dav will place +** double-quotes around it and use it in an xmlns declaration. +*/ +typedef struct { + const char *nmspace; /* namespace of the XML report element */ + const char *name; /* element name for the XML report */ +} dav_report_elem; + + +/* Versioning provider hooks */ +struct dav_hooks_vsn +{ + /* + ** MANDATORY HOOKS + ** The following hooks are mandatory for all versioning providers; + ** they define the functionality needed to implement "core" versioning. + */ + + /* Return supported versioning options. + * Each dav_text item in the list will be returned as a separate + * DAV header. Providers are advised to limit the length of an + * individual text item to 63 characters, to conform to the limit + * used by MS Web Folders. + */ + void (*get_vsn_options)(apr_pool_t *p, apr_text_header *phdr); + + /* Get the value of a specific option for an OPTIONS request. + * The option being requested is given by the parsed XML + * element object "elem". The value of the option should be + * appended to the "option" text object. + */ + dav_error * (*get_option)(const dav_resource *resource, + const apr_xml_elem *elem, + apr_text_header *option); + + /* Determine whether a non-versioned (or non-existent) resource + * is versionable. Returns != 0 if resource can be versioned. + */ + int (*versionable)(const dav_resource *resource); + + /* Determine whether auto-versioning is enabled for a resource + * (which may not exist, or may not be versioned). If the resource + * is a checked-out resource, the provider must only enable + * auto-checkin if the resource was automatically checked out. + * + * The value returned depends on both the state of the resource + * and the value of its DAV:auto-version property. See the description + * of the dav_auto_version enumeration above for the details. + */ + dav_auto_version (*auto_versionable)(const dav_resource *resource); + + /* Put a resource under version control. If the resource already + * exists unversioned, then it becomes the initial version of the + * new version history, and it is replaced by a version selector + * which targets the new version. + * + * If the resource does not exist, then a new version-controlled + * resource is created which either targets an existing version (if the + * "target" argument is not NULL), or the initial, empty version + * in a new history resource (if the "target" argument is NULL). + * + * If successful, the resource object state is updated appropriately + * (that is, changed to refer to the new version-controlled resource). + */ + dav_error * (*vsn_control)(dav_resource *resource, + const char *target); + + /* Checkout a resource. If successful, the resource + * object state is updated appropriately. + * + * The auto_checkout flag will be set if this checkout is being + * done automatically, as part of some method which modifies + * the resource. The provider must remember that the resource + * was automatically checked out, so it can determine whether it + * can be automatically checked in. (Auto-checkin should only be + * enabled for resources which were automatically checked out.) + * + * If the working resource has a different URL from the + * target resource, a dav_resource descriptor is returned + * for the new working resource. Otherwise, the original + * resource descriptor will refer to the working resource. + * The working_resource argument can be NULL if the caller + * is not interested in the working resource. + * + * If the client has specified DAV:unreserved or DAV:fork-ok in the + * checkout request, then the corresponding flags are set. If + * DAV:activity-set has been specified, then create_activity is set + * if DAV:new was specified; otherwise, the DAV:href elements' CDATA + * (the actual href text) is passed in the "activities" array (each + * element of the array is a const char *). activities will be NULL + * no DAV:activity-set was provided or when create_activity is set. + */ + dav_error * (*checkout)(dav_resource *resource, + int auto_checkout, + int is_unreserved, int is_fork_ok, + int create_activity, + apr_array_header_t *activities, + dav_resource **working_resource); + + /* Uncheckout a checked-out resource. If successful, the resource + * object state is updated appropriately. + */ + dav_error * (*uncheckout)(dav_resource *resource); + + /* Checkin a checked-out resource. If successful, the resource + * object state is updated appropriately, and the + * version_resource descriptor will refer to the new version. + * The version_resource argument can be NULL if the caller + * is not interested in the new version resource. + * + * If the client has specified DAV:keep-checked-out in the checkin + * request, then the keep_checked_out flag is set. The provider + * should create a new version, but keep the resource in the + * checked-out state. + */ + dav_error * (*checkin)(dav_resource *resource, + int keep_checked_out, + dav_resource **version_resource); + + /* + ** Return the set of reports available at this resource. + ** + ** An array of report elements should be returned, with an end-marker + ** element containing namespace==NULL. The value of the + ** DAV:supported-report-set property will be constructed and + ** returned. + */ + dav_error * (*avail_reports)(const dav_resource *resource, + const dav_report_elem **reports); + + /* + ** Determine whether a Label header can be used + ** with a particular report. The dav_xml_doc structure + ** contains the parsed report request body. + ** Returns 0 if the Label header is not allowed. + */ + int (*report_label_header_allowed)(const apr_xml_doc *doc); + + /* + ** Generate a report on a resource. Since a provider is free + ** to define its own reports, and the value of request headers + ** may affect the interpretation of a report, the request record + ** must be passed to this routine. + ** + ** The dav_xml_doc structure contains the parsed report request + ** body. The report response should be generated into the specified + ** output filter. + ** + ** If an error occurs, and a response has not yet been generated, + ** then an error can be returned from this function. mod_dav will + ** construct an appropriate error response. Once some output has + ** been placed into the filter, however, the provider should not + ** return an error -- there is no way that mod_dav can deliver it + ** properly. + ** + ** ### maybe we need a way to signal an error anyways, and then + ** ### apache can abort the connection? + */ + dav_error * (*deliver_report)(request_rec *r, + const dav_resource *resource, + const apr_xml_doc *doc, + ap_filter_t *output); + + /* + ** OPTIONAL HOOKS + ** The following hooks are optional; if not defined, then the + ** corresponding protocol methods will be unsupported. + */ + + /* + ** Set the state of a checked-in version-controlled resource. + ** + ** If the request specified a version, the version resource + ** represents that version. If the request specified a label, + ** then "version" is NULL, and "label" is the label. + ** + ** The depth argument is ignored for a file, and can be 0, 1, or + ** DAV_INFINITY for a collection. The depth argument only applies + ** with a label, not a version. + ** + ** If an error occurs in a child resource, then the return value is + ** non-NULL, and *response is set to a multistatus response. + ** + ** This hook is optional; if not defined, then the UPDATE method + ** will not be supported. + */ + dav_error * (*update)(const dav_resource *resource, + const dav_resource *version, + const char *label, + int depth, + dav_response **response); + + /* + ** Add a label to a version. The resource is either a specific + ** version, or a version selector, in which case the label should + ** be added to the current target of the version selector. The + ** version selector cannot be checked out. + ** + ** If replace != 0, any existing label by the same name is + ** effectively deleted first. Otherwise, it is an error to + ** attempt to add a label which already exists on some version + ** of the same history resource. + ** + ** This hook is optional; if not defined, then the LABEL method + ** will not be supported. If it is defined, then the remove_label + ** hook must be defined also. + */ + dav_error * (*add_label)(const dav_resource *resource, + const char *label, + int replace); + + /* + ** Remove a label from a version. The resource is either a specific + ** version, or a version selector, in which case the label should + ** be added to the current target of the version selector. The + ** version selector cannot be checked out. + ** + ** It is an error if no such label exists on the specified version. + ** + ** This hook is optional, but if defined, the add_label hook + ** must be defined also. + */ + dav_error * (*remove_label)(const dav_resource *resource, + const char *label); + + /* + ** Determine whether a null resource can be created as a workspace. + ** The provider may restrict workspaces to certain locations. + ** Returns 0 if the resource cannot be a workspace. + ** + ** This hook is optional; if the provider does not support workspaces, + ** it should be set to NULL. + */ + int (*can_be_workspace)(const dav_resource *resource); + + /* + ** Create a workspace resource. The resource must not already + ** exist. Any element is passed to the provider + ** in the "doc" structure; it may be empty. + ** + ** If workspace creation is succesful, the state of the resource + ** object is updated appropriately. + ** + ** This hook is optional; if the provider does not support workspaces, + ** it should be set to NULL. + */ + dav_error * (*make_workspace)(dav_resource *resource, + apr_xml_doc *doc); + + /* + ** Determine whether a null resource can be created as an activity. + ** The provider may restrict activities to certain locations. + ** Returns 0 if the resource cannot be an activity. + ** + ** This hook is optional; if the provider does not support activities, + ** it should be set to NULL. + */ + int (*can_be_activity)(const dav_resource *resource); + + /* + ** Create an activity resource. The resource must not already + ** exist. + ** + ** If activity creation is succesful, the state of the resource + ** object is updated appropriately. + ** + ** This hook is optional; if the provider does not support activities, + ** it should be set to NULL. + */ + dav_error * (*make_activity)(dav_resource *resource); + + /* + ** Merge a resource (tree) into target resource (tree). + ** + ** ### more doc... + ** + ** This hook is optional; if the provider does not support merging, + ** then this should be set to NULL. + */ + dav_error * (*merge)(dav_resource *target, dav_resource *source, + int no_auto_merge, int no_checkout, + apr_xml_elem *prop_elem, + ap_filter_t *output); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; +}; + + +/* -------------------------------------------------------------------- +** +** BINDING FUNCTIONS +*/ + +/* binding provider hooks */ +struct dav_hooks_binding { + + /* Determine whether a resource can be the target of a binding. + * Returns 0 if the resource cannot be a binding target. + */ + int (*is_bindable)(const dav_resource *resource); + + /* Create a binding to a resource. + * The resource argument is the target of the binding; + * the binding argument must be a resource which does not already + * exist. + */ + dav_error * (*bind_resource)(const dav_resource *resource, + dav_resource *binding); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; + +}; + + +/* -------------------------------------------------------------------- +** +** SEARCH(DASL) FUNCTIONS +*/ + +/* search provider hooks */ +struct dav_hooks_search { + /* Set header for a OPTION method + * An error may be returned. + * To set a hadder, this function might call + * apr_table_setn(r->headers_out, "DASL", dasl_optin1); + * + * Examples: + * DASL: + * DASL: + * DASL: + */ + dav_error * (*set_option_head)(request_rec *r); + + /* Search resources + * An error may be returned. *response will contain multistatus + * responses (if any) suitable for the body of the error. It is also + * possible to return NULL, yet still have multistatus responses. + * In this case, typically the caller should return a 207 (Multistatus) + * and the responses (in the body) as the HTTP response. + */ + dav_error * (*search_resource)(request_rec *r, + dav_response **response); + + /* + ** If a provider needs a context to associate with this hooks structure, + ** then this field may be used. In most cases, it will just be NULL. + */ + void *ctx; + +}; + + +/* -------------------------------------------------------------------- +** +** MISCELLANEOUS STUFF +*/ + +/* fetch the "LimitXMLRequestBody" in force for this resource */ +DAV_DECLARE(apr_size_t) dav_get_limit_xml_body(const request_rec *r); + +typedef struct { + int propid; /* live property ID */ + const dav_hooks_liveprop *provider; /* the provider defining this prop */ +} dav_elem_private; + +#ifdef __cplusplus +} +#endif + +#endif /* _MOD_DAV_H_ */ diff --git a/rubbos/app/apache2/include/mod_include.h b/rubbos/app/apache2/include/mod_include.h new file mode 100644 index 00000000..6264b888 --- /dev/null +++ b/rubbos/app/apache2/include/mod_include.h @@ -0,0 +1,206 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _MOD_INCLUDE_H +#define _MOD_INCLUDE_H 1 + +#include "apr_pools.h" +#include "apr_optional.h" + +#define STARTING_SEQUENCE "" + +#define DEFAULT_ERROR_MSG "[an error occurred while processing this directive]" +#define DEFAULT_TIME_FORMAT "%A, %d-%b-%Y %H:%M:%S %Z" +#define SIZEFMT_BYTES 0 +#define SIZEFMT_KMG 1 +#define TMP_BUF_SIZE 1024 +#if APR_CHARSET_EBCDIC +#define RAW_ASCII_CHAR(ch) apr_xlate_conv_byte(ap_hdrs_from_ascii, (unsigned char)ch) +#else /*APR_CHARSET_EBCDIC*/ +#define RAW_ASCII_CHAR(ch) (ch) +#endif /*APR_CHARSET_EBCDIC*/ + +/**************************************************************************** + * Used to keep context information during parsing of a request for SSI tags. + * This is especially useful if the tag stretches across multiple buckets or + * brigades. This keeps track of which buckets need to be replaced with the + * content generated by the SSI tag. + * + * state: PRE_HEAD - State prior to finding the first character of the + * STARTING_SEQUENCE. Next state is PARSE_HEAD. + * PARSE_HEAD - State entered once the first character of the + * STARTING_SEQUENCE is found and exited when the + * the full STARTING_SEQUENCE has been matched or + * a match failure occurs. Next state is PRE_HEAD + * or PARSE_TAG. + * PARSE_TAG - State entered once the STARTING sequence has been + * matched. It is exited when the first character in + * ENDING_SEQUENCE is found. Next state is PARSE_TAIL. + * PARSE_TAIL - State entered from PARSE_TAG state when the first + * character in ENDING_SEQUENCE is encountered. This + * state is exited when the ENDING_SEQUENCE has been + * completely matched, or when a match failure occurs. + * Next state is PARSE_TAG or PARSED. + * PARSED - State entered from PARSE_TAIL once the complete + * ENDING_SEQUENCE has been matched. The SSI tag is + * processed and the SSI buckets are replaced with the + * SSI content during this state. + * parse_pos: Current matched position within the STARTING_SEQUENCE or + * ENDING_SEQUENCE during the PARSE_HEAD and PARSE_TAIL states. + * This is especially useful when the sequence spans brigades. + * X_start_bucket: These point to the buckets containing the first character + * of the STARTING_SEQUENCE, the first non-whitespace + * character of the tag, and the first character in the + * ENDING_SEQUENCE (head_, tag_, and tail_ respectively). + * The buckets are kept intact until the PARSED state is + * reached, at which time the tag is consolidated and the + * buckets are released. The buckets that these point to + * have all been set aside in the ssi_tag_brigade (along + * with all of the intervening buckets). + * X_start_index: The index points within the specified bucket contents + * where the first character of the STARTING_SEQUENCE, + * the first non-whitespace character of the tag, and the + * first character in the ENDING_SEQUENCE can be found + * (head_, tag_, and tail_ respectively). + * combined_tag: Once the PARSED state is reached the tag is collected from + * the bucket(s) in the ssi_tag_brigade into this contiguous + * buffer. The buckets in the ssi_tag_brigade are released + * and the tag is processed. + * curr_tag_pos: Ptr to the combined_tag buffer indicating the current + * parse position. + * tag_length: The number of bytes in the actual tag (excluding the + * STARTING_SEQUENCE, leading and trailing whitespace, + * and ENDING_SEQUENCE). This length is computed as the + * buckets are parsed and set aside during the PARSE_TAG state. + * ssi_tag_brigade: The temporary brigade used by this filter to set aside + * the buckets containing parts of the ssi tag and headers. + */ + +/* I keep this stuff here, because of binary compat. It probably doesn't care, + * but who knows ...? + */ +#ifdef MOD_INCLUDE_REDESIGN +typedef enum {PRE_HEAD, BLOW_PARSE_HEAD, BLOW_PARSE_DIRECTIVE, PARSE_TAG, + BLOW_PARSE_TAIL, PARSED} states; +#else +typedef enum {PRE_HEAD, PARSE_HEAD, PARSE_DIRECTIVE, PARSE_TAG, PARSE_TAIL, + PARSED} states; +#endif + +/** forward referenced as it needs to be held on the context */ +typedef struct bndm_t bndm_t; + +typedef struct include_filter_ctx { + states state; + long flags; /* See the FLAG_XXXXX definitions. */ + int if_nesting_level; + apr_size_t parse_pos; + int bytes_parsed; + apr_status_t status; + int output_now; + int output_flush; + + apr_bucket *head_start_bucket; + apr_size_t head_start_index; + + apr_bucket *tag_start_bucket; + apr_size_t tag_start_index; + + apr_bucket *tail_start_bucket; + apr_size_t tail_start_index; + + char *combined_tag; + char *curr_tag_pos; + apr_size_t directive_length; + apr_size_t tag_length; + + char *error_str; + char *error_str_override; + char *time_str; + char *time_str_override; + apr_pool_t *pool; + + apr_bucket_brigade *ssi_tag_brigade; + bndm_t *start_seq_pat; + char *start_seq; + int start_seq_len; + char *end_seq; + char *re_string; + regmatch_t (*re_result)[10]; +} include_ctx_t; + +/* These flags are used to set flag bits. */ +#define FLAG_PRINTING 0x00000001 /* Printing conditional lines. */ +#define FLAG_COND_TRUE 0x00000002 /* Conditional eval'd to true. */ +#define FLAG_SIZE_IN_BYTES 0x00000004 /* Sizes displayed in bytes. */ +#define FLAG_NO_EXEC 0x00000008 /* No Exec in current context. */ + +/* These flags are used to clear flag bits. */ +#define FLAG_SIZE_ABBREV 0xFFFFFFFB /* Reset SIZE_IN_BYTES bit. */ +#define FLAG_CLEAR_PRINT_COND 0xFFFFFFFC /* Reset PRINTING and COND_TRUE*/ +#define FLAG_CLEAR_PRINTING 0xFFFFFFFE /* Reset just PRINTING bit. */ + +#define CREATE_ERROR_BUCKET(cntx, t_buck, h_ptr, ins_head) \ +{ \ + /* XXX: it'd probably be nice to use a pool bucket here */ \ + t_buck = apr_bucket_heap_create(cntx->error_str, \ + strlen(cntx->error_str), \ + NULL, h_ptr->list); \ + APR_BUCKET_INSERT_BEFORE(h_ptr, t_buck); \ + \ + if (ins_head == NULL) { \ + ins_head = t_buck; \ + } \ +} + +/* Make sure to check the return code rc. If it is anything other + * than APR_SUCCESS, then you should return this value up the + * call chain. + */ +#define SPLIT_AND_PASS_PRETAG_BUCKETS(brgd, cntxt, next, rc) \ +if ((APR_BRIGADE_EMPTY((cntxt)->ssi_tag_brigade)) && \ + ((cntxt)->head_start_bucket != NULL)) { \ + apr_bucket_brigade *tag_plus; \ + \ + tag_plus = apr_brigade_split((brgd), (cntxt)->head_start_bucket); \ + if ((cntxt)->output_flush) { \ + APR_BRIGADE_INSERT_TAIL((brgd), apr_bucket_flush_create((brgd)->bucket_alloc)); \ + } \ + (rc) = ap_pass_brigade((next), (brgd)); \ + (cntxt)->bytes_parsed = 0; \ + (brgd) = tag_plus; \ +} + + +typedef int (include_handler_fn_t)(include_ctx_t *ctx, apr_bucket_brigade **bb, + request_rec *r, ap_filter_t *f, apr_bucket *head_ptr, + apr_bucket **inserted_head); + +APR_DECLARE_OPTIONAL_FN(void, ap_ssi_get_tag_and_value, (include_ctx_t *ctx, + char **tag, + char **tag_val, + int dodecode)); +APR_DECLARE_OPTIONAL_FN(char*, ap_ssi_parse_string, (request_rec *r, + include_ctx_t *ctx, + const char *in, + char *out, + apr_size_t length, + int leave_name)); +APR_DECLARE_OPTIONAL_FN(void, ap_register_include_handler, + (char *tag, include_handler_fn_t *func)); + +#endif /* MOD_INCLUDE */ diff --git a/rubbos/app/apache2/include/mod_log_config.h b/rubbos/app/apache2/include/mod_log_config.h new file mode 100644 index 00000000..00e79014 --- /dev/null +++ b/rubbos/app/apache2/include/mod_log_config.h @@ -0,0 +1,63 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "apr_optional.h" +#include "httpd.h" +#include "scoreboard.h" + +#ifndef _MOD_LOG_CONFIG_H +#define _MOD_LOG_CONFIG_H 1 + +/** + * callback function prototype for a external log handler + */ +typedef const char *ap_log_handler_fn_t(request_rec *r, char *a); + +/** + * callback function prototype for external writer initialization. + */ +typedef void *ap_log_writer_init(apr_pool_t *p, server_rec *s, + const char *name); +/** + * callback which gets called where there is a log line to write. + */ +typedef apr_status_t ap_log_writer( + request_rec *r, + void *handle, + const char **portions, + int *lengths, + int nelts, + apr_size_t len); + +typedef struct ap_log_handler { + ap_log_handler_fn_t *func; + int want_orig_default; +} ap_log_handler; + +APR_DECLARE_OPTIONAL_FN(void, ap_register_log_handler, + (apr_pool_t *p, char *tag, ap_log_handler_fn_t *func, + int def)); +/** + * you will need to set your init handler *BEFORE* the open_logs + * in mod_log_config gets executed + */ +APR_DECLARE_OPTIONAL_FN(void, ap_log_set_writer_init,(ap_log_writer_init *func)); +/** + * you should probably set the writer at the same time (ie..before open_logs) + */ +APR_DECLARE_OPTIONAL_FN(void, ap_log_set_writer, (ap_log_writer* func)); + +#endif /* MOD_LOG_CONFIG */ diff --git a/rubbos/app/apache2/include/mod_proxy.h b/rubbos/app/apache2/include/mod_proxy.h new file mode 100644 index 00000000..d1ed7d46 --- /dev/null +++ b/rubbos/app/apache2/include/mod_proxy.h @@ -0,0 +1,255 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOD_PROXY_H +#define MOD_PROXY_H + +/* + * Main include file for the Apache proxy + */ + +/* + + Also note numerous FIXMEs and CHECKMEs which should be eliminated. + + This code is once again experimental! + + Things to do: + + 1. Make it completely work (for FTP too) + + 2. HTTP/1.1 + + Chuck Murcko 02-06-01 + + */ + +#define CORE_PRIVATE + +#include "apr_hooks.h" +#include "apr.h" +#include "apr_lib.h" +#include "apr_strings.h" +#include "apr_buckets.h" +#include "apr_md5.h" +#include "apr_network_io.h" +#include "apr_pools.h" +#include "apr_strings.h" +#include "apr_uri.h" +#include "apr_date.h" +#include "apr_fnmatch.h" +#define APR_WANT_STRFUNC +#include "apr_want.h" + +#include "httpd.h" +#include "http_config.h" +#include "ap_config.h" +#include "http_core.h" +#include "http_protocol.h" +#include "http_request.h" +#include "http_vhost.h" +#include "http_main.h" +#include "http_log.h" +#include "http_connection.h" +#include "util_filter.h" +#include "util_ebcdic.h" + +#if APR_HAVE_NETINET_IN_H +#include +#endif +#if APR_HAVE_ARPA_INET_H +#include +#endif + +/* for proxy_canonenc() */ +enum enctype { + enc_path, enc_search, enc_user, enc_fpath, enc_parm +}; + +#if APR_CHARSET_EBCDIC +#define CRLF "\r\n" +#else /*APR_CHARSET_EBCDIC*/ +#define CRLF "\015\012" +#endif /*APR_CHARSET_EBCDIC*/ + +/* default Max-Forwards header setting */ +#define DEFAULT_MAX_FORWARDS 10 + +/* static information about a remote proxy */ +struct proxy_remote { + const char *scheme; /* the schemes handled by this proxy, or '*' */ + const char *protocol; /* the scheme used to talk to this proxy */ + const char *hostname; /* the hostname of this proxy */ + apr_port_t port; /* the port for this proxy */ + regex_t *regexp; /* compiled regex (if any) for the remote */ + int use_regex; /* simple boolean. True if we have a regex pattern */ +}; + +struct proxy_alias { + const char *real; + const char *fake; +}; + +struct dirconn_entry { + char *name; + struct in_addr addr, mask; + struct apr_sockaddr_t *hostaddr; + int (*matcher) (struct dirconn_entry * This, request_rec *r); +}; + +struct noproxy_entry { + const char *name; + struct apr_sockaddr_t *addr; +}; + +typedef struct { + apr_array_header_t *proxies; + apr_array_header_t *sec_proxy; + apr_array_header_t *aliases; + apr_array_header_t *raliases; + apr_array_header_t *noproxies; + apr_array_header_t *dirconn; + apr_array_header_t *allowed_connect_ports; + const char *domain; /* domain name to use in absence of a domain name in the request */ + int req; /* true if proxy requests are enabled */ + char req_set; + enum { + via_off, + via_on, + via_block, + via_full + } viaopt; /* how to deal with proxy Via: headers */ + char viaopt_set; + apr_size_t recv_buffer_size; + char recv_buffer_size_set; + apr_size_t io_buffer_size; + char io_buffer_size_set; + long maxfwd; + char maxfwd_set; + /** + * the following setting masks the error page + * returned from the 'proxied server' and just + * forwards the status code upwards. + * This allows the main server (us) to generate + * the error page, (so it will look like a error + * returned from the rest of the system + */ + int error_override; + int error_override_set; + int preserve_host; + int preserve_host_set; + apr_interval_time_t timeout; + apr_interval_time_t timeout_set; + enum { + bad_error, + bad_ignore, + bad_body + } badopt; /* how to deal with bad headers */ + char badopt_set; + +} proxy_server_conf; + +typedef struct { + const char *p; /* The path */ + int p_is_fnmatch; /* Is this path an fnmatch candidate? */ + regex_t *r; /* Is this a regex? */ + const char *ftp_directory_charset; +} proxy_dir_conf; + +typedef struct { + conn_rec *connection; + char *hostname; + apr_port_t port; + int is_ssl; +} proxy_conn_rec; + +typedef struct { + float cache_completion; /* completion percentage */ + int content_length; /* length of the content */ +} proxy_completion; + + +/* hooks */ + +/* Create a set of PROXY_DECLARE(type), PROXY_DECLARE_NONSTD(type) and + * PROXY_DECLARE_DATA with appropriate export and import tags for the platform + */ +#if !defined(WIN32) +#define PROXY_DECLARE(type) type +#define PROXY_DECLARE_NONSTD(type) type +#define PROXY_DECLARE_DATA +#elif defined(PROXY_DECLARE_STATIC) +#define PROXY_DECLARE(type) type __stdcall +#define PROXY_DECLARE_NONSTD(type) type +#define PROXY_DECLARE_DATA +#elif defined(PROXY_DECLARE_EXPORT) +#define PROXY_DECLARE(type) __declspec(dllexport) type __stdcall +#define PROXY_DECLARE_NONSTD(type) __declspec(dllexport) type +#define PROXY_DECLARE_DATA __declspec(dllexport) +#else +#define PROXY_DECLARE(type) __declspec(dllimport) type __stdcall +#define PROXY_DECLARE_NONSTD(type) __declspec(dllimport) type +#define PROXY_DECLARE_DATA __declspec(dllimport) +#endif + +/** + * Hook an optional proxy hook. Unlike static hooks, this uses a macro + * instead of a function. + */ +#define PROXY_OPTIONAL_HOOK(name,fn,pre,succ,order) \ + APR_OPTIONAL_HOOK(proxy,name,fn,pre,succ,order) + +APR_DECLARE_EXTERNAL_HOOK(proxy, PROXY, int, scheme_handler, (request_rec *r, + proxy_server_conf *conf, char *url, + const char *proxyhost, apr_port_t proxyport)) +APR_DECLARE_EXTERNAL_HOOK(proxy, PROXY, int, canon_handler, (request_rec *r, + char *url)) + +APR_DECLARE_EXTERNAL_HOOK(proxy, PROXY, int, create_req, (request_rec *r, request_rec *pr)) +APR_DECLARE_EXTERNAL_HOOK(proxy, PROXY, int, fixups, (request_rec *r)) + +/* proxy_util.c */ + +PROXY_DECLARE(request_rec *)ap_proxy_make_fake_req(conn_rec *c, request_rec *r); +PROXY_DECLARE(int) ap_proxy_hex2c(const char *x); +PROXY_DECLARE(void) ap_proxy_c2hex(int ch, char *x); +PROXY_DECLARE(char *)ap_proxy_canonenc(apr_pool_t *p, const char *x, int len, enum enctype t, + int isenc); +PROXY_DECLARE(char *)ap_proxy_canon_netloc(apr_pool_t *p, char **const urlp, char **userp, + char **passwordp, char **hostp, apr_port_t *port); +PROXY_DECLARE(const char *)ap_proxy_date_canon(apr_pool_t *p, const char *x); +PROXY_DECLARE(apr_table_t *)ap_proxy_read_headers(request_rec *r, request_rec *rp, char *buffer, int size, conn_rec *c); +PROXY_DECLARE(int) ap_proxy_liststr(const char *list, const char *val); +PROXY_DECLARE(char *)ap_proxy_removestr(apr_pool_t *pool, const char *list, const char *val); +PROXY_DECLARE(int) ap_proxy_hex2sec(const char *x); +PROXY_DECLARE(void) ap_proxy_sec2hex(int t, char *y); +PROXY_DECLARE(int) ap_proxyerror(request_rec *r, int statuscode, const char *message); +PROXY_DECLARE(int) ap_proxy_is_ipaddr(struct dirconn_entry *This, apr_pool_t *p); +PROXY_DECLARE(int) ap_proxy_is_domainname(struct dirconn_entry *This, apr_pool_t *p); +PROXY_DECLARE(int) ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p); +PROXY_DECLARE(int) ap_proxy_is_word(struct dirconn_entry *This, apr_pool_t *p); +PROXY_DECLARE(int) ap_proxy_checkproxyblock(request_rec *r, proxy_server_conf *conf, apr_sockaddr_t *uri_addr); +PROXY_DECLARE(int) ap_proxy_pre_http_request(conn_rec *c, request_rec *r); +PROXY_DECLARE(apr_status_t) ap_proxy_string_read(conn_rec *c, apr_bucket_brigade *bb, char *buff, size_t bufflen, int *eos); +PROXY_DECLARE(void) ap_proxy_table_unmerge(apr_pool_t *p, apr_table_t *t, char *key); +PROXY_DECLARE(int) ap_proxy_connect_to_backend(apr_socket_t **, const char *, apr_sockaddr_t *, const char *, proxy_server_conf *, server_rec *, apr_pool_t *); +PROXY_DECLARE(int) ap_proxy_ssl_enable(conn_rec *c); +PROXY_DECLARE(int) ap_proxy_ssl_disable(conn_rec *c); + +/* For proxy_util */ +extern module AP_MODULE_DECLARE_DATA proxy_module; + +#endif /*MOD_PROXY_H*/ diff --git a/rubbos/app/apache2/include/mod_ssl.h b/rubbos/app/apache2/include/mod_ssl.h new file mode 100644 index 00000000..6f69c26f --- /dev/null +++ b/rubbos/app/apache2/include/mod_ssl.h @@ -0,0 +1,724 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* _ _ + * _ __ ___ ___ __| | ___ ___| | mod_ssl + * | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL + * | | | | | | (_) | (_| | \__ \__ \ | + * |_| |_| |_|\___/ \__,_|___|___/___/_| + * |_____| + * mod_ssl.h + * Global header + */ + /* ``The Apache Group: a collection + of talented individuals who are + trying to perfect the art of + never finishing something.'' + -- Rob Hartill */ +#ifndef __MOD_SSL_H__ +#define __MOD_SSL_H__ + +/* + * Optionally enable the experimental stuff, but allow the user to + * override the decision which experimental parts are included by using + * CFLAGS="-DSSL_EXPERIMENTAL_xxxx_IGNORE". + */ +#ifdef SSL_EXPERIMENTAL +#ifdef SSL_ENGINE +#ifndef SSL_EXPERIMENTAL_ENGINE_IGNORE +#define SSL_EXPERIMENTAL_ENGINE +#endif +#endif +#endif /* SSL_EXPERIMENTAL */ + +/* + * Power up our brain... + */ + +/* Apache headers */ +#include "httpd.h" +#include "http_config.h" +#include "http_core.h" +#include "http_log.h" +#include "http_main.h" +#include "http_connection.h" +#include "http_request.h" +#include "http_protocol.h" +#include "util_script.h" +#include "util_filter.h" +#include "mpm.h" +#include "apr.h" +#include "apr_strings.h" +#define APR_WANT_STRFUNC +#include "apr_want.h" +#include "apr_tables.h" +#include "apr_lib.h" +#include "apr_fnmatch.h" +#include "apr_strings.h" +#include "apr_dbm.h" +#include "apr_rmm.h" +#include "apr_shm.h" +#include "apr_global_mutex.h" +#include "apr_optional.h" + +#define MOD_SSL_VERSION AP_SERVER_BASEREVISION + +#ifdef HAVE_SSLC + +#include +#include +#include +#include +#include +#include +#include +#include + +#else /* !HAVE_SSLC (implicit HAVE_OPENSSL) */ + +#include +#include +#include +#include +#include +#include +#include +#ifdef SSL_EXPERIMENTAL_ENGINE +#include +#endif +#ifdef HAVE_SSL_X509V3_H +#include +#endif + +#endif /* !HAVE_SSLC (implicit HAVE_OPENSSL) */ + + +/* mod_ssl headers */ +#include "ssl_toolkit_compat.h" +#include "ssl_expr.h" +#include "ssl_util_ssl.h" +#include "ssl_util_table.h" + +/* The #ifdef macros are only defined AFTER including the above + * therefore we cannot include these system files at the top :-( + */ +#if APR_HAVE_SYS_TIME_H +#include +#endif +#if APR_HAVE_UNISTD_H +#include /* needed for STDIN_FILENO et.al., at least on FreeBSD */ +#endif + +/* + * Provide reasonable default for some defines + */ +#ifndef FALSE +#define FALSE (0) +#endif +#ifndef TRUE +#define TRUE (!FALSE) +#endif +#ifndef PFALSE +#define PFALSE ((void *)FALSE) +#endif +#ifndef PTRUE +#define PTRUE ((void *)TRUE) +#endif +#ifndef UNSET +#define UNSET (-1) +#endif +#ifndef NUL +#define NUL '\0' +#endif +#ifndef RAND_MAX +#include +#define RAND_MAX INT_MAX +#endif + +/* + * Provide reasonable defines for some types + */ +#ifndef BOOL +#define BOOL unsigned int +#endif +#ifndef UCHAR +#define UCHAR unsigned char +#endif + +/* + * Provide useful shorthands + */ +#define strEQ(s1,s2) (strcmp(s1,s2) == 0) +#define strNE(s1,s2) (strcmp(s1,s2) != 0) +#define strEQn(s1,s2,n) (strncmp(s1,s2,n) == 0) +#define strNEn(s1,s2,n) (strncmp(s1,s2,n) != 0) + +#define strcEQ(s1,s2) (strcasecmp(s1,s2) == 0) +#define strcNE(s1,s2) (strcasecmp(s1,s2) != 0) +#define strcEQn(s1,s2,n) (strncasecmp(s1,s2,n) == 0) +#define strcNEn(s1,s2,n) (strncasecmp(s1,s2,n) != 0) + +#define strIsEmpty(s) (s == NULL || s[0] == NUL) + +#define myConnConfig(c) \ +(SSLConnRec *)ap_get_module_config(c->conn_config, &ssl_module) +#define myCtxConfig(sslconn, sc) (sslconn->is_proxy ? sc->proxy : sc->server) +#define myConnConfigSet(c, val) \ +ap_set_module_config(c->conn_config, &ssl_module, val) +#define mySrvConfig(srv) (SSLSrvConfigRec *)ap_get_module_config(srv->module_config, &ssl_module) +#define myDirConfig(req) (SSLDirConfigRec *)ap_get_module_config(req->per_dir_config, &ssl_module) +#define myModConfig(srv) (mySrvConfig((srv)))->mc + +#define myCtxVarSet(mc,num,val) mc->rCtx.pV##num = val +#define myCtxVarGet(mc,num,type) (type)(mc->rCtx.pV##num) + +/* + * Defaults for the configuration + */ +#ifndef SSL_SESSION_CACHE_TIMEOUT +#define SSL_SESSION_CACHE_TIMEOUT 300 +#endif + +/* + * Support for MM library + */ +#define SSL_MM_FILE_MODE ( APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD ) + +/* + * Support for DBM library + */ +#define SSL_DBM_FILE_MODE ( APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD ) + +#if !defined(SSL_DBM_FILE_SUFFIX_DIR) && !defined(SSL_DBM_FILE_SUFFIX_PAG) +#if defined(DBM_SUFFIX) +#define SSL_DBM_FILE_SUFFIX_DIR DBM_SUFFIX +#define SSL_DBM_FILE_SUFFIX_PAG DBM_SUFFIX +#elif defined(__FreeBSD__) || (defined(DB_LOCK) && defined(DB_SHMEM)) +#define SSL_DBM_FILE_SUFFIX_DIR ".db" +#define SSL_DBM_FILE_SUFFIX_PAG ".db" +#else +#define SSL_DBM_FILE_SUFFIX_DIR ".dir" +#define SSL_DBM_FILE_SUFFIX_PAG ".pag" +#endif +#endif + +/* + * Define the certificate algorithm types + */ + +typedef int ssl_algo_t; + +#define SSL_ALGO_UNKNOWN (0) +#define SSL_ALGO_RSA (1<<0) +#define SSL_ALGO_DSA (1<<1) +#define SSL_ALGO_ALL (SSL_ALGO_RSA|SSL_ALGO_DSA) + +#define SSL_AIDX_RSA (0) +#define SSL_AIDX_DSA (1) +#define SSL_AIDX_MAX (2) + + +/* + * Define IDs for the temporary RSA keys and DH params + */ + +#define SSL_TMP_KEY_RSA_512 (0) +#define SSL_TMP_KEY_RSA_1024 (1) +#define SSL_TMP_KEY_DH_512 (2) +#define SSL_TMP_KEY_DH_1024 (3) +#define SSL_TMP_KEY_MAX (4) + +/* + * Define the SSL options + */ +#define SSL_OPT_NONE (0) +#define SSL_OPT_RELSET (1<<0) +#define SSL_OPT_STDENVVARS (1<<1) +#define SSL_OPT_COMPATENVVARS (1<<2) +#define SSL_OPT_EXPORTCERTDATA (1<<3) +#define SSL_OPT_FAKEBASICAUTH (1<<4) +#define SSL_OPT_STRICTREQUIRE (1<<5) +#define SSL_OPT_OPTRENEGOTIATE (1<<6) +#define SSL_OPT_ALL (SSL_OPT_STDENVVARS|SSL_OPT_COMPATENVVAR|SSL_OPT_EXPORTCERTDATA|SSL_OPT_FAKEBASICAUTH|SSL_OPT_STRICTREQUIRE|SSL_OPT_OPTRENEGOTIATE) +typedef int ssl_opt_t; + +/* + * Define the SSL Protocol options + */ +#define SSL_PROTOCOL_NONE (0) +#define SSL_PROTOCOL_SSLV2 (1<<0) +#define SSL_PROTOCOL_SSLV3 (1<<1) +#define SSL_PROTOCOL_TLSV1 (1<<2) +#define SSL_PROTOCOL_ALL (SSL_PROTOCOL_SSLV2|SSL_PROTOCOL_SSLV3|SSL_PROTOCOL_TLSV1) +typedef int ssl_proto_t; + +/* + * Define the SSL verify levels + */ +typedef enum { + SSL_CVERIFY_UNSET = UNSET, + SSL_CVERIFY_NONE = 0, + SSL_CVERIFY_OPTIONAL = 1, + SSL_CVERIFY_REQUIRE = 2, + SSL_CVERIFY_OPTIONAL_NO_CA = 3 +} ssl_verify_t; + +#define SSL_VERIFY_PEER_STRICT \ + (SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT) + +#ifndef X509_V_ERR_CERT_UNTRUSTED +#define X509_V_ERR_CERT_UNTRUSTED 27 +#endif + +#define ssl_verify_error_is_optional(errnum) \ + ((errnum == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) \ + || (errnum == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) \ + || (errnum == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) \ + || (errnum == X509_V_ERR_CERT_UNTRUSTED) \ + || (errnum == X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE)) + +/* + * Define the SSL pass phrase dialog types + */ +typedef enum { + SSL_PPTYPE_UNSET = UNSET, + SSL_PPTYPE_BUILTIN = 0, + SSL_PPTYPE_FILTER = 1, + SSL_PPTYPE_PIPE = 2 +} ssl_pphrase_t; + +/* + * Define the Path Checking modes + */ +#define SSL_PCM_EXISTS 1 +#define SSL_PCM_ISREG 2 +#define SSL_PCM_ISDIR 4 +#define SSL_PCM_ISNONZERO 8 +typedef unsigned int ssl_pathcheck_t; + +/* + * Define the SSL session cache modes and structures + */ +typedef enum { + SSL_SCMODE_UNSET = UNSET, + SSL_SCMODE_NONE = 0, + SSL_SCMODE_DBM = 1, + SSL_SCMODE_SHMHT = 2, + SSL_SCMODE_SHMCB = 3 +} ssl_scmode_t; + +/* + * Define the SSL mutex modes + */ +typedef enum { + SSL_MUTEXMODE_UNSET = UNSET, + SSL_MUTEXMODE_NONE = 0, + SSL_MUTEXMODE_USED = 1 +} ssl_mutexmode_t; + +/* + * Define the SSL requirement structure + */ +typedef struct { + char *cpExpr; + ssl_expr *mpExpr; +} ssl_require_t; + +/* + * Define the SSL random number generator seeding source + */ +typedef enum { + SSL_RSCTX_STARTUP = 1, + SSL_RSCTX_CONNECT = 2 +} ssl_rsctx_t; +typedef enum { + SSL_RSSRC_BUILTIN = 1, + SSL_RSSRC_FILE = 2, + SSL_RSSRC_EXEC = 3, + SSL_RSSRC_EGD = 4 +} ssl_rssrc_t; +typedef struct { + ssl_rsctx_t nCtx; + ssl_rssrc_t nSrc; + char *cpPath; + int nBytes; +} ssl_randseed_t; + +/* + * Define the structure of an ASN.1 anything + */ +typedef struct { + long int nData; + unsigned char *cpData; + apr_time_t source_mtime; +} ssl_asn1_t; + +/* + * Define the mod_ssl per-module configuration structure + * (i.e. the global configuration for each httpd process) + */ + +typedef enum { + SSL_SHUTDOWN_TYPE_UNSET, + SSL_SHUTDOWN_TYPE_STANDARD, + SSL_SHUTDOWN_TYPE_UNCLEAN, + SSL_SHUTDOWN_TYPE_ACCURATE +} ssl_shutdown_type_e; + +typedef struct { + SSL *ssl; + const char *client_dn; + X509 *client_cert; + ssl_shutdown_type_e shutdown_type; + const char *verify_info; + const char *verify_error; + int verify_depth; + int is_proxy; + int disabled; + int non_ssl_request; + + /* Track the handshake/renegotiation state for the connection so + * that all client-initiated renegotiations can be rejected, as a + * partial fix for CVE-2009-3555. */ + enum { + RENEG_INIT = 0, /* Before initial handshake */ + RENEG_REJECT, /* After initial handshake; any client-initiated + * renegotiation should be rejected */ + RENEG_ALLOW, /* A server-initated renegotiation is taking + * place (as dictated by configuration) */ + RENEG_ABORT /* Renegotiation initiated by client, abort the + * connection */ + } reneg_state; +} SSLConnRec; + +typedef struct { + pid_t pid; + apr_pool_t *pPool; + BOOL bFixed; + int nSessionCacheMode; + char *szSessionCacheDataFile; + int nSessionCacheDataSize; + apr_shm_t *pSessionCacheDataMM; + apr_rmm_t *pSessionCacheDataRMM; + apr_table_t *tSessionCacheDataTable; + ssl_mutexmode_t nMutexMode; + apr_lockmech_e nMutexMech; + const char *szMutexFile; + apr_global_mutex_t *pMutex; + apr_array_header_t *aRandSeed; + apr_hash_t *tVHostKeys; + void *pTmpKeys[SSL_TMP_KEY_MAX]; + apr_hash_t *tPublicCert; + apr_hash_t *tPrivateKey; +#ifdef SSL_EXPERIMENTAL_ENGINE + char *szCryptoDevice; +#endif + struct { + void *pV1, *pV2, *pV3, *pV4, *pV5, *pV6, *pV7, *pV8, *pV9, *pV10; + } rCtx; +} SSLModConfigRec; + +/* public cert/private key */ +typedef struct { + /* + * server only has 1-2 certs/keys + * 1 RSA and/or 1 DSA + */ + const char *cert_files[SSL_AIDX_MAX]; + const char *key_files[SSL_AIDX_MAX]; + X509 *certs[SSL_AIDX_MAX]; + EVP_PKEY *keys[SSL_AIDX_MAX]; +} modssl_pk_server_t; + +typedef struct { + /* proxy can have any number of cert/key pairs */ + const char *cert_file; + const char *cert_path; + STACK_OF(X509_INFO) *certs; +} modssl_pk_proxy_t; + +/* stuff related to authentication that can also be per-dir */ +typedef struct { + /* known/trusted CAs */ + const char *ca_cert_path; + const char *ca_cert_file; + + const char *cipher_suite; + + /* for client or downstream server authentication */ + int verify_depth; + ssl_verify_t verify_mode; +} modssl_auth_ctx_t; + +typedef struct SSLSrvConfigRec SSLSrvConfigRec; + +typedef struct { + SSLSrvConfigRec *sc; /* pointer back to server config */ + SSL_CTX *ssl_ctx; + + /* we are one or the other */ + modssl_pk_server_t *pks; + modssl_pk_proxy_t *pkp; + + ssl_proto_t protocol; + + /* config for handling encrypted keys */ + ssl_pphrase_t pphrase_dialog_type; + const char *pphrase_dialog_path; + + const char *cert_chain; + + /* certificate revocation list */ + const char *crl_path; + const char *crl_file; + X509_STORE *crl; + + modssl_auth_ctx_t auth; +} modssl_ctx_t; + +struct SSLSrvConfigRec { + SSLModConfigRec *mc; + BOOL enabled; + BOOL proxy_enabled; + const char *vhost_id; + int vhost_id_len; + int session_cache_timeout; + BOOL insecure_reneg; + modssl_ctx_t *server; + modssl_ctx_t *proxy; +}; + +/* + * Define the mod_ssl per-directory configuration structure + * (i.e. the local configuration for all + * and .htaccess contexts) + */ +typedef struct { + BOOL bSSLRequired; + apr_array_header_t *aRequirement; + ssl_opt_t nOptions; + ssl_opt_t nOptionsAdd; + ssl_opt_t nOptionsDel; + const char *szCipherSuite; + ssl_verify_t nVerifyClient; + int nVerifyDepth; + const char *szCACertificatePath; + const char *szCACertificateFile; + const char *szUserName; +} SSLDirConfigRec; + +/* + * function prototypes + */ + +/* API glue structures */ +extern module AP_MODULE_DECLARE_DATA ssl_module; + +/* "global" stuff */ +extern const char ssl_valid_ssl_mutex_string[]; + +/* configuration handling */ +SSLModConfigRec *ssl_config_global_create(server_rec *); +void ssl_config_global_fix(SSLModConfigRec *); +BOOL ssl_config_global_isfixed(SSLModConfigRec *); +void *ssl_config_server_create(apr_pool_t *, server_rec *); +void *ssl_config_server_merge(apr_pool_t *, void *, void *); +void *ssl_config_perdir_create(apr_pool_t *, char *); +void *ssl_config_perdir_merge(apr_pool_t *, void *, void *); +const char *ssl_cmd_SSLMutex(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLPassPhraseDialog(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCryptoDevice(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLRandomSeed(cmd_parms *, void *, const char *, const char *, const char *); +const char *ssl_cmd_SSLEngine(cmd_parms *, void *, int); +const char *ssl_cmd_SSLCipherSuite(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCertificateFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCertificateKeyFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCertificateChainFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCACertificatePath(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCACertificateFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCARevocationPath(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLCARevocationFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLVerifyClient(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLVerifyDepth(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLSessionCache(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLSessionCacheTimeout(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProtocol(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLOptions(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLRequireSSL(cmd_parms *, void *); +const char *ssl_cmd_SSLRequire(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLUserName(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLInsecureRenegotiation(cmd_parms *cmd, void *dcfg, int flag); + +const char *ssl_cmd_SSLProxyEngine(cmd_parms *cmd, void *dcfg, int flag); +const char *ssl_cmd_SSLProxyProtocol(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyCipherSuite(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyVerify(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyVerifyDepth(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyCACertificatePath(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyCACertificateFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyCARevocationPath(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyCARevocationFile(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyMachineCertificatePath(cmd_parms *, void *, const char *); +const char *ssl_cmd_SSLProxyMachineCertificateFile(cmd_parms *, void *, const char *); + +/* module initialization */ +int ssl_init_Module(apr_pool_t *, apr_pool_t *, apr_pool_t *, server_rec *); +void ssl_init_Engine(server_rec *, apr_pool_t *); +void ssl_init_ConfigureServer(server_rec *, apr_pool_t *, apr_pool_t *, SSLSrvConfigRec *); +void ssl_init_CheckServers(server_rec *, apr_pool_t *); +STACK_OF(X509_NAME) + *ssl_init_FindCAList(server_rec *, apr_pool_t *, const char *, const char *); +void ssl_init_Child(apr_pool_t *, server_rec *); +apr_status_t ssl_init_ModuleKill(void *data); + +/* Apache API hooks */ +int ssl_hook_Auth(request_rec *); +int ssl_hook_UserCheck(request_rec *); +int ssl_hook_Access(request_rec *); +int ssl_hook_Fixup(request_rec *); +int ssl_hook_ReadReq(request_rec *); + +/* OpenSSL callbacks */ +RSA *ssl_callback_TmpRSA(SSL *, int, int); +DH *ssl_callback_TmpDH(SSL *, int, int); +int ssl_callback_SSLVerify(int, X509_STORE_CTX *); +int ssl_callback_SSLVerify_CRL(int, X509_STORE_CTX *, conn_rec *); +int ssl_callback_proxy_cert(SSL *ssl, MODSSL_CLIENT_CERT_CB_ARG_TYPE **x509, EVP_PKEY **pkey); +int ssl_callback_NewSessionCacheEntry(SSL *, SSL_SESSION *); +SSL_SESSION *ssl_callback_GetSessionCacheEntry(SSL *, unsigned char *, int, int *); +void ssl_callback_DelSessionCacheEntry(SSL_CTX *, SSL_SESSION *); +void ssl_callback_Info(MODSSL_INFO_CB_ARG_TYPE, int, int); + +/* Session Cache Support */ +void ssl_scache_init(server_rec *, apr_pool_t *); +#if 0 /* XXX */ +void ssl_scache_status_register(apr_pool_t *p); +#endif +void ssl_scache_kill(server_rec *); +BOOL ssl_scache_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *); +SSL_SESSION *ssl_scache_retrieve(server_rec *, UCHAR *, int); +void ssl_scache_remove(server_rec *, UCHAR *, int); +void ssl_scache_expire(server_rec *); +void ssl_scache_status(server_rec *, apr_pool_t *, void (*)(char *, void *), void *); +char *ssl_scache_id2sz(UCHAR *, int); +void ssl_scache_dbm_init(server_rec *, apr_pool_t *); +void ssl_scache_dbm_kill(server_rec *); +BOOL ssl_scache_dbm_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *); +SSL_SESSION *ssl_scache_dbm_retrieve(server_rec *, UCHAR *, int); +void ssl_scache_dbm_remove(server_rec *, UCHAR *, int); +void ssl_scache_dbm_expire(server_rec *); +void ssl_scache_dbm_status(server_rec *, apr_pool_t *, void (*)(char *, void *), void *); + +void ssl_scache_shmht_init(server_rec *, apr_pool_t *); +void ssl_scache_shmht_kill(server_rec *); +BOOL ssl_scache_shmht_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *); +SSL_SESSION *ssl_scache_shmht_retrieve(server_rec *, UCHAR *, int); +void ssl_scache_shmht_remove(server_rec *, UCHAR *, int); +void ssl_scache_shmht_expire(server_rec *); +void ssl_scache_shmht_status(server_rec *, apr_pool_t *, void (*)(char *, void *), void *); + +void ssl_scache_shmcb_init(server_rec *, apr_pool_t *); +void ssl_scache_shmcb_kill(server_rec *); +BOOL ssl_scache_shmcb_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *); +SSL_SESSION *ssl_scache_shmcb_retrieve(server_rec *, UCHAR *, int); +void ssl_scache_shmcb_remove(server_rec *, UCHAR *, int); +void ssl_scache_shmcb_expire(server_rec *); +void ssl_scache_shmcb_status(server_rec *, apr_pool_t *, void (*)(char *, void *), void *); + +/* Pass Phrase Support */ +void ssl_pphrase_Handle(server_rec *, apr_pool_t *); + +/* Diffie-Hellman Parameter Support */ +DH *ssl_dh_GetTmpParam(int); +DH *ssl_dh_GetParamFromFile(char *); + +unsigned char *ssl_asn1_table_set(apr_hash_t *table, + const char *key, + long int length); + +ssl_asn1_t *ssl_asn1_table_get(apr_hash_t *table, + const char *key); + +void ssl_asn1_table_unset(apr_hash_t *table, + const char *key); + +const char *ssl_asn1_keystr(int keytype); + +const char *ssl_asn1_table_keyfmt(apr_pool_t *p, + const char *id, + int keytype); +/* Mutex Support */ +int ssl_mutex_init(server_rec *, apr_pool_t *); +int ssl_mutex_reinit(server_rec *, apr_pool_t *); +int ssl_mutex_on(server_rec *); +int ssl_mutex_off(server_rec *); + +/* Logfile Support */ +void ssl_die(void); +void ssl_log_ssl_error(const char *, int, int, server_rec *); + +/* Variables */ +void ssl_var_register(void); +char *ssl_var_lookup(apr_pool_t *, server_rec *, conn_rec *, request_rec *, char *); +void ssl_var_log_config_register(apr_pool_t *p); + +APR_DECLARE_OPTIONAL_FN(char *, ssl_var_lookup, + (apr_pool_t *, server_rec *, + conn_rec *, request_rec *, + char *)); + +/* An optional function which returns non-zero if the given connection + * is using SSL/TLS. */ +APR_DECLARE_OPTIONAL_FN(int, ssl_is_https, (conn_rec *)); + +/* Proxy Support */ +int ssl_proxy_enable(conn_rec *c); +int ssl_engine_disable(conn_rec *c); + +APR_DECLARE_OPTIONAL_FN(int, ssl_proxy_enable, (conn_rec *)); + +APR_DECLARE_OPTIONAL_FN(int, ssl_engine_disable, (conn_rec *)); + +/* I/O */ +void ssl_io_filter_init(conn_rec *, SSL *); +void ssl_io_filter_register(apr_pool_t *); +long ssl_io_data_cb(BIO *, int, MODSSL_BIO_CB_ARG_TYPE *, int, long, long); + +/* ssl_io_buffer_fill fills the setaside buffering of the HTTP request + * to allow an SSL renegotiation to take place. */ +int ssl_io_buffer_fill(request_rec *r); + +/* PRNG */ +int ssl_rand_seed(server_rec *, apr_pool_t *, ssl_rsctx_t, char *); + +/* Utility Functions */ +char *ssl_util_vhostid(apr_pool_t *, server_rec *); +void ssl_util_strupper(char *); +void ssl_util_uuencode(char *, const char *, BOOL); +void ssl_util_uuencode_binary(unsigned char *, const unsigned char *, int, BOOL); +apr_file_t *ssl_util_ppopen(server_rec *, apr_pool_t *, const char *, + const char * const *); +void ssl_util_ppclose(server_rec *, apr_pool_t *, apr_file_t *); +char *ssl_util_readfilter(server_rec *, apr_pool_t *, const char *, + const char * const *); +BOOL ssl_util_path_check(ssl_pathcheck_t, const char *, apr_pool_t *); +ssl_algo_t ssl_util_algotypeof(X509 *, EVP_PKEY *); +char *ssl_util_algotypestr(ssl_algo_t); +char *ssl_util_ptxtsub(apr_pool_t *, const char *, const char *, char *); +void ssl_util_thread_setup(apr_pool_t *); + +#define APR_SHM_MAXSIZE (64 * 1024 * 1024) +#endif /* __MOD_SSL_H__ */ diff --git a/rubbos/app/apache2/include/mod_status.h b/rubbos/app/apache2/include/mod_status.h new file mode 100644 index 00000000..03911a02 --- /dev/null +++ b/rubbos/app/apache2/include/mod_status.h @@ -0,0 +1,54 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOD_STATUS_H +#define MOD_STATUS_H + +#include "ap_config.h" +#include "httpd.h" + +#define AP_STATUS_SHORT (0x1) /* short, non-HTML report requested */ +#define AP_STATUS_NOTABLE (0x2) /* HTML report without tables */ +#define AP_STATUS_EXTENDED (0x4) /* detailed report */ + +#if !defined(WIN32) +#define STATUS_DECLARE(type) type +#define STATUS_DECLARE_NONSTD(type) type +#define STATUS_DECLARE_DATA +#elif defined(STATUS_DECLARE_STATIC) +#define STATUS_DECLARE(type) type __stdcall +#define STATUS_DECLARE_NONSTD(type) type +#define STATUS_DECLARE_DATA +#elif defined(STATUS_DECLARE_EXPORT) +#define STATUS_DECLARE(type) __declspec(dllexport) type __stdcall +#define STATUS_DECLARE_NONSTD(type) __declspec(dllexport) type +#define STATUS_DECLARE_DATA __declspec(dllexport) +#else +#define STATUS_DECLARE(type) __declspec(dllimport) type __stdcall +#define STATUS_DECLARE_NONSTD(type) __declspec(dllimport) type +#define STATUS_DECLARE_DATA __declspec(dllimport) +#endif + +/* Optional hooks which can insert extra content into the mod_status + * output. FLAGS will be set to the bitwise OR of any of the + * AP_STATUS_* flags. + * + * Implementations of this hook should generate content using + * functions in the ap_rputs/ap_rprintf family; each hook should + * return OK or DECLINED. */ +APR_DECLARE_EXTERNAL_HOOK(ap, STATUS, int, status_hook, + (request_rec *r, int flags)) +#endif diff --git a/rubbos/app/apache2/include/mpm.h b/rubbos/app/apache2/include/mpm.h new file mode 100644 index 00000000..31830c6c --- /dev/null +++ b/rubbos/app/apache2/include/mpm.h @@ -0,0 +1,50 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "scoreboard.h" +#include "unixd.h" + +#ifndef APACHE_MPM_WORKER_H +#define APACHE_MPM_WORKER_H + +#define WORKER_MPM + +#define MPM_NAME "Worker" + +#define AP_MPM_WANT_RECLAIM_CHILD_PROCESSES +#define AP_MPM_WANT_WAIT_OR_TIMEOUT +#define AP_MPM_WANT_PROCESS_CHILD_STATUS +#define AP_MPM_WANT_SET_PIDFILE +#define AP_MPM_WANT_SET_SCOREBOARD +#define AP_MPM_WANT_SET_LOCKFILE +#define AP_MPM_WANT_SET_MAX_REQUESTS +#define AP_MPM_WANT_SET_COREDUMPDIR +#define AP_MPM_WANT_SET_ACCEPT_LOCK_MECH +#define AP_MPM_WANT_SIGNAL_SERVER +#define AP_MPM_WANT_SET_MAX_MEM_FREE +#define AP_MPM_WANT_FATAL_SIGNAL_HANDLER +#define AP_MPM_DISABLE_NAGLE_ACCEPTED_SOCK + +#define MPM_CHILD_PID(i) (ap_scoreboard_image->parent[i].pid) +#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0) +#define MPM_ACCEPT_FUNC unixd_accept + +extern int ap_threads_per_child; +extern int ap_max_daemons_limit; +extern server_rec *ap_server_conf; +extern char ap_coredump_dir[MAX_STRING_LEN]; + +#endif /* APACHE_MPM_WORKER_H */ diff --git a/rubbos/app/apache2/include/mpm_common.h b/rubbos/app/apache2/include/mpm_common.h new file mode 100644 index 00000000..68ead5f7 --- /dev/null +++ b/rubbos/app/apache2/include/mpm_common.h @@ -0,0 +1,298 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* The purpose of this file is to store the code that MOST mpm's will need + * this does not mean a function only goes into this file if every MPM needs + * it. It means that if a function is needed by more than one MPM, and + * future maintenance would be served by making the code common, then the + * function belongs here. + * + * This is going in src/main because it is not platform specific, it is + * specific to multi-process servers, but NOT to Unix. Which is why it + * does not belong in src/os/unix + */ + +#ifndef APACHE_MPM_COMMON_H +#define APACHE_MPM_COMMON_H + +#include "ap_config.h" + +#if APR_HAVE_NETINET_TCP_H +#include /* for TCP_NODELAY */ +#endif + +#include "mpm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Multi-Processing Modules functions + */ + +/* The maximum length of the queue of pending connections, as defined + * by listen(2). Under some systems, it should be increased if you + * are experiencing a heavy TCP SYN flood attack. + * + * It defaults to 511 instead of 512 because some systems store it + * as an 8-bit datatype; 512 truncated to 8-bits is 0, while 511 is + * 255 when truncated. + */ +#ifndef DEFAULT_LISTENBACKLOG +#define DEFAULT_LISTENBACKLOG 511 +#endif + +/** + * Make sure all child processes that have been spawned by the parent process + * have died. This includes process registered as "other_children". + * @warning This is only defined if the MPM defines + * AP_MPM_WANT_RECLAIM_CHILD_PROCESSES + * @param terminate Either 1 or 0. If 1, send the child processes SIGTERM + * each time through the loop. If 0, give the process time to die + * on its own before signalling it. + * @tip This function requires that some macros are defined by the MPM:
    + *  MPM_CHILD_PID -- Get the pid from the specified spot in the scoreboard
    + *  MPM_NOTE_CHILD_KILLED -- Note the child died in the scoreboard
    + * 
    + * @tip The MPM child processes which are reclaimed are those listed + * in the scoreboard as well as those currently registered via + * ap_register_extra_mpm_process(). + */ +#ifdef AP_MPM_WANT_RECLAIM_CHILD_PROCESSES +void ap_reclaim_child_processes(int terminate); +#endif + +/** + * Tell ap_reclaim_child_processes() about an MPM child process which has no + * entry in the scoreboard. + * @warning This is only defined if the MPM defines + * AP_MPM_WANT_RECLAIM_CHILD_PROCESSES + * @param pid The process id of an MPM child process which should be + * reclaimed when ap_reclaim_child_processes() is called. + * @tip If an extra MPM child process terminates prior to calling + * ap_reclaim_child_processes(), remove it from the list of such processes + * by calling ap_unregister_extra_mpm_process(). + */ +#ifdef AP_MPM_WANT_RECLAIM_CHILD_PROCESSES +void ap_register_extra_mpm_process(pid_t pid); +#endif + +/** + * Unregister an MPM child process which was previously registered by a + * call to ap_register_extra_mpm_process(). + * @warning This is only defined if the MPM defines + * AP_MPM_WANT_RECLAIM_CHILD_PROCESSES + * @param pid The process id of an MPM child process which no longer needs to + * be reclaimed. + * @return 1 if the process was found and removed, 0 otherwise + */ +#ifdef AP_MPM_WANT_RECLAIM_CHILD_PROCESSES +int ap_unregister_extra_mpm_process(pid_t pid); +#endif + +/** + * Determine if any child process has died. If no child process died, then + * this process sleeps for the amount of time specified by the MPM defined + * macro SCOREBOARD_MAINTENANCE_INTERVAL. + * @param status The return code if a process has died + * @param ret The process id of the process that died + * @param p The pool to allocate out of + */ +#ifdef AP_MPM_WANT_WAIT_OR_TIMEOUT +void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret, + apr_pool_t *p); +#endif + +/** + * Log why a child died to the error log, if the child died without the + * parent signalling it. + * @param pid The child that has died + * @param status The status returned from ap_wait_or_timeout + * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate + */ +#ifdef AP_MPM_WANT_PROCESS_CHILD_STATUS +int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status); +#endif + +#if defined(TCP_NODELAY) && !defined(MPE) && !defined(TPF) +/** + * Turn off the nagle algorithm for the specified socket. The nagle algorithm + * says that we should delay sending partial packets in the hopes of getting + * more data. There are bad interactions between persistent connections and + * Nagle's algorithm that have severe performance penalties. + * @param s The socket to disable nagle for. + */ +void ap_sock_disable_nagle(apr_socket_t *s); +#else +#define ap_sock_disable_nagle(s) /* NOOP */ +#endif + +#ifdef HAVE_GETPWNAM +/** + * Convert a username to a numeric ID + * @param name The name to convert + * @return The user id corresponding to a name + * @deffunc uid_t ap_uname2id(const char *name) + */ +AP_DECLARE(uid_t) ap_uname2id(const char *name); +#endif + +#ifdef HAVE_GETGRNAM +/** + * Convert a group name to a numeric ID + * @param name The name to convert + * @return The group id corresponding to a name + * @deffunc gid_t ap_gname2id(const char *name) + */ +AP_DECLARE(gid_t) ap_gname2id(const char *name); +#endif + +#define AP_MPM_HARD_LIMITS_FILE APACHE_MPM_DIR "/mpm_default.h" + +#ifdef AP_MPM_USES_POD + +typedef struct ap_pod_t ap_pod_t; + +struct ap_pod_t { + apr_file_t *pod_in; + apr_file_t *pod_out; + apr_pool_t *p; + apr_sockaddr_t *sa; +}; + +/** + * Open the pipe-of-death. The pipe of death is used to tell all child + * processes that it is time to die gracefully. + * @param p The pool to use for allocating the pipe + */ +AP_DECLARE(apr_status_t) ap_mpm_pod_open(apr_pool_t *p, ap_pod_t **pod); + +/** + * Check the pipe to determine if the process has been signalled to die. + */ +AP_DECLARE(apr_status_t) ap_mpm_pod_check(ap_pod_t *pod); + +/** + * Close the pipe-of-death + */ +AP_DECLARE(apr_status_t) ap_mpm_pod_close(ap_pod_t *pod); + +/** + * Write data to the pipe-of-death, signalling that one child process + * should die. + * @param p The pool to use when allocating any required structures. + */ +AP_DECLARE(apr_status_t) ap_mpm_pod_signal(ap_pod_t *pod); + +/** + * Write data to the pipe-of-death, signalling that all child process + * should die. + * @param p The pool to use when allocating any required structures. + * @param num The number of child processes to kill + */ +AP_DECLARE(void) ap_mpm_pod_killpg(ap_pod_t *pod, int num); +#endif + +/* + * These data members are common to all mpms. Each new mpm + * should either use the appropriate ap_mpm_set_* function + * in their command table or create their own for custom or + * OS specific needs. These should work for most. + */ + +/** + * The maximum number of requests each child thread or + * process handles before dying off + */ +#ifdef AP_MPM_WANT_SET_MAX_REQUESTS +extern int ap_max_requests_per_child; +const char *ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +/** + * The filename used to store the process id. + */ +#ifdef AP_MPM_WANT_SET_PIDFILE +extern const char *ap_pid_fname; +const char *ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +/** + * The name of lockfile used when Apache needs to lock the accept() call. + */ +#ifdef AP_MPM_WANT_SET_LOCKFILE +extern const char *ap_lock_fname; +const char *ap_mpm_set_lockfile(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +/** + * The system mutex implementation to use for the accept mutex. + */ +#ifdef AP_MPM_WANT_SET_ACCEPT_LOCK_MECH +extern apr_lockmech_e ap_accept_lock_mech; +extern const char ap_valid_accept_mutex_string[]; +const char *ap_mpm_set_accept_lock_mech(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +/* + * Set the scorboard file. + */ +#ifdef AP_MPM_WANT_SET_SCOREBOARD +const char *ap_mpm_set_scoreboard(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +/* + * The directory that the server changes directory to dump core. + */ +#ifdef AP_MPM_WANT_SET_COREDUMPDIR +extern char ap_coredump_dir[MAX_STRING_LEN]; +extern int ap_coredumpdir_configured; +const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +#ifdef AP_MPM_WANT_SIGNAL_SERVER +int ap_signal_server(int *, apr_pool_t *); +void ap_mpm_rewrite_args(process_rec *); +#endif + +#ifdef AP_MPM_WANT_SET_MAX_MEM_FREE +extern apr_uint32_t ap_max_mem_free; +extern const char *ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +#ifdef AP_MPM_WANT_FATAL_SIGNAL_HANDLER +extern apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *pconf); +extern apr_status_t ap_fatal_signal_child_setup(server_rec *s); +#endif + +#if AP_ENABLE_EXCEPTION_HOOK +extern const char *ap_mpm_set_exception_hook(cmd_parms *cmd, void *dummy, + const char *arg); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_MPM_COMMON_H */ diff --git a/rubbos/app/apache2/include/mpm_default.h b/rubbos/app/apache2/include/mpm_default.h new file mode 100644 index 00000000..d5a33989 --- /dev/null +++ b/rubbos/app/apache2/include/mpm_default.h @@ -0,0 +1,69 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_MPM_DEFAULT_H +#define APACHE_MPM_DEFAULT_H + +/* Number of servers to spawn off by default --- also, if fewer than + * this free when the caretaker checks, it will spawn more. + */ +#ifndef DEFAULT_START_DAEMON +#define DEFAULT_START_DAEMON 3 +#endif + +/* Maximum number of *free* server processes --- more than this, and + * they will die off. + */ + +#ifndef DEFAULT_MAX_FREE_DAEMON +#define DEFAULT_MAX_FREE_DAEMON 10 +#endif + +/* Minimum --- fewer than this, and more will be created */ + +#ifndef DEFAULT_MIN_FREE_DAEMON +#define DEFAULT_MIN_FREE_DAEMON 3 +#endif + +#ifndef DEFAULT_THREADS_PER_CHILD +#define DEFAULT_THREADS_PER_CHILD 25 +#endif + +/* File used for accept locking, when we use a file */ +#ifndef DEFAULT_LOCKFILE +#define DEFAULT_LOCKFILE DEFAULT_REL_RUNTIMEDIR "/accept.lock" +#endif + +/* Where the main/parent process's pid is logged */ +#ifndef DEFAULT_PIDLOG +#define DEFAULT_PIDLOG DEFAULT_REL_RUNTIMEDIR "/httpd.pid" +#endif + +/* + * Interval, in microseconds, between scoreboard maintenance. + */ +#ifndef SCOREBOARD_MAINTENANCE_INTERVAL +#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000 +#endif + +/* Number of requests to try to handle in a single process. If <= 0, + * the children don't die off. + */ +#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD +#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000 +#endif + +#endif /* AP_MPM_DEFAULT_H */ diff --git a/rubbos/app/apache2/include/os.h b/rubbos/app/apache2/include/os.h new file mode 100644 index 00000000..59f1a439 --- /dev/null +++ b/rubbos/app/apache2/include/os.h @@ -0,0 +1,27 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_OS_H +#define APACHE_OS_H + +#include "apr.h" +#include "ap_config.h" + +#ifndef PLATFORM +#define PLATFORM "Unix" +#endif + +#endif /* !APACHE_OS_H */ diff --git a/rubbos/app/apache2/include/pcre.h b/rubbos/app/apache2/include/pcre.h new file mode 100644 index 00000000..d6c23939 --- /dev/null +++ b/rubbos/app/apache2/include/pcre.h @@ -0,0 +1,113 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* Copyright (c) 1997-2001 University of Cambridge */ + +#ifndef _PCRE_H +#define _PCRE_H + +/* The file pcre.h is build by "configure". Do not edit it; instead +make changes to pcre.in. */ + +#define PCRE_MAJOR 3 +#define PCRE_MINOR 9 +#define PCRE_DATE 02-Jan-2002 + +/* Win32 uses DLL by default */ + +#ifdef _WIN32 +# ifdef STATIC +# define PCRE_DL_IMPORT +# else +# define PCRE_DL_IMPORT __declspec(dllimport) +# endif +#else +# define PCRE_DL_IMPORT +#endif + +/* Have to include stdlib.h in order to ensure that size_t is defined; +it is needed here for malloc. */ + +#include + +/* Allow for C++ users */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Options */ + +#define PCRE_CASELESS 0x0001 +#define PCRE_MULTILINE 0x0002 +#define PCRE_DOTALL 0x0004 +#define PCRE_EXTENDED 0x0008 +#define PCRE_ANCHORED 0x0010 +#define PCRE_DOLLAR_ENDONLY 0x0020 +#define PCRE_EXTRA 0x0040 +#define PCRE_NOTBOL 0x0080 +#define PCRE_NOTEOL 0x0100 +#define PCRE_UNGREEDY 0x0200 +#define PCRE_NOTEMPTY 0x0400 +#define PCRE_UTF8 0x0800 + +/* Exec-time and get-time error codes */ + +#define PCRE_ERROR_NOMATCH (-1) +#define PCRE_ERROR_NULL (-2) +#define PCRE_ERROR_BADOPTION (-3) +#define PCRE_ERROR_BADMAGIC (-4) +#define PCRE_ERROR_UNKNOWN_NODE (-5) +#define PCRE_ERROR_NOMEMORY (-6) +#define PCRE_ERROR_NOSUBSTRING (-7) + +/* Request types for pcre_fullinfo() */ + +#define PCRE_INFO_OPTIONS 0 +#define PCRE_INFO_SIZE 1 +#define PCRE_INFO_CAPTURECOUNT 2 +#define PCRE_INFO_BACKREFMAX 3 +#define PCRE_INFO_FIRSTCHAR 4 +#define PCRE_INFO_FIRSTTABLE 5 +#define PCRE_INFO_LASTLITERAL 6 + +/* Types */ + +struct real_pcre; /* declaration; the definition is private */ +struct real_pcre_extra; /* declaration; the definition is private */ + +typedef struct real_pcre pcre; +typedef struct real_pcre_extra pcre_extra; + +/* Store get and free functions. These can be set to alternative malloc/free +functions if required. Some magic is required for Win32 DLL; it is null on +other OS. */ + +PCRE_DL_IMPORT extern void *(*pcre_malloc)(size_t); +PCRE_DL_IMPORT extern void (*pcre_free)(void *); + +#undef PCRE_DL_IMPORT + +/* Functions */ + +extern pcre *pcre_compile(const char *, int, const char **, int *, + const unsigned char *); +extern int pcre_copy_substring(const char *, int *, int, int, char *, int); +extern int pcre_exec(const pcre *, const pcre_extra *, const char *, + int, int, int, int *, int); +extern void pcre_free_substring(const char *); +extern void pcre_free_substring_list(const char **); +extern int pcre_get_substring(const char *, int *, int, int, const char **); +extern int pcre_get_substring_list(const char *, int *, int, const char ***); +extern int pcre_info(const pcre *, int *, int *); +extern int pcre_fullinfo(const pcre *, const pcre_extra *, int, void *); +extern const unsigned char *pcre_maketables(void); +extern pcre_extra *pcre_study(const pcre *, int, const char **); +extern const char *pcre_version(void); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* End of pcre.h */ diff --git a/rubbos/app/apache2/include/pcreposix.h b/rubbos/app/apache2/include/pcreposix.h new file mode 100644 index 00000000..e70af2de --- /dev/null +++ b/rubbos/app/apache2/include/pcreposix.h @@ -0,0 +1,88 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* Copyright (c) 1997-2001 University of Cambridge */ + +#ifndef _PCREPOSIX_H +#define _PCREPOSIX_H + +/* This is the header for the POSIX wrapper interface to the PCRE Perl- +Compatible Regular Expression library. It defines the things POSIX says should +be there. I hope. */ + +/* Have to include stdlib.h in order to ensure that size_t is defined. */ + +#include + +/* Allow for C++ users */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Options defined by POSIX. */ + +#define REG_ICASE 0x01 +#define REG_NEWLINE 0x02 +#define REG_NOTBOL 0x04 +#define REG_NOTEOL 0x08 + +/* These are not used by PCRE, but by defining them we make it easier +to slot PCRE into existing programs that make POSIX calls. */ + +#define REG_EXTENDED 0 +#define REG_NOSUB 0 + +/* Error values. Not all these are relevant or used by the wrapper. */ + +enum { + REG_ASSERT = 1, /* internal error ? */ + REG_BADBR, /* invalid repeat counts in {} */ + REG_BADPAT, /* pattern error */ + REG_BADRPT, /* ? * + invalid */ + REG_EBRACE, /* unbalanced {} */ + REG_EBRACK, /* unbalanced [] */ + REG_ECOLLATE, /* collation error - not relevant */ + REG_ECTYPE, /* bad class */ + REG_EESCAPE, /* bad escape sequence */ + REG_EMPTY, /* empty expression */ + REG_EPAREN, /* unbalanced () */ + REG_ERANGE, /* bad range inside [] */ + REG_ESIZE, /* expression too big */ + REG_ESPACE, /* failed to get memory */ + REG_ESUBREG, /* bad back reference */ + REG_INVARG, /* bad argument */ + REG_NOMATCH /* match failed */ +}; + + +/* The structure representing a compiled regular expression. */ + +typedef struct { + void *re_pcre; + size_t re_nsub; + size_t re_erroffset; +} regex_t; + +/* The structure in which a captured offset is returned. */ + +typedef int regoff_t; + +typedef struct { + regoff_t rm_so; + regoff_t rm_eo; +} regmatch_t; + +/* The functions */ + +extern int regcomp(regex_t *, const char *, int); +extern int regexec(regex_t *, const char *, size_t, regmatch_t *, int); +extern size_t regerror(int, const regex_t *, char *, size_t); +extern void regfree(regex_t *); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* End of pcreposix.h */ diff --git a/rubbos/app/apache2/include/pod.h b/rubbos/app/apache2/include/pod.h new file mode 100644 index 00000000..21651e6f --- /dev/null +++ b/rubbos/app/apache2/include/pod.h @@ -0,0 +1,50 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "apr.h" +#include "apr_strings.h" +#define APR_WANT_STRFUNC +#include "apr_want.h" + +#include "httpd.h" +#include "http_config.h" +#include "http_log.h" +#include "http_main.h" +#include "mpm.h" +#include "mpm_common.h" +#include "ap_mpm.h" +#include "ap_listen.h" +#include "mpm_default.h" + +#define RESTART_CHAR '$' +#define GRACEFUL_CHAR '!' + +#define AP_RESTART 0 +#define AP_GRACEFUL 1 + +typedef struct ap_pod_t ap_pod_t; + +struct ap_pod_t { + apr_file_t *pod_in; + apr_file_t *pod_out; + apr_pool_t *p; +}; + +AP_DECLARE(apr_status_t) ap_mpm_pod_open(apr_pool_t *p, ap_pod_t **pod); +AP_DECLARE(int) ap_mpm_pod_check(ap_pod_t *pod); +AP_DECLARE(apr_status_t) ap_mpm_pod_close(ap_pod_t *pod); +AP_DECLARE(apr_status_t) ap_mpm_pod_signal(ap_pod_t *pod, int graceful); +AP_DECLARE(void) ap_mpm_pod_killpg(ap_pod_t *pod, int num, int graceful); diff --git a/rubbos/app/apache2/include/rfc1413.h b/rubbos/app/apache2/include/rfc1413.h new file mode 100644 index 00000000..a4ffdf11 --- /dev/null +++ b/rubbos/app/apache2/include/rfc1413.h @@ -0,0 +1,42 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_RFC1413_H +#define APACHE_RFC1413_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package RFC1413 package + */ + +/** + * Retrieve the remote user name, given socket structures. This implements + * RFC1413, which involves querying the client's identd or auth daemon. + * @param conn The current connection + * @param srv The current server + * @return The remote user name + * @deffunc char *ap_rfc1413(conn_rec *conn, server_rec *srv) + */ +extern char *ap_rfc1413(conn_rec *conn, server_rec *srv); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_RFC1413_H */ diff --git a/rubbos/app/apache2/include/scoreboard.h b/rubbos/app/apache2/include/scoreboard.h new file mode 100644 index 00000000..6ca18582 --- /dev/null +++ b/rubbos/app/apache2/include/scoreboard.h @@ -0,0 +1,197 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_SCOREBOARD_H +#define APACHE_SCOREBOARD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_SYS_TIMES_H +#include +#include +#elif defined(TPF) +#include +#endif + +#include "ap_config.h" +#include "apr_hooks.h" +#include "apr_thread_proc.h" +#include "apr_portable.h" +#include "apr_shm.h" + +/* Scoreboard file, if there is one */ +#ifndef DEFAULT_SCOREBOARD +#define DEFAULT_SCOREBOARD "logs/apache_runtime_status" +#endif + +/* Scoreboard info on a process is, for now, kept very brief --- + * just status value and pid (the latter so that the caretaker process + * can properly update the scoreboard when a process dies). We may want + * to eventually add a separate set of long_score structures which would + * give, for each process, the number of requests serviced, and info on + * the current, or most recent, request. + * + * Status values: + */ + +#define SERVER_DEAD 0 +#define SERVER_STARTING 1 /* Server Starting up */ +#define SERVER_READY 2 /* Waiting for connection (or accept() lock) */ +#define SERVER_BUSY_READ 3 /* Reading a client request */ +#define SERVER_BUSY_WRITE 4 /* Processing a client request */ +#define SERVER_BUSY_KEEPALIVE 5 /* Waiting for more requests via keepalive */ +#define SERVER_BUSY_LOG 6 /* Logging the request */ +#define SERVER_BUSY_DNS 7 /* Looking up a hostname */ +#define SERVER_CLOSING 8 /* Closing the connection */ +#define SERVER_GRACEFUL 9 /* server is gracefully finishing request */ +#define SERVER_IDLE_KILL 10 /* Server is cleaning up idle children. */ +#define SERVER_NUM_STATUS 11 /* number of status settings */ + +/* Type used for generation indicies. Startup and every restart cause a + * new generation of children to be spawned. Children within the same + * generation share the same configuration information -- pointers to stuff + * created at config time in the parent are valid across children. However, + * this can't work effectively with non-forked architectures. So while the + * arrays in the scoreboard never change between the parent and forked + * children, so they do not require shm storage, the contents of the shm + * may contain no pointers. + */ +typedef int ap_generation_t; + +/* Is the scoreboard shared between processes or not? + * Set by the MPM when the scoreboard is created. + */ +typedef enum { + SB_NOT_SHARED = 1, + SB_SHARED = 2 +} ap_scoreboard_e; + +#define SB_WORKING 0 /* The server is busy and the child is useful. */ +#define SB_IDLE_DIE 1 /* The server is idle and the child is superfluous. */ + /* The child should check for this and exit gracefully. */ + +/* stuff which is worker specific */ +/***********************WARNING***************************************/ +/* These are things that are used by mod_status. Do not put anything */ +/* in here that you cannot live without. This structure will not */ +/* be available if mod_status is not loaded. */ +/*********************************************************************/ +typedef struct worker_score worker_score; + +struct worker_score { + int thread_num; +#if APR_HAS_THREADS + apr_os_thread_t tid; +#endif + unsigned char status; + unsigned long access_count; + apr_off_t bytes_served; + unsigned long my_access_count; + apr_off_t my_bytes_served; + apr_off_t conn_bytes; + unsigned short conn_count; + apr_time_t start_time; + apr_time_t stop_time; +#ifdef HAVE_TIMES + struct tms times; +#endif + apr_time_t last_used; + char client[32]; /* Keep 'em small... */ + char request[64]; /* We just want an idea... */ + char vhost[32]; /* What virtual host is being accessed? */ +}; + +typedef struct { + int server_limit; + int thread_limit; + ap_scoreboard_e sb_type; + ap_generation_t running_generation; /* the generation of children which + * should still be serving requests. */ + apr_time_t restart_time; +} global_score; + +/* stuff which the parent generally writes and the children rarely read */ +typedef struct process_score process_score; +struct process_score{ + pid_t pid; + ap_generation_t generation; /* generation of this child */ + ap_scoreboard_e sb_type; + int quiescing; /* the process whose pid is stored above is + * going down gracefully + */ +}; + +/* Scoreboard is now in 'local' memory, since it isn't updated once created, + * even in forked architectures. Child created-processes (non-fork) will + * set up these indicies into the (possibly relocated) shmem records. + */ +typedef struct { + global_score *global; + process_score *parent; + worker_score **servers; +} scoreboard; + +typedef struct ap_sb_handle_t ap_sb_handle_t; + +AP_DECLARE(int) ap_exists_scoreboard_image(void); +AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r); + +int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t); +apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached); +void ap_init_scoreboard(void *shared_score); +AP_DECLARE(int) ap_calc_scoreboard_size(void); +apr_status_t ap_cleanup_scoreboard(void *d); + +AP_DECLARE(void) ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t *p, + int child_num, int thread_num); + +AP_DECLARE(int) find_child_by_pid(apr_proc_t *pid); +AP_DECLARE(int) ap_update_child_status(ap_sb_handle_t *sbh, int status, request_rec *r); +AP_DECLARE(int) ap_update_child_status_from_indexes(int child_num, int thread_num, + int status, request_rec *r); +void ap_time_process_request(ap_sb_handle_t *sbh, int status); + +AP_DECLARE(worker_score *) ap_get_scoreboard_worker(int x, int y); +AP_DECLARE(process_score *) ap_get_scoreboard_process(int x); +AP_DECLARE(global_score *) ap_get_scoreboard_global(void); + +AP_DECLARE_DATA extern scoreboard *ap_scoreboard_image; +AP_DECLARE_DATA extern const char *ap_scoreboard_fname; +AP_DECLARE_DATA extern int ap_extended_status; + +AP_DECLARE_DATA extern ap_generation_t volatile ap_my_generation; + +/* Hooks */ +/** + * Hook for post scoreboard creation, pre mpm. + * @param p Apache pool to allocate from. + * @param sb_type + * @ingroup hooks + * @return OK or DECLINE on success; anything else is a error + */ +AP_DECLARE_HOOK(int, pre_mpm, (apr_pool_t *p, ap_scoreboard_e sb_type)) + +/* for time_process_request() in http_main.c */ +#define START_PREQUEST 1 +#define STOP_PREQUEST 2 + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_SCOREBOARD_H */ diff --git a/rubbos/app/apache2/include/ssl_expr.h b/rubbos/app/apache2/include/ssl_expr.h new file mode 100644 index 00000000..20b9fbdb --- /dev/null +++ b/rubbos/app/apache2/include/ssl_expr.h @@ -0,0 +1,104 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* _ _ + * _ __ ___ ___ __| | ___ ___| | mod_ssl + * | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL + * | | | | | | (_) | (_| | \__ \__ \ | + * |_| |_| |_|\___/ \__,_|___|___/___/_| + * |_____| + * ssl_expr.h + * Expression Handling (Header) + */ + /* ``May all your PUSHes be POPed.'' */ + +#ifndef __SSL_EXPR_H__ +#define __SSL_EXPR_H__ + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE !FALSE +#endif + +#ifndef YY_NULL +#define YY_NULL 0 +#endif + +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif + +#ifndef BOOL +#define BOOL unsigned int +#endif + +#ifndef NULL +#define NULL (void *)0 +#endif + +#ifndef NUL +#define NUL '\0' +#endif + +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif + +typedef enum { + op_NOP, op_ListElement, + op_True, op_False, op_Not, op_Or, op_And, op_Comp, + op_EQ, op_NE, op_LT, op_LE, op_GT, op_GE, op_IN, op_REG, op_NRE, + op_Digit, op_String, op_Regex, op_Var, op_Func +} ssl_expr_node_op; + +typedef struct { + ssl_expr_node_op node_op; + void *node_arg1; + void *node_arg2; + apr_pool_t *p; +} ssl_expr_node; + +typedef ssl_expr_node ssl_expr; + +typedef struct { + apr_pool_t *pool; + char *inputbuf; + int inputlen; + char *inputptr; + ssl_expr *expr; +} ssl_expr_info_type; + +extern ssl_expr_info_type ssl_expr_info; +extern char *ssl_expr_error; + +#define yylval ssl_expr_yylval +#define yyerror ssl_expr_yyerror +#define yyinput ssl_expr_yyinput + +extern int ssl_expr_yyparse(void); +extern int ssl_expr_yyerror(char *); +extern int ssl_expr_yylex(void); + +extern ssl_expr *ssl_expr_comp(apr_pool_t *, char *); +extern int ssl_expr_exec(request_rec *, ssl_expr *); +extern char *ssl_expr_get_error(void); +extern ssl_expr *ssl_expr_make(ssl_expr_node_op, void *, void *); +extern BOOL ssl_expr_eval(request_rec *, ssl_expr *); + +#endif /* __SSL_EXPR_H__ */ diff --git a/rubbos/app/apache2/include/ssl_expr_parse.h b/rubbos/app/apache2/include/ssl_expr_parse.h new file mode 100644 index 00000000..5378e287 --- /dev/null +++ b/rubbos/app/apache2/include/ssl_expr_parse.h @@ -0,0 +1,27 @@ +typedef union { + char *cpVal; + ssl_expr *exVal; +} YYSTYPE; +#define T_TRUE 257 +#define T_FALSE 258 +#define T_DIGIT 259 +#define T_ID 260 +#define T_STRING 261 +#define T_REGEX 262 +#define T_REGEX_I 263 +#define T_FUNC_FILE 264 +#define T_OP_EQ 265 +#define T_OP_NE 266 +#define T_OP_LT 267 +#define T_OP_LE 268 +#define T_OP_GT 269 +#define T_OP_GE 270 +#define T_OP_REG 271 +#define T_OP_NRE 272 +#define T_OP_IN 273 +#define T_OP_OR 274 +#define T_OP_AND 275 +#define T_OP_NOT 276 + + +extern YYSTYPE ssl_expr_yylval; diff --git a/rubbos/app/apache2/include/ssl_toolkit_compat.h b/rubbos/app/apache2/include/ssl_toolkit_compat.h new file mode 100644 index 00000000..72772150 --- /dev/null +++ b/rubbos/app/apache2/include/ssl_toolkit_compat.h @@ -0,0 +1,239 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef SSL_TOOLKIT_COMPAT_H +#define SSL_TOOLKIT_COMPAT_H + +/* + * this header file provides a compatiblity layer + * between OpenSSL and RSA sslc + */ + +#ifdef OPENSSL_VERSION_NUMBER + +/* + * rsa sslc uses incomplete types for most structures + * so we macroize for OpenSSL those which cannot be dereferenced + * using the same sames as the sslc functions + */ + +#define EVP_PKEY_key_type(k) (EVP_PKEY_type(k->type)) + +#define X509_NAME_get_entries(xs) (xs->entries) +#define X509_REVOKED_get_serialNumber(xs) (xs->serialNumber) + +#define X509_get_signature_algorithm(xs) (xs->cert_info->signature->algorithm) +#define X509_get_key_algorithm(xs) (xs->cert_info->key->algor->algorithm) + +#define X509_NAME_ENTRY_get_data_ptr(xs) (xs->value->data) +#define X509_NAME_ENTRY_get_data_len(xs) (xs->value->length) + +#define SSL_CTX_get_extra_certs(ctx) (ctx->extra_certs) +#define SSL_CTX_set_extra_certs(ctx,value) {ctx->extra_certs = value;} + +#define SSL_CIPHER_get_name(s) (s->name) +#define SSL_CIPHER_get_valid(s) (s->valid) + +#define SSL_SESSION_get_session_id(s) (s->session_id) +#define SSL_SESSION_get_session_id_length(s) (s->session_id_length) + +/* + * Support for retrieving/overriding states + */ +#ifndef SSL_get_state +#define SSL_get_state(ssl) SSL_state(ssl) +#endif + +#define SSL_set_state(ssl,val) (ssl)->state = val + +#define MODSSL_BIO_CB_ARG_TYPE const char +#define MODSSL_CRYPTO_CB_ARG_TYPE const char +#if (OPENSSL_VERSION_NUMBER < 0x00907000) +#define MODSSL_INFO_CB_ARG_TYPE SSL* +#else +#define MODSSL_INFO_CB_ARG_TYPE const SSL* +#endif +#define MODSSL_CLIENT_CERT_CB_ARG_TYPE X509 +#define MODSSL_PCHAR_CAST + +/* ...shifting sands of openssl... */ +#if (OPENSSL_VERSION_NUMBER >= 0x0090707f) +# define MODSSL_D2I_SSL_SESSION_CONST const +#else +# define MODSSL_D2I_SSL_SESSION_CONST +#endif + +#if (OPENSSL_VERSION_NUMBER >= 0x00908000) +# define MODSSL_D2I_PrivateKey_CONST const +# define MODSSL_D2I_X509_CONST const +#else +# define MODSSL_D2I_PrivateKey_CONST +# define MODSSL_D2I_X509_CONST +#endif + +#define modssl_X509_verify_cert X509_verify_cert + +typedef int (modssl_read_bio_cb_fn)(char*,int,int,void*); + +#if (OPENSSL_VERSION_NUMBER < 0x00904000) +#define modssl_PEM_read_bio_X509(b, x, cb, arg) PEM_read_bio_X509(b, x, cb) +#else +#define modssl_PEM_read_bio_X509(b, x, cb, arg) PEM_read_bio_X509(b, x, cb, arg) +#endif + +#define modssl_PEM_X509_INFO_read_bio PEM_X509_INFO_read_bio + +#define modssl_PEM_read_bio_PrivateKey PEM_read_bio_PrivateKey + +#define modssl_set_cipher_list SSL_set_cipher_list + +#define modssl_free OPENSSL_free + +#define EVP_PKEY_reference_inc(pkey) \ + CRYPTO_add(&((pkey)->references), +1, CRYPTO_LOCK_X509_PKEY) + +#define X509_reference_inc(cert) \ + CRYPTO_add(&((cert)->references), +1, CRYPTO_LOCK_X509) + +#define HAVE_SSL_RAND_EGD /* since 9.5.1 */ + +#ifdef HAVE_SSL_X509V3_H +#define HAVE_SSL_X509V3_EXT_d2i +#endif + +#ifndef PEM_F_DEF_CALLBACK +#ifdef PEM_F_PEM_DEF_CALLBACK +/* In OpenSSL 0.9.8 PEM_F_DEF_CALLBACK was renamed */ +#define PEM_F_DEF_CALLBACK PEM_F_PEM_DEF_CALLBACK +#endif +#endif + +#elif defined (SSLC_VERSION_NUMBER) /* RSA */ + +/* sslc does not support this function, OpenSSL has since 9.5.1 */ +#define RAND_status() 1 + +/* sslc names this function a bit differently */ +#define CRYPTO_num_locks() CRYPTO_get_num_locks() + +#ifndef STACK_OF +#define STACK_OF(type) STACK +#endif + +#define MODSSL_BIO_CB_ARG_TYPE char +#define MODSSL_CRYPTO_CB_ARG_TYPE char +#define MODSSL_INFO_CB_ARG_TYPE SSL* +#define MODSSL_CLIENT_CERT_CB_ARG_TYPE void +#define MODSSL_PCHAR_CAST (char *) +#define MODSSL_D2I_SSL_SESSION_CONST +#define MODSSL_D2I_PrivateKey_CONST +#define MODSSL_D2I_X509_CONST + +typedef int (modssl_read_bio_cb_fn)(char*,int,int); + +#define modssl_X509_verify_cert(c) X509_verify_cert(c, NULL) + +#define modssl_PEM_read_bio_X509(b, x, cb, arg) \ + PEM_read_bio_X509(b, x, cb) + +#define modssl_PEM_X509_INFO_read_bio(b, x, cb, arg)\ + PEM_X509_INFO_read_bio(b, x, cb) + +#define modssl_PEM_read_bio_PrivateKey(b, k, cb, arg) \ + PEM_read_bio_PrivateKey(b, k, cb) + +#ifndef HAVE_SSL_SET_STATE +#define SSL_set_state(ssl, state) /* XXX: should throw an error */ +#endif + +#define modssl_set_cipher_list(ssl, l) \ + SSL_set_cipher_list(ssl, (char *)l) + +#define modssl_free free + +#ifndef PEM_F_DEF_CALLBACK +#define PEM_F_DEF_CALLBACK PEM_F_DEF_CB +#endif + +#if SSLC_VERSION_NUMBER < 0x2000 + +#define X509_STORE_CTX_set_depth(st, d) +#define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) +#define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) +#define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) +#define X509_REVOKED_get_serialNumber(xs) (xs->serialNumber) + +#define modssl_set_verify(ssl, verify, cb) \ + SSL_set_verify(ssl, verify) + +#define NO_SSL_X509V3_H + +#else /* SSLC_VERSION_NUMBER >= 0x2000 */ + +#define CRYPTO_malloc_init R_malloc_init + +#define EVP_cleanup() + +#endif /* SSLC_VERSION_NUMBER >= 0x2000 */ + +typedef void (*modssl_popfree_fn)(char *data); + +#define sk_SSL_CIPHER_dup sk_dup +#define sk_SSL_CIPHER_find(st, data) sk_find(st, (void *)data) +#define sk_SSL_CIPHER_free sk_free +#define sk_SSL_CIPHER_num sk_num +#define sk_SSL_CIPHER_value (SSL_CIPHER *)sk_value +#define sk_X509_num sk_num +#define sk_X509_push sk_push +#define sk_X509_pop_free(st, free) sk_pop_free((STACK*)(st), (modssl_popfree_fn)(free)) +#define sk_X509_value (X509 *)sk_value +#define sk_X509_INFO_free sk_free +#define sk_X509_INFO_pop_free(st, free) sk_pop_free((STACK*)(st), (modssl_popfree_fn)(free)) +#define sk_X509_INFO_num sk_num +#define sk_X509_INFO_new_null sk_new_null +#define sk_X509_INFO_value (X509_INFO *)sk_value +#define sk_X509_NAME_find(st, data) sk_find(st, (void *)data) +#define sk_X509_NAME_free sk_free +#define sk_X509_NAME_new sk_new +#define sk_X509_NAME_num sk_num +#define sk_X509_NAME_push(st, data) sk_push(st, (void *)data) +#define sk_X509_NAME_value (X509_NAME *)sk_value +#define sk_X509_NAME_ENTRY_num sk_num +#define sk_X509_NAME_ENTRY_value (X509_NAME_ENTRY *)sk_value +#define sk_X509_NAME_set_cmp_func sk_set_cmp_func +#define sk_X509_REVOKED_num sk_num +#define sk_X509_REVOKED_value (X509_REVOKED *)sk_value + +#else /* ! OPENSSL_VERSION_NUMBER && ! SSLC_VERSION_NUMBER */ + +#error "Unrecognized SSL Toolkit!" + +#endif /* ! OPENSSL_VERSION_NUMBER && ! SSLC_VERSION_NUMBER */ + +#ifndef modssl_set_verify +#define modssl_set_verify(ssl, verify, cb) \ + SSL_set_verify(ssl, verify, cb) +#endif + +#ifndef NO_SSL_X509V3_H +#define HAVE_SSL_X509V3_H +#endif + +#ifndef SSL_SESS_CACHE_NO_INTERNAL +#define SSL_SESS_CACHE_NO_INTERNAL SSL_SESS_CACHE_NO_INTERNAL_LOOKUP +#endif + +#endif /* SSL_TOOLKIT_COMPAT_H */ diff --git a/rubbos/app/apache2/include/ssl_util_ssl.h b/rubbos/app/apache2/include/ssl_util_ssl.h new file mode 100644 index 00000000..d5c48f16 --- /dev/null +++ b/rubbos/app/apache2/include/ssl_util_ssl.h @@ -0,0 +1,93 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* _ _ + * _ __ ___ ___ __| | ___ ___| | mod_ssl + * | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL + * | | | | | | (_) | (_| | \__ \__ \ | + * |_| |_| |_|\___/ \__,_|___|___/___/_| + * |_____| + * ssl_util_ssl.h + * Additional Utility Functions for OpenSSL + */ + +#ifndef __SSL_UTIL_SSL_H__ +#define __SSL_UTIL_SSL_H__ + +/* + * Determine SSL library version number + */ +#define SSL_NIBBLE(x,n) ((x >> (n * 4)) & 0xF) + +#ifdef OPENSSL_VERSION_NUMBER +#define SSL_LIBRARY_VERSION OPENSSL_VERSION_NUMBER +#define SSL_LIBRARY_NAME "OpenSSL" +#define SSL_LIBRARY_TEXT OPENSSL_VERSION_TEXT +#define SSL_LIBRARY_DYNTEXT SSLeay_version(SSLEAY_VERSION) +#elif defined(SSLC_VERSION_NUMBER) +#define SSL_LIBRARY_VERSION SSLC_VERSION_NUMBER +#define SSL_LIBRARY_NAME "SSL-C" +#define SSL_LIBRARY_TEXT { 'S', 'S', 'L', '-', 'C', ' ', \ + '0' + SSL_NIBBLE(SSLC_VERSION_NUMBER,3), '.', \ + '0' + SSL_NIBBLE(SSLC_VERSION_NUMBER,2), '.', \ + '0' + SSL_NIBBLE(SSLC_VERSION_NUMBER,1), '.', \ + '0' + SSL_NIBBLE(SSLC_VERSION_NUMBER,0), 0 } +#define SSL_LIBRARY_DYNTEXT SSLC_library_info(SSLC_INFO_VERSION) +#elif !defined(SSL_LIBRARY_VERSION) +#define SSL_LIBRARY_VERSION 0x0000 +#define SSL_LIBRARY_NAME "OtherSSL" +#define SSL_LIBRARY_TEXT "OtherSSL 0.0.0 00 XXX 0000" +#define SSL_LIBRARY_DYNTEXT "OtherSSL 0.0.0 00 XXX 0000" +#endif + +/* + * Maximum length of a DER encoded session. + * FIXME: There is no define in OpenSSL, but OpenSSL uses 1024*10, + * so this value should be ok. Although we have no warm feeling. + */ +#define SSL_SESSION_MAX_DER 1024*10 + +/* max length for SSL_SESSION_id2sz */ +#define SSL_SESSION_ID_STRING_LEN \ + ((SSL_MAX_SSL_SESSION_ID_LENGTH + 1) * 2) + +/* + * Additional Functions + */ +void SSL_init_app_data2_idx(void); +void *SSL_get_app_data2(SSL *); +void SSL_set_app_data2(SSL *, void *); +X509 *SSL_read_X509(char *, X509 **, modssl_read_bio_cb_fn *); +EVP_PKEY *SSL_read_PrivateKey(char *, EVP_PKEY **, modssl_read_bio_cb_fn *, void *); +int SSL_smart_shutdown(SSL *ssl); +X509_STORE *SSL_X509_STORE_create(char *, char *); +int SSL_X509_STORE_lookup(X509_STORE *, int, X509_NAME *, X509_OBJECT *); +char *SSL_make_ciphersuite(apr_pool_t *, SSL *); +BOOL SSL_X509_isSGC(X509 *); +BOOL SSL_X509_getBC(X509 *, int *, int *); +BOOL SSL_X509_getCN(apr_pool_t *, X509 *, char **); +BOOL SSL_X509_INFO_load_file(apr_pool_t *, STACK_OF(X509_INFO) *, const char *); +BOOL SSL_X509_INFO_load_path(apr_pool_t *, STACK_OF(X509_INFO) *, const char *); +int SSL_CTX_use_certificate_chain(SSL_CTX *, char *, int, modssl_read_bio_cb_fn *); +char *SSL_SESSION_id2sz(unsigned char *, int, char *, int); + +/* util functions for OpenSSL+sslc compat */ +int modssl_session_get_time(SSL_SESSION *session); + +DH *modssl_dh_configure(unsigned char *p, int plen, + unsigned char *g, int glen); + +#endif /* __SSL_UTIL_SSL_H__ */ diff --git a/rubbos/app/apache2/include/ssl_util_table.h b/rubbos/app/apache2/include/ssl_util_table.h new file mode 100644 index 00000000..33438b2f --- /dev/null +++ b/rubbos/app/apache2/include/ssl_util_table.h @@ -0,0 +1,152 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* _ _ + * _ __ ___ ___ __| | ___ ___| | mod_ssl + * | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL + * | | | | | | (_) | (_| | \__ \__ \ | + * |_| |_| |_|\___/ \__,_|___|___/___/_| + * |_____| + * ssl_util_table.h + * High Performance Hash Table Header + */ + +/* + * Generic hash table defines + * Table 4.1.0 July-28-1998 + * + * This library is a generic open hash table with buckets and + * linked lists. It is pretty high performance. Each element + * has a key and a data. The user indexes on the key to find the + * data. + * + * Copyright 1998 by Gray Watson + * + * Permission to use, copy, modify, and distribute this software for any + * purpose and without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies, + * and that the name of Gray Watson not be used in advertising or + * publicity pertaining to distribution of the document or software + * without specific, written prior permission. + * + * Gray Watson makes no representations about the suitability of the + * software described herein for any purpose. It is provided "as is" + * without express or implied warranty. + */ + +#ifndef __SSL_UTIL_TABLE_H__ +#define __SSL_UTIL_TABLE_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* + * To build a "key" in any of the below routines, pass in a pointer to + * the key and its size [i.e. sizeof(int), etc]. With any of the + * "key" or "data" arguments, if their size is < 0, it will do an + * internal strlen of the item and add 1 for the \0. + * + * If you are using firstkey() and nextkey() functions, be careful if, + * after starting your firstkey loop, you use delete or insert, it + * will not crash but may produce interesting results. If you are + * deleting from firstkey to NULL it will work fine. + */ + +/* return types for table functions */ +#define TABLE_ERROR_NONE 1 /* no error from function */ +#define TABLE_ERROR_PNT 2 /* bad table pointer */ +#define TABLE_ERROR_ARG_NULL 3 /* buffer args were null */ +#define TABLE_ERROR_SIZE 4 /* size of data was bad */ +#define TABLE_ERROR_OVERWRITE 5 /* key exists and we cant overwrite */ +#define TABLE_ERROR_NOT_FOUND 6 /* key does not exist */ +#define TABLE_ERROR_ALLOC 7 /* memory allocation error */ +#define TABLE_ERROR_LINEAR 8 /* no linear access started */ +#define TABLE_ERROR_OPEN 9 /* could not open file */ +#define TABLE_ERROR_SEEK 10 /* could not seek to pos in file */ +#define TABLE_ERROR_READ 11 /* could not read from file */ +#define TABLE_ERROR_WRITE 12 /* could not write to file */ +#define TABLE_ERROR_EMPTY 13 /* table is empty */ +#define TABLE_ERROR_NOT_EMPTY 14 /* table contains data */ +#define TABLE_ERROR_ALIGNMENT 15 /* invalid alignment value */ + +/* + * Table flags set with table_attr. + */ + +/* + * Automatically adjust the number of table buckets on the fly. + * Whenever the number of entries gets above some threshold, the + * number of buckets is realloced to a new size and each entry is + * re-hashed. Although this may take some time when it re-hashes, the + * table will perform better over time. + */ +#define TABLE_FLAG_AUTO_ADJUST (1<<0) + +/* + * If the above auto-adjust flag is set, also adjust the number of + * table buckets down as we delete entries. + */ +#define TABLE_FLAG_ADJUST_DOWN (1<<1) + +/* structure to walk through the fields in a linear order */ +typedef struct { + unsigned int tl_magic; /* magic structure to ensure correct init */ + unsigned int tl_bucket_c; /* where in the table buck array we are */ + unsigned int tl_entry_c; /* in the bucket, which entry we are on */ +} table_linear_t; + +typedef int (*table_compare_t)(const void *key1, const int key1_size, + const void *data1, const int data1_size, + const void *key2, const int key2_size, + const void *data2, const int data2_size); + +#ifndef TABLE_PRIVATE +typedef void table_t; +typedef void table_entry_t; +#endif + +/* + * Prototypes + */ +extern table_t *table_alloc(const unsigned int bucket_n, int *error_p, void *(*malloc_f)(void *opt_param, size_t size), void *(*calloc_f)(void *opt_param, size_t number, size_t size), void *(*realloc_f)(void *opt_param, void *ptr, size_t size), void (*free_f)(void *opt_param, void *ptr), void *opt_param); +extern int table_attr(table_t *table_p, const int attr); +extern int table_set_data_alignment(table_t *table_p, const int alignment); +extern int table_clear(table_t *table_p); +extern int table_free(table_t *table_p); +extern int table_insert_kd(table_t *table_p, const void *key_buf, const int key_size, const void *data_buf, const int data_size, void **key_buf_p, void **data_buf_p, const char overwrite_b); +extern int table_insert(table_t *table_p, const void *key_buf, const int key_size, const void *data_buf, const int data_size, void **data_buf_p, const char overwrite_b); +extern int table_retrieve(table_t *table_p, const void *key_buf, const int key_size, void **data_buf_p, int *data_size_p); +extern int table_delete(table_t *table_p, const void *key_buf, const int key_size, void **data_buf_p, int *data_size_p); +extern int table_delete_first(table_t *table_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern int table_info(table_t *table_p, int *num_buckets_p, int *num_entries_p); +extern int table_adjust(table_t *table_p, const int bucket_n); +extern const char *table_strerror(const int error); +extern int table_type_size(void); +extern int table_first(table_t *table_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern int table_next(table_t *table_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern int table_this(table_t *table_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern int table_first_r(table_t *table_p, table_linear_t *linear_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern int table_next_r(table_t *table_p, table_linear_t *linear_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern int table_this_r(table_t *table_p, table_linear_t *linear_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); +extern table_entry_t **table_order(table_t *table_p, table_compare_t compare, int *num_entries_p, int *error_p); +extern int table_entry_info(table_t *table_p, table_entry_t *entry_p, void **key_buf_p, int *key_size_p, void **data_buf_p, int *data_size_p); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __SSL_UTIL_TABLE_H__ */ diff --git a/rubbos/app/apache2/include/unixd.h b/rubbos/app/apache2/include/unixd.h new file mode 100644 index 00000000..c6bec924 --- /dev/null +++ b/rubbos/app/apache2/include/unixd.h @@ -0,0 +1,109 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef UNIXD_H +#define UNIXD_H + +#include "httpd.h" +#include "http_config.h" +#include "ap_listen.h" +#ifdef HAVE_SYS_TIME_H +#include +#endif +#ifdef HAVE_SYS_RESOURCE_H +#include +#endif +#include "apr_hooks.h" +#include "apr_thread_proc.h" +#include "apr_proc_mutex.h" +#include "apr_global_mutex.h" + +#include +#include +#ifdef APR_HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_IPC_H +#include +#endif + +typedef struct { + uid_t uid; + gid_t gid; + int userdir; +} ap_unix_identity_t; + +AP_DECLARE_HOOK(ap_unix_identity_t *, get_suexec_identity,(const request_rec *r)) + +/* common stuff that unix MPMs will want */ + +/* Default user name and group name. These may be specified as numbers by + * placing a # before a number */ + +#ifndef DEFAULT_USER +#define DEFAULT_USER "#-1" +#endif +#ifndef DEFAULT_GROUP +#define DEFAULT_GROUP "#-1" +#endif + +typedef struct { + const char *user_name; + uid_t user_id; + gid_t group_id; + int suexec_enabled; +} unixd_config_rec; +AP_DECLARE_DATA extern unixd_config_rec unixd_config; + +AP_DECLARE(int) unixd_setup_child(void); +AP_DECLARE(void) unixd_pre_config(apr_pool_t *ptemp); +AP_DECLARE(const char *) unixd_set_user(cmd_parms *cmd, void *dummy, + const char *arg); +AP_DECLARE(const char *) unixd_set_group(cmd_parms *cmd, void *dummy, + const char *arg); +#if defined(RLIMIT_CPU) || defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_NPROC) || defined(RLIMIT_AS) +AP_DECLARE(void) unixd_set_rlimit(cmd_parms *cmd, struct rlimit **plimit, + const char *arg, const char * arg2, int type); +#endif + +/** + * One of the functions to set mutex permissions should be called in + * the parent process on platforms that switch identity when the + * server is started as root. + * If the child init logic is performed before switching identity + * (e.g., MPM setup for an accept mutex), it should only be called + * for SysV semaphores. Otherwise, it is safe to call it for all + * mutex types. + */ +AP_DECLARE(apr_status_t) unixd_set_proc_mutex_perms(apr_proc_mutex_t *pmutex); +AP_DECLARE(apr_status_t) unixd_set_global_mutex_perms(apr_global_mutex_t *gmutex); +AP_DECLARE(apr_status_t) unixd_accept(void **accepted, ap_listen_rec *lr, apr_pool_t *ptrans); + +#ifdef HAVE_KILLPG +#define unixd_killpg(x, y) (killpg ((x), (y))) +#define ap_os_killpg(x, y) (killpg ((x), (y))) +#else /* HAVE_KILLPG */ +#define unixd_killpg(x, y) (kill (-(x), (y))) +#define ap_os_killpg(x, y) (kill (-(x), (y))) +#endif /* HAVE_KILLPG */ + +#define UNIX_DAEMON_COMMANDS \ +AP_INIT_TAKE1("User", unixd_set_user, NULL, RSRC_CONF, \ + "Effective user id for this server"), \ +AP_INIT_TAKE1("Group", unixd_set_group, NULL, RSRC_CONF, \ + "Effective group id for this server") + +#endif diff --git a/rubbos/app/apache2/include/util_cfgtree.h b/rubbos/app/apache2/include/util_cfgtree.h new file mode 100644 index 00000000..a23330bc --- /dev/null +++ b/rubbos/app/apache2/include/util_cfgtree.h @@ -0,0 +1,79 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_CONFTREE_H +#define AP_CONFTREE_H + +#include "ap_config.h" + +/** + * @package Config Tree Package + */ + +typedef struct ap_directive_t ap_directive_t; + +/** + * Structure used to build the config tree. The config tree only stores + * the directives that will be active in the running server. Directives + * that contain other directions, such as cause a sub-level + * to be created, where the included directives are stored. The closing + * directive () is not stored in the tree. + */ +struct ap_directive_t { + /** The current directive */ + const char *directive; + /** The arguments for the current directive, stored as a space + * separated list */ + const char *args; + /** The next directive node in the tree + * @defvar ap_directive_t *next */ + struct ap_directive_t *next; + /** The first child node of this directive + * @defvar ap_directive_t *first_child */ + struct ap_directive_t *first_child; + /** The parent node of this directive + * @defvar ap_directive_t *parent */ + struct ap_directive_t *parent; + + /** directive's module can store add'l data here */ + void *data; + + /* ### these may go away in the future, but are needed for now */ + /** The name of the file this directive was found in */ + const char *filename; + /** The line number the directive was on */ + int line_num; +}; + +/** + * The root of the configuration tree + * @defvar ap_directive_t *conftree + */ +AP_DECLARE_DATA extern ap_directive_t *ap_conftree; + +/** + * Add a node to the configuration tree. + * @param parent The current parent node. If the added node is a first_child, + then this is changed to the current node + * @param current The current node + * @param toadd The node to add to the tree + * @param child Is the node to add a child node + * @return the added node + */ +ap_directive_t *ap_add_node(ap_directive_t **parent, ap_directive_t *current, + ap_directive_t *toadd, int child); + +#endif diff --git a/rubbos/app/apache2/include/util_charset.h b/rubbos/app/apache2/include/util_charset.h new file mode 100644 index 00000000..449a8700 --- /dev/null +++ b/rubbos/app/apache2/include/util_charset.h @@ -0,0 +1,54 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_UTIL_CHARSET_H +#define APACHE_UTIL_CHARSET_H + +#ifdef APACHE_XLATE + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package charset conversion + */ +#include "apr_xlate.h" + +/** On EBCDIC machine this is a translation handle used to translate the + * headers from the local machine format to ASCII for network transmission. + * On an ASCII machine this is NULL */ +extern apr_xlate_t *ap_hdrs_to_ascii; +/** On EBCDIC machine this is a translation handle used to translate the + * headers from ASCII to the local machine format after network transmission. + * On an ASCII machine this is NULL */ +extern apr_xlate_t *ap_hdrs_from_ascii; +/** On EBCDIC machine this is a translation handle used to translate the + * content from the local machine format to ASCII for network transmission. + * On an ASCII machine this is NULL */ +extern apr_xlate_t *ap_locale_to_ascii; +/** On EBCDIC machine this is a translation handle used to translate the + * content from ASCII to the local machine format after network transmission. + * On an ASCII machine this is NULL */ +extern apr_xlate_t *ap_locale_from_ascii; + +#ifdef __cplusplus +} +#endif + +#endif /* APACHE_XLATE */ + +#endif /* !APACHE_UTIL_CHARSET_H */ diff --git a/rubbos/app/apache2/include/util_ebcdic.h b/rubbos/app/apache2/include/util_ebcdic.h new file mode 100644 index 00000000..0cd54cee --- /dev/null +++ b/rubbos/app/apache2/include/util_ebcdic.h @@ -0,0 +1,78 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_UTIL_EBCDIC_H +#define APACHE_UTIL_EBCDIC_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "apr_xlate.h" +#include "httpd.h" +#include "util_charset.h" + +/** + * @package Utilities for EBCDIC conversion + */ + +#if APR_CHARSET_EBCDIC + +/** + * Setup all of the global translation handlers + * @param pool pool to allocate out of + */ +apr_status_t ap_init_ebcdic(apr_pool_t *pool); + +/** + * Convert protocol data from the implementation character + * set to ASCII. + * @param buffer buffer to translate + * @param len number of bytes to translate + */ +void ap_xlate_proto_to_ascii(char *buffer, apr_size_t len); + +/** + * Convert protocol data to the implementation character + * set from ASCII. + * @param buffer buffer to translate + * @param len number of bytes to translate + */ +void ap_xlate_proto_from_ascii(char *buffer, apr_size_t len); + +/** + * Convert protocol data from the implementation charater + * set to ASCII, then send it. + * @param r the current request + * @param ... the strings to write, followed by a NULL pointer + */ +int ap_rvputs_proto_in_ascii(request_rec *r, ...); + +#else /* APR_CHARSET_EBCDIC */ + +#define ap_xlate_proto_to_ascii(x,y) /* NOOP */ +#define ap_xlate_proto_from_ascii(x,y) /* NOOP */ + +#define ap_rvputs_proto_in_ascii ap_rvputs + +#endif /* APR_CHARSET_EBCDIC */ + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_UTIL_EBCDIC_H */ diff --git a/rubbos/app/apache2/include/util_filter.h b/rubbos/app/apache2/include/util_filter.h new file mode 100644 index 00000000..a5c9802a --- /dev/null +++ b/rubbos/app/apache2/include/util_filter.h @@ -0,0 +1,516 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AP_FILTER_H +#define AP_FILTER_H + +#include "apr.h" +#include "apr_buckets.h" + +#include "httpd.h" + +#if APR_HAVE_STDARG_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file util_filter.h + * @brief Apache filter library + */ + +/** Returned by the bottom-most filter if no data was written. + * @see ap_pass_brigade(). */ +#define AP_NOBODY_WROTE -1 +/** Returned by the bottom-most filter if no data was read. + * @see ap_get_brigade(). */ +#define AP_NOBODY_READ -2 +/** Returned when?? @bug find out when! */ +#define AP_FILTER_ERROR -3 + +/** + * input filtering modes + */ +typedef enum { + /** The filter should return at most readbytes data. */ + AP_MODE_READBYTES, + /** The filter should return at most one line of CRLF data. + * (If a potential line is too long or no CRLF is found, the + * filter may return partial data). + */ + AP_MODE_GETLINE, + /** The filter should implicitly eat any CRLF pairs that it sees. */ + AP_MODE_EATCRLF, + /** The filter read should be treated as speculative and any returned + * data should be stored for later retrieval in another mode. */ + AP_MODE_SPECULATIVE, + /** The filter read should be exhaustive and read until it can not + * read any more. + * Use this mode with extreme caution. + */ + AP_MODE_EXHAUSTIVE, + /** The filter should initialize the connection if needed, + * NNTP or FTP over SSL for example. + */ + AP_MODE_INIT +} ap_input_mode_t; + +/** + * @defgroup filter FILTER CHAIN + * + * Filters operate using a "chaining" mechanism. The filters are chained + * together into a sequence. When output is generated, it is passed through + * each of the filters on this chain, until it reaches the end (or "bottom") + * and is placed onto the network. + * + * The top of the chain, the code generating the output, is typically called + * a "content generator." The content generator's output is fed into the + * filter chain using the standard Apache output mechanisms: ap_rputs(), + * ap_rprintf(), ap_rwrite(), etc. + * + * Each filter is defined by a callback. This callback takes the output from + * the previous filter (or the content generator if there is no previous + * filter), operates on it, and passes the result to the next filter in the + * chain. This pass-off is performed using the ap_fc_* functions, such as + * ap_fc_puts(), ap_fc_printf(), ap_fc_write(), etc. + * + * When content generation is complete, the system will pass an "end of + * stream" marker into the filter chain. The filters will use this to flush + * out any internal state and to detect incomplete syntax (for example, an + * unterminated SSI directive). + */ + +/* forward declare the filter type */ +typedef struct ap_filter_t ap_filter_t; + +/** + * @name Filter callbacks + * + * This function type is used for filter callbacks. It will be passed a + * pointer to "this" filter, and a "bucket" containing the content to be + * filtered. + * + * In filter->ctx, the callback will find its context. This context is + * provided here, so that a filter may be installed multiple times, each + * receiving its own per-install context pointer. + * + * Callbacks are associated with a filter definition, which is specified + * by name. See ap_register_input_filter() and ap_register_output_filter() + * for setting the association between a name for a filter and its + * associated callback (and other information). + * + * If the initialization function argument passed to the registration + * functions is non-NULL, it will be called iff the filter is in the input + * or output filter chains and before any data is generated to allow the + * filter to prepare for processing. + * + * The *bucket structure (and all those referenced by ->next and ->prev) + * should be considered "const". The filter is allowed to modify the + * next/prev to insert/remove/replace elements in the bucket list, but + * the types and values of the individual buckets should not be altered. + * + * For the input and output filters, the return value of a filter should be + * an APR status value. For the init function, the return value should + * be an HTTP error code or OK if it was successful. + * + * @ingroup filter + * @{ + */ +typedef apr_status_t (*ap_out_filter_func)(ap_filter_t *f, + apr_bucket_brigade *b); +typedef apr_status_t (*ap_in_filter_func)(ap_filter_t *f, + apr_bucket_brigade *b, + ap_input_mode_t mode, + apr_read_type_e block, + apr_off_t readbytes); +typedef int (*ap_init_filter_func)(ap_filter_t *f); + +typedef union ap_filter_func { + ap_out_filter_func out_func; + ap_in_filter_func in_func; +} ap_filter_func; + +/** @} */ + +/** + * Filters have different types/classifications. These are used to group + * and sort the filters to properly sequence their operation. + * + * The types have a particular sort order, which allows us to insert them + * into the filter chain in a determistic order. Within a particular grouping, + * the ordering is equivalent to the order of calls to ap_add_*_filter(). + */ +typedef enum { + /** These filters are used to alter the content that is passed through + * them. Examples are SSI or PHP. */ + AP_FTYPE_RESOURCE = 10, + /** These filters are used to alter the content as a whole, but after all + * AP_FTYPE_RESOURCE filters are executed. These filters should not + * change the content-type. An example is deflate. */ + AP_FTYPE_CONTENT_SET = 20, + /** These filters are used to handle the protocol between server and + * client. Examples are HTTP and POP. */ + AP_FTYPE_PROTOCOL = 30, + /** These filters implement transport encodings (e.g., chunking). */ + AP_FTYPE_TRANSCODE = 40, + /** These filters will alter the content, but in ways that are + * more strongly associated with the connection. Examples are + * splitting an HTTP connection into multiple requests and + * buffering HTTP responses across multiple requests. + * + * It is important to note that these types of filters are not + * allowed in a sub-request. A sub-request's output can certainly + * be filtered by ::AP_FTYPE_RESOURCE filters, but all of the "final + * processing" is determined by the main request. */ + AP_FTYPE_CONNECTION = 50, + /** These filters don't alter the content. They are responsible for + * sending/receiving data to/from the client. */ + AP_FTYPE_NETWORK = 60 +} ap_filter_type; + +/** + * This is the request-time context structure for an installed filter (in + * the output filter chain). It provides the callback to use for filtering, + * the request this filter is associated with (which is important when + * an output chain also includes sub-request filters), the context for this + * installed filter, and the filter ordering/chaining fields. + * + * Filter callbacks are free to use ->ctx as they please, to store context + * during the filter process. Generally, this is superior over associating + * the state directly with the request. A callback should not change any of + * the other fields. + */ + +typedef struct ap_filter_rec_t ap_filter_rec_t; + +/** + * This structure is used for recording information about the + * registered filters. It associates a name with the filter's callback + * and filter type. + * + * At the moment, these are simply linked in a chain, so a ->next pointer + * is available. + */ +struct ap_filter_rec_t { + /** The registered name for this filter */ + const char *name; + /** The function to call when this filter is invoked. */ + ap_filter_func filter_func; + /** The function to call before the handlers are invoked. Notice + * that this function is called only for filters participating in + * the http protocol. Filters for other protocols are to be + * initiliazed by the protocols themselves. */ + ap_init_filter_func filter_init_func; + /** The type of filter, either AP_FTYPE_CONTENT or AP_FTYPE_CONNECTION. + * An AP_FTYPE_CONTENT filter modifies the data based on information + * found in the content. An AP_FTYPE_CONNECTION filter modifies the + * data based on the type of connection. + */ + ap_filter_type ftype; + + /** The next filter_rec in the list */ + struct ap_filter_rec_t *next; +}; + +/** + * The representation of a filter chain. Each request has a list + * of these structures which are called in turn to filter the data. Sub + * requests get an exact copy of the main requests filter chain. + */ +struct ap_filter_t { + /** The internal representation of this filter. This includes + * the filter's name, type, and the actual function pointer. + */ + ap_filter_rec_t *frec; + + /** A place to store any data associated with the current filter */ + void *ctx; + + /** The next filter in the chain */ + ap_filter_t *next; + + /** The request_rec associated with the current filter. If a sub-request + * adds filters, then the sub-request is the request associated with the + * filter. + */ + request_rec *r; + + /** The conn_rec associated with the current filter. This is analogous + * to the request_rec, except that it is used for input filtering. + */ + conn_rec *c; +}; + +/** + * Get the current bucket brigade from the next filter on the filter + * stack. The filter returns an apr_status_t value. If the bottom-most + * filter doesn't read from the network, then ::AP_NOBODY_READ is returned. + * The bucket brigade will be empty when there is nothing left to get. + * @param filter The next filter in the chain + * @param bucket The current bucket brigade. The original brigade passed + * to ap_get_brigade() must be empty. + * @param mode The way in which the data should be read + * @param block How the operations should be performed + * ::APR_BLOCK_READ, ::APR_NONBLOCK_READ + * @param readbytes How many bytes to read from the next filter. + */ +AP_DECLARE(apr_status_t) ap_get_brigade(ap_filter_t *filter, + apr_bucket_brigade *bucket, + ap_input_mode_t mode, + apr_read_type_e block, + apr_off_t readbytes); + +/** + * Pass the current bucket brigade down to the next filter on the filter + * stack. The filter returns an apr_status_t value. If the bottom-most + * filter doesn't write to the network, then ::AP_NOBODY_WROTE is returned. + * The caller relinquishes ownership of the brigade. + * @param filter The next filter in the chain + * @param bucket The current bucket brigade + */ +AP_DECLARE(apr_status_t) ap_pass_brigade(ap_filter_t *filter, + apr_bucket_brigade *bucket); + +/** + * This function is used to register an input filter with the system. + * After this registration is performed, then a filter may be added + * into the filter chain by using ap_add_input_filter() and simply + * specifying the name. + * + * @param name The name to attach to the filter function + * @param filter_func The filter function to name + * @param filter_init The function to call before the filter handlers + are invoked + * @param ftype The type of filter function, either ::AP_FTYPE_CONTENT or + * ::AP_FTYPE_CONNECTION + * @see add_input_filter() + */ +AP_DECLARE(ap_filter_rec_t *) ap_register_input_filter(const char *name, + ap_in_filter_func filter_func, + ap_init_filter_func filter_init, + ap_filter_type ftype); +/** + * This function is used to register an output filter with the system. + * After this registration is performed, then a filter may be added + * into the filter chain by using ap_add_output_filter() and simply + * specifying the name. + * + * @param name The name to attach to the filter function + * @param filter_func The filter function to name + * @param filter_init The function to call before the filter handlers + * are invoked + * @param ftype The type of filter function, either ::AP_FTYPE_CONTENT or + * ::AP_FTYPE_CONNECTION + * @see ap_add_output_filter() + */ +AP_DECLARE(ap_filter_rec_t *) ap_register_output_filter(const char *name, + ap_out_filter_func filter_func, + ap_init_filter_func filter_init, + ap_filter_type ftype); + +/** + * Adds a named filter into the filter chain on the specified request record. + * The filter will be installed with the specified context pointer. + * + * Filters added in this way will always be placed at the end of the filters + * that have the same type (thus, the filters have the same order as the + * calls to ap_add_filter). If the current filter chain contains filters + * from another request, then this filter will be added before those other + * filters. + * + * To re-iterate that last comment. This function is building a FIFO + * list of filters. Take note of that when adding your filter to the chain. + * + * @param name The name of the filter to add + * @param ctx Context data to provide to the filter + * @param r The request to add this filter for (or NULL if it isn't associated with a request) + * @param c The connection to add the fillter for + */ +AP_DECLARE(ap_filter_t *) ap_add_input_filter(const char *name, void *ctx, + request_rec *r, conn_rec *c); + +/** + * Variant of ap_add_input_filter() that accepts a registered filter handle + * (as returned by ap_register_input_filter()) rather than a filter name + * + * @param f The filter handle to add + * @param ctx Context data to provide to the filter + * @param r The request to add this filter for (or NULL if it isn't associated with a request) + * @param c The connection to add the fillter for + */ +AP_DECLARE(ap_filter_t *) ap_add_input_filter_handle(ap_filter_rec_t *f, + void *ctx, + request_rec *r, + conn_rec *c); + +/** + * Returns the filter handle for use with ap_add_input_filter_handle. + * + * @param name The filter name to look up + */ +AP_DECLARE(ap_filter_rec_t *) ap_get_input_filter_handle(const char *name); + +/** + * Add a filter to the current request. Filters are added in a FIFO manner. + * The first filter added will be the first filter called. + * @param name The name of the filter to add + * @param ctx Context data to set in the filter + * @param r The request to add this filter for (or NULL if it isn't associated with a request) + * @param c The connection to add this filter for + */ +AP_DECLARE(ap_filter_t *) ap_add_output_filter(const char *name, void *ctx, + request_rec *r, conn_rec *c); + +/** + * Variant of ap_add_output_filter() that accepts a registered filter handle + * (as returned by ap_register_output_filter()) rather than a filter name + * + * @param f The filter handle to add + * @param r The request to add this filter for (or NULL if it isn't associated with a request) + * @param c The connection to add the fillter for + */ +AP_DECLARE(ap_filter_t *) ap_add_output_filter_handle(ap_filter_rec_t *f, + void *ctx, + request_rec *r, + conn_rec *c); + +/** + * Returns the filter handle for use with ap_add_output_filter_handle. + * + * @param name The filter name to look up + */ +AP_DECLARE(ap_filter_rec_t *) ap_get_output_filter_handle(const char *name); + +/** + * Remove an input filter from either the request or connection stack + * it is associated with. + * @param f The filter to remove + */ + +AP_DECLARE(void) ap_remove_input_filter(ap_filter_t *f); + +/** + * Remove an output filter from either the request or connection stack + * it is associated with. + * @param f The filter to remove + */ + +AP_DECLARE(void) ap_remove_output_filter(ap_filter_t *f); + +/* The next two filters are for abstraction purposes only. They could be + * done away with, but that would require that we break modules if we ever + * want to change our filter registration method. The basic idea, is that + * all filters have a place to store data, the ctx pointer. These functions + * fill out that pointer with a bucket brigade, and retrieve that data on + * the next call. The nice thing about these functions, is that they + * automatically concatenate the bucket brigades together for you. This means + * that if you have already stored a brigade in the filters ctx pointer, then + * when you add more it will be tacked onto the end of that brigade. When + * you retrieve data, if you pass in a bucket brigade to the get function, + * it will append the current brigade onto the one that you are retrieving. + */ + +/** + * prepare a bucket brigade to be setaside. If a different brigade was + * set-aside earlier, then the two brigades are concatenated together. + * @param f The current filter + * @param save_to The brigade that was previously set-aside. Regardless, the + * new bucket brigade is returned in this location. + * @param b The bucket brigade to save aside. This brigade is always empty + * on return + * @param p Ensure that all data in the brigade lives as long as this pool + */ +AP_DECLARE(apr_status_t) ap_save_brigade(ap_filter_t *f, + apr_bucket_brigade **save_to, + apr_bucket_brigade **b, apr_pool_t *p); + +/** + * Flush function for apr_brigade_* calls. This calls ap_pass_brigade + * to flush the brigade if the brigade buffer overflows. + * @param bb The brigade to flush + * @param ctx The filter to pass the brigade to + * @note this function has nothing to do with FLUSH buckets. It is simply + * a way to flush content out of a brigade and down a filter stack. + */ +AP_DECLARE_NONSTD(apr_status_t) ap_filter_flush(apr_bucket_brigade *bb, + void *ctx); + +/** + * Flush the current brigade down the filter stack. + * @param f The current filter + * @param bb The brigade to flush + */ +AP_DECLARE(apr_status_t) ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb); + +/** + * Write a buffer for the current filter, buffering if possible. + * @param f the filter doing the writing + * @param bb The brigade to buffer into + * @param data The data to write + * @param nbyte The number of bytes in the data + */ +#define ap_fwrite(f, bb, data, nbyte) \ + apr_brigade_write(bb, ap_filter_flush, f, data, nbyte) + +/** + * Write a buffer for the current filter, buffering if possible. + * @param f the filter doing the writing + * @param bb The brigade to buffer into + * @param str The string to write + */ +#define ap_fputs(f, bb, str) \ + apr_brigade_puts(bb, ap_filter_flush, f, str) + +/** + * Write a character for the current filter, buffering if possible. + * @param f the filter doing the writing + * @param bb The brigade to buffer into + * @param c The character to write + */ +#define ap_fputc(f, bb, c) \ + apr_brigade_putc(bb, ap_filter_flush, f, c) + +/** + * Write an unspecified number of strings to the current filter + * @param f the filter doing the writing + * @param bb The brigade to buffer into + * @param ... The strings to write + */ +AP_DECLARE_NONSTD(apr_status_t) ap_fputstrs(ap_filter_t *f, + apr_bucket_brigade *bb, + ...); + +/** + * Output data to the filter in printf format + * @param f the filter doing the writing + * @param bb The brigade to buffer into + * @param fmt The format string + * @param ... The argumets to use to fill out the format string + */ +AP_DECLARE_NONSTD(apr_status_t) ap_fprintf(ap_filter_t *f, + apr_bucket_brigade *bb, + const char *fmt, + ...) + __attribute__((format(printf,3,4))); + +#ifdef __cplusplus +} +#endif + +#endif /* !AP_FILTER_H */ diff --git a/rubbos/app/apache2/include/util_ldap.h b/rubbos/app/apache2/include/util_ldap.h new file mode 100644 index 00000000..605f3b72 --- /dev/null +++ b/rubbos/app/apache2/include/util_ldap.h @@ -0,0 +1,318 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef UTIL_LDAP_H +#define UTIL_LDAP_H + +#include + +/* this whole thing disappears if LDAP is not enabled */ +#ifdef APU_HAS_LDAP + +/* APR header files */ +#include +#include +#include +#include + +/* Apache header files */ +#include "ap_config.h" +#include "httpd.h" +#include "http_config.h" +#include "http_core.h" +#include "http_log.h" +#include "http_protocol.h" +#include "http_request.h" + +#if APR_HAS_SHARED_MEMORY +#include "apr_rmm.h" +#include "apr_shm.h" +#endif + +/* Create a set of LDAP_DECLARE(type), LDLDAP_DECLARE(type) and + * LDAP_DECLARE_DATA with appropriate export and import tags for the platform + */ +#if !defined(WIN32) +#define LDAP_DECLARE(type) type +#define LDAP_DECLARE_NONSTD(type) type +#define LDAP_DECLARE_DATA +#elif defined(LDAP_DECLARE_STATIC) +#define LDAP_DECLARE(type) type __stdcall +#define LDAP_DECLARE_NONSTD(type) type +#define LDAP_DECLARE_DATA +#elif defined(LDAP_DECLARE_EXPORT) +#define LDAP_DECLARE(type) __declspec(dllexport) type __stdcall +#define LDAP_DECLARE_NONSTD(type) __declspec(dllexport) type +#define LDAP_DECLARE_DATA __declspec(dllexport) +#else +#define LDAP_DECLARE(type) __declspec(dllimport) type __stdcall +#define LDAP_DECLARE_NONSTD(type) __declspec(dllimport) type +#define LDAP_DECLARE_DATA __declspec(dllimport) +#endif + +/* + * LDAP Connections + */ + +/* Values that the deref member can have */ +typedef enum { + never=LDAP_DEREF_NEVER, + searching=LDAP_DEREF_SEARCHING, + finding=LDAP_DEREF_FINDING, + always=LDAP_DEREF_ALWAYS +} deref_options; + +/* Structure representing an LDAP connection */ +typedef struct util_ldap_connection_t { + LDAP *ldap; + apr_pool_t *pool; /* Pool from which this connection is created */ +#if APR_HAS_THREADS + apr_thread_mutex_t *lock; /* Lock to indicate this connection is in use */ +#endif + int bound; /* Flag to indicate whether this connection is bound yet */ + + const char *host; /* Name of the LDAP server (or space separated list) */ + int port; /* Port of the LDAP server */ + deref_options deref; /* how to handle alias dereferening */ + + const char *binddn; /* DN to bind to server (can be NULL) */ + const char *bindpw; /* Password to bind to server (can be NULL) */ + + int secure; /* True if use SSL connection */ + + const char *reason; /* Reason for an error failure */ + + struct util_ldap_connection_t *next; +} util_ldap_connection_t; + +/* LDAP cache state information */ +typedef struct util_ldap_state_t { + apr_pool_t *pool; /* pool from which this state is allocated */ +#if APR_HAS_THREADS + apr_thread_mutex_t *mutex; /* mutex lock for the connection list */ +#endif + apr_global_mutex_t *util_ldap_cache_lock; + + apr_size_t cache_bytes; /* Size (in bytes) of shared memory cache */ + char *cache_file; /* filename for shm */ + long search_cache_ttl; /* TTL for search cache */ + long search_cache_size; /* Size (in entries) of search cache */ + long compare_cache_ttl; /* TTL for compare cache */ + long compare_cache_size; /* Size (in entries) of compare cache */ + + struct util_ldap_connection_t *connections; + char *cert_auth_file; + int cert_file_type; + int ssl_support; + +#if APR_HAS_SHARED_MEMORY + apr_shm_t *cache_shm; + apr_rmm_t *cache_rmm; +#endif + + /* cache ald */ + void *util_ldap_cache; + char *lock_file; /* filename for shm lock mutex */ + int connectionTimeout; + +} util_ldap_state_t; + + +/** + * Open a connection to an LDAP server + * @param ldc A structure containing the expanded details of the server + * to connect to. The handle to the LDAP connection is returned + * as ldc->ldap. + * @tip This function connects to the LDAP server and binds. It does not + * connect if already connected (ldc->ldap != NULL). Does not bind + * if already bound. + * @return If successful LDAP_SUCCESS is returned. + * @deffunc int util_ldap_connection_open(request_rec *r, + * util_ldap_connection_t *ldc) + */ +LDAP_DECLARE(int) util_ldap_connection_open(request_rec *r, + util_ldap_connection_t *ldc); + +/** + * Close a connection to an LDAP server + * @param ldc A structure containing the expanded details of the server + * that was connected. + * @tip This function unbinds from the LDAP server, and clears ldc->ldap. + * It is possible to rebind to this server again using the same ldc + * structure, using apr_ldap_open_connection(). + * @deffunc util_ldap_close_connection(util_ldap_connection_t *ldc) + */ +LDAP_DECLARE(void) util_ldap_connection_close(util_ldap_connection_t *ldc); + +/** + * Unbind a connection to an LDAP server + * @param ldc A structure containing the expanded details of the server + * that was connected. + * @tip This function unbinds the LDAP connection, and disconnects from + * the server. It is used during error conditions, to bring the LDAP + * connection back to a known state. + * @deffunc apr_status_t util_ldap_connection_unbind(util_ldap_connection_t *ldc) + */ +LDAP_DECLARE_NONSTD(apr_status_t) util_ldap_connection_unbind(void *param); + +/** + * Cleanup a connection to an LDAP server + * @param ldc A structure containing the expanded details of the server + * that was connected. + * @tip This function is registered with the pool cleanup to close down the + * LDAP connections when the server is finished with them. + * @deffunc apr_status_t util_ldap_connection_cleanup(util_ldap_connection_t *ldc) + */ +LDAP_DECLARE_NONSTD(apr_status_t) util_ldap_connection_cleanup(void *param); + +/** + * Find a connection in a list of connections + * @param r The request record + * @param host The hostname to connect to (multiple hosts space separated) + * @param port The port to connect to + * @param binddn The DN to bind with + * @param bindpw The password to bind with + * @param deref The dereferencing behavior + * @param secure use SSL on the connection + * @tip Once a connection is found and returned, a lock will be acquired to + * lock that particular connection, so that another thread does not try and + * use this connection while it is busy. Once you are finished with a connection, + * apr_ldap_connection_close() must be called to release this connection. + * @deffunc util_ldap_connection_t *util_ldap_connection_find(request_rec *r, const char *host, int port, + * const char *binddn, const char *bindpw, deref_options deref, + * int netscapessl, int starttls) + */ +LDAP_DECLARE(util_ldap_connection_t *) util_ldap_connection_find(request_rec *r, const char *host, int port, + const char *binddn, const char *bindpw, deref_options deref, + int secure); + + +/** + * Compare two DNs for sameness + * @param r The request record + * @param ldc The LDAP connection being used. + * @param url The URL of the LDAP connection - used for deciding which cache to use. + * @param dn The first DN to compare. + * @param reqdn The DN to compare the first DN to. + * @param compare_dn_on_server Flag to determine whether the DNs should be checked using + * LDAP calls or with a direct string comparision. A direct + * string comparison is faster, but not as accurate - false + * negative comparisons are possible. + * @tip Two DNs can be equal and still fail a string comparison. Eg "dc=example,dc=com" + * and "dc=example, dc=com". Use the compare_dn_on_server unless there are serious + * performance issues. + * @deffunc int util_ldap_cache_comparedn(request_rec *r, util_ldap_connection_t *ldc, + * const char *url, const char *dn, const char *reqdn, + * int compare_dn_on_server) + */ +LDAP_DECLARE(int) util_ldap_cache_comparedn(request_rec *r, util_ldap_connection_t *ldc, + const char *url, const char *dn, const char *reqdn, + int compare_dn_on_server); + +/** + * A generic LDAP compare function + * @param r The request record + * @param ldc The LDAP connection being used. + * @param url The URL of the LDAP connection - used for deciding which cache to use. + * @param dn The DN of the object in which we do the compare. + * @param attrib The attribute within the object we are comparing for. + * @param value The value of the attribute we are trying to compare for. + * @tip Use this function to determine whether an attribute/value pair exists within an + * object. Typically this would be used to determine LDAP group membership. + * @deffunc int util_ldap_cache_compare(request_rec *r, util_ldap_connection_t *ldc, + * const char *url, const char *dn, const char *attrib, const char *value) + */ +LDAP_DECLARE(int) util_ldap_cache_compare(request_rec *r, util_ldap_connection_t *ldc, + const char *url, const char *dn, const char *attrib, const char *value); + +/** + * Checks a username/password combination by binding to the LDAP server + * @param r The request record + * @param ldc The LDAP connection being used. + * @param url The URL of the LDAP connection - used for deciding which cache to use. + * @param basedn The Base DN to search for the user in. + * @param scope LDAP scope of the search. + * @param attrs LDAP attributes to return in search. + * @param filter The user to search for in the form of an LDAP filter. This filter must return + * exactly one user for the check to be successful. + * @param bindpw The user password to bind as. + * @param binddn The DN of the user will be returned in this variable. + * @param retvals The values corresponding to the attributes requested in the attrs array. + * @tip The filter supplied will be searched for. If a single entry is returned, an attempt + * is made to bind as that user. If this bind succeeds, the user is not validated. + * @deffunc int util_ldap_cache_checkuserid(request_rec *r, util_ldap_connection_t *ldc, + * char *url, const char *basedn, int scope, char **attrs, + * char *filter, char *bindpw, char **binddn, char ***retvals) + */ +LDAP_DECLARE(int) util_ldap_cache_checkuserid(request_rec *r, util_ldap_connection_t *ldc, + const char *url, const char *basedn, int scope, char **attrs, + const char *filter, const char *bindpw, const char **binddn, const char ***retvals); + +/** + * Retrieves the LDAP DN of the user without the need to know user password + * @param r The request record + * @param ldc The LDAP connection being used. + * @param url The URL of the LDAP connection - used for deciding which cache to use. + * @param basedn The Base DN to search for the user in. + * @param scope LDAP scope of the search. + * @param attrs LDAP attributes to return in search. + * @param filter The user to search for in the form of an LDAP filter. This filter must return + * exactly one user for the check to be successful. + * @param binddn The DN of the user will be returned in this variable. + * @param retvals The values corresponding to the attributes requested in the attrs array. + * @tip The filter supplied will be searched for. A single entry matching the search is returned. + * @deffunc int util_ldap_cache_getuserdn(request_rec *r, util_ldap_connection_t *ldc, + * char *url, const char *basedn, int scope, char **attrs, + * char *filter, char **binddn, char ***retvals) + */ +LDAP_DECLARE(int) util_ldap_cache_getuserdn(request_rec *r, util_ldap_connection_t *ldc, + const char *url, const char *basedn, int scope, char **attrs, + const char *filter, const char **binddn, const char ***retvals); + +/** + * Checks if SSL support is available in mod_ldap + * @deffunc int util_ldap_ssl_supported(request_rec *r) + */ +LDAP_DECLARE(int) util_ldap_ssl_supported(request_rec *r); + +/* from apr_ldap_cache.c */ + +/** + * Init the LDAP cache + * @param pool The pool to use to initialise the cache + * @param reqsize The size of the shared memory segement to request. A size + * of zero requests the max size possible from + * apr_shmem_init() + * @deffunc void util_ldap_cache_init(apr_pool_t *p, util_ldap_state_t *st) + * @return The status code returned is the status code of the + * apr_smmem_init() call. Regardless of the status, the cache + * will be set up at least for in-process or in-thread operation. + */ +apr_status_t util_ldap_cache_init(apr_pool_t *pool, util_ldap_state_t *st); + +/* from apr_ldap_cache_mgr.c */ + +/** + * Display formatted stats for cache + * @param The pool to allocate the returned string from + * @tip This function returns a string allocated from the provided pool that describes + * various stats about the cache. + * @deffunc char *util_ald_cache_display(apr_pool_t *pool, util_ldap_state_t *st) + */ +char *util_ald_cache_display(request_rec *r, util_ldap_state_t *st); + +#endif /* APU_HAS_LDAP */ +#endif /* UTIL_LDAP_H */ diff --git a/rubbos/app/apache2/include/util_md5.h b/rubbos/app/apache2/include/util_md5.h new file mode 100644 index 00000000..6c5299de --- /dev/null +++ b/rubbos/app/apache2/include/util_md5.h @@ -0,0 +1,70 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_UTIL_MD5_H +#define APACHE_UTIL_MD5_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Apache MD5 library + */ + +#include "apr_md5.h" + +/** + * Create an MD5 checksum of a given string + * @param a Pool to allocate out of + * @param string String to get the checksum of + * @return The checksum + * @deffunc char *ap_md5(apr_pool_t *a, const unsigned char *string) + */ +AP_DECLARE(char *) ap_md5(apr_pool_t *a, const unsigned char *string); + +/** + * Create an MD5 checksum of a string of binary data + * @param a Pool to allocate out of + * @param buf Buffer to generate checksum for + * @param len The length of the buffer + * @return The checksum + * @deffunc char *ap_md5_binary(apr_pool_t *a, const unsigned char *buf, int len) + */ +AP_DECLARE(char *) ap_md5_binary(apr_pool_t *a, const unsigned char *buf, int len); + +/** + * Convert an MD5 checksum into a base64 encoding + * @param p The pool to allocate out of + * @param context The context to convert + * @return The converted encoding + * @deffunc char *ap_md5contextTo64(apr_pool_t *p, apr_md5_ctx_t *context) + */ +AP_DECLARE(char *) ap_md5contextTo64(apr_pool_t *p, apr_md5_ctx_t *context); + +/** + * Create an MD5 Digest for a given file + * @param p The pool to allocate out of + * @param infile The file to create the digest for + * @deffunc char *ap_md5digest(apr_pool_t *p, apr_file_t *infile) + */ +AP_DECLARE(char *) ap_md5digest(apr_pool_t *p, apr_file_t *infile); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_UTIL_MD5_H */ diff --git a/rubbos/app/apache2/include/util_script.h b/rubbos/app/apache2/include/util_script.h new file mode 100644 index 00000000..c68b81d9 --- /dev/null +++ b/rubbos/app/apache2/include/util_script.h @@ -0,0 +1,142 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_UTIL_SCRIPT_H +#define APACHE_UTIL_SCRIPT_H + +#include "apr_buckets.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Apache script tools + */ + +#ifndef APACHE_ARG_MAX +#ifdef _POSIX_ARG_MAX +#define APACHE_ARG_MAX _POSIX_ARG_MAX +#else +#define APACHE_ARG_MAX 512 +#endif +#endif + +/** + * Create an environment variable out of an Apache table of key-value pairs + * @param p pool to allocate out of + * @param t Apache table of key-value pairs + * @return An array containing the same key-value pairs suitable for + * use with an exec call. + * @deffunc char **ap_create_environment(apr_pool_t *p, apr_table_t *t) + */ +AP_DECLARE(char **) ap_create_environment(apr_pool_t *p, apr_table_t *t); + +/** + * This "cute" little function comes about because the path info on + * filenames and URLs aren't always the same. So we take the two, + * and find as much of the two that match as possible. + * @param uri The uri we are currently parsing + * @param path_info The current path info + * @return The length of the path info + * @deffunc int ap_find_path_info(const char *uri, const char *path_info) + */ +AP_DECLARE(int) ap_find_path_info(const char *uri, const char *path_info); + +/** + * Add CGI environment variables required by HTTP/1.1 to the request's + * environment table + * @param r the current request + * @deffunc void ap_add_cgi_vars(request_rec *r) + */ +AP_DECLARE(void) ap_add_cgi_vars(request_rec *r); + +/** + * Add common CGI environment variables to the requests environment table + * @param r The current request + * @deffunc void ap_add_common_vars(request_rec *r) + */ +AP_DECLARE(void) ap_add_common_vars(request_rec *r); + +/** + * Read headers output from a script, ensuring that the output is valid. If + * the output is valid, then the headers are added to the headers out of the + * current request + * @param r The current request + * @param f The file to read from + * @param buffer Empty when calling the function. On output, if there was an + * error, the string that cause the error is stored here. + * @return HTTP_OK on success, HTTP_INTERNAL_SERVER_ERROR otherwise + * @deffunc int ap_scan_script_header_err(request_rec *r, apr_file_t *f, char *buffer) + */ +AP_DECLARE(int) ap_scan_script_header_err(request_rec *r, apr_file_t *f, char *buffer); + +/** + * Read headers output from a script, ensuring that the output is valid. If + * the output is valid, then the headers are added to the headers out of the + * current request + * @param r The current request + * @param bb The brigade from which to read + * @param buffer Empty when calling the function. On output, if there was an + * error, the string that cause the error is stored here. + * @return HTTP_OK on success, HTTP_INTERNAL_SERVER_ERROR otherwise + * @deffunc int ap_scan_script_header_err_brigade(request_rec *r, apr_bucket_brigade *bb, char *buffer) + */ +AP_DECLARE(int) ap_scan_script_header_err_brigade(request_rec *r, + apr_bucket_brigade *bb, + char *buffer); + +/** + * Read headers strings from a script, ensuring that the output is valid. If + * the output is valid, then the headers are added to the headers out of the + * current request + * @param r The current request + * @param buffer Empty when calling the function. On output, if there was an + * error, the string that cause the error is stored here. + * @param termch Pointer to the last character parsed. + * @param termarg Pointer to an int to capture the last argument parsed. + * @param args String arguments to parse consecutively for headers, + * a NULL argument terminates the list. + * @return HTTP_OK on success, HTTP_INTERNAL_SERVER_ERROR otherwise + * @deffunc int ap_scan_script_header_err_core(request_rec *r, char *buffer, int (*getsfunc)(char *, int, void *), void *getsfunc_data) + */ +AP_DECLARE_NONSTD(int) ap_scan_script_header_err_strs(request_rec *r, + char *buffer, + const char **termch, + int *termarg, ...); + +/** + * Read headers output from a script, ensuring that the output is valid. If + * the output is valid, then the headers are added to the headers out of the + * current request + * @param r The current request + * @param buffer Empty when calling the function. On output, if there was an + * error, the string that cause the error is stored here. + * @param getsfunc Function to read the headers from. This function should + act like gets() + * @param getsfunc_data The place to read from + * @return HTTP_OK on success, HTTP_INTERNAL_SERVER_ERROR otherwise + * @deffunc int ap_scan_script_header_err_core(request_rec *r, char *buffer, int (*getsfunc)(char *, int, void *), void *getsfunc_data) + */ +AP_DECLARE(int) ap_scan_script_header_err_core(request_rec *r, char *buffer, + int (*getsfunc) (char *, int, void *), + void *getsfunc_data); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_UTIL_SCRIPT_H */ diff --git a/rubbos/app/apache2/include/util_time.h b/rubbos/app/apache2/include/util_time.h new file mode 100644 index 00000000..5e8e394f --- /dev/null +++ b/rubbos/app/apache2/include/util_time.h @@ -0,0 +1,85 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APACHE_UTIL_TIME_H +#define APACHE_UTIL_TIME_H + +#include "apr.h" +#include "apr_time.h" +#include "httpd.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Apache date-time handling functions + */ + +/* Maximum delta from the current time, in seconds, for a past time + * to qualify as "recent" for use in the ap_explode_recent_*() functions: + * (Must be a power of two minus one!) + */ +#define AP_TIME_RECENT_THRESHOLD 15 + +/** + * convert a recent time to its human readable components in local timezone + * @param tm the exploded time + * @param t the time to explode: MUST be within the last + * AP_TIME_RECENT_THRESHOLD seconds + * @note This is a faster alternative to apr_explode_localtime that uses + * a cache of pre-exploded time structures. It is useful for things + * that need to explode the current time multiple times per second, + * like loggers. + * @return APR_SUCCESS iff successful + */ +AP_DECLARE(apr_status_t) ap_explode_recent_localtime(apr_time_exp_t *tm, + apr_time_t t); + +/** + * convert a recent time to its human readable components in GMT timezone + * @param tm the exploded time + * @param t the time to explode: MUST be within the last + * AP_TIME_RECENT_THRESHOLD seconds + * @note This is a faster alternative to apr_time_exp_gmt that uses + * a cache of pre-exploded time structures. It is useful for things + * that need to explode the current time multiple times per second, + * like loggers. + * @return APR_SUCCESS iff successful + */ +AP_DECLARE(apr_status_t) ap_explode_recent_gmt(apr_time_exp_t *tm, + apr_time_t t); + + +/** + * format a recent timestamp in the ctime() format. + * @param date_str String to write to. + * @param t the time to convert + */ +AP_DECLARE(apr_status_t) ap_recent_ctime(char *date_str, apr_time_t t); + +/** + * format a recent timestamp in the RFC822 format + * @param date_str String to write to (must have length >= APR_RFC822_DATE_LEN) + * @param t the time to convert + */ +AP_DECLARE(apr_status_t) ap_recent_rfc822_date(char *date_str, apr_time_t t); + +#ifdef __cplusplus +} +#endif + +#endif /* !APACHE_UTIL_TIME_H */ diff --git a/rubbos/app/apache2/include/util_xml.h b/rubbos/app/apache2/include/util_xml.h new file mode 100644 index 00000000..4965b14e --- /dev/null +++ b/rubbos/app/apache2/include/util_xml.h @@ -0,0 +1,46 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef UTIL_XML_H +#define UTIL_XML_H + +#include "apr_xml.h" + +#include "httpd.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @package Apache XML library + */ + +/** + * Get XML post data and parse it + * @param r The current request + * @param pdoc The XML post data + * @return HTTP status code + * @deffunc int ap_xml_parse_input(request_rec *r, apr_xml_doc **pdoc) + */ +AP_DECLARE(int) ap_xml_parse_input(request_rec *r, apr_xml_doc **pdoc); + + +#ifdef __cplusplus +} +#endif + +#endif /* UTIL_XML_H */ diff --git a/rubbos/app/apache2/lib/apr.exp b/rubbos/app/apache2/lib/apr.exp new file mode 100644 index 00000000..830875dc --- /dev/null +++ b/rubbos/app/apache2/lib/apr.exp @@ -0,0 +1,419 @@ +#! libapr-0.so +* This file was AUTOGENERATED at build time. +* Please do not edit by hand. +apr_allocator_create +apr_allocator_destroy +apr_allocator_alloc +apr_allocator_free +apr_allocator_owner_set +apr_allocator_set_owner +apr_allocator_owner_get +apr_allocator_get_owner +apr_allocator_max_free_set +apr_allocator_set_max_free +apr_allocator_mutex_set +apr_allocator_set_mutex +apr_allocator_mutex_get +apr_allocator_get_mutex +apr_dso_load +apr_dso_unload +apr_dso_sym +apr_dso_error +apr_env_get +apr_env_set +apr_env_delete +apr_strerror +apr_stat +apr_lstat +apr_dir_open +apr_dir_close +apr_dir_read +apr_dir_rewind +apr_filepath_root +apr_filepath_merge +apr_filepath_list_split +apr_filepath_list_merge +apr_filepath_get +apr_filepath_set +apr_filepath_encoding +apr_file_open +apr_file_close +apr_file_remove +apr_file_rename +apr_file_copy +apr_file_append +apr_file_eof +apr_file_open_stderr +apr_file_open_stdout +apr_file_open_stdin +apr_file_read +apr_file_write +apr_file_writev +apr_file_read_full +apr_file_write_full +apr_file_putc +apr_file_getc +apr_file_ungetc +apr_file_gets +apr_file_puts +apr_file_flush +apr_file_dup +apr_file_dup2 +apr_file_setaside +apr_file_seek +apr_file_pipe_create +apr_file_namedpipe_create +apr_file_pipe_timeout_get +apr_file_pipe_timeout_set +apr_file_lock +apr_file_unlock +apr_file_name_get +apr_file_data_get +apr_file_data_set +apr_file_printf +apr_file_perms_set +apr_file_attrs_set +apr_file_mtime_set +apr_dir_make +apr_dir_make_recursive +apr_dir_remove +apr_file_info_get +apr_file_trunc +apr_file_flags_get +apr_file_pool_get +apr_file_inherit_set +apr_file_set_inherit +apr_file_inherit_unset +apr_file_unset_inherit +apr_file_mktemp +apr_temp_dir_get +apr_fnmatch +apr_fnmatch_test +apr_is_fnmatch +apr_initialize +apr_app_initialize +apr_terminate +apr_terminate2 +apr_generate_random_bytes +apr_getopt_init +apr_getopt +apr_getopt_long +apr_global_mutex_create +apr_global_mutex_child_init +apr_global_mutex_lock +apr_global_mutex_trylock +apr_global_mutex_unlock +apr_global_mutex_destroy +apr_global_mutex_pool_get +apr_hash_make +apr_hash_copy +apr_hash_set +apr_hash_get +apr_hash_first +apr_hash_next +apr_hash_this +apr_hash_count +apr_hash_overlay +apr_hash_merge +apr_hash_pool_get +apr_filepath_name_get +apr_filename_of_pathname +apr_vformatter +apr_password_get +apr_mmap_create +apr_mmap_dup +apr_mmap_delete +apr_mmap_offset +apr_socket_create +apr_socket_create_ex +apr_socket_shutdown +apr_shutdown +apr_socket_close +apr_socket_bind +apr_bind +apr_socket_listen +apr_listen +apr_socket_accept +apr_accept +apr_socket_connect +apr_connect +apr_sockaddr_info_get +apr_getnameinfo +apr_parse_addr_port +apr_gethostname +apr_socket_data_get +apr_socket_data_set +apr_socket_send +apr_send +apr_socket_sendv +apr_sendv +apr_socket_sendto +apr_sendto +apr_socket_recvfrom +apr_recvfrom +apr_socket_sendfile +apr_sendfile +apr_socket_recv +apr_recv +apr_socket_opt_set +apr_setsocketopt +apr_socket_timeout_set +apr_socket_opt_get +apr_getsocketopt +apr_socket_timeout_get +apr_socket_atmark +apr_socket_addr_get +apr_sockaddr_port_set +apr_sockaddr_port_get +apr_sockaddr_ip_set +apr_sockaddr_ip_get +apr_sockaddr_equal +apr_socket_from_file +apr_getservbyname +apr_ipsubnet_create +apr_ipsubnet_test +apr_socket_protocol_get +apr_socket_inherit_set +apr_socket_set_inherit +apr_socket_inherit_unset +apr_socket_unset_inherit +apr_poll_setup +apr_poll +apr_poll_socket_add +apr_poll_socket_mask +apr_poll_socket_remove +apr_poll_socket_clear +apr_poll_revents_get +apr_pollset_create +apr_pollset_destroy +apr_pollset_add +apr_pollset_remove +apr_pollset_poll +apr_pool_initialize +apr_pool_terminate +apr_pool_create_ex +apr_pool_create_ex_debug +apr_pool_allocator_get +apr_pool_clear +apr_pool_clear_debug +apr_pool_destroy +apr_pool_destroy_debug +apr_palloc +apr_palloc_debug +apr_pcalloc_debug +apr_pool_abort_set +apr_pool_set_abort +apr_pool_abort_get +apr_pool_get_abort +apr_pool_parent_get +apr_pool_get_parent +apr_pool_is_ancestor +apr_pool_tag +apr_pool_userdata_set +apr_pool_userdata_setn +apr_pool_userdata_get +apr_pool_cleanup_register +apr_pool_cleanup_kill +apr_pool_child_cleanup_set +apr_pool_cleanup_run +apr_pool_cleanup_null +apr_pool_cleanup_for_exec +apr_os_global_mutex_get +apr_os_file_get +apr_os_dir_get +apr_os_sock_get +apr_os_proc_mutex_get +apr_os_exp_time_get +apr_os_imp_time_get +apr_os_shm_get +apr_os_thread_get +apr_os_threadkey_get +apr_os_thread_put +apr_os_threadkey_put +apr_os_thread_current +apr_os_thread_equal +apr_os_file_put +apr_os_pipe_put +apr_os_pipe_put_ex +apr_os_dir_put +apr_os_sock_put +apr_os_sock_make +apr_os_proc_mutex_put +apr_os_imp_time_put +apr_os_exp_time_put +apr_os_shm_put +apr_os_dso_handle_put +apr_os_dso_handle_get +apr_os_default_encoding +apr_os_locale_encoding +apr_proc_mutex_create +apr_proc_mutex_child_init +apr_proc_mutex_lock +apr_proc_mutex_trylock +apr_proc_mutex_unlock +apr_proc_mutex_destroy +apr_proc_mutex_cleanup +apr_proc_mutex_lockfile +apr_proc_mutex_name +apr_proc_mutex_defname +apr_proc_mutex_pool_get +apr_shm_create +apr_shm_destroy +apr_shm_attach +apr_shm_detach +apr_shm_baseaddr_get +apr_shm_size_get +apr_shm_pool_get +apr_signal +apr_signal_description_get +apr_signal_get_description +apr_strnatcmp +apr_strnatcasecmp +apr_pstrdup +apr_pstrmemdup +apr_pstrndup +apr_pmemdup +apr_pstrcat +apr_pstrcatv +apr_pvsprintf +apr_psprintf +apr_cpystrn +apr_collapse_spaces +apr_tokenize_to_argv +apr_strtok +apr_snprintf +apr_vsnprintf +apr_itoa +apr_ltoa +apr_off_t_toa +apr_strtoi64 +apr_atoi64 +apr_strfsize +apr_table_elts +apr_is_empty_table +apr_is_empty_array +apr_array_make +apr_array_push +apr_array_pop +apr_array_cat +apr_array_copy +apr_array_copy_hdr +apr_array_append +apr_array_pstrcat +apr_table_make +apr_table_copy +apr_table_clear +apr_table_get +apr_table_set +apr_table_setn +apr_table_unset +apr_table_merge +apr_table_mergen +apr_table_add +apr_table_addn +apr_table_overlay +apr_table_do +apr_table_vdo +apr_table_overlap +apr_table_compress +apr_thread_cond_create +apr_thread_cond_wait +apr_thread_cond_timedwait +apr_thread_cond_signal +apr_thread_cond_broadcast +apr_thread_cond_destroy +apr_thread_cond_pool_get +apr_thread_mutex_create +apr_thread_mutex_lock +apr_thread_mutex_trylock +apr_thread_mutex_unlock +apr_thread_mutex_destroy +apr_thread_mutex_pool_get +apr_threadattr_create +apr_threadattr_detach_set +apr_threadattr_detach_get +apr_threadattr_stacksize_set +apr_thread_create +apr_thread_exit +apr_thread_join +apr_thread_yield +apr_thread_once_init +apr_thread_once +apr_thread_detach +apr_thread_data_get +apr_thread_data_set +apr_threadkey_private_create +apr_threadkey_private_get +apr_threadkey_private_set +apr_threadkey_private_delete +apr_threadkey_data_get +apr_threadkey_data_set +apr_procattr_create +apr_procattr_io_set +apr_procattr_child_in_set +apr_procattr_child_out_set +apr_procattr_child_err_set +apr_procattr_dir_set +apr_procattr_cmdtype_set +apr_procattr_detach_set +apr_procattr_limit_set +apr_procattr_child_errfn_set +apr_procattr_error_check_set +apr_procattr_addrspace_set +apr_proc_fork +apr_proc_create +apr_proc_wait +apr_proc_wait_all_procs +apr_proc_detach +apr_proc_other_child_register +apr_proc_other_child_unregister +apr_proc_other_child_alert +apr_proc_other_child_refresh +apr_proc_other_child_refresh_all +apr_proc_other_child_check +apr_proc_other_child_read +apr_proc_kill +apr_pool_note_subprocess +apr_setup_signal_thread +apr_signal_thread +apr_thread_pool_get +apr_thread_rwlock_create +apr_thread_rwlock_rdlock +apr_thread_rwlock_tryrdlock +apr_thread_rwlock_wrlock +apr_thread_rwlock_trywrlock +apr_thread_rwlock_unlock +apr_thread_rwlock_destroy +apr_thread_rwlock_pool_get +apr_time_now +apr_time_ansi_put +apr_time_exp_tz +apr_explode_time +apr_time_exp_gmt +apr_time_exp_lt +apr_explode_localtime +apr_time_exp_get +apr_time_exp_gmt_get +apr_implode_gmt +apr_sleep +apr_rfc822_date +apr_ctime +apr_strftime +apr_time_clock_hires +apr_uid_current +apr_current_userid +apr_uid_name_get +apr_get_username +apr_uid_get +apr_get_userid +apr_uid_homepath_get +apr_get_home_directory +apr_gid_name_get +apr_group_name_get +apr_get_groupname +apr_gid_get +apr_get_groupid +apr_version +apr_version_string +apr_month_snames +apr_day_snames diff --git a/rubbos/app/apache2/lib/aprutil.exp b/rubbos/app/apache2/lib/aprutil.exp new file mode 100644 index 00000000..85ae803c --- /dev/null +++ b/rubbos/app/apache2/lib/aprutil.exp @@ -0,0 +1,187 @@ +#! libaprutil-0.so +* This file was AUTOGENERATED at build time. +* Please do not edit by hand. +apr_base64_encode_len +apr_base64_encode +apr_base64_encode_binary +apr_base64_decode_len +apr_base64_decode +apr_base64_decode_binary +apr_brigade_create +apr_brigade_destroy +apr_brigade_cleanup +apr_brigade_split +apr_brigade_partition +apr_brigade_length +apr_brigade_flatten +apr_brigade_pflatten +apr_brigade_split_line +apr_brigade_to_iovec +apr_brigade_vputstrs +apr_brigade_write +apr_brigade_writev +apr_brigade_puts +apr_brigade_putc +apr_brigade_putstrs +apr_brigade_printf +apr_brigade_vprintf +apr_bucket_alloc_create +apr_bucket_alloc_create_ex +apr_bucket_alloc_destroy +apr_bucket_alloc +apr_bucket_free +apr_bucket_setaside_noop +apr_bucket_setaside_notimpl +apr_bucket_split_notimpl +apr_bucket_copy_notimpl +apr_bucket_destroy_noop +apr_bucket_simple_split +apr_bucket_simple_copy +apr_bucket_shared_make +apr_bucket_shared_destroy +apr_bucket_shared_split +apr_bucket_shared_copy +apr_bucket_eos_create +apr_bucket_eos_make +apr_bucket_flush_create +apr_bucket_flush_make +apr_bucket_immortal_create +apr_bucket_immortal_make +apr_bucket_transient_create +apr_bucket_transient_make +apr_bucket_heap_create +apr_bucket_heap_make +apr_bucket_pool_create +apr_bucket_pool_make +apr_bucket_mmap_create +apr_bucket_mmap_make +apr_bucket_socket_create +apr_bucket_socket_make +apr_bucket_pipe_create +apr_bucket_pipe_make +apr_bucket_file_create +apr_bucket_file_make +apr_bucket_file_enable_mmap +apr_date_checkmask +apr_date_parse_http +apr_date_parse_rfc +apr_dbm_open_ex +apr_dbm_open +apr_dbm_close +apr_dbm_fetch +apr_dbm_store +apr_dbm_delete +apr_dbm_exists +apr_dbm_firstkey +apr_dbm_nextkey +apr_dbm_freedatum +apr_dbm_geterror +apr_dbm_get_usednames_ex +apr_dbm_get_usednames +apr_hook_sort_register +apr_hook_sort_all +apr_sort_hooks +apr_hook_debug_show +apr_show_hook +apr_hook_deregister_all +apr_md4_init +apr_md4_set_xlate +apr_md4_update +apr_md4_final +apr_md4 +apr_md5_init +apr_md5_set_xlate +apr_md5_update +apr_md5_final +apr_md5 +apr_md5_encode +apr_password_validate +apr_dynamic_fn_register +apr_register_optional_fn +apr_dynamic_fn_retrieve +apr_retrieve_optional_fn +apr_optional_hook_add +apr_optional_hook_get +apr_queue_create +apr_queue_push +apr_queue_pop +apr_queue_trypush +apr_queue_trypop +apr_queue_size +apr_queue_interrupt_all +apr_queue_term +apr_reslist_create +apr_reslist_destroy +apr_reslist_acquire +apr_reslist_release +apr_reslist_timeout_set +apr_reslist_invalidate +apr_rmm_init +apr_rmm_destroy +apr_rmm_attach +apr_rmm_detach +apr_rmm_malloc +apr_rmm_realloc +apr_rmm_calloc +apr_rmm_free +apr_rmm_addr_get +apr_rmm_offset_get +apr_rmm_overhead_get +apr_sdbm_open +apr_sdbm_close +apr_sdbm_lock +apr_sdbm_unlock +apr_sdbm_fetch +apr_sdbm_store +apr_sdbm_delete +apr_sdbm_firstkey +apr_sdbm_nextkey +apr_sdbm_rdonly +apr_sha1_base64 +apr_sha1_init +apr_sha1_update +apr_sha1_update_binary +apr_sha1_final +apr_strmatch_precompile +apr_uri_port_of_scheme +apr_uri_default_port_for_scheme +apr_uri_unparse +apr_uri_parse +apr_uri_parse_hostinfo +apr_uuid_get +apr_uuid_format +apr_uuid_parse +apr_xlate_open +apr_xlate_sb_get +apr_xlate_get_sb +apr_xlate_conv_buffer +apr_xlate_conv_byte +apr_xlate_close +apr_text_append +apr_xml_parser_create +apr_xml_parse_file +apr_xml_parser_feed +apr_xml_parser_done +apr_xml_parser_geterror +apr_xml_to_text +apr_xml_empty_elem +apr_xml_quote_string +apr_xml_quote_elem +apr_xml_insert_uri +apu_version +apu_version_string +apr_bucket_type_flush +apr_bucket_type_eos +apr_bucket_type_file +apr_bucket_type_heap +apr_bucket_type_pool +apr_bucket_type_pipe +apr_bucket_type_immortal +apr_bucket_type_transient +apr_bucket_type_socket +apr_hook_global_pool +apr_global_hook_pool +apr_hook_debug_enabled +apr_debug_module_hooks +apr_hook_debug_current +apr_current_hooking_module diff --git a/rubbos/app/apache2/lib/libapr-0.a b/rubbos/app/apache2/lib/libapr-0.a new file mode 100644 index 0000000000000000000000000000000000000000..4f06340e533e8b1fa5f73cf3611beadd8e3d9623 GIT binary patch literal 1237804 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 z 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Ȑ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%0AP{kpQWTd3TprCELekO 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 z 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 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/lib/libapr-0.so.0 b/rubbos/app/apache2/lib/libapr-0.so.0 new file mode 100755 index 0000000000000000000000000000000000000000..605582aaee0a7cae30fab1cf3d697661d448c8ab GIT binary patch literal 708933 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%0AP{kpQWTd3TprCELekO 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 z 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 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/lib/libapr-0.so.0.9.19 b/rubbos/app/apache2/lib/libapr-0.so.0.9.19 new file mode 100755 index 0000000000000000000000000000000000000000..605582aaee0a7cae30fab1cf3d697661d448c8ab GIT binary patch literal 708933 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%0AP{kpQWTd3TprCELekO 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 z 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 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/lib/libaprutil-0.a b/rubbos/app/apache2/lib/libaprutil-0.a new file mode 100644 index 0000000000000000000000000000000000000000..122a2f88e608cdf0a657c4a780cf67163a9b1a39 GIT binary patch literal 709894 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%0A(1LI#{9DRv?{wDXc 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

    ~2L3O? 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 literal 0 HcmV?d00001 diff --git a/rubbos/app/apache2/lib/libaprutil-0.la b/rubbos/app/apache2/lib/libaprutil-0.la new file mode 100644 index 00000000..8b817d00 --- /dev/null +++ b/rubbos/app/apache2/lib/libaprutil-0.la @@ -0,0 +1,35 @@ +# libaprutil-0.la - a libtool library file +# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18) +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libaprutil-0.so.0' + +# Names of this library. +library_names='libaprutil-0.so.0.9.19 libaprutil-0.so.0 libaprutil-0.so' + +# The name of the static archive. +old_library='libaprutil-0.a' + +# Libraries that this one depends upon. +dependency_libs='' + +# Version information for libaprutil-0. +current=9 +age=9 +revision=19 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/bottlenecks/rubbos/app/apache2/lib' diff --git a/rubbos/app/apache2/lib/libaprutil-0.so b/rubbos/app/apache2/lib/libaprutil-0.so new file mode 100755 index 0000000000000000000000000000000000000000..7e6097b0f1095ee03c2df0a495e7274a0699da3a GIT binary patch literal 415764 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