From f221486104c3d82e1cb6f6fc9d27459c4ded4f0b Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@unknown> Date: Tue, 17 Aug 1999 15:59:33 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'unlabeled-1.1.1'. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/unlabeled-1.1.1@59153 13f79535-47bb-0310-9956-ffa450edef68 --- Makefile.in | 71 - acconfig.h | 46 - aclocal.m4 | 98 - apr.dsw | 143 -- config.guess | 1082 --------- config.sub | 1216 ---------- configure | 5008 --------------------------------------- configure.in | 202 -- file_io/beos/Makefile.in | 78 - file_io/beos/dir.c | 220 -- file_io/beos/fileacc.c | 164 -- file_io/beos/filedup.c | 82 - file_io/beos/fileio.h | 100 - file_io/beos/filestat.c | 99 - file_io/beos/open.c | 166 -- file_io/beos/pipe.c | 94 - file_io/beos/readwrite.c | 112 - file_io/beos/seek.c | 74 - file_io/os2/Makefile.in | 77 - file_io/os2/dir.c | 223 -- file_io/os2/fileacc.c | 188 -- file_io/os2/filedup.c | 88 - file_io/os2/fileio.h | 94 - file_io/os2/filestat.c | 112 - file_io/os2/maperrorcode.c | 91 - file_io/os2/open.c | 161 -- file_io/os2/pipe.c | 98 - file_io/os2/readwrite.c | 105 - file_io/os2/seek.c | 88 - file_io/unix/.cvsignore | 1 - file_io/unix/Makefile.in | 95 - file_io/unix/dir.c | 319 --- file_io/unix/fileacc.c | 250 -- file_io/unix/filedup.c | 108 - file_io/unix/fileio.h | 103 - file_io/unix/filestat.c | 86 - file_io/unix/open.c | 282 --- file_io/unix/pipe.c | 114 - file_io/unix/readwrite.c | 251 -- file_io/unix/seek.c | 90 - file_io/win32/.test.swp | Bin 12288 -> 0 bytes file_io/win32/dir.c | 233 -- file_io/win32/file_io.def | 40 - file_io/win32/file_io.dsp | 130 - file_io/win32/fileacc.c | 186 -- file_io/win32/filedup.c | 87 - file_io/win32/fileio.h | 121 - file_io/win32/filestat.c | 78 - file_io/win32/open.c | 195 -- file_io/win32/pipe.c | 101 - file_io/win32/readdir.c | 80 - file_io/win32/readdir.h | 36 - file_io/win32/readwrite.c | 181 -- file_io/win32/seek.c | 90 - inc/.cvsignore | Bin 14 -> 0 bytes inc/apr_config.h.in | 273 --- inc/apr_fnmatch.h | 68 - include/apr_config.h.in | 273 --- include/apr_errno.h | 420 ---- include/apr_file_io.h | 157 -- include/apr_fnmatch.h | 68 - include/apr_general.h | 244 -- include/apr_lock.h | 84 - include/apr_network_io.h | 137 -- include/apr_portable.h | 160 -- include/apr_shmem.h | 86 - include/apr_signal.h | 74 - include/apr_thread_proc.h | 141 -- include/apr_time.h | 103 - include/apr_win.h | 126 - include/arch/beos/locks.h | 79 - include/arch/beos/threadproc.h | 124 - include/arch/os2/fileio.h | 94 - include/arch/os2/locks.h | 72 - include/arch/os2/threadproc.h | 108 - include/arch/unix/fileio.h | 103 - include/arch/unix/locks.h | 112 - include/arch/unix/misc.h | 71 - include/arch/unix/threadproc.h | 105 - include/arch/win32/atime.h | 70 - include/arch/win32/fileio.h | 121 - include/arch/win32/locks.h | 67 - include/arch/win32/threadproc.h | 105 - lib/Makefile.in | 89 - lib/apr_cpystrn.c | 101 - lib/apr_execve.c | 390 --- lib/apr_fnmatch.c | 240 -- lib/apr_getpass.c | 173 -- lib/apr_md5.c | 609 ----- lib/apr_pools.c | 2110 ----------------- lib/apr_signal.c | 84 - lib/apr_slack.c | 126 - lib/apr_snprintf.c | 1026 -------- lib/apr_tables.c | 771 ------ lib/lib.def | 60 - lib/lib.dsp | 129 - locks/beos/Makefile.in | 63 - locks/beos/crossproc.c | 116 - locks/beos/intraproc.c | 122 - locks/beos/locks.c | 143 -- locks/beos/locks.h | 79 - locks/os2/Makefile.in | 61 - locks/os2/locks.c | 147 -- locks/os2/locks.h | 72 - locks/unix/.cvsignore | 1 - locks/unix/Makefile.in | 67 - locks/unix/crossproc.c | 377 --- locks/unix/intraproc.c | 134 -- locks/unix/locks.c | 284 --- locks/unix/locks.h | 112 - locks/win32/locks.c | 178 -- locks/win32/locks.def | 15 - locks/win32/locks.dsp | 101 - locks/win32/locks.h | 67 - misc/beos/Makefile.in | 56 - misc/beos/misc.h | 71 - misc/beos/start.c | 131 - misc/os2/Makefile.in | 56 - misc/os2/misc.h | 71 - misc/os2/start.c | 129 - misc/unix/.cvsignore | 1 - misc/unix/Makefile.in | 61 - misc/unix/getopt.c | 143 -- misc/unix/misc.h | 71 - misc/unix/start.c | 210 -- misc/win32/getopt.c | 143 -- misc/win32/misc.def | 24 - misc/win32/misc.dsp | 113 - misc/win32/misc.h | 74 - misc/win32/names.c | 318 --- misc/win32/start.c | 212 -- misc/win32/timetest.c | 75 - network_io/beos/Makefile.in | 63 - network_io/beos/networkio.h | 90 - network_io/beos/poll.c | 180 -- network_io/beos/sendrecv.c | 139 -- network_io/beos/sockets.c | 202 -- network_io/beos/sockopt.c | 107 - network_io/os2/Makefile.in | 67 - network_io/os2/networkio.h | 81 - network_io/os2/poll.c | 168 -- network_io/os2/sendrecv.c | 135 -- network_io/os2/sockets.c | 209 -- network_io/os2/sockopt.c | 174 -- network_io/unix/.cvsignore | 1 - network_io/unix/.sockets.c.swp | Bin 40960 -> 0 bytes network_io/unix/Makefile.in | 75 - network_io/unix/networkio.h | 90 - network_io/unix/poll.c | 460 ---- network_io/unix/sendrecv.c | 167 -- network_io/unix/sockets.c | 341 --- network_io/unix/sockopt.c | 201 -- network_io/win32/network_io.def | 31 - network_io/win32/network_io.dsp | 115 - network_io/win32/networkio.h | 81 - network_io/win32/poll.c | 254 -- network_io/win32/sendrecv.c | 166 -- network_io/win32/sockets.c | 288 --- network_io/win32/sockopt.c | 146 -- shmem/shmem.c | 157 -- shmem/unix/Makefile.in | 52 - shmem/unix/mm/CHANGES | 132 -- shmem/unix/mm/INSTALL | 19 - shmem/unix/mm/LICENSE | 40 - shmem/unix/mm/Makefile.in | 221 -- shmem/unix/mm/README | 87 - shmem/unix/mm/aclocal.m4 | 355 --- shmem/unix/mm/config.guess | 1082 --------- shmem/unix/mm/config.sub | 1216 ---------- shmem/unix/mm/configure | 2923 ----------------------- shmem/unix/mm/configure.in | 192 -- shmem/unix/mm/fbtool | 39 - shmem/unix/mm/ltconfig | 2967 ----------------------- shmem/unix/mm/ltmain.sh | 3896 ------------------------------ shmem/unix/mm/mm-config.1 | 283 --- shmem/unix/mm/mm-config.in | 73 - shmem/unix/mm/mm-config.pod | 128 - shmem/unix/mm/mm.3 | 759 ------ shmem/unix/mm/mm.h | 349 --- shmem/unix/mm/mm.pod | 633 ----- shmem/unix/mm/mm_alloc.c | 446 ---- shmem/unix/mm/mm_conf.h.in | 41 - shmem/unix/mm/mm_core.c | 584 ----- shmem/unix/mm/mm_global.c | 151 -- shmem/unix/mm/mm_lib.c | 114 - shmem/unix/mm/mm_test.c | 223 -- shmem/unix/mm/mm_vers.c | 32 - shmem/unix/mm/shtool | 2391 ------------------- shmem/unix/shmem.c | 170 -- signal/unix/.cvsignore | 1 - signal/unix/Makefile.in | 55 - signal/unix/signal.c | 116 - signal/win32/signal.c | 182 -- signal/win32/signal.def | 12 - signal/win32/signal.dsp | 97 - test/.cvsignore | 1 - test/Makefile.in | 127 - test/ab_apr.c | 975 -------- test/ab_apr.dsp | 90 - test/abc.c | 28 - test/client.c | 153 -- test/client.dsp | 90 - test/htdigest.c | 280 --- test/htdigest.dsp | 90 - test/htpasswd.c | 538 ----- test/logresolve.c | 345 --- test/rotatelogs.c | 82 - test/server.c | 198 -- test/server.dsp | 90 - test/suexec.c | 565 ----- test/test.dsw | 155 -- test/testarg.dsp | 90 - test/testargs.c | 95 - test/testfile.c | 324 --- test/testfile.dsp | 91 - test/testproc.c | 163 -- test/testproc.dsp | 91 - test/testproc.rbb | 148 -- test/testsig.c | 127 - test/testsig.dsp | 90 - test/testsock.c | 126 - test/testsock.dsp | 91 - test/testthread.c | 174 -- test/testthread.dsp | 92 - test/testtime.c | 178 -- test/timetest.dsp | 91 - threadproc/beos/Makefile.in | 73 - threadproc/beos/proc.c | 264 --- threadproc/beos/signals.c | 72 - threadproc/beos/thread.c | 162 -- threadproc/beos/threadcancel.c | 91 - threadproc/beos/threadpriv.c | 189 -- threadproc/beos/threadproc.h | 124 - threadproc/os2/Makefile.in | 71 - threadproc/os2/proc.c | 321 --- threadproc/os2/signals.c | 82 - threadproc/os2/thread.c | 178 -- threadproc/os2/threadcancel.c | 86 - threadproc/os2/threadpriv.c | 92 - threadproc/os2/threadproc.h | 108 - threadproc/unix/.cvsignore | 1 - threadproc/unix/Makefile.in | 90 - threadproc/unix/proc.c | 410 ---- threadproc/unix/procsup.c | 166 -- threadproc/unix/signals.c | 72 - threadproc/unix/thread.c | 364 --- threadproc/unix/threadcancel.c | 128 - threadproc/unix/threadpriv.c | 260 -- threadproc/unix/threadproc.h | 105 - threadproc/win32/proc.c | 384 --- threadproc/win32/signals.c | 75 - threadproc/win32/thread.c | 203 -- threadproc/win32/threadcancel.c | 87 - threadproc/win32/threadpriv.c | 138 -- threadproc/win32/threadproc.def | 39 - threadproc/win32/threadproc.dsp | 119 - threadproc/win32/threadproc.h | 105 - time/beos/Makefile.in | 60 - time/beos/access.c | 245 -- time/beos/atime.h | 70 - time/beos/time.c | 132 -- time/os2/Makefile.in | 60 - time/os2/access.c | 247 -- time/os2/atime.h | 70 - time/os2/time.c | 134 -- time/unix/.cvsignore | 1 - time/unix/Makefile.in | 65 - time/unix/access.c | 370 --- time/unix/atime.h | 70 - time/unix/time.c | 222 -- time/win32/access.c | 267 --- time/win32/atime.h | 70 - time/win32/time.c | 158 -- time/win32/time.def | 30 - time/win32/time.dsp | 105 - 275 files changed, 64350 deletions(-) delete mode 100644 Makefile.in delete mode 100644 acconfig.h delete mode 100644 aclocal.m4 delete mode 100644 apr.dsw delete mode 100755 config.guess delete mode 100755 config.sub delete mode 100755 configure delete mode 100644 configure.in delete mode 100644 file_io/beos/Makefile.in delete mode 100644 file_io/beos/dir.c delete mode 100644 file_io/beos/fileacc.c delete mode 100644 file_io/beos/filedup.c delete mode 100644 file_io/beos/fileio.h delete mode 100644 file_io/beos/filestat.c delete mode 100644 file_io/beos/open.c delete mode 100644 file_io/beos/pipe.c delete mode 100644 file_io/beos/readwrite.c delete mode 100644 file_io/beos/seek.c delete mode 100644 file_io/os2/Makefile.in delete mode 100644 file_io/os2/dir.c delete mode 100644 file_io/os2/fileacc.c delete mode 100644 file_io/os2/filedup.c delete mode 100644 file_io/os2/fileio.h delete mode 100644 file_io/os2/filestat.c delete mode 100644 file_io/os2/maperrorcode.c delete mode 100644 file_io/os2/open.c delete mode 100644 file_io/os2/pipe.c delete mode 100644 file_io/os2/readwrite.c delete mode 100644 file_io/os2/seek.c delete mode 100644 file_io/unix/.cvsignore delete mode 100644 file_io/unix/Makefile.in delete mode 100644 file_io/unix/dir.c delete mode 100644 file_io/unix/fileacc.c delete mode 100644 file_io/unix/filedup.c delete mode 100644 file_io/unix/fileio.h delete mode 100644 file_io/unix/filestat.c delete mode 100644 file_io/unix/open.c delete mode 100644 file_io/unix/pipe.c delete mode 100644 file_io/unix/readwrite.c delete mode 100644 file_io/unix/seek.c delete mode 100644 file_io/win32/.test.swp delete mode 100644 file_io/win32/dir.c delete mode 100644 file_io/win32/file_io.def delete mode 100644 file_io/win32/file_io.dsp delete mode 100644 file_io/win32/fileacc.c delete mode 100644 file_io/win32/filedup.c delete mode 100644 file_io/win32/fileio.h delete mode 100644 file_io/win32/filestat.c delete mode 100644 file_io/win32/open.c delete mode 100644 file_io/win32/pipe.c delete mode 100644 file_io/win32/readdir.c delete mode 100644 file_io/win32/readdir.h delete mode 100644 file_io/win32/readwrite.c delete mode 100644 file_io/win32/seek.c delete mode 100644 inc/.cvsignore delete mode 100644 inc/apr_config.h.in delete mode 100644 inc/apr_fnmatch.h delete mode 100644 include/apr_config.h.in delete mode 100644 include/apr_errno.h delete mode 100644 include/apr_file_io.h delete mode 100644 include/apr_fnmatch.h delete mode 100644 include/apr_general.h delete mode 100644 include/apr_lock.h delete mode 100644 include/apr_network_io.h delete mode 100644 include/apr_portable.h delete mode 100644 include/apr_shmem.h delete mode 100644 include/apr_signal.h delete mode 100644 include/apr_thread_proc.h delete mode 100644 include/apr_time.h delete mode 100644 include/apr_win.h delete mode 100644 include/arch/beos/locks.h delete mode 100644 include/arch/beos/threadproc.h delete mode 100644 include/arch/os2/fileio.h delete mode 100644 include/arch/os2/locks.h delete mode 100644 include/arch/os2/threadproc.h delete mode 100644 include/arch/unix/fileio.h delete mode 100644 include/arch/unix/locks.h delete mode 100644 include/arch/unix/misc.h delete mode 100644 include/arch/unix/threadproc.h delete mode 100644 include/arch/win32/atime.h delete mode 100644 include/arch/win32/fileio.h delete mode 100644 include/arch/win32/locks.h delete mode 100644 include/arch/win32/threadproc.h delete mode 100644 lib/Makefile.in delete mode 100644 lib/apr_cpystrn.c delete mode 100644 lib/apr_execve.c delete mode 100644 lib/apr_fnmatch.c delete mode 100644 lib/apr_getpass.c delete mode 100644 lib/apr_md5.c delete mode 100644 lib/apr_pools.c delete mode 100644 lib/apr_signal.c delete mode 100644 lib/apr_slack.c delete mode 100644 lib/apr_snprintf.c delete mode 100644 lib/apr_tables.c delete mode 100644 lib/lib.def delete mode 100644 lib/lib.dsp delete mode 100644 locks/beos/Makefile.in delete mode 100644 locks/beos/crossproc.c delete mode 100644 locks/beos/intraproc.c delete mode 100644 locks/beos/locks.c delete mode 100644 locks/beos/locks.h delete mode 100644 locks/os2/Makefile.in delete mode 100644 locks/os2/locks.c delete mode 100644 locks/os2/locks.h delete mode 100644 locks/unix/.cvsignore delete mode 100644 locks/unix/Makefile.in delete mode 100644 locks/unix/crossproc.c delete mode 100644 locks/unix/intraproc.c delete mode 100644 locks/unix/locks.c delete mode 100644 locks/unix/locks.h delete mode 100644 locks/win32/locks.c delete mode 100644 locks/win32/locks.def delete mode 100644 locks/win32/locks.dsp delete mode 100644 locks/win32/locks.h delete mode 100644 misc/beos/Makefile.in delete mode 100644 misc/beos/misc.h delete mode 100644 misc/beos/start.c delete mode 100644 misc/os2/Makefile.in delete mode 100644 misc/os2/misc.h delete mode 100644 misc/os2/start.c delete mode 100644 misc/unix/.cvsignore delete mode 100644 misc/unix/Makefile.in delete mode 100644 misc/unix/getopt.c delete mode 100644 misc/unix/misc.h delete mode 100644 misc/unix/start.c delete mode 100644 misc/win32/getopt.c delete mode 100644 misc/win32/misc.def delete mode 100644 misc/win32/misc.dsp delete mode 100644 misc/win32/misc.h delete mode 100644 misc/win32/names.c delete mode 100644 misc/win32/start.c delete mode 100644 misc/win32/timetest.c delete mode 100644 network_io/beos/Makefile.in delete mode 100644 network_io/beos/networkio.h delete mode 100644 network_io/beos/poll.c delete mode 100644 network_io/beos/sendrecv.c delete mode 100644 network_io/beos/sockets.c delete mode 100644 network_io/beos/sockopt.c delete mode 100644 network_io/os2/Makefile.in delete mode 100644 network_io/os2/networkio.h delete mode 100644 network_io/os2/poll.c delete mode 100644 network_io/os2/sendrecv.c delete mode 100644 network_io/os2/sockets.c delete mode 100644 network_io/os2/sockopt.c delete mode 100644 network_io/unix/.cvsignore delete mode 100644 network_io/unix/.sockets.c.swp delete mode 100644 network_io/unix/Makefile.in delete mode 100644 network_io/unix/networkio.h delete mode 100644 network_io/unix/poll.c delete mode 100644 network_io/unix/sendrecv.c delete mode 100644 network_io/unix/sockets.c delete mode 100644 network_io/unix/sockopt.c delete mode 100644 network_io/win32/network_io.def delete mode 100644 network_io/win32/network_io.dsp delete mode 100644 network_io/win32/networkio.h delete mode 100644 network_io/win32/poll.c delete mode 100644 network_io/win32/sendrecv.c delete mode 100644 network_io/win32/sockets.c delete mode 100644 network_io/win32/sockopt.c delete mode 100644 shmem/shmem.c delete mode 100644 shmem/unix/Makefile.in delete mode 100644 shmem/unix/mm/CHANGES delete mode 100644 shmem/unix/mm/INSTALL delete mode 100644 shmem/unix/mm/LICENSE delete mode 100644 shmem/unix/mm/Makefile.in delete mode 100644 shmem/unix/mm/README delete mode 100644 shmem/unix/mm/aclocal.m4 delete mode 100755 shmem/unix/mm/config.guess delete mode 100755 shmem/unix/mm/config.sub delete mode 100755 shmem/unix/mm/configure delete mode 100644 shmem/unix/mm/configure.in delete mode 100755 shmem/unix/mm/fbtool delete mode 100755 shmem/unix/mm/ltconfig delete mode 100644 shmem/unix/mm/ltmain.sh delete mode 100644 shmem/unix/mm/mm-config.1 delete mode 100644 shmem/unix/mm/mm-config.in delete mode 100644 shmem/unix/mm/mm-config.pod delete mode 100644 shmem/unix/mm/mm.3 delete mode 100644 shmem/unix/mm/mm.h delete mode 100644 shmem/unix/mm/mm.pod delete mode 100644 shmem/unix/mm/mm_alloc.c delete mode 100644 shmem/unix/mm/mm_conf.h.in delete mode 100644 shmem/unix/mm/mm_core.c delete mode 100644 shmem/unix/mm/mm_global.c delete mode 100644 shmem/unix/mm/mm_lib.c delete mode 100644 shmem/unix/mm/mm_test.c delete mode 100644 shmem/unix/mm/mm_vers.c delete mode 100755 shmem/unix/mm/shtool delete mode 100644 shmem/unix/shmem.c delete mode 100644 signal/unix/.cvsignore delete mode 100644 signal/unix/Makefile.in delete mode 100644 signal/unix/signal.c delete mode 100644 signal/win32/signal.c delete mode 100644 signal/win32/signal.def delete mode 100644 signal/win32/signal.dsp delete mode 100644 test/.cvsignore delete mode 100644 test/Makefile.in delete mode 100644 test/ab_apr.c delete mode 100644 test/ab_apr.dsp delete mode 100644 test/abc.c delete mode 100644 test/client.c delete mode 100644 test/client.dsp delete mode 100644 test/htdigest.c delete mode 100644 test/htdigest.dsp delete mode 100644 test/htpasswd.c delete mode 100644 test/logresolve.c delete mode 100644 test/rotatelogs.c delete mode 100644 test/server.c delete mode 100644 test/server.dsp delete mode 100644 test/suexec.c delete mode 100644 test/test.dsw delete mode 100644 test/testarg.dsp delete mode 100644 test/testargs.c delete mode 100644 test/testfile.c delete mode 100644 test/testfile.dsp delete mode 100644 test/testproc.c delete mode 100644 test/testproc.dsp delete mode 100644 test/testproc.rbb delete mode 100644 test/testsig.c delete mode 100644 test/testsig.dsp delete mode 100644 test/testsock.c delete mode 100644 test/testsock.dsp delete mode 100644 test/testthread.c delete mode 100644 test/testthread.dsp delete mode 100644 test/testtime.c delete mode 100644 test/timetest.dsp delete mode 100644 threadproc/beos/Makefile.in delete mode 100644 threadproc/beos/proc.c delete mode 100644 threadproc/beos/signals.c delete mode 100644 threadproc/beos/thread.c delete mode 100644 threadproc/beos/threadcancel.c delete mode 100644 threadproc/beos/threadpriv.c delete mode 100644 threadproc/beos/threadproc.h delete mode 100644 threadproc/os2/Makefile.in delete mode 100644 threadproc/os2/proc.c delete mode 100644 threadproc/os2/signals.c delete mode 100644 threadproc/os2/thread.c delete mode 100644 threadproc/os2/threadcancel.c delete mode 100644 threadproc/os2/threadpriv.c delete mode 100644 threadproc/os2/threadproc.h delete mode 100644 threadproc/unix/.cvsignore delete mode 100644 threadproc/unix/Makefile.in delete mode 100644 threadproc/unix/proc.c delete mode 100644 threadproc/unix/procsup.c delete mode 100644 threadproc/unix/signals.c delete mode 100644 threadproc/unix/thread.c delete mode 100644 threadproc/unix/threadcancel.c delete mode 100644 threadproc/unix/threadpriv.c delete mode 100644 threadproc/unix/threadproc.h delete mode 100644 threadproc/win32/proc.c delete mode 100644 threadproc/win32/signals.c delete mode 100644 threadproc/win32/thread.c delete mode 100644 threadproc/win32/threadcancel.c delete mode 100644 threadproc/win32/threadpriv.c delete mode 100644 threadproc/win32/threadproc.def delete mode 100644 threadproc/win32/threadproc.dsp delete mode 100644 threadproc/win32/threadproc.h delete mode 100644 time/beos/Makefile.in delete mode 100644 time/beos/access.c delete mode 100644 time/beos/atime.h delete mode 100644 time/beos/time.c delete mode 100644 time/os2/Makefile.in delete mode 100644 time/os2/access.c delete mode 100644 time/os2/atime.h delete mode 100644 time/os2/time.c delete mode 100644 time/unix/.cvsignore delete mode 100644 time/unix/Makefile.in delete mode 100644 time/unix/access.c delete mode 100644 time/unix/atime.h delete mode 100644 time/unix/time.c delete mode 100644 time/win32/access.c delete mode 100644 time/win32/atime.h delete mode 100644 time/win32/time.c delete mode 100644 time/win32/time.def delete mode 100644 time/win32/time.dsp diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index eb0f9cbeb..000000000 --- a/Makefile.in +++ /dev/null @@ -1,71 +0,0 @@ -# -# APR (Apache Portable Runtime) library Makefile. -# -SHELL=@SH@ - -# -# Macros for compilation commands -# -@SET_MAKE@ -RM=@RM@ -CC=@CC@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -RANLIB=@RANLIB@ -# -# Macros for supporting directories -# -INCDIR=./include -INCDIR1=../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) - -# -# Macros for target determination -# -MODULES=lib file_io network_io threadproc locks misc time -SUBDIRS=lib file_io/@OSDIR@ network_io/@OSDIR@ threadproc/@OSDIR@ \ - locks/@OSDIR@ misc/@OSDIR@ time/@OSDIR@ signal/@OSDIR@ -#shmem/@OSDIR@ - -# -# Rules for turning inputs into outputs -# -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -# -# Rules for building specific targets, starting with 'all' for -# building the entire package. -# -all: Makefile $(MODULES) subdirs - @echo APR built. - -clean: subdirs_clean - $(RM) -f *.o *.a *.so - -depend: subdirs_depend - -distclean: clean - -$(RM) -f Makefile - -subdirs: - @for i in $(SUBDIRS); do \ - echo "===> $$i"; \ - ( cd $$i && $(MAKE) $(MFLAGS_STATIC) SDP='$(SDP)' \ - CC='$(CC)' AUX_CFLAGS='$(AUX_CFLAGS)' RANLIB='$(RANLIB)' ) \ - || exit 1; \ - echo "<== $$i"; \ - done; - -subdirs_depend: - @for i in $(SUBDIRS); do \ - ( cd $$i && $(MAKE) depend ) \ - done; - -subdirs_clean: - @for i in $(SUBDIRS); do \ - ( cd $$i && $(MAKE) clean ) \ - done; - -# DO NOT REMOVE diff --git a/acconfig.h b/acconfig.h deleted file mode 100644 index 989bb153a..000000000 --- a/acconfig.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef APR_CONFIG_H -#define APR_CONFIG_H -@TOP@ - -/* Various #defines we need to know about */ -#undef HAVE_STRUCT_UNION_SEMUN -#undef HAVE_LOCK_EX -#undef HAVE_F_SETLK -#undef HAVE_PTHREAD_PROCESS_SHARED - -/* Cross process serialization techniques */ -#undef USE_FLOCK_SERIALIZE -#undef USE_SYSVSEM_SERIALIZE -#undef USE_FCNTL_SERIALIZE -#undef USE_PROC_PTHREAD_SERIALIZE -#undef USE_PTHREAD_SERIALIZE - -#undef NEED_RLIM_T -#undef USEBCOPY - -@BOTTOM@ -#define API_EXPORT(type) type -#define API_EXPORT_NONSTD(type) type -#define API_VAR_IMPORT extern - -/* Make sure we have ssize_t defined to be somethine */ -#undef ssize_t - -/* We want this in config.h, because it is a macro that Windows requires. This - * way, every thread start function has this definition, and things are happy. - */ -#define API_THREAD_FUNC - -#ifdef HAVE_SIGACTION -typedef void Sigfunc(int); - -#if defined(SIG_ING) && !defined(SIG_ERR) -#define SIG_ERR ((Sigfunc *)-1) -#endif - -#define signal(s,f) ap_signal(s, f) -Sigfunc *signal(int signo, Sigfunc * func); -#endif - - -#endif /* APR_CONFIG_H */ diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index c2de746dc..000000000 --- a/aclocal.m4 +++ /dev/null @@ -1,98 +0,0 @@ -dnl ## -dnl ## -dnl ## -define(AC_USE_FUNCTION,[dnl -AC_CHECK_FUNCS($1) -if test ".$ac_cv_func_$1" = .yes; then -AC_DEFINE(USE_$2) -fi -])dnl -dnl ## -dnl ## -dnl ## -define(AC_CHECK_DEFINE,[dnl -AC_CACHE_CHECK(for $1 in $2, ac_cv_define_$1, -AC_EGREP_CPP([YES_IS_DEFINED], [ -#include <$2> -#ifdef $1 -YES_IS_DEFINED -#endif -], ac_cv_define_$1=yes; AC_DEFINE(HAVE_$1), ac_cv_define_$1=no) -)])dnl -dnl ## -dnl ## -dnl ## -define(AC_IFALLYES,[dnl -ac_rc=yes -for ac_spec in $1; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - $2 -else - : - $3 -fi -])dnl -dnl ## -dnl ## -dnl ## -define(AC_BEGIN_DECISION,[dnl -ac_decision_item='$1' -ac_decision_msg='FAILED' -ac_decision='' -])dnl -define(AC_DECIDE,[dnl -ac_decision='$1' -ac_decision_msg='$2' -ac_decision_$1=yes -ac_decision_$1_msg='$2' -])dnl -define(AC_DECISION_OVERRIDE,[dnl - ac_decision='' - for ac_item in $1; do - eval "ac_decision_this=\$ac_decision_${ac_item}" - if test ".$ac_decision_this" = .yes; then - ac_decision=$ac_item - eval "ac_decision_msg=\$ac_decision_${ac_item}_msg" - fi - done -])dnl -define(AC_DECISION_FORCE,[dnl -ac_decision="$1" -eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" -])dnl -define(AC_END_DECISION,[dnl -if test ".$ac_decision" = .; then - echo "[$]0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - AC_DEFINE($ac_decision_item) - AC_MSG_RESULT([decision on $ac_decision_item... $ac_decision_msg]) -fi -])dnl - - diff --git a/apr.dsw b/apr.dsw deleted file mode 100644 index e375dd751..000000000 --- a/apr.dsw +++ /dev/null @@ -1,143 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "file_io"=".\file_io\win32\file_io.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency -}}} - -############################################################################### - -Project: "lib"=".\lib\lib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "locks"=".\locks\win32\locks.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency - Begin Project Dependency - Project_Dep_Name misc - End Project Dependency -}}} - -############################################################################### - -Project: "misc"=".\misc\win32\misc.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency - Begin Project Dependency - Project_Dep_Name signal - End Project Dependency -}}} - -############################################################################### - -Project: "network_io"=".\network_io\win32\network_io.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name file_io - End Project Dependency - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency -}}} - -############################################################################### - -Project: "signal"=".\signal\win32\signal.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency -}}} - -############################################################################### - -Project: "threadproc"=".\threadproc\win32\threadproc.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency -}}} - -############################################################################### - -Project: "time"=".\time\win32\time.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name lib - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/config.guess b/config.guess deleted file mode 100755 index 88ada08f5..000000000 --- a/config.guess +++ /dev/null @@ -1,1082 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 -# Free Software Foundation, Inc. -# -# This file 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - -# Written by Per Bothner . -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# Please send patches to the Autoconf mailing list . -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# Use $HOST_CC if defined. $CC may point to a cross-compiler -if test x"$CC_FOR_BUILD" = x; then - if test x"$HOST_CC" != x; then - CC_FOR_BUILD="$HOST_CC" - else - if test x"$CC" != x; then - CC_FOR_BUILD="$CC" - else - CC_FOR_BUILD=cc - fi - fi -fi - - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <$dummy.s - .globl main - .ent main -main: - .frame \$30,0,\$26,0 - .prologue 0 - .long 0x47e03d80 # implver $0 - lda \$2,259 - .long 0x47e20c21 # amask $2,$1 - srl \$1,8,\$2 - sll \$2,2,\$2 - sll \$0,3,\$0 - addl \$1,\$0,\$0 - addl \$2,\$0,\$0 - ret \$31,(\$26),1 - .end main -EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy - case "$?" in - 7) - UNAME_MACHINE="alpha" - ;; - 15) - UNAME_MACHINE="alphaev5" - ;; - 14) - UNAME_MACHINE="alphaev56" - ;; - 10) - UNAME_MACHINE="alphapca56" - ;; - 16) - UNAME_MACHINE="alphaev6" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 - exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - arm32:NetBSD:*:*) - echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - SR2?01:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - macppc:NetBSD:*:*) - echo powerpc-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - sed 's/^ //' << EOF >$dummy.c - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - rm -f $dummy.c $dummy - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i?86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*T3E:*:*:*) - echo t3e-cray-unicosmk${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F300:UNIX_System_V:*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # uname on the ARM produces all sorts of strangeness, and we need to - # filter it out. - case "$UNAME_MACHINE" in - armv*) UNAME_MACHINE=$UNAME_MACHINE ;; - arm* | sa110*) UNAME_MACHINE="arm" ;; - esac - - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - ld_help_string=`cd /; ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ - | sed -ne '/supported emulations:/!d - s/[ ][ ]*/ /g - s/.*supported emulations: *// - s/ .*// - p'` - case "$ld_supported_emulations" in - *ia64) echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 ;; - i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; - i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; - sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c < -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;; - esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - sed 's/^ //' <$dummy.s - .globl main - .ent main - main: - .frame \$30,0,\$26,0 - .prologue 0 - .long 0x47e03d80 # implver $0 - lda \$2,259 - .long 0x47e20c21 # amask $2,$1 - srl \$1,8,\$2 - sll \$2,2,\$2 - sll \$0,3,\$0 - addl \$1,\$0,\$0 - addl \$2,\$0,\$0 - ret \$31,(\$26),1 - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy - case "$?" in - 7) - UNAME_MACHINE="alpha" - ;; - 15) - UNAME_MACHINE="alphaev5" - ;; - 14) - UNAME_MACHINE="alphaev56" - ;; - 10) - UNAME_MACHINE="alphapca56" - ;; - 16) - UNAME_MACHINE="alphaev6" - ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c </dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c < -#ifdef __cplusplus - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i?86:*:5:7*) - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585 - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE} - exit 0 ;; - i?86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:*:6*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/config.sub b/config.sub deleted file mode 100755 index e4944414b..000000000 --- a/config.sub +++ /dev/null @@ -1,1216 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, 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. - -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi - -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - linux-gnu*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=vxworks - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \ - | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v) - basic_machine=$basic_machine-unknown - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i[34567]86) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ - | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ - | mipstx39-* | mipstx39el-* | mcore-* \ - | f301-* | armv*-* | t3e-* \ - | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* ) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-cbm - ;; - amigaos | amigados) - basic_machine=m68k-cbm - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-cbm - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [ctj]90-cray) - basic_machine=c90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - os=-mvs - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i[34567]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i[34567]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i[34567]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - i386-go32 | go32) - basic_machine=i386-unknown - os=-go32 - ;; - i386-mingw32 | mingw32) - basic_machine=i386-unknown - os=-mingw32 - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | *MiNT) - basic_machine=m68k-atari - os=-mint - ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - msdos) - basic_machine=i386-unknown - os=-msdos - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-corel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - np1) - basic_machine=np1-gould - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexen) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexen-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=rs6000-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=t3e-cray - os=-unicos - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sparc | sparcv9) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -*MiNT) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-corel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f301-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -*MiNT) - vendor=atari - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os diff --git a/configure b/configure deleted file mode 100755 index 4465dbde4..000000000 --- a/configure +++ /dev/null @@ -1,5008 +0,0 @@ -#! /bin/sh - - -OS=`./config.guess` -OS=`./config.sub $OS` - -echo "Configuring APR library" -echo "Platform: ${OS}" - - - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --with-optim="FLAGS" compiler optimisation flags" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=configure.in - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - - - -# Check whether --with-optim or --without-optim was given. -if test "${with_optim+set}" = set; then - withval="$with_optim" - OPTIM="$withval" -fi - - -# Most platforms use a prefix of 'lib' on their library files. -LIBPREFIX='lib' - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:552: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:582: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:633: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:665: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 676 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:707: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:712: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:740: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:774: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:802: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftestmake -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= -else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -# Extract the first word of "rm", so it can be a program name with args. -set dummy rm; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:831: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RM'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RM"; then - ac_cv_prog_RM="$RM" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RM="rm" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -RM="$ac_cv_prog_RM" -if test -n "$RM"; then - echo "$ac_t""$RM" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -# Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:860: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="ar" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -AR="$ac_cv_prog_AR" -if test -n "$AR"; then - echo "$ac_t""$AR" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -case "$OS:$CC" in - *-hp-hpux*:cc ) CFAGS="$CFLAGS -Ae +DAportable" ;; -esac - - -# This macro needs to be here in case we are on an AIX box. -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:894: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:915: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:974: checking for AIX" >&5 -cat > conftest.$ac_ext <&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF -#define _ALL_SOURCE 1 -EOF - -else - rm -rf conftest* - echo "$ac_t""no" 1>&6 -fi -rm -f conftest* - - - -echo $ac_n "checking size of char""... $ac_c" 1>&6 -echo "configure:999: checking size of char" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_char=1 -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(char)); - exit(0); -} -EOF -if { (eval echo configure:1018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_char=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_char=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_char" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1038: checking size of int" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_int=4 -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(int)); - exit(0); -} -EOF -if { (eval echo configure:1057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_int=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_int=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_int" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1077: checking size of long" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_long=4 -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long)); - exit(0); -} -EOF -if { (eval echo configure:1096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_long=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_long=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_long" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1116: checking size of short" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_short=2 -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(short)); - exit(0); -} -EOF -if { (eval echo configure:1135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_short=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_short=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_short" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1155: checking size of long double" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_long_double=12 -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long double)); - exit(0); -} -EOF -if { (eval echo configure:1174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_long_double=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_long_double=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_long_double" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1194: checking size of long long" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_long_long=8 -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long long)); - exit(0); -} -EOF -if { (eval echo configure:1213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_long_long=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_long_long=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_long_long" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1234: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:1314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:1338: checking for off_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_off_t=yes -else - rm -rf conftest* - ac_cv_type_off_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_off_t" 1>&6 -if test $ac_cv_type_off_t = no; then - cat >> confdefs.h <<\EOF -#define off_t long -EOF - -fi - -echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:1371: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_pid_t=yes -else - rm -rf conftest* - ac_cv_type_pid_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then - cat >> confdefs.h <<\EOF -#define pid_t int -EOF - -fi - -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:1404: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:1437: checking for uid_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_uid_t=yes -else - rm -rf conftest* - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_type_uid_t" 1>&6 -if test $ac_cv_type_uid_t = no; then - cat >> confdefs.h <<\EOF -#define uid_t int -EOF - - cat >> confdefs.h <<\EOF -#define gid_t int -EOF - -fi - -echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:1471: checking for ssize_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])ssize_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_ssize_t=yes -else - rm -rf conftest* - ac_cv_type_ssize_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_ssize_t" 1>&6 -if test $ac_cv_type_ssize_t = no; then - cat >> confdefs.h <<\EOF -#define ssize_t int -EOF - -fi - -echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:1504: checking for inline" >&5 -if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_inline=$ac_kw; break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done - -fi - -echo "$ac_t""$ac_cv_c_inline" 1>&6 -case "$ac_cv_c_inline" in - inline | yes) ;; - no) cat >> confdefs.h <<\EOF -#define inline -EOF - ;; - *) cat >> confdefs.h <&6 -echo "configure:1551: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_SH'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$SH"; then - ac_cv_prog_SH="$SH" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_SH="sh" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -SH="$ac_cv_prog_SH" -if test -n "$SH"; then - echo "$ac_t""$SH" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -echo $ac_n "checking for LOCK_EX in sys/file.h""... $ac_c" 1>&6 -echo "configure:1579: checking for LOCK_EX in sys/file.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_LOCK_EX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef LOCK_EX -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_LOCK_EX=yes; cat >> confdefs.h <<\EOF -#define HAVE_LOCK_EX 1 -EOF - -else - rm -rf conftest* - ac_cv_define_LOCK_EX=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_LOCK_EX" 1>&6 -echo $ac_n "checking for F_SETLK in fcntl.h""... $ac_c" 1>&6 -echo "configure:1611: checking for F_SETLK in fcntl.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_F_SETLK'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef F_SETLK -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_F_SETLK=yes; cat >> confdefs.h <<\EOF -#define HAVE_F_SETLK 1 -EOF - -else - rm -rf conftest* - ac_cv_define_F_SETLK=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_F_SETLK" 1>&6 -echo $ac_n "checking for PTHREAD_PROCESS_SHARED in pthread.h""... $ac_c" 1>&6 -echo "configure:1643: checking for PTHREAD_PROCESS_SHARED in pthread.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_PTHREAD_PROCESS_SHARED'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef PTHREAD_PROCESS_SHARED -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_PTHREAD_PROCESS_SHARED=yes; cat >> confdefs.h <<\EOF -#define HAVE_PTHREAD_PROCESS_SHARED 1 -EOF - -else - rm -rf conftest* - ac_cv_define_PTHREAD_PROCESS_SHARED=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_PTHREAD_PROCESS_SHARED" 1>&6 - -ac_decision_item='lock implementation method' -ac_decision_msg='FAILED' -ac_decision='' - -ac_rc=yes -for ac_spec in header:sys/file.h define:LOCK_EX; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='USE_FLOCK_SERIALIZE' -ac_decision_msg='4.2BSD-style flock()' -ac_decision_USE_FLOCK_SERIALIZE=yes -ac_decision_USE_FLOCK_SERIALIZE_msg='4.2BSD-style flock()' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:sys/ipc.h header:sys/sem.h header:sys/file.h func:semget func:semctl; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='USE_SYSVSEM_SERIALIZE' -ac_decision_msg='SysV IPC semget()' -ac_decision_USE_SYSVSEM_SERIALIZE=yes -ac_decision_USE_SYSVSEM_SERIALIZE_msg='SysV IPC semget()' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:fcntl.h define:F_SETLK; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='USE_FCNTL_SERIALIZE' -ac_decision_msg='SVR4-style fcntl()' -ac_decision_USE_FCNTL_SERIALIZE=yes -ac_decision_USE_FCNTL_SERIALIZE_msg='SVR4-style fcntl()' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:pthread.h define:PTHREAD_PROCESS_SHARED custom:use_pthread_cross; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='USE_PROC_PTHREAD_SERIALIZE' -ac_decision_msg='pthread mutex' -ac_decision_USE_PROC_PTHREAD_SERIALIZE=yes -ac_decision_USE_PROC_PTHREAD_SERIALIZE_msg='pthread mutex' - -else - : - -fi - -ac_decision="USE_FCNTL_SERIALIZE" -eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" - -if test ".$ac_decision" = .; then - echo "$0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - cat >> confdefs.h <<\EOF -#define $ac_decision_item 1 -EOF - - echo "$ac_t""decision on $ac_decision_item... $ac_decision_msg" 1>&6 -fi - -cat >> confdefs.h <&6 -echo "configure:1844: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -if test ".$ac_cv_func_pthread_mutex_init" = .yes; then -cat >> confdefs.h <<\EOF -#define USE_PTHREAD_SERIALIZE 1 -EOF - -fi - - -case "$OS" in - *beos*) - OSDIR="beos" - ;; - *) - OSDIR="unix" - ;; -esac - -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:1914: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo dl | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 -fi - -echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6 -echo "configure:1961: checking for pthread_mutex_init in -lpthread" >&5 -ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lpthread $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo pthread | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 -fi - - -if (test "$SYS_SW" = "AIX"); then - CFLAGS="$CFLAGS -U__STR__" - case "$SYS_KV" in - 12*) - cat >> confdefs.h <<\EOF -#define USEBCOPY 1 -EOF - - ;; - 3*) - cat >> confdefs.h <<\EOF -#define NEED_RLIM_T 1 -EOF - - ;; - 41*) - cat >> confdefs.h <<\EOF -#define NEED_RLIM_T 1 -EOF - - ;; - esac -fi - -if (test "$SYS_SW" = "FreeBSD"); then - CFLAGS="$CFLAGS -pthread -U__STR__" -fi - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2037: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2050: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:2117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - - -for ac_hdr in crypt.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2145: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in ctype.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2185: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2195: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in dir.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2225: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in dirent.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2265: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in errno.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2305: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2315: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in net/errno.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2345: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in fcntl.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2385: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in features.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2425: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in grp.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2465: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in io.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2505: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2515: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in limits.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2545: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in malloc.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2585: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in math.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2625: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in memory.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2665: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in netdb.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2705: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in osreldate.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2745: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in process.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2785: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2795: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in pwd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2825: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in setjmp.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2865: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2875: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in signal.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2905: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2915: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in stdarg.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2945: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in stddef.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2985: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in stdio.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3025: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in stdlib.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3065: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in string.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3105: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3115: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sysapi.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3145: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sysgtime.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3185: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3195: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in time.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3225: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/time.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3265: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/times.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3305: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3315: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in tpfeq.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3345: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in tpfio.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3385: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3425: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in unix.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3465: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in winsock.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3505: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3515: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -for ac_hdr in arpa/inet.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3546: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in netinet/in.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3586: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -for ac_hdr in sys/file.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3627: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/ioctl.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3667: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3677: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/mman.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3707: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/param.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3747: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/resource.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3787: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/select.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3827: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3837: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/socket.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3867: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/stat.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3907: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3917: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/types.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3947: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/wait.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3987: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -for ac_hdr in pthread.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4028: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4066: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} - -; return 0; } -EOF -if { (eval echo configure:4120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_const=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_const=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const -EOF - -fi - -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:4141: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -for ac_hdr in unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4177: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in getpagesize -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4216: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:4269: checking for working mmap" >&5 -if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat > conftest.$ac_ext < -#include -#include - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif - -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -#ifdef __cplusplus -extern "C" { void *malloc(unsigned); } -#else -char *malloc(); -#endif - -int -main() -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize(); - - /* - * First, make a file with some known garbage in it. - */ - data = malloc(pagesize); - if (!data) - exit(1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand(); - umask(0); - fd = creat("conftestmmap", 0600); - if (fd < 0) - exit(1); - if (write(fd, data, pagesize) != pagesize) - exit(1); - close(fd); - - /* - * Next, try to mmap the file at a fixed address which - * already has something else allocated at it. If we can, - * also make sure that we see the same garbage. - */ - fd = open("conftestmmap", O_RDWR); - if (fd < 0) - exit(1); - data2 = malloc(2 * pagesize); - if (!data2) - exit(1); - data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit(1); - - /* - * Finally, make sure that changes to the mapped area - * do not percolate back to the file as seen by read(). - * (This is a bug on some variants of i386 svr4.0.) - */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = malloc(pagesize); - if (!data3) - exit(1); - if (read(fd, data3, pagesize) != pagesize) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit(1); - close(fd); - unlink("conftestmmap"); - exit(0); -} - -EOF -if { (eval echo configure:4417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_mmap_fixed_mapped=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_MMAP 1 -EOF - -fi - -echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:4440: checking whether setpgrp takes no argument" >&5 -if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - { echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext < -#endif - -/* - * If this system has a BSD-style setpgrp, which takes arguments, exit - * successfully. - */ -main() -{ - if (setpgrp(1,1) == -1) - exit(0); - else - exit(1); -} - -EOF -if { (eval echo configure:4468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_setpgrp_void=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_setpgrp_void=yes -fi -rm -fr conftest* -fi - - -fi - -echo "$ac_t""$ac_cv_func_setpgrp_void" 1>&6 -if test $ac_cv_func_setpgrp_void = yes; then - cat >> confdefs.h <<\EOF -#define SETPGRP_VOID 1 -EOF - -fi - - -echo $ac_n "checking looking for union semun in sys/sem.h""... $ac_c" 1>&6 -echo "configure:4493: checking looking for union semun in sys/sem.h" >&5 -cat > conftest.$ac_ext < -#include -#include - -int main() { - -union semun arg; -semctl(0, 0, 0, arg); - -; return 0; } -EOF -if { (eval echo configure:4509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cat >> confdefs.h <<\EOF -#define HAVE_STRUCT_UNION_SEMUN 1 -EOF - -msg=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - msg=no -fi -rm -f conftest* -echo "$ac_t""$msg" 1>&6 - -for ac_func in strcasecmp stricmp poll setsid -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4528: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in sigaction writev -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4583: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - - - - - - - - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile lib/Makefile file_io/$OSDIR/Makefile - network_io/$OSDIR/Makefile threadproc/$OSDIR/Makefile - locks/$OSDIR/Makefile misc/$OSDIR/Makefile - time/$OSDIR/Makefile signal/$OSDIR/Makefile - test/Makefile include/apr_config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@CC@%$CC%g -s%@RANLIB@%$RANLIB%g -s%@SET_MAKE@%$SET_MAKE%g -s%@RM@%$RM%g -s%@AR@%$AR%g -s%@CPP@%$CPP%g -s%@SH@%$SH%g -s%@LDLIBS@%$LDLIBS%g -s%@OPTIM@%$OPTIM%g -s%@OSDIR@%$OSDIR%g -s%@LIBPREFIX@%$LIBPREFIX%g -s%@EXEEXT@%$EXEEXT%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/configure.in b/configure.in deleted file mode 100644 index 87b792d6f..000000000 --- a/configure.in +++ /dev/null @@ -1,202 +0,0 @@ -AC_CONFIG_AUX_DIR(./helpers) -OS=`./config.guess` -OS=`./config.sub $OS` - -echo "Configuring APR library" -echo "Platform: ${OS}" - -dnl Process this file with autoconf to produce a configure script. -AC_INIT(configure.in) - -AC_CONFIG_HEADER(include/apr_config.h) - -AC_ARG_WITH(optim,[ --with-optim="FLAGS" compiler optimisation flags], - [OPTIM="$withval"]) - -# Most platforms use a prefix of 'lib' on their library files. -LIBPREFIX='lib' - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_RANLIB -AC_PROG_MAKE_SET -AC_CHECK_PROG(RM, rm, rm) -AC_CHECK_PROG(AR, ar, ar) - -dnl # this is the place to put specific options for platform/compiler -dnl # combinations -case "$OS:$CC" in - *-hp-hpux*:cc ) CFAGS="$CFLAGS -Ae +DAportable" ;; -esac - - -# This macro needs to be here in case we are on an AIX box. -AC_AIX - -dnl Checks for integer size -AC_CHECK_SIZEOF(char, 1) -AC_CHECK_SIZEOF(int, 4) -AC_CHECK_SIZEOF(long, 4) -AC_CHECK_SIZEOF(short, 2) -AC_CHECK_SIZEOF(long double, 12) -AC_CHECK_SIZEOF(long long, 8) - -dnl Checks for standard typedefs -AC_TYPE_OFF_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_TYPE_UID_T -AC_CHECK_TYPE(ssize_t, int) -AC_C_INLINE - -# Use /bin/sh if it exists, otherwise go looking for sh in the path -if (test -z "$SH" -a -e /bin/sh); then - SH="/bin/sh" -fi -AC_CHECK_PROG(SH, sh, sh) - -AC_CHECK_DEFINE(LOCK_EX, sys/file.h) -AC_CHECK_DEFINE(F_SETLK, fcntl.h) -AC_CHECK_DEFINE(PTHREAD_PROCESS_SHARED, pthread.h) - -dnl Checks for libraries. -AC_BEGIN_DECISION([lock implementation method]) -AC_IFALLYES(header:sys/file.h define:LOCK_EX, - AC_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()])) -AC_IFALLYES(header:sys/ipc.h header:sys/sem.h header:sys/file.h dnl - func:semget func:semctl, - AC_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()])) -AC_IFALLYES(header:fcntl.h define:F_SETLK, - AC_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()])) -AC_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl - custom:use_pthread_cross, - AC_DECIDE(USE_PROC_PTHREAD_SERIALIZE, [pthread mutex])) -AC_DECISION_FORCE(USE_FCNTL_SERIALIZE) -AC_END_DECISION -AC_DEFINE_UNQUOTED($ac_decision) - -AC_USE_FUNCTION(pthread_mutex_init, PTHREAD_SERIALIZE) - -case "$OS" in - *beos*) - OSDIR="beos" - ;; - *) - OSDIR="unix" - ;; -esac - -AC_CHECK_LIB(dl, dlopen) -AC_CHECK_LIB(pthread, pthread_mutex_init) - -if (test "$SYS_SW" = "AIX"); then - CFLAGS="$CFLAGS -U__STR__" - case "$SYS_KV" in - [12]*) - AC_DEFINE(USEBCOPY) - ;; - 3*) - AC_DEFINE(NEED_RLIM_T) - ;; - 41*) - AC_DEFINE(NEED_RLIM_T) - ;; - esac -fi - -if (test "$SYS_SW" = "FreeBSD"); then - CFLAGS="$CFLAGS -pthread -U__STR__" -fi - -dnl Checks for header files. -AC_HEADER_STDC - -AC_CHECK_HEADERS(crypt.h) -AC_CHECK_HEADERS(ctype.h) -AC_CHECK_HEADERS(dir.h) -AC_CHECK_HEADERS(dirent.h) -AC_CHECK_HEADERS(errno.h) -AC_CHECK_HEADERS(net/errno.h) -AC_CHECK_HEADERS(fcntl.h) -AC_CHECK_HEADERS(features.h) -AC_CHECK_HEADERS(grp.h) -AC_CHECK_HEADERS(io.h) -AC_CHECK_HEADERS(limits.h) -AC_CHECK_HEADERS(malloc.h) -AC_CHECK_HEADERS(math.h) -AC_CHECK_HEADERS(memory.h) -AC_CHECK_HEADERS(netdb.h) -AC_CHECK_HEADERS(osreldate.h) -AC_CHECK_HEADERS(process.h) -AC_CHECK_HEADERS(pwd.h) -AC_CHECK_HEADERS(setjmp.h) -AC_CHECK_HEADERS(signal.h) -AC_CHECK_HEADERS(stdarg.h) -AC_CHECK_HEADERS(stddef.h) -AC_CHECK_HEADERS(stdio.h) -AC_CHECK_HEADERS(stdlib.h) -AC_CHECK_HEADERS(string.h) -AC_CHECK_HEADERS(sysapi.h) -AC_CHECK_HEADERS(sysgtime.h) -AC_CHECK_HEADERS(time.h) -AC_CHECK_HEADERS(sys/time.h) -AC_CHECK_HEADERS(sys/times.h) -AC_CHECK_HEADERS(tpfeq.h) -AC_CHECK_HEADERS(tpfio.h) -AC_CHECK_HEADERS(unistd.h) -AC_CHECK_HEADERS(unix.h) -AC_CHECK_HEADERS(winsock.h) - -AC_CHECK_HEADERS(arpa/inet.h) -AC_CHECK_HEADERS(netinet/in.h) - -AC_CHECK_HEADERS(sys/file.h) -AC_CHECK_HEADERS(sys/ioctl.h) -AC_CHECK_HEADERS(sys/mman.h) -AC_CHECK_HEADERS(sys/param.h) -AC_CHECK_HEADERS(sys/resource.h) -AC_CHECK_HEADERS(sys/select.h) -AC_CHECK_HEADERS(sys/socket.h) -AC_CHECK_HEADERS(sys/stat.h) -AC_CHECK_HEADERS(sys/types.h) -AC_CHECK_HEADERS(sys/wait.h) - -AC_CHECK_HEADERS(pthread.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_SIZE_T -AC_FUNC_MMAP -AC_FUNC_SETPGRP - -AC_MSG_CHECKING(looking for union semun in sys/sem.h) -AC_TRY_COMPILE([ -#include -#include -#include -],[ -union semun arg; -semctl(0, 0, 0, arg); -], AC_DEFINE(HAVE_STRUCT_UNION_SEMUN) -msg=yes,dnl -msg=no) -AC_MSG_RESULT([$msg]) - -dnl Checks for library functions. -AC_CHECK_FUNCS(strcasecmp stricmp poll setsid) -AC_CHECK_FUNCS(sigaction writev) - -dnl Start building stuff from our information -AC_SUBST(LDLIBS) -AC_SUBST(OPTIM) -AC_SUBST(RANLIB) -AC_SUBST(AR) -AC_SUBST(RM) -AC_SUBST(OSDIR) -AC_SUBST(LIBPREFIX) -AC_SUBST(EXEEXT) -AC_OUTPUT(Makefile lib/Makefile file_io/$OSDIR/Makefile - network_io/$OSDIR/Makefile threadproc/$OSDIR/Makefile - locks/$OSDIR/Makefile misc/$OSDIR/Makefile - time/$OSDIR/Makefile signal/$OSDIR/Makefile - test/Makefile) diff --git a/file_io/beos/Makefile.in b/file_io/beos/Makefile.in deleted file mode 100644 index dc09ff79f..000000000 --- a/file_io/beos/Makefile.in +++ /dev/null @@ -1,78 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../libfile.a - -OBJS=dir.o \ - fileacc.o \ - filedup.o \ - filestat.o \ - open.o \ - pipe.o \ - readwrite.o \ - seek.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -dir.o: dir.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -fileacc.o: fileacc.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h -filedup.o: filedup.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h -filestat.o: filestat.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h -open.o: open.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -pipe.o: pipe.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h -readwrite.o: readwrite.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h -seek.o: seek.c fileio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_file_io.h diff --git a/file_io/beos/dir.c b/file_io/beos/dir.c deleted file mode 100644 index 43d35ad20..000000000 --- a/file_io/beos/dir.c +++ /dev/null @@ -1,220 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" - -ap_status_t dir_cleanup(void *thedir) -{ - struct dir_t *dir = thedir; - if (closedir(dir->dirstruct) ==0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_opendir(ap_context_t *cont, const char *dirname, ap_dir_t ** new) -{ - (*new) = (struct dir_t *)ap_palloc(cont,sizeof(struct dir_t)); - - (*new)->cntxt = cont; - (*new)->dirname = strdup(dirname); - (*new)->dirstruct = opendir(dirname); - (*new)->entry = NULL; - - if ((*new)->dirstruct == NULL) { - (*new)->dirstruct = NULL; - return errno; - } - else { - ap_register_cleanup((*new)->cntxt, (void*)(*new), dir_cleanup, NULL); - return APR_SUCCESS; - } -} - -ap_status_t ap_closedir(struct dir_t *thedir) -{ - if (dir_cleanup(thedir) == APR_SUCCESS) { - ap_kill_cleanup(thedir->cntxt, thedir, dir_cleanup); - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_readdir(struct dir_t *thedir) -{ - thedir->entry = readdir(thedir->dirstruct); - if (thedir->entry == NULL){ - return errno; - } - return APR_SUCCESS; -} - -ap_status_t ap_rewinddir(struct dir_t *thedir) -{ - rewinddir(thedir->dirstruct); - return APR_SUCCESS; -} - -ap_status_t ap_make_dir(ap_context_t *cont, const char *path, ap_fileperms_t mode) -{ - if (mkdir(path, mode) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_remove_dir(ap_context_t *cont, const char *path) -{ - if (rmdir(path) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_dir_entry_size(struct dir_t *thedir, ap_ssize_t *size) -{ - struct stat filestat; - char *fname = NULL; - - if (thedir->entry == NULL) { - *size = -1; - return APR_ENOFILE; - } - fname = ap_pstrcat(thedir->cntxt, thedir->dirname, "/", - thedir->entry->d_name, NULL); - if (stat(fname, &filestat) == -1) { - *size = -1; - return APR_ENOSTAT; - } - - *size = filestat.st_size; - return APR_SUCCESS; -} - -ap_status_t ap_dir_entry_mtime(struct dir_t *thedir, time_t *time) -{ - struct stat filestat; - char *fname = NULL; - - if (thedir->entry == NULL) { - *time = -1; - return APR_ENOFILE; - } - - fname = ap_pstrcat(thedir->cntxt, thedir->dirname, "/", - thedir->entry->d_name, NULL); - if (stat(fname, &filestat) == -1) { - *time = -1; - return APR_ENOSTAT; - } - - *time = filestat.st_mtime; - return APR_SUCCESS; -} - -ap_status_t ap_dir_entry_ftype(struct dir_t *thedir, ap_filetype_e *type) -{ - struct stat filestat; - char *fname = NULL; - - if (thedir->entry == NULL) { - *type = APR_REG; - return APR_ENOFILE; - } - - fname = ap_pstrcat(thedir->cntxt, thedir->dirname, "/", - thedir->entry->d_name, NULL); - if (stat(fname, &filestat) == -1) { - *type = APR_REG; - return APR_ENOSTAT; - } - - if (S_ISREG(filestat.st_mode)) - *type = APR_REG; - if (S_ISDIR(filestat.st_mode)) - *type = APR_DIR; - if (S_ISCHR(filestat.st_mode)) - *type = APR_CHR; - if (S_ISBLK(filestat.st_mode)) - *type = APR_BLK; - if (S_ISFIFO(filestat.st_mode)) - *type = APR_PIPE; - if (S_ISLNK(filestat.st_mode)) - *type = APR_LNK; - /*if (S_ISSOCK(filestat.st_mode)) - *type = APR_SOCK; */ - return APR_SUCCESS; -} - -ap_status_t ap_get_dir_filename(struct dir_t *thedir, char **new) -{ - (*new) = ap_pstrdup(thedir->cntxt, thedir->entry->d_name); - return APR_SUCCESS; -} - diff --git a/file_io/beos/fileacc.c b/file_io/beos/fileacc.c deleted file mode 100644 index 901d2edc5..000000000 --- a/file_io/beos/fileacc.c +++ /dev/null @@ -1,164 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" - -/* A file to put ALL of the accessor functions for struct file_t types. */ - -ap_status_t ap_get_filename(struct file_t *thefile, char **new) -{ - if (thefile != NULL) { - *new = (char*)ap_pstrdup(thefile->cntxt, thefile->fname); - return APR_SUCCESS; - } - else { - *new = NULL; - return APR_ENOFILE; - } -} - -mode_t get_fileperms(ap_fileperms_t mode) -{ - mode_t rv = 0; - - if (mode & APR_UREAD) - rv |= S_IRUSR; - if (mode & APR_UWRITE) - rv |= S_IWUSR; - if (mode & APR_UEXECUTE) - rv |= S_IXUSR; - - if (mode & APR_GREAD) - rv |= S_IRGRP; - if (mode & APR_GWRITE) - rv |= S_IWGRP; - if (mode & APR_GEXECUTE) - rv |= S_IXGRP; - - if (mode & APR_WREAD) - rv |= S_IROTH; - if (mode & APR_WWRITE) - rv |= S_IWOTH; - if (mode & APR_WEXECUTE) - rv |= S_IXOTH; - - return rv; -} - - -ap_status_t ap_get_filesize(struct file_t *file, ap_ssize_t *size) -{ - if (file != NULL) { - *size = file->size; - return APR_SUCCESS; - } - else { - *size = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_fileperms(struct file_t *file, ap_fileperms_t *perm) -{ - if (file != NULL) { - *perm = file->protection; - return APR_SUCCESS; - } - else { - *perm = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_fileatime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - *time = file->atime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_filectime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - *time = file->ctime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_filemtime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - *time = file->mtime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - diff --git a/file_io/beos/filedup.c b/file_io/beos/filedup.c deleted file mode 100644 index eaf465197..000000000 --- a/file_io/beos/filedup.c +++ /dev/null @@ -1,82 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" - -ap_status_t ap_dupfile(struct file_t *old_file, struct file_t **new_file) -{ - (*new_file) = (struct file_t *)ap_palloc(old_file->cntxt, - sizeof(struct file_t)); - - if ((*new_file) == NULL) { - return APR_ENOMEM; - } - (*new_file)->cntxt = old_file->cntxt; - (*new_file)->filedes = dup(old_file->filedes); - (*new_file)->fname = (char*)ap_pstrdup(old_file->cntxt, old_file->fname); - (*new_file)->buffered = old_file->buffered; - (*new_file)->protection = old_file->protection; - (*new_file)->user = old_file->user; - (*new_file)->group = old_file->group; - (*new_file)->size = old_file->size; - (*new_file)->atime = old_file->atime; - (*new_file)->mtime = old_file->mtime; - (*new_file)->ctime = old_file->ctime; - ap_register_cleanup((*new_file)->cntxt, (void *)(*new_file), file_cleanup, NULL); - return APR_SUCCESS; -} diff --git a/file_io/beos/fileio.h b/file_io/beos/fileio.h deleted file mode 100644 index 6c1e11dc3..000000000 --- a/file_io/beos/fileio.h +++ /dev/null @@ -1,100 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#include -#include -#include -#include -#include -#include -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -#define ENOFILE B_ENTRY_NOT_FOUND - -struct file_t { - ap_context_t *cntxt; - int filedes; - char * fname; - int buffered; - mode_t protection; - uid_t user; - gid_t group; - off_t size; - time_t atime; - time_t mtime; - time_t ctime; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - DIR *dirstruct; - struct dirent *entry; -}; - -struct iovec_t { - ap_context_t *cntxt; - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void*); -mode_t get_fileperms(ap_fileperms_t); - -#endif /* ! FILE_IO_H */ diff --git a/file_io/beos/filestat.c b/file_io/beos/filestat.c deleted file mode 100644 index 0dba48711..000000000 --- a/file_io/beos/filestat.c +++ /dev/null @@ -1,99 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -ap_status_t ap_getfileinfo(struct file_t *thefile) -{ - struct stat info; - int rv = stat(thefile->fname, &info); - - if (rv == 0) { - thefile->protection = info.st_mode; - thefile->user = info.st_uid; - thefile->group = info.st_gid; - thefile->size = info.st_size; - thefile->atime = info.st_atime; - thefile->mtime = info.st_mtime; - thefile->ctime = info.st_ctime; - return APR_SUCCESS; - } - else { - return APR_ENOSTAT; - } -} - -ap_status_t ap_updatefileinfo(struct file_t *thefile) -{ - struct stat info; - int rv = fstat(thefile->filedes, &info); - - if (rv == 0) { - thefile->protection = info.st_mode; - thefile->user = info.st_uid; - thefile->group = info.st_gid; - thefile->size = info.st_size; - thefile->atime = info.st_atime; - thefile->mtime = info.st_mtime; - thefile->ctime = info.st_ctime; - return APR_SUCCESS; - } - else { - return APR_ENOSTAT; - } -} diff --git a/file_io/beos/open.c b/file_io/beos/open.c deleted file mode 100644 index a8ccabfc8..000000000 --- a/file_io/beos/open.c +++ /dev/null @@ -1,166 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - - -// BeOS port by David Reid 23 Feb 1999 - -#include -#include -#include -#include -#include -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" - -ap_status_t file_cleanup(void *thefile) -{ - struct file_t *file = thefile; - if (close(file->filedes) == 0) { - file->filedes = -1; - return APR_SUCCESS; - } - else { - return errno; - /* Are there any error conditions other than EINTR or EBADF? */ - } -} - -ap_status_t ap_open(ap_context_t *cont, char *fname, ap_int32_t flag, ap_fileperms_t perm, struct file_t **new) -{ - int oflags = 0; - struct stat info; - mode_t mode = get_fileperms(perm); - - (*new) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - - (*new)->cntxt = cont; - - if ((flag & APR_READ) && (flag & APR_WRITE)) { - oflags = B_READ_WRITE; - } - else if (flag & APR_READ) { - oflags = B_READ_ONLY; - } - else if (flag & APR_WRITE) { - oflags = B_WRITE_ONLY; - } - else { - (*new)->filedes = -1; - return APR_EACCES; - } - if (flag & APR_BUFFERED) { - (*new)->buffered = TRUE; - } - - (*new)->fname = (char*)strdup(fname); - if (flag & APR_CREATE) { - oflags |= B_CREATE_FILE; - if (flag & APR_EXCL) { - oflags |= B_FAIL_IF_EXISTS; - } - } - if ((flag & APR_EXCL) && !(flag & APR_CREATE)) { - (*new)->filedes = -1; - return APR_EACCES; - } - - if (flag & APR_APPEND) { - oflags |= B_OPEN_AT_END; - } - if (flag & APR_TRUNCATE) { - oflags |= B_ERASE_FILE; - } - - (*new)->filedes = open(fname, oflags, mode); - - if ((*new)->filedes < 0) { - (*new)->filedes = -1; - return errno; - } - if (ap_updatefileinfo(*new) == APR_SUCCESS) { - ap_register_cleanup((*new)->cntxt, (void *)(*new), - file_cleanup, NULL); - return APR_SUCCESS; - } - else { - (*new)->filedes = -1; - return APR_ENOSTAT; - } -} - -ap_status_t ap_close(struct file_t * file) -{ - if (file_cleanup(file) == APR_SUCCESS) { - ap_kill_cleanup(file->cntxt, file, file_cleanup); - return APR_SUCCESS; - } - else { - return errno; - /* Are there any error conditions other than EINTR or EBADF? */ - } -} - -ap_status_t ap_remove_file(ap_context_t *cont, char *path) -{ - if (unlink(path) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} diff --git a/file_io/beos/pipe.c b/file_io/beos/pipe.c deleted file mode 100644 index 3641e7895..000000000 --- a/file_io/beos/pipe.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include -#include -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" - -ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t **in, struct file_t **out) -{ - int filedes[2]; - - if (pipe(filedes) == -1) { - return errno; - } - (*in) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*in)->cntxt = cont; - (*in)->filedes = filedes[0]; - (*in)->fname = (char*)ap_pstrdup(cont, "PIPE"); - - (*out) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*out)->cntxt = cont; - (*out)->filedes = filedes[1]; - (*out)->fname = (char*)ap_pstrdup(cont, "PIPE"); - - return APR_SUCCESS; -} - -ap_status_t ap_create_namedpipe(ap_context_t *cont, char *dirpath, ap_fileperms_t perm, char **new) -{ - mode_t mode = get_fileperms(perm); - - *new = tempnam(dirpath, NULL); - if (mkfifo((*new), mode) == -1) { - return errno; - } - return APR_SUCCESS; -} diff --git a/file_io/beos/readwrite.c b/file_io/beos/readwrite.c deleted file mode 100644 index 17cc15182..000000000 --- a/file_io/beos/readwrite.c +++ /dev/null @@ -1,112 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_errno.h" - -ap_status_t ap_read(const struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - ap_size_t rv; - - if (thefile->filedes < 0) { - *nbytes = -1; - return APR_EBADF; - } - - rv = read(thefile->filedes, buf, *nbytes); - - *nbytes = rv; - return APR_SUCCESS; -} - -ap_status_t ap_write(struct file_t *thefile, void * buf, ap_ssize_t *nbytes) -{ - ap_size_t rv; - struct stat info; - - if (thefile->filedes < 0) { - *nbytes = -1; - return APR_EBADF; - } - - rv = write(thefile->filedes, buf, *nbytes); - - if (stat(thefile->fname, &info) == 0) { - thefile->size = info.st_size; - thefile->atime = info.st_atime; - thefile->mtime = info.st_mtime; - thefile->ctime = info.st_ctime; - } - - *nbytes = rv; - return APR_SUCCESS; -} - -ap_status_t ap_writev(struct file_t *thefile, const struct iovec_t *vec, ap_ssize_t *iocnt) -{ - ap_ssize_t bytes; - if ((bytes = writev(thefile->filedes, vec->iovec, *iocnt)) < 0){ - *iocnt = bytes; - return errno; - } - else { - *iocnt = bytes; - return APR_SUCCESS; - } -} diff --git a/file_io/beos/seek.c b/file_io/beos/seek.c deleted file mode 100644 index 76772658f..000000000 --- a/file_io/beos/seek.c +++ /dev/null @@ -1,74 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include "fileio.h" -#include "apr_file_io.h" - -ap_status_t ap_seek(struct file_t *thefile, ap_seek_where_t where, ap_off_t *offset) -{ - ap_off_t rv; - rv = lseek(thefile->filedes, *offset, where); - if (rv == -1) { - *offset = -1; - return errno; - } - else { - *offset = rv; - return APR_SUCCESS; - } - -} diff --git a/file_io/os2/Makefile.in b/file_io/os2/Makefile.in deleted file mode 100644 index 2807b9373..000000000 --- a/file_io/os2/Makefile.in +++ /dev/null @@ -1,77 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../file.a - -OBJS=dir.o \ - fileacc.o \ - filedup.o \ - filestat.o \ - open.o \ - pipe.o \ - readwrite.o \ - seek.o \ - maperrorcode.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -dir.o: dir.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h -fileacc.o: fileacc.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h -filedup.o: filedup.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h -filestat.o: filestat.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h -open.o: open.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h \ - ../include/apr_lib.h ../include/apr_config.h \ - ../include/hsregex.h -pipe.o: pipe.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h -readwrite.o: readwrite.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h -seek.o: seek.c ../../include/apr_file_io.h fileio.h \ - ../../include/apr_errno.h ../../include/apr_general.h diff --git a/file_io/os2/dir.c b/file_io/os2/dir.c deleted file mode 100644 index 3072a2243..000000000 --- a/file_io/os2/dir.c +++ /dev/null @@ -1,223 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include - -#define INCL_DOS -#include - -ap_status_t dir_cleanup(void *thedir) -{ - struct dir_t *dir = thedir; - return ap_closedir(dir); -} - - - -ap_status_t ap_opendir(ap_context_t *cntxt, const char *dirname, struct dir_t **new) -{ - struct dir_t *thedir = (struct dir_t *)ap_palloc(cntxt, sizeof(struct dir_t)); - - if (thedir == NULL) - return APR_ENOMEM; - - thedir->cntxt = cntxt; - thedir->dirname = ap_pstrdup(cntxt, dirname); - thedir->handle = 0; - thedir->validentry = FALSE; - *new = thedir; - return APR_SUCCESS; -} - - - -ap_status_t ap_closedir(struct dir_t *thedir) -{ - int rv = 0; - - if (thedir->handle) { - rv = DosFindClose(thedir->handle); - - if (rv == 0) { - thedir->handle = 0; - } - } - - return os2errno(rv); -} - - - -ap_status_t ap_readdir(struct dir_t *thedir) -{ - int rv; - ULONG entries = 1; - - if (thedir->handle == 0) { - thedir->handle = HDIR_CREATE; - rv = DosFindFirst(ap_pstrcat(thedir->cntxt, thedir->dirname, "/*", NULL), &thedir->handle, - FILE_ARCHIVED|FILE_DIRECTORY|FILE_SYSTEM|FILE_HIDDEN|FILE_READONLY, - &thedir->entry, sizeof(thedir->entry), &entries, FIL_STANDARD); - } else { - rv = DosFindNext(thedir->handle, &thedir->entry, sizeof(thedir->entry), &entries); - } - - if (rv == 0 && entries == 1) { - thedir->validentry = TRUE; - return APR_SUCCESS; - } - - thedir->validentry = FALSE; - - if (rv) - return os2errno(rv); - - return APR_ENOENT; -} - - - -ap_status_t ap_rewinddir(struct dir_t *thedir) -{ - return ap_closedir(thedir); -} - - - -ap_status_t ap_make_dir(ap_context_t *cont, const char *path, ap_fileperms_t perm) -{ - return os2errno(DosCreateDir(path, NULL)); -} - - - -ap_status_t ap_remove_dir(ap_context_t *cont, const char *path) -{ - return os2errno(DosDeleteDir(path)); -} - - - -ap_status_t ap_dir_entry_size(struct dir_t *thedir, ap_ssize_t *size) -{ - if (thedir->validentry) { - *size = thedir->entry.cbFile; - return APR_SUCCESS; - } - - return APR_ENOFILE; -} - - - -ap_status_t ap_dir_entry_mtime(struct dir_t *thedir, time_t *time) -{ - if (thedir->validentry) { - *time = os2date2unix(thedir->entry.fdateLastWrite, thedir->entry.ftimeLastWrite); - return APR_SUCCESS; - } - - return APR_ENOFILE; -} - - - -ap_status_t ap_dir_entry_ftype(struct dir_t *thedir, ap_filetype_e *type) -{ - int rc; - HFILE hFile; - ULONG action, Type, Attr; - ap_filetype_e typemap[8] = { APR_REG, APR_CHR, APR_PIPE }; - - if (thedir->validentry) { - if (thedir->entry.attrFile & FILE_DIRECTORY) { - *type = APR_DIR; - return APR_SUCCESS; - } else { - rc = DosOpen(ap_pstrcat(thedir->cntxt, thedir->dirname, "/", thedir->entry.achName, NULL) , - &hFile, &action, 0, 0, - OPEN_ACTION_FAIL_IF_NEW|OPEN_ACTION_OPEN_IF_EXISTS, OPEN_SHARE_DENYNONE|OPEN_ACCESS_READONLY, - NULL); - - if ( rc == 0 ) { - rc = DosQueryHType( hFile, &Type, &Attr ); - - if ( rc == 0 ) { - *type = typemap[(Type & 0x0007)]; - } - DosClose( hFile ); - } - - return os2errno(rc); - } - } - - return APR_ENOFILE; -} - - - -ap_status_t ap_get_dir_filename(struct dir_t *thedir, char **new) -{ - if (thedir->validentry) { - *new = thedir->entry.achName; - return APR_SUCCESS; - } - - return APR_ENOFILE; -} diff --git a/file_io/os2/fileacc.c b/file_io/os2/fileacc.c deleted file mode 100644 index a31519265..000000000 --- a/file_io/os2/fileacc.c +++ /dev/null @@ -1,188 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include - -/* A file to put ALL of the accessor functions for struct file_t types. */ - -ap_status_t ap_get_filename(struct file_t *thefile, char **new) -{ - if (thefile != NULL) { - *new = ap_pstrdup(thefile->cntxt, thefile->fname); - return APR_SUCCESS; - } else { - *new = NULL; - return APR_ENOFILE; - } -} - - - -ap_status_t ap_get_filesize(struct file_t *file, ap_ssize_t *size) -{ - ap_status_t rv; - - if (file != NULL) { - if (!file->validstatus) { - rv = ap_getfileinfo(file); - - if (rv) - return rv; - } - - *size = file->status.cbFile; - return APR_SUCCESS; - } else { - *size = -1; - return APR_ENOFILE; - } -} - - - -ap_status_t ap_get_fileperms(struct file_t *file, ap_fileperms_t *perm) -{ - ap_status_t rv; - - if (file != NULL) { - if (!file->validstatus) { - rv = ap_getfileinfo(file); - - if (rv) - return rv; - } - - *perm = (file->status.attrFile & FILE_READONLY) ? 0555 : 0777; - return APR_SUCCESS; - } else { - *perm = -1; - return APR_ENOFILE; - } -} - - - -ap_status_t ap_get_fileatime(struct file_t *file, time_t *time) -{ - ap_status_t rv; - - if (file != NULL) { - if (!file->validstatus) { - rv = ap_getfileinfo(file); - - if (rv) - return rv; - } - - *time = os2date2unix( file->status.fdateLastAccess, file->status.ftimeLastAccess ); - return APR_SUCCESS; - } else { - *time = -1; - return APR_ENOFILE; - } -} - - - -ap_status_t ap_get_filectime(struct file_t *file, time_t *time) -{ - ap_status_t rv; - - if (file != NULL) { - if (!file->validstatus) { - rv = ap_getfileinfo(file); - - if (rv) - return rv; - } - - *time = os2date2unix( file->status.fdateCreation, file->status.ftimeCreation ); - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - - - -ap_status_t ap_get_filemtime(struct file_t *file, time_t *time) -{ - ap_status_t rv; - - if (file != NULL) { - if (!file->validstatus) { - rv = ap_getfileinfo(file); - - if (rv) - return rv; - } - - *time = os2date2unix( file->status.fdateLastWrite, file->status.ftimeLastWrite ); - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - diff --git a/file_io/os2/filedup.c b/file_io/os2/filedup.c deleted file mode 100644 index 884c8e67a..000000000 --- a/file_io/os2/filedup.c +++ /dev/null @@ -1,88 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include - -#define INCL_DOS -#include - -ap_status_t ap_dupfile(struct file_t *old_file, struct file_t **new_file) -{ - int rv; - struct file_t *dup_file = (struct file_t *)ap_palloc(old_file->cntxt, sizeof(struct file_t)); - - if (new_file == NULL) { - return APR_ENOMEM; - } - - dup_file->filedes = -1; - rv = DosDupHandle(old_file->filedes, &dup_file->filedes); - - if (rv) { - return os2errno(rv); - } - - dup_file->cntxt = old_file->cntxt; - dup_file->fname = ap_pstrdup(dup_file->cntxt, old_file->fname); - dup_file->buffered = old_file->buffered; - dup_file->status = old_file->status; - dup_file->isopen = old_file->isopen; - *new_file = dup_file; - ap_register_cleanup(dup_file->cntxt, dup_file, file_cleanup, NULL); - return APR_SUCCESS; -} diff --git a/file_io/os2/fileio.h b/file_io/os2/fileio.h deleted file mode 100644 index 0d40b4af7..000000000 --- a/file_io/os2/fileio.h +++ /dev/null @@ -1,94 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#define INCL_DOS -#include - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct file_t { - ap_context_t *cntxt; - ULONG filedes; - char * fname; - int isopen; - int buffered; - FILESTATUS3 status; - int validstatus; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - ULONG handle; - FILEFINDBUF3 entry; - int validentry; -}; - -struct iovec_t { - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void *); -mode_t get_fileperms(ap_fileperms_t); -long os2date2unix( FDATE os2date, FTIME os2time ); -int os2errno( ULONG oserror ); - -#endif /* ! FILE_IO_H */ - diff --git a/file_io/os2/filestat.c b/file_io/os2/filestat.c deleted file mode 100644 index 425215c5c..000000000 --- a/file_io/os2/filestat.c +++ /dev/null @@ -1,112 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include - -#define INCL_DOS -#include - - -typedef struct { - USHORT sec2:5; - USHORT min:6; - USHORT hour:5; -} DOSTIME; - -typedef struct { - USHORT day:5; - USHORT month:4; - USHORT year:7; -} DOSDATE; - -long os2date2unix( FDATE os2date, FTIME os2time ) -{ - struct tm tmpdate; - - memset(&tmpdate, 0, sizeof(tmpdate)); - tmpdate.tm_hour = os2time.hours; - tmpdate.tm_min = os2time.minutes; - tmpdate.tm_sec = os2time.twosecs * 2; - - tmpdate.tm_mday = os2date.day; - tmpdate.tm_mon = os2date.month - 1; - tmpdate.tm_year = os2date.year + 80; - tmpdate.tm_isdst = -1; - - return mktime( &tmpdate ); -} - - - -ap_status_t ap_getfileinfo(struct file_t *thefile) -{ - ULONG rc; - - if (thefile->isopen) - rc = DosQueryFileInfo(thefile->filedes, FIL_STANDARD, &thefile->status, sizeof(thefile->status)); - else - rc = DosQueryPathInfo(thefile->fname, FIL_STANDARD, &thefile->status, sizeof(thefile->status)); - - if (rc == 0) { - thefile->validstatus = TRUE; - return APR_SUCCESS; - } - - thefile->validstatus = FALSE; - return os2errno(rc); -} diff --git a/file_io/os2/maperrorcode.c b/file_io/os2/maperrorcode.c deleted file mode 100644 index 0c7fb4fb9..000000000 --- a/file_io/os2/maperrorcode.c +++ /dev/null @@ -1,91 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_file_io.h" -#include -#include - -#define INCL_DOSERRORS -#include - -int errormap[][2] = { - { NO_ERROR, APR_SUCCESS }, - { ERROR_FILE_NOT_FOUND, APR_ENOENT }, - { ERROR_PATH_NOT_FOUND, APR_ENOENT }, - { ERROR_TOO_MANY_OPEN_FILES, APR_EMFILE }, - { ERROR_ACCESS_DENIED, APR_EACCES }, - { ERROR_SHARING_VIOLATION, APR_EACCES }, - { ERROR_INVALID_PARAMETER, APR_EINVAL }, - { ERROR_OPEN_FAILED, APR_ENOENT }, - { ERROR_DISK_FULL, APR_ENOSPC }, - { ERROR_FILENAME_EXCED_RANGE, APR_ENAMETOOLONG }, - { ERROR_INVALID_FUNCTION, APR_EINVAL }, - { ERROR_INVALID_HANDLE, APR_EBADF }, - { ERROR_NEGATIVE_SEEK, APR_ESPIPE } -}; - -#define MAPSIZE (sizeof(errormap)/sizeof(errormap[0])) - -int os2errno( ULONG oserror ) -{ - int rv = -1, index; - - for (index=0; index. - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include - -#define INCL_DOS -#include - -ap_status_t file_cleanup(void *thefile) -{ - struct file_t *file = thefile; - return ap_close(file); -} - - - -ap_status_t ap_open(ap_context_t *cntxt, char *fname, ap_int32_t flag, ap_fileperms_t perm, struct file_t **new) -{ - int oflags = 0; - int mflags = OPEN_FLAGS_FAIL_ON_ERROR|OPEN_SHARE_DENYNONE; - int rv; - ULONG action; - ap_file_t *dafile = (struct file_t *)ap_palloc(cntxt, sizeof(struct file_t)); - - *new = dafile; - dafile->cntxt = cntxt; - dafile->isopen = FALSE; - dafile->validstatus = FALSE; - - if ((flag & APR_READ) && (flag & APR_WRITE)) { - mflags |= OPEN_ACCESS_READWRITE; - } else if (flag & APR_READ) { - mflags |= OPEN_ACCESS_READONLY; - } else if (flag & APR_WRITE) { - mflags |= OPEN_ACCESS_WRITEONLY; - } else { - dafile->filedes = -1; - return APR_EACCES; - } - - dafile->buffered = (flag & APR_BUFFERED) > 0; - - if (flag & APR_CREATE) { - oflags |= OPEN_ACTION_CREATE_IF_NEW; - if (!(flag & APR_EXCL)) { - if (flag & APR_APPEND) - oflags |= OPEN_ACTION_OPEN_IF_EXISTS; - else - oflags |= OPEN_ACTION_REPLACE_IF_EXISTS; - } - } - - if ((flag & APR_EXCL) && !(flag & APR_CREATE)) - return APR_EACCES; - - if (flag & APR_TRUNCATE) { - oflags |= OPEN_ACTION_REPLACE_IF_EXISTS; - } - - rv = DosOpen(fname, (HFILE *)&(dafile->filedes), &action, 0, 0, oflags, mflags, NULL); - - if (rv == 0 && (flag & APR_APPEND)) { - ULONG newptr; - rv = DosSetFilePtr(dafile->filedes, 0, FILE_END, &newptr ); - - if (rv) - DosClose(dafile->filedes); - } - - if (rv != 0) - return os2errno(rv); - - dafile->isopen = TRUE; - dafile->fname = ap_pstrdup(cntxt, fname); - ap_register_cleanup(dafile->cntxt, dafile, file_cleanup, NULL); - return APR_SUCCESS; -} - - - -ap_status_t ap_close(ap_file_t *file) -{ - ULONG rc; - - if (file && file->isopen) { - rc = DosClose(file->filedes); - - if (rc == 0) { - file->isopen = FALSE; - return APR_SUCCESS; - } else { - return os2errno(rc); - } - } - - return APR_SUCCESS; -} - - - -ap_status_t ap_remove_file(ap_context_t *cntxt, char *path) -{ - ULONG rc = DosDelete(path); - return os2errno(rc); -} - diff --git a/file_io/os2/pipe.c b/file_io/os2/pipe.c deleted file mode 100644 index 50595d700..000000000 --- a/file_io/os2/pipe.c +++ /dev/null @@ -1,98 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include - -ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t **in, struct file_t **out) -{ - ULONG filedes[2]; - ULONG rc; - - rc = DosCreatePipe(filedes, filedes+1, 4096); - - if (rc) { - return os2errno(rc); - } - - (*in) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*in)->cntxt = cont; - (*in)->filedes = filedes[0]; - (*in)->fname = ap_pstrdup(cont, "PIPE"); - (*in)->isopen = TRUE; - ap_register_cleanup(cont, *in, file_cleanup, NULL); - - (*out) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*out)->cntxt = cont; - (*out)->filedes = filedes[1]; - (*out)->fname = ap_pstrdup(cont, "PIPE"); - (*out)->isopen = TRUE; - ap_register_cleanup(cont, *out, file_cleanup, NULL); - - return APR_SUCCESS; -} - - - -ap_status_t ap_create_namedpipe(ap_context_t *cont, char *dirpath, ap_fileperms_t perm, char **new) -{ - /* Not yet implemented, interface not suitable */ - return -1; -} - - diff --git a/file_io/os2/readwrite.c b/file_io/os2/readwrite.c deleted file mode 100644 index b3740b3e9..000000000 --- a/file_io/os2/readwrite.c +++ /dev/null @@ -1,105 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" - -#define INCL_DOS -#include - -ap_status_t ap_read(const struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - ULONG rc; - ULONG bytesread; - - if (!thefile->isopen) { - *nbytes = 0; - return APR_EBADF; - } - - rc = DosRead(thefile->filedes, buf, *nbytes, &bytesread); - - if (rc) { - *nbytes = 0; - return os2errno(rc); - } - - *nbytes = bytesread; - return APR_SUCCESS; -} - - - -ap_status_t ap_write(struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - ULONG rc; - ULONG byteswritten; - - if (!thefile->isopen) { - *nbytes = 0; - return APR_EBADF; - } - - rc = DosWrite(thefile->filedes, buf, *nbytes, &byteswritten); - - if (rc) { - *nbytes = 0; - return os2errno(rc); - } - - *nbytes = byteswritten; - return APR_SUCCESS; -} diff --git a/file_io/os2/seek.c b/file_io/os2/seek.c deleted file mode 100644 index 847233dac..000000000 --- a/file_io/os2/seek.c +++ /dev/null @@ -1,88 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include -#include - -#define INCL_DOS -#include - -int os2errno( ULONG oserror ); - -ap_status_t ap_seek(struct file_t *thefile, ap_seek_where_t where, ap_off_t *offset) -{ - if (!thefile->isopen) { - return APR_EBADF; - } - - switch (where) { - case APR_SET: - where = FILE_BEGIN; - break; - - case APR_CUR: - where = FILE_CURRENT; - break; - - case APR_END: - where = FILE_END; - break; - } - - return os2errno(DosSetFilePtr(thefile->filedes, *offset, where, (ULONG *)&offset)); -} diff --git a/file_io/unix/.cvsignore b/file_io/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/file_io/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/file_io/unix/Makefile.in b/file_io/unix/Makefile.in deleted file mode 100644 index 078be7da4..000000000 --- a/file_io/unix/Makefile.in +++ /dev/null @@ -1,95 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../libfile.a - -OBJS=dir.o \ - fileacc.o \ - filedup.o \ - filestat.o \ - open.o \ - pipe.o \ - readwrite.o \ - seek.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -dir.o: dir.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_lib.h \ - $(INCDIR)/apr_config.h $(INCDIR)/hsregex.h \ - ../../include/apr_portable.h ../../include/apr_thread_proc.h \ - ../../include/apr_win.h ../../include/apr_network_io.h \ - ../../include/apr_lock.h ../../include/apr_time.h -fileacc.o: fileacc.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_lib.h \ - $(INCDIR)/apr_config.h $(INCDIR)/hsregex.h -filedup.o: filedup.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_lib.h \ - $(INCDIR)/apr_config.h $(INCDIR)/hsregex.h -filestat.o: filestat.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h -open.o: open.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h ../../include/apr_portable.h \ - ../../include/apr_thread_proc.h ../../include/apr_win.h \ - ../../include/apr_network_io.h ../../include/apr_lock.h \ - ../../include/apr_time.h $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -pipe.o: pipe.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_lib.h \ - $(INCDIR)/apr_config.h $(INCDIR)/hsregex.h -readwrite.o: readwrite.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_lib.h \ - $(INCDIR)/apr_config.h $(INCDIR)/hsregex.h -seek.o: seek.c fileio.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h diff --git a/file_io/unix/dir.c b/file_io/unix/dir.c deleted file mode 100644 index ac992d783..000000000 --- a/file_io/unix/dir.c +++ /dev/null @@ -1,319 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include -#include -#include -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include "apr_portable.h" - -ap_status_t dir_cleanup(void *thedir) -{ - struct dir_t *dir = thedir; - if (closedir(dir->dirstruct) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_opendir(ap_context_t *, char *, ap_dir_t **) - * Open the specified directory. - * arg 1) The context to use. - * arg 2) The full path to the directory (use / on all systems) - * arg 3) The opened directory descriptor. - */ -ap_status_t ap_opendir(ap_context_t *cont, const char *dirname, struct dir_t **new) -{ - (*new) = (struct dir_t *)ap_palloc(cont, sizeof(struct dir_t)); - - (*new)->cntxt = cont; - (*new)->dirname = strdup(dirname); - (*new)->dirstruct = opendir(dirname); - (*new)->entry = NULL; - - if ((*new)->dirstruct == NULL) { - (*new)->dirstruct = NULL; - return errno; - } - else { - ap_register_cleanup((*new)->cntxt, (void *)(*new), dir_cleanup, NULL); - return APR_SUCCESS; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_closedir(ap_dir_t *) - * close the specified directory. - * arg 1) the directory descriptor to close. - */ -ap_status_t ap_closedir(struct dir_t *thedir) -{ - ap_status_t rv; - - if ((rv = dir_cleanup(thedir)) == APR_SUCCESS) { - ap_kill_cleanup(thedir->cntxt, thedir, dir_cleanup); - return APR_SUCCESS; - } - return rv; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_readdir(ap_dir_t *) - * Read the next entry from the specified directory. - * arg 1) the directory descriptor to read from, and fill out. - * NOTE: All systems return . and .. as the first two files. - */ -ap_status_t ap_readdir(struct dir_t *thedir) -{ - thedir->entry = readdir(thedir->dirstruct); - if (thedir->entry == NULL) { - return errno; - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_readdir(ap_dir_t *) - * Rewind the directory to the first entry. - * arg 1) the directory descriptor to rewind. - */ -ap_status_t ap_rewinddir(struct dir_t *thedir) -{ - rewinddir(thedir->dirstruct); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_make_dir(ap_context_t *, const char *, ap_fileperms_t) - * Create a new directory on the file system. - * arg 1) the context to use. - * arg 2) the path for the directory to be created. (use / on all systems) - * arg 3) Permissions for the new direcoty. - */ -ap_status_t ap_make_dir(ap_context_t *cont, const char *path, ap_fileperms_t perm) -{ - mode_t mode = get_fileperms(perm); - if (mkdir(path, mode) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_remove_dir(ap_context_t *, const char *) - * Remove directory from the file system. - * arg 1) the context to use. - * arg 2) the path for the directory to be removed. (use / on all systems) - */ -ap_status_t ap_remove_dir(ap_context_t *cont, const char *path) -{ - if (rmdir(path) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_dir_entry_size(ap_dir_t *, ap_ssize_t *) - * Get the size of the current directory entry. - * arg 1) the currently open directory. - * arg 2) the size of the directory entry. - */ -ap_status_t ap_dir_entry_size(struct dir_t *thedir, ap_ssize_t *size) -{ - struct stat filestat; - char *fname = NULL; - - if (thedir->entry == NULL) { - *size = -1; - return APR_ENOFILE; - } - fname = ap_pstrcat(thedir->cntxt, thedir->dirname, "/", - thedir->entry->d_name, NULL); - if (stat(fname, &filestat) == -1) { - *size = -1; - return APR_ENOSTAT; - } - - *size = filestat.st_size; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_dir_entry_mtime(ap_dir_t *, time_t *) - * Get the last modified time of the current directory entry. - * arg 1) the currently open directory. - * arg 2) the last modified time of the directory entry. - */ -ap_status_t ap_dir_entry_mtime(struct dir_t *thedir, time_t *time) -{ - struct stat filestat; - char *fname = NULL; - - if (thedir->entry == NULL) { - *time = -1; - return APR_ENOFILE; - } - - fname = ap_pstrcat(thedir->cntxt, thedir->dirname, "/", - thedir->entry->d_name, NULL); - if (stat(fname, &filestat) == -1) { - *time = -1; - return APR_ENOSTAT; - } - - *time = filestat.st_mtime; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_dir_entry_ftype(ap_dir_t *, ap_filetype_e *) - * Get the file type of the current directory entry. - * arg 1) the currently open directory. - * arg 2) the file type of the directory entry. - */ -ap_status_t ap_dir_entry_ftype(struct dir_t *thedir, ap_filetype_e *type) -{ - struct stat filestat; - char *fname = NULL; - - if (thedir->entry == NULL) { - *type = APR_REG; - return APR_ENOFILE; - } - - fname = ap_pstrcat(thedir->cntxt, thedir->dirname, "/", - thedir->entry->d_name, NULL); - if (stat(fname, &filestat) == -1) { - *type = APR_REG; - return APR_ENOSTAT; - } - - if (S_ISREG(filestat.st_mode)) - *type = APR_REG; - if (S_ISDIR(filestat.st_mode)) - *type = APR_DIR; - if (S_ISCHR(filestat.st_mode)) - *type = APR_CHR; - if (S_ISBLK(filestat.st_mode)) - *type = APR_BLK; - if (S_ISFIFO(filestat.st_mode)) - *type = APR_PIPE; - if (S_ISLNK(filestat.st_mode)) - *type = APR_LNK; - if (S_ISSOCK(filestat.st_mode)) - *type = APR_SOCK; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_dir_entry_filename(ap_dir_t *, char **) - * Get the file name of the current directory entry. - * arg 1) the currently open directory. - * arg 2) the file name of the directory entry. - */ -ap_status_t ap_get_dir_filename(struct dir_t *thedir, char **new) -{ - (*new) = ap_pstrdup(thedir->cntxt, thedir->entry->d_name); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_dir(ap_dir_t *, ap_os_dir_t *) - * convert the dir from apr type to os specific type. - * arg 1) The apr dir to convert. - * arg 2) The os specific dir we are converting to - */ -ap_status_t ap_get_os_dir(struct dir_t *dir, ap_os_dir_t *thedir) -{ - if (dir == NULL) { - return APR_ENODIR; - } - thedir = dir->dirstruct; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_dir(ap_dir_t *, ap_os_dir_t *) - * convert the dir from os specific type to apr type. - * arg 1) The os specific dir to convert - * arg 2) The apr dir we are converting to. - */ -ap_status_t ap_put_os_dir(ap_context_t *cont, struct dir_t **dir, - ap_os_dir_t *thedir) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*dir) == NULL) { - (*dir) = (struct dir_t *)ap_palloc(cont, sizeof(struct dir_t)); - (*dir)->cntxt = cont; - } - (*dir)->dirstruct = thedir; - return APR_SUCCESS; -} - - diff --git a/file_io/unix/fileacc.c b/file_io/unix/fileacc.c deleted file mode 100644 index 829ac7586..000000000 --- a/file_io/unix/fileacc.c +++ /dev/null @@ -1,250 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include - -/* A file to put ALL of the accessor functions for struct file_t types. */ - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_filename(ap_file_t *, char **) - * return the file name of the current file. - * arg 1) The currently open file. - * arg 2) The path of the file. - */ -ap_status_t ap_get_filename(struct file_t *thefile, char **new) -{ - if (thefile != NULL) { - *new = ap_pstrdup(thefile->cntxt, thefile->fname); - return APR_SUCCESS; - } - else { - *new = NULL; - return APR_ENOFILE; - } -} - -mode_t get_fileperms(ap_fileperms_t mode) -{ - mode_t rv = 0; - - if (mode & APR_UREAD) - rv |= S_IRUSR; - if (mode & APR_UWRITE) - rv |= S_IWUSR; - if (mode & APR_UEXECUTE) - rv |= S_IXUSR; - - if (mode & APR_GREAD) - rv |= S_IRGRP; - if (mode & APR_GWRITE) - rv |= S_IWGRP; - if (mode & APR_GEXECUTE) - rv |= S_IXGRP; - - if (mode & APR_WREAD) - rv |= S_IROTH; - if (mode & APR_WWRITE) - rv |= S_IWOTH; - if (mode & APR_WEXECUTE) - rv |= S_IXOTH; - - return rv; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_filesize(ap_file_t *, ap_ssize_t *) - * Return the size of the current file. - * arg 1) The currently open file. - * arg 2) The size of the file. - */ -ap_status_t ap_get_filesize(struct file_t *file, ap_ssize_t *size) -{ - if (file != NULL) { - if (!file->stated) { - ap_getfileinfo(file); - } - *size = file->size; - return APR_SUCCESS; - } - else { - *size = -1; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_fileperms(ap_file_t *, ap_fileperms_t *) - * Return the permissions of the current file. - * arg 1) The currently open file. - * arg 2) The permissions of the file. - */ -ap_status_t ap_get_fileperms(struct file_t *file, ap_fileperms_t *perm) -{ - if (file != NULL) { - if (!file->stated) { - ap_getfileinfo(file); - } - *perm = file->protection; - return APR_SUCCESS; - } - else { - *perm = -1; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_fileatime(ap_file_t *, time_t *) - * Return the last access time of the current file. - * arg 1) The currently open file. - * arg 2) The last access time of the file. - */ -ap_status_t ap_get_fileatime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - if (!file->stated) { - ap_getfileinfo(file); - } - *time = file->atime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_filectime(ap_file_t *, time_t *) - * Return the time of the last change to the current file. - * arg 1) The currently open file. - * arg 2) The last change time of the file. - */ -ap_status_t ap_get_filectime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - if (!file->stated) { - ap_getfileinfo(file); - } - *time = file->ctime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_filemtime(ap_file_t *, time_t *) - * Return the last modified time of the current file. - * arg 1) The currently open file. - * arg 2) The last modified time of the file. - */ -ap_status_t ap_get_filemtime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - if (!file->stated) { - ap_getfileinfo(file); - } - *time = file->mtime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_filedata(ap_file_t *, void *) - * Return the data associated with the current file. - * arg 1) The currently open file. - * arg 2) The user data associated with the file. - */ -ap_status_t ap_get_filedata(struct file_t *file, void *data) -{ - if (file != NULL) { - return ap_get_userdata(file->cntxt, &data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_filedata(ap_file_t *, void *) - * Set the data associated with the current file. - * arg 1) The currently open file. - * arg 2) The user data to associate with the file. - */ -ap_status_t ap_set_filedata(struct file_t *file, void *data) -{ - if (file != NULL) { - return ap_set_userdata(file->cntxt, data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - diff --git a/file_io/unix/filedup.c b/file_io/unix/filedup.c deleted file mode 100644 index 42df990ea..000000000 --- a/file_io/unix/filedup.c +++ /dev/null @@ -1,108 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_dupfile(ap_file_t *, ap_file_t **) - * duplicate the specified file descriptor. - * arg 1) The file to duplicate. - * arg 2) The structure to duplicate into. - */ -ap_status_t ap_dupfile(struct file_t *old_file, struct file_t **new_file) -{ - char *buf_oflags; - (*new_file) = (struct file_t *)ap_palloc(old_file->cntxt, - sizeof(struct file_t)); - - if ((*new_file) == NULL) { - return APR_ENOMEM; - } - (*new_file)->cntxt = old_file->cntxt; - if (old_file->buffered) { - switch (old_file->oflags) { - case O_RDONLY: - buf_oflags = "r"; - break; - case O_WRONLY: - buf_oflags = "w"; - break; - case O_RDWR: - buf_oflags = "r+"; - break; - } - (*new_file)->filehand = freopen(old_file->fname, buf_oflags, - old_file->filehand); - } - else { - (*new_file)->filedes = dup(old_file->filedes); - } - (*new_file)->fname = ap_pstrdup(old_file->cntxt, old_file->fname); - (*new_file)->buffered = old_file->buffered; - (*new_file)->protection = old_file->protection; - (*new_file)->user = old_file->user; - (*new_file)->group = old_file->group; - (*new_file)->size = old_file->size; - (*new_file)->atime = old_file->atime; - (*new_file)->mtime = old_file->mtime; - (*new_file)->ctime = old_file->ctime; - ap_register_cleanup((*new_file)->cntxt, (void *)(*new_file), file_cleanup, NULL); - return APR_SUCCESS; -} - diff --git a/file_io/unix/fileio.h b/file_io/unix/fileio.h deleted file mode 100644 index 1800205fb..000000000 --- a/file_io/unix/fileio.h +++ /dev/null @@ -1,103 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#include -#include -#include -#include -#include -#include -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct file_t { - ap_context_t *cntxt; - int filedes; - FILE *filehand; - char * fname; - int oflags; - int buffered; - int stated; - int eof_hit; - mode_t protection; - uid_t user; - gid_t group; - off_t size; - time_t atime; - time_t mtime; - time_t ctime; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - DIR *dirstruct; - struct dirent *entry; -}; - -struct iovec_t { - ap_context_t *cntxt; - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void *); -mode_t get_fileperms(ap_fileperms_t); - -#endif /* ! FILE_IO_H */ - diff --git a/file_io/unix/filestat.c b/file_io/unix/filestat.c deleted file mode 100644 index d7e2de444..000000000 --- a/file_io/unix/filestat.c +++ /dev/null @@ -1,86 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_errno.h" - -/* ***APRDOC******************************************************** - * ap_status_t ap_getfileinfo(ap_file_t *) - * get the specified file's stats.. - * arg 1) The full to get information about. - */ -ap_status_t ap_getfileinfo(struct file_t *thefile) -{ - struct stat info; - int rv = stat(thefile->fname, &info); - - if (rv == 0) { - thefile->protection = info.st_mode; - thefile->user = info.st_uid; - thefile->group = info.st_gid; - thefile->size = info.st_size; - thefile->atime = info.st_atime; - thefile->mtime = info.st_mtime; - thefile->ctime = info.st_ctime; - thefile->stated = 1; - return APR_SUCCESS; - } - else { - return APR_ENOSTAT; - } -} - diff --git a/file_io/unix/open.c b/file_io/unix/open.c deleted file mode 100644 index 90f812c08..000000000 --- a/file_io/unix/open.c +++ /dev/null @@ -1,282 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_portable.h" -#include "apr_lib.h" -#include -#include -#include - -ap_status_t file_cleanup(void *thefile) -{ - struct file_t *file = thefile; - int rv; - if (file->buffered) { - rv = fclose(file->filehand); - } - else { - rv = close(file->filedes); - } - - if (rv == 0) { - file->filedes = -1; - return APR_SUCCESS; - } - else { - return errno; - /* Are there any error conditions other than EINTR or EBADF? */ - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_open(ap_context_t *, char *, ap_int32, - * ap_fileperms, ap_file_t **) - * Open the specified file. - * arg 1) The context to use. - * arg 2) The full path to the file (using / on all systems) - * arg 3) 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 test file - * APR_BUFFERED buffer the data. Default is non-buffered - * APR_EXCL return error if APR_CREATE and file exists - * arg 4) Access permissions for file. - * arg 5) The opened file descriptor. - * NOTE: If mode is -1, the system open command will be called without any - * mode parameters. - */ -ap_status_t ap_open(ap_context_t *cont, char *fname, ap_int32_t flag, ap_fileperms_t perm, struct file_t **new) -{ - int oflags = 0; - struct stat info; - mode_t mode = get_fileperms(perm); - char *buf_oflags; - - (*new) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - - (*new)->cntxt = cont; - (*new)->oflags = oflags; - - if ((flag & APR_READ) && (flag & APR_WRITE)) { - oflags = O_RDWR; - } - else if (flag & APR_READ) { - oflags = O_RDONLY; - } - else if (flag & APR_WRITE) { - oflags = O_WRONLY; - } - else { - (*new)->filedes = -1; - return APR_EACCES; - } - - if (flag & APR_BUFFERED) { - (*new)->buffered = TRUE; - } - (*new)->fname = strdup(fname); - - if (flag & APR_CREATE) { - oflags |= O_CREAT; - if (flag & APR_EXCL) { - oflags |= O_EXCL; - } - } - if ((flag & APR_EXCL) && !(flag & APR_CREATE)) { - (*new)->filedes = -1; - return APR_EACCES; - } - - if (flag & APR_APPEND) { - oflags |= O_APPEND; - } - if (flag & APR_TRUNCATE) { - oflags |= O_TRUNC; - } - - if (mode == -1) { - (*new)->filedes = open(fname, oflags); - } - else { - (*new)->filedes = open(fname, oflags, mode); - } - - if ((*new)->filedes < 0) { - (*new)->filedes = -1; - (*new)->eof_hit = 1; - return errno; - } - - if ((*new)->buffered) { - switch (oflags) { - case O_RDONLY: - buf_oflags = "r"; - break; - case O_WRONLY: - buf_oflags = "w"; - break; - case O_RDWR: - buf_oflags = "r+"; - break; - } - (*new)->filehand = fdopen((*new)->filedes, buf_oflags); - if ((*new)->filehand == NULL) { - file_cleanup(*new); - return errno; - } - } - (*new)->stated = 0; /* we haven't called stat for this file yet. */ - (*new)->eof_hit = 0; - ap_register_cleanup((*new)->cntxt, (void *)(*new), file_cleanup, NULL); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_close(ap_file_t *) - * Close the specified file. - * arg 1) The file descriptor to close. - */ -ap_status_t ap_close(struct file_t *file) -{ - ap_status_t rv; - - if ((rv = file_cleanup(file)) == APR_SUCCESS) { - ap_kill_cleanup(file->cntxt, file, file_cleanup); - return APR_SUCCESS; - } - return rv; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_remove_file(ap_context_t *, char *) - * delete the specified file. - * arg 1) The context to use. - * arg 2) The full path to the file (using / on all systems) - * NOTE: If the file is open, it won't be removed until all instances are - * closed. - */ -ap_status_t ap_remove_file(ap_context_t *cont, char *path) -{ - if (unlink(path) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_file(ap_file_t *, ap_os_file_t *) - * convert the file from apr type to os specific type. - * arg 1) The apr file to convert. - * arg 2) The os specific file we are converting to - */ -ap_status_t ap_get_os_file(struct file_t *file, ap_os_file_t *thefile) -{ - if (file == NULL) { - return APR_ENOFILE; - } - thefile = &(file->filedes); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_file(ap_context_t *, ap_file_t *, ap_os_file_t *) - * convert the file from os specific type to apr type. - * arg 1) The context to use if it is needed. - * arg 2) The apr file we are converting to. - * arg 3) The os specific file to convert - */ -ap_status_t ap_put_os_file(ap_context_t *cont, struct file_t **file, - ap_os_file_t *thefile) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*file) == NULL) { - (*file) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*file)->cntxt = cont; - } - (*file)->filedes = *thefile; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_eof(ap_file_t *) - * Are we at the end of the file - * arg 1) The apr file we are testing. - * NOTE: Returns APR_EOF if we are at the end of file, APR_SUCCESS otherwise. - */ -ap_status_t ap_eof(ap_file_t *fptr) -{ - char ch; - if (fptr->buffered) { - if (feof(fptr->filehand) == 0) { - return APR_SUCCESS; - } - return APR_EOF; - } - if (fptr->eof_hit == 1) { - return APR_EOF; - } - APR_SUCCESS; -} - diff --git a/file_io/unix/pipe.c b/file_io/unix/pipe.c deleted file mode 100644 index ca842de1a..000000000 --- a/file_io/unix/pipe.c +++ /dev/null @@ -1,114 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_pipe(ap_context_t *, ap_file_t **, ap_file_t **) - * Create an anonymous pipe. - * arg 1) The context to operate on. - * arg 2) The file descriptor to use as input to the pipe. - * arg 3) The file descriptor to use as output from the pipe. - */ -ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t **in, struct file_t **out) -{ - int filedes[2]; - - if (pipe(filedes) == -1) { - return errno; - } - - (*in) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*in)->cntxt = cont; - (*in)->filedes = filedes[0]; - (*in)->fname = ap_pstrdup(cont, "PIPE"); - - (*out) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*out)->cntxt = cont; - (*out)->filedes = filedes[1]; - (*out)->fname = ap_pstrdup(cont, "PIPE"); - - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_namedpipe(ap_context_t *, char *, ap_fileperms_t, - * char **) - * Create a named pipe. - * arg 1) The context to operate on. - * arg 2) The directory to create the pipe in. - * arg 3) The permissions for the newly created pipe. - * arg 4) The name of the new pipe. - */ -ap_status_t ap_create_namedpipe(ap_context_t *cont, char *dirpath, - ap_fileperms_t perm, char **new) -{ - mode_t mode = get_fileperms(perm); - - *new = tempnam(dirpath, NULL); - if (mkfifo((*new), mode) == -1) { - return errno; - } - return APR_SUCCESS; -} - diff --git a/file_io/unix/readwrite.c b/file_io/unix/readwrite.c deleted file mode 100644 index 5c224c884..000000000 --- a/file_io/unix/readwrite.c +++ /dev/null @@ -1,251 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_errno.h" -#include -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_read(ap_file_t *, void *, ap_ssize_t *) - * Read data from the specified file. - * arg 1) The file descriptor to read from. - * arg 2) The buffer to store the data to. - * arg 3) The number of bytes to read. - * NOTE: ap_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. - */ -ap_status_t ap_read(struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - ap_ssize_t rv; - - if (thefile->filedes < 0) { - *nbytes = -1; - return APR_EBADF; - } - - if (thefile->buffered) { - rv = fread(buf, *nbytes, 1, thefile->filehand); - } - else { - rv = read(thefile->filedes, buf, *nbytes); - } - - if ((*nbytes != rv) && (errno != EINTR) && !thefile->buffered) { - thefile->eof_hit = 1; - } - *nbytes = rv; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_write(ap_file_t *, void *, ap_ssize_t *) - * Write data to the specified file. - * arg 1) The file descriptor to write to. - * arg 2) The buffer which contains the data. - * arg 3) The number of bytes to write. - * NOTE: ap_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. - */ -ap_status_t ap_write(struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - ap_size_t rv; - struct stat info; - - if (thefile->filedes < 0) { - *nbytes = -1; - return APR_EBADF; - } - - if (thefile->buffered) { - rv = fwrite(buf, *nbytes, 1, thefile->filehand); - } - else { - rv = write(thefile->filedes, buf, *nbytes); - } - - if (strcmp(thefile->fname, "PIPE")) { - if (stat(thefile->fname, &info) == 0) { - thefile->size = info.st_size; - thefile->atime = info.st_atime; - thefile->mtime = info.st_mtime; - thefile->ctime = info.st_ctime; - } - } - *nbytes = rv; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_writev(ap_file_t *, ap_iovec_t *, ap_ssize_t *) - * Write data from ap_iovec array to the specified file. - * arg 1) The file descriptor to write to. - * arg 2) The array from which to get the data to write to the file. - * arg 3) The number of elements in the ap_iovec array. This must be - * smaller than AP_MAX_IOVEC_SIZE. If it isn't, the function will - * fail with APR_EINVAL. - * NOTE: The third arguement is updated with the number of bytes actually - * written on function exit. - */ -#ifdef HAVE_WRITEV -ap_status_t ap_writev(struct file_t *thefile, const struct iovec_t *vec, ap_ssize_t *iocnt) -{ - int bytes; - if ((bytes = writev(thefile->filedes, vec->iovec, *iocnt)) < 0) { - *iocnt = bytes; - return errno; - } - else { - *iocnt = bytes; - return APR_SUCCESS; - } -} -#endif - -/* ***APRDOC******************************************************** - * ap_status_t ap_putc(ap_file_t *, char) - * put a character into the specified file. - * arg 1) The file descriptor to write to - * arg 2) The character to write. - */ -ap_status_t ap_putc(ap_file_t *thefile, char ch) -{ - if (thefile->buffered) { - if (fputc(ch, thefile->filehand) == ch) { - return APR_SUCCESS; - } - return errno; - } - if (write(thefile->filedes, &ch, 1) != 1) { - return errno; - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_getc(ap_file_t *, char *) - * put a character into the specified file. - * arg 1) The file descriptor to write to - * arg 2) The character to write. - */ -ap_status_t ap_getc(ap_file_t *thefile, char *ch) -{ - ssize_t rv; - - if (thefile->buffered) { - if ((*ch) = fgetc(thefile->filehand)) { - return APR_SUCCESS; - } - if (feof(thefile->filehand)) { - return APR_EOF; - } - return errno; - } - rv = read(thefile->filedes, ch, 1); - if (rv == 0) { - thefile->eof_hit = TRUE; - return APR_EOF; - } - else if (rv != 1) { - return errno; - } - return APR_SUCCESS; -} - -static int printf_flush(ap_vformatter_buff_t *vbuff) -{ - /* I would love to print this stuff out to the file, but I will - * get that working later. :) For now, just return. - */ - return -1; -} - -API_EXPORT(int) ap_fprintf(struct file_t *fptr, const char *format, ...) -{ - int cc; - va_list ap; - ap_vformatter_buff_t vbuff; - char *buf; - int len; - - buf = malloc(HUGE_STRING_LEN); - if (buf == NULL) { - return 0; - } - /* save one byte for nul terminator */ - vbuff.curpos = buf; - vbuff.endpos = buf + len - 1; - va_start(ap, format); -#if 0 - cc = ap_vformatter(printf_flush, &vbuff, format, ap); - va_end(ap); - *vbuff.curpos = '\0'; -#endif - vsprintf(buf, format, ap); - len = strlen(buf); - cc = ap_write(fptr, buf, &len); - va_end(ap); - return (cc == -1) ? len : cc; -} - - diff --git a/file_io/unix/seek.c b/file_io/unix/seek.c deleted file mode 100644 index aae8ece94..000000000 --- a/file_io/unix/seek.c +++ /dev/null @@ -1,90 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_seek(ap_file_t *, ap_seek_where_t, ap_off_t *) - * Move the read/write file offset to a specified byte within a file. - * arg 1) The file descriptor - * arg 2) 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 - * arg 3) The offset to move the pointer to. - * NOTE: The third argument is modified to be the offset the pointer - * was actually moved to. - */ -ap_status_t ap_seek(struct file_t *thefile, ap_seek_where_t where, ap_off_t *offset) -{ - ap_off_t rv; - if (thefile->buffered) { - rv = fseek(thefile->filehand, *offset, where); - } - else { - rv = lseek(thefile->filedes, *offset, where); - } - if (rv == -1) { - *offset = -1; - return errno; - } - else { - *offset = rv; - return APR_SUCCESS; - } -} diff --git a/file_io/win32/.test.swp b/file_io/win32/.test.swp deleted file mode 100644 index 8cb1a36d9..000000000 Binary files a/file_io/win32/.test.swp and /dev/null differ diff --git a/file_io/win32/dir.c b/file_io/win32/dir.c deleted file mode 100644 index 1c4741147..000000000 --- a/file_io/win32/dir.c +++ /dev/null @@ -1,233 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifdef HAVE_ERRNO_H -#include -#endif -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_DIRENT_H -#include -#endif -#ifdef HAVE_SYS_STAT_H -#include -#endif -#ifdef WIN32 -#include "apr_win.h" -#include -#endif -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include "apr_portable.h" - -ap_status_t dir_cleanup(void *thedir) -{ - struct dir_t *dir = thedir; - if (CloseHandle(dir->dirhand) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_opendir(ap_context_t *cont, const char *dirname, struct dir_t **new) -{ - char * temp; - (*new) = ap_palloc(cont, sizeof(struct dir_t)); - (*new)->cntxt = cont; - (*new)->entry = NULL; - temp = canonical_filename((*new)->cntxt, dirname); - if (temp[strlen(temp)] == '/') { - (*new)->dirname = ap_pstrcat(cont, dirname, "*", NULL); - } - else { - (*new)->dirname = ap_pstrcat(cont, dirname, "/*", NULL); - } - (*new)->dirhand = INVALID_HANDLE_VALUE; - ap_register_cleanup((*new)->cntxt, (void *)(*new), dir_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t ap_closedir(struct dir_t *thedir) -{ - if (FindClose(thedir->dirhand)) { - ap_kill_cleanup(thedir->cntxt, thedir, dir_cleanup); - return APR_SUCCESS; - } - return APR_EEXIST; -} - -ap_status_t ap_readdir(struct dir_t *thedir) -{ - if (thedir->dirhand == INVALID_HANDLE_VALUE) { - thedir->entry = ap_palloc(thedir->cntxt, sizeof(WIN32_FIND_DATA)); - thedir->dirhand = FindFirstFile(thedir->dirname, thedir->entry); - if (thedir->dirhand == INVALID_HANDLE_VALUE) { - return APR_EEXIST; - } - return APR_SUCCESS; - } - if (FindNextFile(thedir->dirhand, thedir->entry)) { - return APR_SUCCESS; - } - return APR_EEXIST; -} - -ap_status_t ap_rewinddir(struct dir_t *thedir) -{ - ap_status_t stat; - ap_context_t *cont = thedir->cntxt; - char *temp = strdup(thedir->dirname); - temp[strlen(temp) - 2] = '\0'; /*remove the \* at the end */ - if (thedir->dirhand == INVALID_HANDLE_VALUE) { - return APR_SUCCESS; - } - if ((stat = ap_closedir(thedir)) == APR_SUCCESS) { - if ((stat = ap_opendir(cont, temp, &thedir)) == APR_SUCCESS) { - ap_readdir(thedir); - return APR_SUCCESS; - } - } - return stat; -} - -ap_status_t ap_make_dir(ap_context_t *cont, const char *path, ap_fileperms_t perm) -{ - if (CreateDirectory(path, NULL)) { - return APR_SUCCESS; - } - return APR_EEXIST; -} - -ap_status_t ap_remove_dir(ap_context_t *cont, const char *path) -{ -DWORD huh; - char *temp = canonical_filename(cont, path); - if (RemoveDirectory(temp)) { - return APR_SUCCESS; - } - huh = GetLastError(); - return APR_EEXIST; -} - -ap_status_t ap_dir_entry_size(struct dir_t *thedir, ap_ssize_t *size) -{ - if (thedir == NULL || thedir->entry == NULL) { - return APR_ENODIR; - } - (*size) = (thedir->entry->nFileSizeHigh * MAXDWORD) + - thedir->entry->nFileSizeLow; - return APR_SUCCESS; -} - -ap_status_t ap_dir_entry_mtime(struct dir_t *thedir, time_t *time) -{ - if (thedir == NULL || thedir->entry == NULL) { - return APR_ENODIR; - } - - *time = WinTimeToUnixTime(&thedir->entry->ftLastWriteTime); - - return APR_SUCCESS; -} - -ap_status_t ap_dir_entry_ftype(struct dir_t *thedir, ap_filetype_e *type) -{ - switch(thedir->entry->dwFileAttributes) { - case FILE_ATTRIBUTE_DIRECTORY: { - (*type) = APR_DIR; - return APR_SUCCESS; - } - case FILE_ATTRIBUTE_NORMAL: { - (*type) = APR_REG; - return APR_SUCCESS; - } - default: { - (*type) = APR_REG; /* As valid as anything else.*/ - return APR_SUCCESS; - } - } -} - -ap_status_t ap_get_dir_filename(struct dir_t *thedir, char **new) -{ - (*new) = ap_pstrdup(thedir->cntxt, thedir->entry->cFileName); - return APR_SUCCESS; -} - -ap_status_t ap_get_os_dir(struct dir_t *dir, ap_os_dir_t *thedir) -{ - if (dir == NULL) { - return APR_ENODIR; - } - thedir = dir->dirhand; - return APR_SUCCESS; -} - -ap_status_t ap_put_os_dir(ap_context_t *cont, struct dir_t **dir, - ap_os_dir_t *thedir) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*dir) == NULL) { - (*dir) = (struct dir_t *)ap_palloc(cont, sizeof(struct dir_t)); - (*dir)->cntxt = cont; - } - (*dir)->dirhand = thedir; - return APR_SUCCESS; -} diff --git a/file_io/win32/file_io.def b/file_io/win32/file_io.def deleted file mode 100644 index 58e099fc2..000000000 --- a/file_io/win32/file_io.def +++ /dev/null @@ -1,40 +0,0 @@ -; file_io.def : - -LIBRARY file_io -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_opendir @1 - ap_closedir @2 - ap_readdir @3 - ap_rewinddir @4 - ap_make_dir @5 - ap_remove_dir @6 - ap_dir_entry_size @7 - ap_dir_entry_mtime @8 - ap_dir_entry_ftype @9 - ap_get_dir_filename @10 - ap_get_filename @11 - ap_get_filesize @12 - ap_get_fileatime @13 - ap_get_filectime @14 - ap_get_filemtime @15 - ap_dupfile @16 - ap_getfileinfo @17 - ap_open @18 - ap_close @19 - ap_remove_file @20 - ap_create_pipe @21 - ap_read @22 - ap_write @23 - ap_seek @24 - ap_get_filedata @25 - ap_set_filedata @26 - ap_get_os_file @27 - ap_get_os_dir @28 - ap_putc @29 - ap_getc @30 - ap_fprintf @31 - ap_eof @32 - \ No newline at end of file diff --git a/file_io/win32/file_io.dsp b/file_io/win32/file_io.dsp deleted file mode 100644 index 59bca59e8..000000000 --- a/file_io/win32/file_io.dsp +++ /dev/null @@ -1,130 +0,0 @@ -# Microsoft Developer Studio Project File - Name="file_io" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=file_io - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "file_io.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "file_io.mak" CFG="file_io - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "file_io - Win32 Release" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "file_io - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "file_io - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "file_io - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\misc\win32\Debug\misc.lib ..\..\lib\Debug\lib.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "file_io - Win32 Release" -# Name "file_io - Win32 Debug" -# Begin Source File - -SOURCE=.\dir.c -# End Source File -# Begin Source File - -SOURCE=.\file_io.def -# End Source File -# Begin Source File - -SOURCE=.\fileacc.c -# End Source File -# Begin Source File - -SOURCE=.\filedup.c -# End Source File -# Begin Source File - -SOURCE=.\fileio.h -# End Source File -# Begin Source File - -SOURCE=.\filestat.c -# End Source File -# Begin Source File - -SOURCE=.\open.c -# End Source File -# Begin Source File - -SOURCE=.\pipe.c -# End Source File -# Begin Source File - -SOURCE=.\readwrite.c -# End Source File -# Begin Source File - -SOURCE=.\seek.c -# End Source File -# End Target -# End Project diff --git a/file_io/win32/fileacc.c b/file_io/win32/fileacc.c deleted file mode 100644 index 270b397c5..000000000 --- a/file_io/win32/fileacc.c +++ /dev/null @@ -1,186 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include - -/* A file to put ALL of the accessor functions for struct file_t types. */ - -ap_status_t ap_get_filename(struct file_t *thefile, char **new) -{ - if (thefile != NULL) { - *new = ap_pstrdup(thefile->cntxt, thefile->fname); - return APR_SUCCESS; - } - else { - *new = NULL; - return APR_ENOFILE; - } -} - -/*mode_t get_fileperms(ap_fileperms_t mode) -{ - mode_t rv = 0; - - if (mode & APR_UREAD) - rv |= S_IRUSR; - if (mode & APR_UWRITE) - rv |= S_IWUSR; - if (mode & APR_UEXECUTE) - rv |= S_IXUSR; - - if (mode & APR_GREAD) - rv |= S_IRGRP; - if (mode & APR_GWRITE) - rv |= S_IWGRP; - if (mode & APR_GEXECUTE) - rv |= S_IXGRP; - - if (mode & APR_WREAD) - rv |= S_IROTH; - if (mode & APR_WWRITE) - rv |= S_IWOTH; - if (mode & APR_WEXECUTE) - rv |= S_IXOTH; - - return rv; -}*/ - -ap_status_t ap_get_filesize(struct file_t *file, ap_ssize_t *size) -{ - if (file != NULL) { - *size = file->size; - return APR_SUCCESS; - } - else { - *size = -1; - return APR_ENOFILE; - } -} -/* -ap_status_t ap_get_fileperms(struct file_t *file, ap_fileperms_t *perm) -{ - if (file != NULL) { - *perm = file->protection; - return APR_SUCCESS; - } - else { - *perm = -1; - return APR_ENOFILE; - } -} -*/ -ap_status_t ap_get_fileatime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - *time = file->atime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_filectime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - *time = file->ctime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_filemtime(struct file_t *file, time_t *time) -{ - if (file != NULL) { - *time = file->mtime; - return APR_SUCCESS; - } - else { - *time = -1; - return APR_ENOFILE; - } -} - -ap_status_t ap_get_filedata(struct file_t *file, void *data) -{ - if (file != NULL) { - return ap_get_userdata(file->cntxt, &data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - -ap_status_t ap_set_filedata(struct file_t *file, void *data) -{ - if (file != NULL) { - return ap_set_userdata(file->cntxt, data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} diff --git a/file_io/win32/filedup.c b/file_io/win32/filedup.c deleted file mode 100644 index 2d3135a3b..000000000 --- a/file_io/win32/filedup.c +++ /dev/null @@ -1,87 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include - -ap_status_t ap_dupfile(struct file_t *old_file, struct file_t **new_file) -{ - (*new_file) = (struct file_t *)ap_palloc(old_file->cntxt, - sizeof(struct file_t)); - - if ((*new_file) == NULL) { - return APR_ENOMEM; - } - (*new_file)->cntxt = old_file->cntxt; - (*new_file)->filehand = old_file->filehand; - (*new_file)->fname = ap_pstrdup(old_file->cntxt, old_file->fname); - (*new_file)->demonfname = ap_pstrdup(old_file->cntxt, old_file->demonfname); - (*new_file)->lowerdemonfname = ap_pstrdup(old_file->cntxt, old_file->lowerdemonfname); - (*new_file)->buffered = old_file->buffered; - (*new_file)->append = old_file->append; - /* (*new_file)->protection = old_file->protection; - (*new_file)->user = old_file->user; - (*new_file)->group = old_file->group;*/ - (*new_file)->size = old_file->size; - (*new_file)->atime = old_file->atime; - (*new_file)->mtime = old_file->mtime; - (*new_file)->ctime = old_file->ctime; - ap_register_cleanup((*new_file)->cntxt, (void *)(*new_file), file_cleanup, NULL); - return APR_SUCCESS; -} - diff --git a/file_io/win32/fileio.h b/file_io/win32/fileio.h deleted file mode 100644 index 5bb8f9a6e..000000000 --- a/file_io/win32/fileio.h +++ /dev/null @@ -1,121 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#ifdef HAVE_SYS_STAT_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_FCNTL_H -#include -#endif -#ifdef HAVE_TIME_H -#include -#endif -#ifdef HAVE_DIRENT_H -#include -#endif -#ifdef HAVE_UIO_H -#include -#endif -#include "apr_win.h" -#include "apr_pools.h" -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct file_t { - ap_context_t *cntxt; - HANDLE filehand; - char *fname; - char *demonfname; - char *lowerdemonfname; - int buffered; - int append; - int eof_hit; -/* mode_t protection; - uid_t user; - gid_t group;*/ - off_t size; - time_t atime; - time_t mtime; - time_t ctime; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - HANDLE dirhand; - WIN32_FIND_DATA *entry; -}; - -struct iovec_t { - ap_context_t *cntxt; - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void *); -/*mode_t get_fileperms(ap_fileperms_t); -*/ -API_EXPORT(char *) ap_os_systemcase_filename(struct context_t *pCont, - const char *szFile); -char * canonical_filename(struct context_t *pCont, const char *szFile); - -#endif /* ! FILE_IO_H */ - diff --git a/file_io/win32/filestat.c b/file_io/win32/filestat.c deleted file mode 100644 index d11449de7..000000000 --- a/file_io/win32/filestat.c +++ /dev/null @@ -1,78 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_win.h" -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_errno.h" - -ap_status_t ap_getfileinfo(struct file_t *thefile) -{ - FILETIME atime, ctime, mtime; - -/* thefile->protection = info.st_mode; - thefile->user = info.st_uid; - thefile->group = info.st_gid;*/ - thefile->size = GetFileSize(thefile->filehand, NULL); - GetFileTime(thefile->filehand, &ctime, &atime, &mtime); - thefile->atime = WinTimeToUnixTime(&atime); - thefile->mtime = WinTimeToUnixTime(&mtime); - thefile->ctime = WinTimeToUnixTime(&ctime); - return APR_SUCCESS; -} - - - diff --git a/file_io/win32/open.c b/file_io/win32/open.c deleted file mode 100644 index a539ee190..000000000 --- a/file_io/win32/open.c +++ /dev/null @@ -1,195 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifdef WIN32 -#include "apr_win.h" -#endif -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include -#include -#include - -ap_status_t file_cleanup(void *thefile) -{ - struct file_t *file = thefile; - if (CloseHandle(file->filehand)) { - file->filehand = INVALID_HANDLE_VALUE; - return APR_SUCCESS; - } - else { - return APR_EEXIST; - /* Are there any error conditions other than EINTR or EBADF? */ - } -} - -ap_status_t ap_open(ap_context_t *cont, char *fname, ap_int32_t flag, ap_fileperms_t perm, - struct file_t **dafile) -{ - DWORD oflags = 0; - DWORD createflags = 0; - DWORD theerror; - /*mode_t mode = get_fileperms(perm);*/ - - (*dafile) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - - (*dafile)->cntxt = cont; - - if (flag & APR_READ) { - oflags |= GENERIC_READ; - } - if (flag & APR_WRITE) { - oflags |= GENERIC_WRITE; - } - if (!(flag & APR_READ) && !(flag & APR_WRITE)) { - (*dafile)->filehand = INVALID_HANDLE_VALUE; - return APR_EACCES; - } - - if (flag & APR_BUFFERED) { - (*dafile)->buffered = FALSE; - } - (*dafile)->fname = strdup(fname); - - (*dafile)->demonfname = canonical_filename((*dafile)->cntxt, fname); - (*dafile)->lowerdemonfname = strlwr((*dafile)->demonfname); - - createflags = OPEN_ALWAYS; - if (flag & APR_CREATE) { - if (flag & APR_EXCL) { - createflags = CREATE_NEW; - } - } - if ((flag & APR_EXCL) && !(flag & APR_CREATE)) { - (*dafile)->filehand = INVALID_HANDLE_VALUE; - return APR_EACCES; - } - - if (flag & APR_APPEND) { - (*dafile)->append = 1; - } - else { - (*dafile)->append = 0; - } - - if (flag & APR_TRUNCATE) { - createflags = TRUNCATE_EXISTING; - } - - (*dafile)->filehand = CreateFile(fname, oflags, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - NULL, createflags, FILE_ATTRIBUTE_NORMAL, 0); - - if ((*dafile)->filehand == INVALID_HANDLE_VALUE) { - theerror = GetLastError(); - return APR_EEXIST; - } - (*dafile)->eof_hit = 0; - return APR_SUCCESS; -} - -ap_status_t ap_close(struct file_t *file) -{ - ap_status_t stat; - if ((stat = file_cleanup(file)) == APR_SUCCESS) { - ap_kill_cleanup(file->cntxt, file, file_cleanup); - return APR_SUCCESS; - } - return stat; -} - -ap_status_t ap_remove_file(ap_context_t *cont, char *path) -{ - char *temp = canonical_filename(cont, path); - - if (DeleteFile(temp)) { - return APR_SUCCESS; - } - else { - return APR_EEXIST; - } -} - -ap_status_t ap_get_os_file(struct file_t *file, ap_os_file_t *thefile) -{ - if (file == NULL) { - return APR_ENOFILE; - } - thefile = &(file->filehand); - return APR_SUCCESS; -} - -ap_status_t ap_put_os_file(ap_context_t *cont, struct file_t **file, - ap_os_file_t *thefile) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*file) == NULL) { - (*file) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*file)->cntxt = cont; - } - (*file)->filehand = *thefile; - return APR_SUCCESS; -} - -ap_status_t ap_eof(ap_file_t *fptr) -{ - if (fptr->eof_hit == 1) { - return APR_EOF; - } - APR_SUCCESS; -} diff --git a/file_io/win32/pipe.c b/file_io/win32/pipe.c deleted file mode 100644 index 9db2ab8d1..000000000 --- a/file_io/win32/pipe.c +++ /dev/null @@ -1,101 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -#include -#include - -ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t **in, struct file_t **out) -{ - SECURITY_ATTRIBUTES sa; - - sa.nLength = sizeof(sa); - sa.bInheritHandle = TRUE; - sa.lpSecurityDescriptor = NULL; - - (*in) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*in)->cntxt = cont; - (*in)->fname = ap_pstrdup(cont, "PIPE"); - - (*out) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); - (*out)->cntxt = cont; - (*out)->fname = ap_pstrdup(cont, "PIPE"); - - if (CreatePipe(&(*in)->filehand, &(*out)->filehand, &sa, 0) == -1) { - return errno; - } - - return APR_SUCCESS; -} - -/* -ap_status_t ap_create_namedpipe(ap_context_t *cont, char *dirpath, ap_fileperms_t perm, char **new) -{ - mode_t mode = get_fileperms(perm); - - *new = tempnam(dirpath, NULL); - if (mkfifo((*new), mode) == -1) { - return errno; - } - return APR_SUCCESS; -} -*/ - diff --git a/file_io/win32/readdir.c b/file_io/win32/readdir.c deleted file mode 100644 index c03c90d99..000000000 --- a/file_io/win32/readdir.c +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include -#include - -#include "readdir.h" - -/********************************************************************** - * Implement dirent-style opendir/readdir/closedir on Window 95/NT - * - * Functions defined are opendir(), readdir() and closedir() with the - * same prototypes as the normal dirent.h implementation. - * - * Does not implement telldir(), seekdir(), rewinddir() or scandir(). - * The dirent struct is compatible with Unix, except that d_ino is - * always 1 and d_off is made up as we go along. - * - * The DIR typedef is not compatible with Unix. - **********************************************************************/ - -API_EXPORT(DIR *) opendir(const char *dir) -{ - DIR *dp; - char *filespec; - long handle; - int index; - - filespec = malloc(strlen(dir) + 2 + 1); - strcpy(filespec, dir); - index = strlen(filespec) - 1; - if (index >= 0 && (filespec[index] == '/' || filespec[index] == '\\')) - filespec[index] = '\0'; - strcat(filespec, "/*"); - - dp = (DIR *)malloc(sizeof(DIR)); - dp->offset = 0; - dp->finished = 0; - dp->dir = strdup(dir); - - if ((handle = _findfirst(filespec, &(dp->fileinfo))) < 0) { - if (errno == ENOENT) - dp->finished = 1; - else - return NULL; - } - - dp->handle = handle; - free(filespec); - - return dp; -} - -API_EXPORT(struct dirent *) readdir(DIR *dp) -{ - if (!dp || dp->finished) return NULL; - - if (dp->offset != 0) { - if (_findnext(dp->handle, &(dp->fileinfo)) < 0) { - dp->finished = 1; - return NULL; - } - } - dp->offset++; - - strncpy(dp->dent.d_name, dp->fileinfo.name, _MAX_FNAME); - dp->dent.d_ino = 1; - dp->dent.d_reclen = strlen(dp->dent.d_name); - dp->dent.d_off = dp->offset; - - return &(dp->dent); -} - -API_EXPORT(int) closedir(DIR *dp) -{ - if (!dp) return 0; - _findclose(dp->handle); - if (dp->dir) free(dp->dir); - if (dp) free(dp); - - return 0; -} diff --git a/file_io/win32/readdir.h b/file_io/win32/readdir.h deleted file mode 100644 index d87fd1987..000000000 --- a/file_io/win32/readdir.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Structures and types used to implement opendir/readdir/closedir - * on Windows 95/NT. - */ - -#include -#include -#include -#include - -#ifndef API_EXPORT -# define API_EXPORT(type) __declspec(dllexport) type __stdcall -#endif - -/* struct dirent - same as Unix */ -struct dirent { - long d_ino; /* inode (always 1 in WIN32) */ - off_t d_off; /* offset to this dirent */ - unsigned short d_reclen; /* length of d_name */ - char d_name[_MAX_FNAME+1]; /* filename (null terminated) */ -}; - -/* typedef DIR - not the same as Unix */ -typedef struct { - long handle; /* _findfirst/_findnext handle */ - short offset; /* offset into directory */ - short finished; /* 1 if there are not more files */ - struct _finddata_t fileinfo; /* from _findfirst/_findnext */ - char *dir; /* the dir we are reading */ - struct dirent dent; /* the dirent to return */ -} DIR; - -/* Function prototypes */ -API_EXPORT(DIR *) opendir(const char *); -API_EXPORT(struct dirent *) readdir(DIR *); -API_EXPORT(int) closedir(DIR *); diff --git a/file_io/win32/readwrite.c b/file_io/win32/readwrite.c deleted file mode 100644 index 3e8c05a8b..000000000 --- a/file_io/win32/readwrite.c +++ /dev/null @@ -1,181 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_errno.h" -#include - -ap_status_t ap_read(struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - DWORD bread; - int lasterror; - - if (thefile->filehand == INVALID_HANDLE_VALUE) { - *nbytes = -1; - return APR_EBADF; - } - - if (ReadFile(thefile->filehand, buf, *nbytes, &bread, NULL)) { - *nbytes = bread; - return APR_SUCCESS; - } - *nbytes = -1; - lasterror = GetLastError(); - return APR_EEXIST; -} - -ap_status_t ap_write(struct file_t *thefile, void *buf, ap_ssize_t *nbytes) -{ - DWORD bwrote; - FILETIME atime, mtime, ctime; - - if (thefile->filehand == INVALID_HANDLE_VALUE) { - *nbytes = -1; - return APR_EBADF; - } - - if (WriteFile(thefile->filehand, buf, *nbytes, &bwrote, NULL)) { - if (strcmp(thefile->fname, "PIPE")) { - FlushFileBuffers(thefile->filehand); - thefile->size = GetFileSize(thefile->filehand, NULL); - GetFileTime(thefile->filehand, &ctime, &atime, &mtime); - thefile->atime = WinTimeToUnixTime(&atime); - thefile->mtime = WinTimeToUnixTime(&mtime); - thefile->ctime = WinTimeToUnixTime(&ctime); - } - *nbytes = bwrote; - return APR_SUCCESS; - } - (*nbytes) = -1; - return APR_EEXIST; -} -/* -ap_status_t ap_writev(struct file_t *thefile, const struct iovec_t *vec, ap_ssize_t *iocnt) -{ - int bytes; - if ((bytes = writev(thefile->filedes, vec->iovec, *iocnt)) < 0) { - *iocnt = bytes; - return errno; - 12} - else { - *iocnt = bytes; - return APR_SUCCESS; - } -} -*/ - -ap_status_t ap_putc(ap_file_t *thefile, char ch) -{ - DWORD bwrote; - - if (WriteFile(thefile->filehand, &ch, 1, &bwrote, NULL)) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_getc(ap_file_t *thefile, char *ch) -{ - DWORD bread; - if (!ReadFile(thefile->filehand, ch, 1, &bread, NULL)) { - return APR_EEXIST; - } - if (bread == 0) { - thefile->eof_hit = TRUE; - return APR_EOF; - } - return APR_SUCCESS; -} - -static int printf_flush(ap_vformatter_buff_t *vbuff) -{ - /* I would love to print this stuff out to the file, but I will - * get that working later. :) For now, just return. - */ - return -1; -} - -API_EXPORT(int) ap_fprintf(struct file_t *fptr, const char *format, ...) -{ - int cc; - va_list ap; - ap_vformatter_buff_t vbuff; - char *buf; - int len; - - buf = malloc(HUGE_STRING_LEN); - if (buf == NULL) { - return 0; - } - /* save one byte for nul terminator */ - vbuff.curpos = buf; - vbuff.endpos = buf + len - 1; - va_start(ap, format); -#if 0 - cc = ap_vformatter(printf_flush, &vbuff, format, ap); - va_end(ap); - *vbuff.curpos = '\0'; -#endif - vsprintf(buf, format, ap); - len = strlen(buf); - cc = ap_write(fptr, buf, &len); - va_end(ap); - return (cc == -1) ? len : cc; -} - - diff --git a/file_io/win32/seek.c b/file_io/win32/seek.c deleted file mode 100644 index fe1439c32..000000000 --- a/file_io/win32/seek.c +++ /dev/null @@ -1,90 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "fileio.h" -#include "apr_file_io.h" -#include -#include - -ap_status_t ap_seek(struct file_t *thefile, ap_seek_where_t where, ap_off_t *offset) -{ - DWORD howmove; - DWORD rv; - - switch(where) { - case APR_SET: { - howmove = FILE_BEGIN; - break; - } - case APR_CUR: { - howmove = FILE_CURRENT; - break; - } - case APR_END: { - howmove = FILE_END; - break; - } - } - - rv = SetFilePointer(thefile->filehand, *offset,NULL, howmove); - if (rv == -1) { - *offset = -1; - return APR_EEXIST; - } - else { - *offset = rv; - return APR_SUCCESS; - } -} diff --git a/inc/.cvsignore b/inc/.cvsignore deleted file mode 100644 index 10630bb1a..000000000 Binary files a/inc/.cvsignore and /dev/null differ diff --git a/inc/apr_config.h.in b/inc/apr_config.h.in deleted file mode 100644 index 1a41b4f97..000000000 --- a/inc/apr_config.h.in +++ /dev/null @@ -1,273 +0,0 @@ -/* include/apr_config.h.in. Generated automatically from configure.in by autoheader. */ -#ifndef APR_CONFIG_H -#define APR_CONFIG_H - -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -#undef _ALL_SOURCE -#endif - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define to `int' if doesn't define. */ -#undef gid_t - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `int' if doesn't define. */ -#undef pid_t - -/* Define if the `setpgrp' function takes no argument. */ -#undef SETPGRP_VOID - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to `int' if doesn't define. */ -#undef uid_t - -/* Various #defines we need to know about */ -#undef HAVE_STRUCT_UNION_SEMUN -#undef HAVE_LOCK_EX -#undef HAVE_F_SETLK -#undef HAVE_PTHREAD_PROCESS_SHARED - -/* Cross process serialization techniques */ -#undef USE_FLOCK_SERIALIZE -#undef USE_SYSVSEM_SERIALIZE -#undef USE_FCNTL_SERIALIZE -#undef USE_PROC_PTHREAD_SERIALIZE -#undef USE_PTHREAD_SERIALIZE - -#undef NEED_RLIM_T -#undef USEBCOPY - -/* The number of bytes in a char. */ -#undef SIZEOF_CHAR - -/* The number of bytes in a int. */ -#undef SIZEOF_INT - -/* The number of bytes in a long. */ -#undef SIZEOF_LONG - -/* The number of bytes in a long double. */ -#undef SIZEOF_LONG_DOUBLE - -/* The number of bytes in a long long. */ -#undef SIZEOF_LONG_LONG - -/* The number of bytes in a short. */ -#undef SIZEOF_SHORT - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the poll function. */ -#undef HAVE_POLL - -/* Define if you have the pthread_mutex_init function. */ -#undef HAVE_PTHREAD_MUTEX_INIT - -/* Define if you have the setsid function. */ -#undef HAVE_SETSID - -/* Define if you have the sigaction function. */ -#undef HAVE_SIGACTION - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the stricmp function. */ -#undef HAVE_STRICMP - -/* Define if you have the writev function. */ -#undef HAVE_WRITEV - -/* Define if you have the header file. */ -#undef HAVE_ARPA_INET_H - -/* Define if you have the header file. */ -#undef HAVE_CRYPT_H - -/* Define if you have the header file. */ -#undef HAVE_CTYPE_H - -/* Define if you have the header file. */ -#undef HAVE_DIR_H - -/* Define if you have the header file. */ -#undef HAVE_DIRENT_H - -/* Define if you have the header file. */ -#undef HAVE_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define if you have the header file. */ -#undef HAVE_FEATURES_H - -/* Define if you have the header file. */ -#undef HAVE_GRP_H - -/* Define if you have the header file. */ -#undef HAVE_IO_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define if you have the header file. */ -#undef HAVE_MATH_H - -/* Define if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define if you have the header file. */ -#undef HAVE_NET_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_NETDB_H - -/* Define if you have the header file. */ -#undef HAVE_NETINET_IN_H - -/* Define if you have the header file. */ -#undef HAVE_OSRELDATE_H - -/* Define if you have the header file. */ -#undef HAVE_PROCESS_H - -/* Define if you have the header file. */ -#undef HAVE_PTHREAD_H - -/* Define if you have the header file. */ -#undef HAVE_PWD_H - -/* Define if you have the header file. */ -#undef HAVE_SETJMP_H - -/* Define if you have the header file. */ -#undef HAVE_SIGNAL_H - -/* Define if you have the header file. */ -#undef HAVE_STDARG_H - -/* Define if you have the header file. */ -#undef HAVE_STDDEF_H - -/* Define if you have the header file. */ -#undef HAVE_STDIO_H - -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_FILE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_IOCTL_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_MMAN_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_SELECT_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_SOCKET_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TIMES_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_WAIT_H - -/* Define if you have the header file. */ -#undef HAVE_SYSAPI_H - -/* Define if you have the header file. */ -#undef HAVE_SYSGTIME_H - -/* Define if you have the header file. */ -#undef HAVE_TIME_H - -/* Define if you have the header file. */ -#undef HAVE_TPFEQ_H - -/* Define if you have the header file. */ -#undef HAVE_TPFIO_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the header file. */ -#undef HAVE_UNIX_H - -/* Define if you have the header file. */ -#undef HAVE_WINSOCK_H - -/* Define if you have the dl library (-ldl). */ -#undef HAVE_LIBDL - -/* Define if you have the pthread library (-lpthread). */ -#undef HAVE_LIBPTHREAD -#define API_EXPORT(type) type -#define API_EXPORT_NONSTD(type) type -#define API_VAR_IMPORT extern - -/* Make sure we have ssize_t defined to be somethine */ -#undef ssize_t - -/* We want this in config.h, because it is a macro that Windows requires. This - * way, every thread start function has this definition, and things are happy. - */ -#define API_THREAD_FUNC - -#ifdef HAVE_SIGACTION -typedef void Sigfunc(int); - -#if defined(SIG_ING) && !defined(SIG_ERR) -#define SIG_ERR ((Sigfunc *)-1) -#endif - -#define signal(s,f) ap_signal(s, f) -Sigfunc *signal(int signo, Sigfunc * func); -#endif - - -#endif /* APR_CONFIG_H */ diff --git a/inc/apr_fnmatch.h b/inc/apr_fnmatch.h deleted file mode 100644 index ba194c303..000000000 --- a/inc/apr_fnmatch.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * 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 Group. */ -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif - -#ifndef _APR_FNMATCH_H_ -#define _APR_FNMATCH_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define FNM_NOMATCH 1 /* Match failed. */ - -#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */ -#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ -#define FNM_PERIOD 0x04 /* Period must be matched by period. */ -/* This flag is an Apache addition */ -#define FNM_CASE_BLIND 0x08 /* Compare characters case-insensitively. */ - -API_EXPORT(int) apr_fnmatch(const char *pattern, const char *strings, - int flags); - -/* this function is an Apache addition */ -API_EXPORT(extern int) ap_is_fnmatch(const char *pattern); - -#ifdef __cplusplus -} -#endif - -#endif /* !_FNMATCH_H_ */ diff --git a/include/apr_config.h.in b/include/apr_config.h.in deleted file mode 100644 index 1a41b4f97..000000000 --- a/include/apr_config.h.in +++ /dev/null @@ -1,273 +0,0 @@ -/* include/apr_config.h.in. Generated automatically from configure.in by autoheader. */ -#ifndef APR_CONFIG_H -#define APR_CONFIG_H - -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -#undef _ALL_SOURCE -#endif - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define to `int' if doesn't define. */ -#undef gid_t - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `int' if doesn't define. */ -#undef pid_t - -/* Define if the `setpgrp' function takes no argument. */ -#undef SETPGRP_VOID - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to `int' if doesn't define. */ -#undef uid_t - -/* Various #defines we need to know about */ -#undef HAVE_STRUCT_UNION_SEMUN -#undef HAVE_LOCK_EX -#undef HAVE_F_SETLK -#undef HAVE_PTHREAD_PROCESS_SHARED - -/* Cross process serialization techniques */ -#undef USE_FLOCK_SERIALIZE -#undef USE_SYSVSEM_SERIALIZE -#undef USE_FCNTL_SERIALIZE -#undef USE_PROC_PTHREAD_SERIALIZE -#undef USE_PTHREAD_SERIALIZE - -#undef NEED_RLIM_T -#undef USEBCOPY - -/* The number of bytes in a char. */ -#undef SIZEOF_CHAR - -/* The number of bytes in a int. */ -#undef SIZEOF_INT - -/* The number of bytes in a long. */ -#undef SIZEOF_LONG - -/* The number of bytes in a long double. */ -#undef SIZEOF_LONG_DOUBLE - -/* The number of bytes in a long long. */ -#undef SIZEOF_LONG_LONG - -/* The number of bytes in a short. */ -#undef SIZEOF_SHORT - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the poll function. */ -#undef HAVE_POLL - -/* Define if you have the pthread_mutex_init function. */ -#undef HAVE_PTHREAD_MUTEX_INIT - -/* Define if you have the setsid function. */ -#undef HAVE_SETSID - -/* Define if you have the sigaction function. */ -#undef HAVE_SIGACTION - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the stricmp function. */ -#undef HAVE_STRICMP - -/* Define if you have the writev function. */ -#undef HAVE_WRITEV - -/* Define if you have the header file. */ -#undef HAVE_ARPA_INET_H - -/* Define if you have the header file. */ -#undef HAVE_CRYPT_H - -/* Define if you have the header file. */ -#undef HAVE_CTYPE_H - -/* Define if you have the header file. */ -#undef HAVE_DIR_H - -/* Define if you have the header file. */ -#undef HAVE_DIRENT_H - -/* Define if you have the header file. */ -#undef HAVE_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define if you have the header file. */ -#undef HAVE_FEATURES_H - -/* Define if you have the header file. */ -#undef HAVE_GRP_H - -/* Define if you have the header file. */ -#undef HAVE_IO_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define if you have the header file. */ -#undef HAVE_MATH_H - -/* Define if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define if you have the header file. */ -#undef HAVE_NET_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_NETDB_H - -/* Define if you have the header file. */ -#undef HAVE_NETINET_IN_H - -/* Define if you have the header file. */ -#undef HAVE_OSRELDATE_H - -/* Define if you have the header file. */ -#undef HAVE_PROCESS_H - -/* Define if you have the header file. */ -#undef HAVE_PTHREAD_H - -/* Define if you have the header file. */ -#undef HAVE_PWD_H - -/* Define if you have the header file. */ -#undef HAVE_SETJMP_H - -/* Define if you have the header file. */ -#undef HAVE_SIGNAL_H - -/* Define if you have the header file. */ -#undef HAVE_STDARG_H - -/* Define if you have the header file. */ -#undef HAVE_STDDEF_H - -/* Define if you have the header file. */ -#undef HAVE_STDIO_H - -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_FILE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_IOCTL_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_MMAN_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_SELECT_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_SOCKET_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TIMES_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_WAIT_H - -/* Define if you have the header file. */ -#undef HAVE_SYSAPI_H - -/* Define if you have the header file. */ -#undef HAVE_SYSGTIME_H - -/* Define if you have the header file. */ -#undef HAVE_TIME_H - -/* Define if you have the header file. */ -#undef HAVE_TPFEQ_H - -/* Define if you have the header file. */ -#undef HAVE_TPFIO_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the header file. */ -#undef HAVE_UNIX_H - -/* Define if you have the header file. */ -#undef HAVE_WINSOCK_H - -/* Define if you have the dl library (-ldl). */ -#undef HAVE_LIBDL - -/* Define if you have the pthread library (-lpthread). */ -#undef HAVE_LIBPTHREAD -#define API_EXPORT(type) type -#define API_EXPORT_NONSTD(type) type -#define API_VAR_IMPORT extern - -/* Make sure we have ssize_t defined to be somethine */ -#undef ssize_t - -/* We want this in config.h, because it is a macro that Windows requires. This - * way, every thread start function has this definition, and things are happy. - */ -#define API_THREAD_FUNC - -#ifdef HAVE_SIGACTION -typedef void Sigfunc(int); - -#if defined(SIG_ING) && !defined(SIG_ERR) -#define SIG_ERR ((Sigfunc *)-1) -#endif - -#define signal(s,f) ap_signal(s, f) -Sigfunc *signal(int signo, Sigfunc * func); -#endif - - -#endif /* APR_CONFIG_H */ diff --git a/include/apr_errno.h b/include/apr_errno.h deleted file mode 100644 index fd404697f..000000000 --- a/include/apr_errno.h +++ /dev/null @@ -1,420 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include - -#ifndef APR_ERRNO_H -#define APR_ERRNO_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* If this definition of APRStatus changes, then we can remove this, but right - now, the decision was to use an errno-like implementation. -*/ -typedef int ap_status_t; - -#define APR_SUCCESS 0 - -#ifdef EACCES -#define APR_EACCES EACCES -#else -#define APR_EACCES 3000 -#endif - -#ifdef EEXIST -#define APR_EEXIST EEXIST -#else -#define APR_EEXIST 3001 -#endif - -#ifdef EISDIR -#define APR_EISDIR EISDIR -#else -#define APR_EISDIR 3002 -#endif - -#ifdef ENAMETOOLONG -#define APR_ENAMETOOLONG ENAMETOOLONG -#else -#define APR_ENAMETOOLONG 3003 -#endif - -#ifdef ENOENT -#define APR_ENOENT ENOENT -#else -#define APR_ENOENT 3004 -#endif - -#ifdef ENOTDIR -#define APR_ENOTDIR ENOTDIR -#else -#define APR_ENOTDIR 3005 -#endif - -#ifdef ENXIO -#define APR_ENXIO ENXIO -#else -#define APR_ENXIO 3006 -#endif - -#ifdef ENODEV -#define APR_ENODEV ENODEV -#else -#define APR_ENODEV 3007 -#endif - -#ifdef EROFS -#define APR_EROFS EROFS -#else -#define APR_EROFS 3008 -#endif - -#ifdef ETXTBSY -#define APR_ETXTBSY ETXTBSY -#else -#define APR_ETXTBSY 3009 -#endif - -#ifdef EFAULT -#define APR_EFAULT EFAULT -#else -#define APR_EFAULT 3010 -#endif - -#ifdef ELOOP -#define APR_ELOOP ELOOP -#else -#define APR_ELOOP 3011 -#endif - -#ifdef ENOSPC -#define APR_ENOSPC ENOSPC -#else -#define APR_ENOSPC 3012 -#endif - -#ifdef ENONOMEM -#define APR_ENOMEM ENOMEM -#else -#define APR_ENOMEM 3013 -#endif - -#ifdef EMFILE -#define APR_EMFILE EMFILE -#else -#define APR_EMFILE 3014 -#endif - -#ifdef ENFILE -#define APR_ENFILE ENFILE -#else -#define APR_ENFILE 3015 -#endif - -#ifdef EBADF -#define APR_EBADF EBADF -#else -#define APR_EBADF 3016 -#endif - -#ifdef EPERM -#define APR_EPERM EPERM -#else -#define APR_EPERM 3017 -#endif - -#ifdef EIO -#define APR_EIO EIO -#else -#define APR_EIO 3018 -#endif - -#ifdef EINVAL -#define APR_EINVAL EINVAL -#else -#define APR_EINVAL 3019 -#endif - -#ifdef ENOEMPTY -#define APR_ENOEMPTY ENOEMPTY -#else -#define APR_ENOEMPTY 3020 -#endif - -#ifdef EBUSY -#define APR_EBUSY EBUSY -#else -#define APR_EBUSY 3021 -#endif - -#ifdef ESPIPE -#define APR_ESPIPE ESPIPE -#else -#define APR_ESPIPE 3022 -#endif - -#ifdef EIDRM -#define APR_EIDRM EIDRM -#else -#define APR_EIDRM 3023 -#endif - -#ifdef ERANGE -#define APR_ERANGE ERANGE -#else -#define APR_ERANGE 3024 -#endif - -#ifdef E2BIG -#define APR_E2BIG E2BIG -#else -#define APR_E2BIG 3025 -#endif - -#ifdef EAGAIN -#define APR_EAGAIN EAGAIN -#else -#define APR_EAGAIN 3026 -#endif - -#ifdef EFBIG -#define APR_EFBIG EFBIG -#else -#define APR_EFBIG 3027 -#endif - -#ifdef EINTR -#define APR_EINTR EINTR -#else -#define APR_EINTR 3028 -#endif - -#ifdef EDEADLK -#define APR_EDEADLK EDEADLK -#else -#define APR_EDEADLK 3029 -#endif - -#ifdef ENOLCK -#define APR_ENOLCK ENOLCK -#else -#define APR_ENOLCK 3030 -#endif - -#ifdef EWOULDBLOCK -#define APR_EWOULDBLOCK EWOULDBLOCK -#else -#define APR_EWOULDBLOCK 3031 -#endif - -#ifdef EPROTONOSUPPORT -#define APR_EPROTONOSUPPORT EPROTONOSUPPORT -#else -#define APR_EPROTONOSUPPORT 3032 -#endif - -#ifdef ENOTSOCK -#define APR_ENOTSOCK ENOTSOCK -#else -#define APR_ENOTSOCK 3033 -#endif - -#ifdef ENOTCONN -#define APR_ENOTCONN ENOTCONN -#else -#define APR_ENOTCONN 3034 -#endif - -#ifdef EOPNOTSUPP -#define APR_EOPNOTSUPP EOPNOTSUPP -#else -#define APR_EOPNOTSUPP 3035 -#endif - -#ifdef HOST_NOT_FOUND -#define APR_EHOSTNOTFOUND HOST_NOT_FOUND -#else -#define APR_EHOSTNOTFOUND 3036 -#endif - -#ifdef NO_DATA -#define APR_ENODATA NO_DATA -#else -#define APR_ENODATA 3037 -#endif - -#ifdef NO_ADDRESS -#define APR_ENOADDRESS NO_ADDRESS -#else -#define APR_ENOADDRESS 3038 -#endif - -#ifdef NO_RECOVERY -#define APR_ENORECOVERY NO_RECOVERY -#else -#define APR_ENORECOVERY 3039 -#endif - -#ifdef EISCONN -#define APR_EISCONN EISCONN -#else -#define APR_EISCONN 3040 -#endif - -#ifdef ETIMEDOUT -#define APR_ETIMEDOUT ETIMEDOUT -#else -#define APR_ETIMEDOUT 3041 -#endif - -#ifdef ECONNREFUSED -#define APR_ECONNREFUSED ECONNREFUSED -#else -#define APR_ECONNREFUSED 3042 -#endif - -#ifdef ENETUNREACH -#define APR_ENETUNREACH ENETUNREACH -#else -#define APR_ENETUNREACH 3043 -#endif - -#ifdef EADDRINUSE -#define APR_EADDRINUSE EADDRINUSE -#else -#define APR_EADDRINUSE 3044 -#endif - -#ifdef EINPROGRESS -#define APR_EINPROGRESS EINPROGRESS -#else -#define APR_EINPROGRESS 3045 -#endif - -#ifdef EALREADY -#define APR_EALREADY EALREADY -#else -#define APR_EALREADY 3046 -#endif - -#ifdef EAFNOSUPPORT -#define APR_EAFNOSUPPORT EAFNOSUPPORT -#else -#define APR_EAFNOSUPPORT 3047 -#endif - -#ifdef ENOPROTOOPT -#define APR_ENOPROTOOPT ENOPROTOOPT -#else -#define APR_ENOPROTOOPT 3048 -#endif - -#ifdef ENOCHILD -#define APR_ENOCHILD ENOCHILD -#else -#define APR_ENOCHILD 3049 -#endif - -#ifdef ESRCH -#define APR_ESRCH ESRCH -#else -#define APR_ESRCH 3050 -#endif - -#ifdef ENOTSUP -#define APR_ENOTSUP ENOTSUP -#else -#define APR_ENOTSUP 3051 -#endif - - -/* APR ERROR VALUES */ -#define APR_ENOSTAT 4001 -#define APR_ENOPOOL 4002 -#define APR_ENOFILE 4003 -#define APR_EBADDATE 4004 -#define APR_ENOCONT 4005 -#define APR_ENOPROC 4006 -#define APR_ENOTIME 4007 -#define APR_ENODIR 4008 -#define APR_ENOLOCK 4009 -#define APR_ENOPOLL 4010 -#define APR_ENOSOCKET 4011 -#define APR_ENOTHREAD 4012 -#define APR_ENOTHDKEY 4013 - -/* APR STATUS VALUES */ -#define APR_INCHILD 5001 -#define APR_INPARENT 5002 -#define APR_DETACH 5003 -#define APR_NOTDETACH 5004 -#define APR_CHILD_DONE 5005 -#define APR_CHILD_NOTDONE 5006 -#define APR_TIMEUP 5007 -#define APR_INVALSOCK 5008 -#define APR_ALLSTD 5009 -#define APR_STDOUT 5010 -#define APR_STDERR 5011 -#define APR_BADCH 5012 -#define APR_BADARG 5013 -#define APR_EOF 5014 -#define APR_NOTFOUND 5015 -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_ERRNO_H */ diff --git a/include/apr_file_io.h b/include/apr_file_io.h deleted file mode 100644 index 26a9d4f86..000000000 --- a/include/apr_file_io.h +++ /dev/null @@ -1,157 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_FILE_IO_H -#define APR_FILE_IO_H - -#include "apr_general.h" -#include "apr_errno.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef enum {APR_REG, APR_DIR, APR_CHR, APR_BLK, APR_PIPE, APR_LNK, - APR_SOCK} ap_filetype_e; - -/* Flags for ap_open */ -#define APR_READ 1 /* Open the file for reading */ -#define APR_WRITE 2 /* Open the file for writing */ -#define APR_CREATE 4 /* Create the file if not there */ -#define APR_APPEND 8 /* Append to the end of the file */ -#define APR_TRUNCATE 16 /* Open the file and truncate to 0 length */ -#define APR_BINARY 32 /* Open the file in binary mode */ -#define APR_BUFFERED 64 /* Buffer the data when reading or writing */ -#define APR_EXCL 128 /* Open should fail if APR_CREATE and file - exists. */ - -/* flags for ap_seek */ -#define APR_SET SEEK_SET -#define APR_CUR SEEK_CUR -#define APR_END SEEK_END - -/* Permissions flags */ -#define APR_UREAD 0x400 -#define APR_UWRITE 0x200 -#define APR_UEXECUTE 0x100 - -#define APR_GREAD 0x040 -#define APR_GWRITE 0x020 -#define APR_GEXECUTE 0x010 - -#define APR_WREAD 0x004 -#define APR_WWRITE 0x002 -#define APR_WEXECUTE 0x001 - -/* should be same as whence type in lseek, POSIZ defines this as int */ -typedef ap_int32_t ap_seek_where_t; - -typedef struct file_t ap_file_t; -typedef struct dir_t ap_dir_t; -typedef struct iovec_t ap_iovec_t; -typedef ap_int32_t ap_fileperms_t; - -/* Function definitions */ -ap_status_t ap_open(ap_context_t *, char *, ap_int32_t, ap_fileperms_t, ap_file_t **); -ap_status_t ap_close(ap_file_t *); -ap_status_t ap_remove_file(ap_context_t *, char *); -ap_status_t ap_eof(ap_file_t *); - -ap_status_t ap_read(ap_file_t *, void *, ap_ssize_t *); -ap_status_t ap_write(ap_file_t *, void *, ap_ssize_t *); -ap_status_t ap_writev(ap_file_t *, const ap_iovec_t *, ap_ssize_t *); -ap_status_t ap_putc(ap_file_t *, char); -ap_status_t ap_getc(ap_file_t *, char *); -API_EXPORT(int) ap_fprintf(ap_file_t *fptr, const char *format, ...) - __attribute__((format(printf,2,3))); - -ap_status_t ap_dupfile(ap_file_t *, ap_file_t **); -ap_status_t ap_getfileinfo(ap_file_t *); -ap_status_t ap_seek(ap_file_t *, ap_seek_where_t, ap_off_t *); - -ap_status_t ap_opendir(ap_context_t *, const char *, ap_dir_t **); -ap_status_t ap_closedir(ap_dir_t *); -ap_status_t ap_readdir(ap_dir_t *); -ap_status_t ap_rewinddir(ap_dir_t *); -ap_status_t ap_make_dir(ap_context_t *, const char *, ap_fileperms_t); -ap_status_t ap_remove_dir(ap_context_t *, const char *); - -ap_status_t ap_create_pipe(ap_context_t *, ap_file_t **, ap_file_t **); -ap_status_t ap_create_namedpipe(ap_context_t *, char *, ap_fileperms_t, char **); - -/*accessor and general file_io functions. */ -ap_status_t ap_get_filename(ap_file_t *, char **); -ap_status_t ap_get_dir_filename(ap_dir_t *, char **); -ap_status_t ap_get_filedata(ap_file_t *, void *); -ap_status_t ap_set_filedata(ap_file_t *, void *); - -ap_status_t ap_dir_entry_size(ap_dir_t *, ap_ssize_t *); -ap_status_t ap_dir_entry_mtime(ap_dir_t *, time_t *); -ap_status_t ap_dir_entry_ftype(ap_dir_t *, ap_filetype_e *); - -ap_status_t ap_get_filesize(ap_file_t *, ap_ssize_t *); -ap_status_t ap_get_fileperms(ap_file_t *, ap_fileperms_t *); -ap_status_t ap_get_fileatime(ap_file_t *,time_t *); -ap_status_t ap_get_filectime(ap_file_t *,time_t *); -ap_status_t ap_get_filemtime(ap_file_t *,time_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_FILE_IO_H */ - - diff --git a/include/apr_fnmatch.h b/include/apr_fnmatch.h deleted file mode 100644 index ba194c303..000000000 --- a/include/apr_fnmatch.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * 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 Group. */ -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif - -#ifndef _APR_FNMATCH_H_ -#define _APR_FNMATCH_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define FNM_NOMATCH 1 /* Match failed. */ - -#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */ -#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ -#define FNM_PERIOD 0x04 /* Period must be matched by period. */ -/* This flag is an Apache addition */ -#define FNM_CASE_BLIND 0x08 /* Compare characters case-insensitively. */ - -API_EXPORT(int) apr_fnmatch(const char *pattern, const char *strings, - int flags); - -/* this function is an Apache addition */ -API_EXPORT(extern int) ap_is_fnmatch(const char *pattern); - -#ifdef __cplusplus -} -#endif - -#endif /* !_FNMATCH_H_ */ diff --git a/include/apr_general.h b/include/apr_general.h deleted file mode 100644 index 64af5fc66..000000000 --- a/include/apr_general.h +++ /dev/null @@ -1,244 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifdef WIN32 -#include "apr_win.h" -#include -#else -#include "apr_config.h" -#endif - -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_MALLOC_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SIGNAL_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#include "apr_errno.h" - -#ifndef APR_GENERAL_H -#define APR_GENERAL_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define TRUE 1 -#define FALSE 0 - -#define MAXIMUM_WAIT_OBJECTS 64 - -#if (SIZEOF_SHORT == 2) -typedef short ap_int16_t; -typedef unsigned short ap_uint16_t; -#endif - -#if (SIZEOF_INT == 4) -typedef int ap_int32_t; -typedef unsigned int ap_uint32_t; -#endif - -#if (SIZEOF_LONG == 8) -typedef long ap_int64_t; -typedef unsigned long ap_uint64_t; -#elif (SIZEOF_LONG_LONG == 8) -typedef long long ap_int64_t; -typedef unsigned long long ap_uint64_t; -#elif (SIZEOF_LONG_DOUBLE == 8) -typedef long double ap_int64_t; -typedef unsigned long double ap_uint64_t; -#elif (SIZEOF_LONGLONG == 8) -typedef LONGLONG ap_int64_t; -typedef ULONGLONG ap_uint64_t; -#endif - -typedef size_t ap_size_t; -#ifdef ssize_t -typedef ssize_t ap_ssize_t; -#else -typedef int ap_ssize_t; -#endif -typedef off_t ap_off_t; - -typedef struct context_t ap_context_t; -typedef int ap_signum_t; - -#ifdef SIGHUP -#define APR_SIGHUP SIGHUP -#endif -#ifdef SIGINT -#define APR_SIGINT SIGINT -#endif -#ifdef SIGQUIT -#define APR_SIGQUIT SIGQUIT -#endif -#ifdef SIGILL -#define APR_SIGILL SIGILL -#endif -#ifdef SIGTRAP -#define APR_SIGTRAP SIGTRAP -#endif -#ifdef SIGABRT -#define APR_SIGABRT SIGABRT -#endif -#ifdef SIGIOT -#define APR_SIGIOT SIGIOT -#endif -#ifdef SIGBUS -#define APR_SIGBUS SIGBUS -#endif -#ifdef SIGFPE -#define APR_SIGFPE SIGFPE -#endif -#ifdef SIGKILL -#define APR_SIGKILL SIGKILL -#endif -#ifdef SIGUSR1 -#define APR_SIGUSR1 SIGUSR1 -#endif -#ifdef SIGSEGV -#define APR_SIGSEGV SIGSEGV -#endif -#ifdef SIGUSR2 -#define APR_SIGUSR2 SIGUSR2 -#endif -#ifdef SIGPIPE -#define APR_SIGPIPE SIGPIPE -#endif -#ifdef SIGALRM -#define APR_SIGALRM SIGALRM -#endif -#ifdef SIGTERM -#define APR_SIGTERM SIGTERM -#endif -#ifdef SIGSTKFLT -#define APR_SIGSTKFLT SIGSTKFLT -#endif -#ifdef SIGCHLD -#define APR_SIGCHLD SIGCHLD -#endif -#ifdef SIGCONT -#define APR_SIGCONT SIGCONT -#endif -#ifdef SIGSTOP -#define APR_SIGSTOP SIGSTOP -#endif -#ifdef SIGTSTP -#define APR_SIGTSTP SIGTSTP -#endif -#ifdef SIGTTIN -#define APR_SIGTTIN SIGTTIN -#endif -#ifdef SIGTTOU -#define APR_SIGTTOU SIGTTOU -#endif -#ifdef SIGURG -#define APR_SIGURG SIGURG -#endif -#ifdef SIGXCPU -#define APR_SIGXCPU SIGXCPU -#endif -#ifdef SIGXFSZ -#define APR_SIGXFSZ SIGXFSZ -#endif -#ifdef SIGVTALRM -#define APR_SIGVTALRM SIGVTALRM -#endif -#ifdef SIGPROF -#define APR_SIGPROF SIGPROF -#endif -#ifdef SIGWINCH -#define APR_SIGWINCH SIGWINCH -#endif -#ifdef SIGIO -#define APR_SIGIO SIGIO -#endif - -#ifdef WIN32 -#define APR_INLINE __inline -#else -#define APR_INLINE inline -#endif - -/* Context functions */ -ap_status_t ap_create_context(ap_context_t *, void *, ap_context_t **); -ap_status_t ap_set_signal_safe(ap_context_t *, ap_int16_t); -ap_status_t ap_set_cancel_safe(ap_context_t *, ap_int16_t); -ap_status_t ap_exit(ap_context_t *); -ap_status_t ap_set_userdata(ap_context_t *, void *); -ap_status_t ap_get_userdata(ap_context_t *, void **); -ap_status_t ap_initialize(void); - -ap_status_t ap_create_signal(ap_context_t *, ap_signum_t); -ap_status_t ap_send_signal(ap_context_t *, ap_signum_t); -ap_status_t ap_setup_signal(ap_context_t *, ap_signum_t, Sigfunc *); - -ap_status_t ap_getopt(ap_context_t *, ap_int32_t, char *const *, const char *, - ap_int32_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_GENERAL_H */ diff --git a/include/apr_lock.h b/include/apr_lock.h deleted file mode 100644 index d0f0a0384..000000000 --- a/include/apr_lock.h +++ /dev/null @@ -1,84 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_LOCKS_H -#define APR_LOCKS_H - -#include "apr_general.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef enum {APR_CROSS_PROCESS, APR_INTRAPROCESS, APR_LOCKALL} ap_locktype_e; - -typedef struct lock_t ap_lock_t; - -/* Function definitions */ -ap_status_t ap_create_lock(ap_context_t *, ap_locktype_e, char *, ap_lock_t **); -ap_status_t ap_lock(ap_lock_t *); -ap_status_t ap_unlock(ap_lock_t *); -ap_status_t ap_destroy_lock(ap_lock_t *); -ap_status_t ap_child_init_lock(ap_context_t *, char *, ap_lock_t **); - -ap_status_t ap_get_lockdata(ap_lock_t *, void *); -ap_status_t ap_set_lockdata(ap_lock_t *, void *); - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_LOCKS_H */ diff --git a/include/apr_network_io.h b/include/apr_network_io.h deleted file mode 100644 index 80ebe27d7..000000000 --- a/include/apr_network_io.h +++ /dev/null @@ -1,137 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_NETWORK_IO_H -#define APR_NETWORK_IO_H - -#ifdef WIN32 -#include -#endif - -#include "apr_general.h" -#include "apr_errno.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifndef MAX_SECS_TO_LINGER -#define MAX_SECS_TO_LINGER 30 -#endif - -#ifndef APRMAXHOSTLEN -#define APRMAXHOSTLEN 256 -#endif - -/* Socket option definitions */ -#define APR_SO_LINGER 1 -#define APR_SO_KEEPALIVE 2 -#define APR_SO_DEBUG 4 -#define APR_SO_NONBLOCK 8 -#define APR_SO_REUSEADDR 16 - -#define APR_POLLIN 0x001 -#define APR_POLLPRI 0x002 -#define APR_POLLOUT 0x004 -#define APR_POLLERR 0x010 -#define APR_POLLHUP 0x020 -#define APR_POLLNVAL 0x040 - -typedef enum {APR_SHUTDOWN_READ, APR_SHUTDOWN_WRITE, - APR_SHUTDOWN_READWRITE} ap_shutdown_how_e; - -typedef struct socket_t ap_socket_t; -typedef struct pollfd_t ap_pollfd_t; - -/* function definitions */ - -ap_status_t ap_create_tcp_socket(ap_context_t *, ap_socket_t **); -ap_status_t ap_shutdown(ap_socket_t *, ap_shutdown_how_e); -ap_status_t ap_close_socket(ap_socket_t *); - -ap_status_t ap_bind(ap_socket_t *); -ap_status_t ap_listen(ap_socket_t *, ap_int32_t); -ap_status_t ap_accept(const ap_socket_t *, ap_socket_t **); -ap_status_t ap_connect(ap_socket_t *, char *); - -ap_status_t ap_get_remote_hostname(ap_socket_t *, char **); -ap_status_t ap_gethostname(ap_context_t *, char *, int); -ap_status_t ap_get_socketdata(ap_socket_t *, void *); -ap_status_t ap_set_socketdata(ap_socket_t *, void *); - -ap_status_t ap_send(ap_socket_t *, const char *, ap_ssize_t *, time_t); -ap_status_t ap_recv(ap_socket_t *, char *, ap_ssize_t *, time_t); - -ap_status_t ap_setsocketopt(ap_socket_t *, ap_int32_t, ap_int32_t); -ap_status_t ap_setport(ap_socket_t *, ap_uint32_t); - -ap_status_t ap_setup_poll(ap_context_t *, ap_int32_t, ap_pollfd_t **); -ap_status_t ap_poll(ap_pollfd_t *, ap_int32_t *, ap_int32_t); -ap_status_t ap_add_poll_socket(ap_pollfd_t *, ap_socket_t *, ap_int16_t); -ap_status_t ap_remove_poll_socket(ap_pollfd_t *, ap_socket_t *, ap_int16_t); -ap_status_t ap_clear_poll_sockets(ap_pollfd_t *, ap_int16_t); -ap_status_t ap_get_revents(ap_pollfd_t *, ap_socket_t *, ap_int16_t *); -ap_status_t ap_get_polldata(ap_pollfd_t *, void *); -ap_status_t ap_set_polldata(ap_pollfd_t *, void *); - -/* accessor functions */ - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_NETWORK_IO_H */ - diff --git a/include/apr_portable.h b/include/apr_portable.h deleted file mode 100644 index 196a4c255..000000000 --- a/include/apr_portable.h +++ /dev/null @@ -1,160 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* 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 . - */ - -#include "apr_general.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_lock.h" -#include "apr_time.h" -#ifdef HAVE_DIR_H -#include -#endif -#ifdef HAVE_PTHREAD_H -#include -#endif -#ifdef HAVE_TIME_H -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_DIRENT_H -#include -#endif - - -#ifdef WIN32 -/* The primitives for Windows types */ -typedef HANDLE ap_os_file_t; -typedef HANDLE ap_os_dir_t; -typedef SOCKET ap_os_sock_t; -typedef HANDLE ap_os_lock_t; -typedef HANDLE ap_os_thread_t; -typedef PROCESS_INFORMATION ap_os_proc_t; -typedef DWORD ap_os_threadkey_t; -typedef SYSTEMTIME ap_os_time_t; -#else -/* Any other OS should go above this one. This is the lowest common - * denominator typedefs for all UNIX-like systems. :) - */ - -#ifdef NEED_UNION_SEMUN -/* it makes no sense, but this isn't defined on solaris */ -union semun { - long val; - struct semid_ds *buf; - ushort *array; -}; -#endif - -struct os_lock_t { -#if defined USE_SYSVSEM_SERIALIZE - int crossproc; - struct sembuf op_on; - struct sembuf op_off; -#elif defined (USE_FCNTL_SERIALIZE) - int crossproc; - struct flock lock_it; - struct flock unlock_it; -#elif defined (USE_PROC_PTHREAD_SERIALIZE) - pthread_mutex_t *crossproc; -#elif defined (USE_FLOCK_SERIALIZE) - int crossproc; -#else - /* No Interprocess serialization, too bad. */ -#endif -#if defined (USE_PTHREAD_SERIALIZE) - pthread_mutex_t *intraproc; -#endif -}; - -typedef int ap_os_file_t; -typedef DIR ap_os_dir_t; -typedef int ap_os_sock_t; -typedef struct os_lock_t ap_os_lock_t; -typedef pthread_t ap_os_thread_t; -typedef pid_t ap_os_proc_t; -typedef pthread_key_t ap_os_threadkey_t; -typedef struct timeval ap_os_time_t; -#endif - -ap_status_t ap_get_os_file(ap_file_t *, ap_os_file_t *); -ap_status_t ap_get_os_dir(ap_dir_t *, ap_os_dir_t *); -ap_status_t ap_get_os_sock(ap_socket_t *, ap_os_sock_t *); -ap_status_t ap_get_os_lock(ap_lock_t *, ap_os_lock_t *); -ap_status_t ap_get_os_thread(ap_thread_t *, ap_os_thread_t *); -ap_status_t ap_get_os_proc(ap_proc_t *, ap_os_proc_t *); -ap_status_t ap_get_os_time(ap_time_t *, ap_os_time_t **); -ap_status_t ap_get_os_threadkey(ap_key_t *, ap_os_threadkey_t *); - -ap_status_t ap_put_os_file(ap_context_t *, ap_file_t **, ap_os_file_t *); -ap_status_t ap_put_os_dir(ap_context_t *, ap_dir_t **, ap_os_dir_t *); -ap_status_t ap_put_os_sock(ap_context_t *, ap_socket_t **, ap_os_sock_t *); -ap_status_t ap_put_os_lock(ap_context_t *, ap_lock_t **, ap_os_lock_t *); -ap_status_t ap_put_os_thread(ap_context_t *, ap_thread_t **, ap_os_thread_t *); -ap_status_t ap_put_os_proc(ap_context_t *, ap_proc_t **, ap_os_proc_t *); -ap_status_t ap_put_os_time(ap_context_t *, ap_time_t **, ap_os_time_t *); -ap_status_t ap_put_os_threadkey(ap_context_t *, ap_key_t **, ap_os_threadkey_t *); - diff --git a/include/apr_shmem.h b/include/apr_shmem.h deleted file mode 100644 index 226df17a9..000000000 --- a/include/apr_shmem.h +++ /dev/null @@ -1,86 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_SHMEM_H -#define APR_SHMEM_H - -#include "apr_general.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef struct shmem_t ap_shmem_t - -ap_status_t ap_shm_create(ap_context_t *, ap_size_t, const char *, ap_shmem_t **); -ap_status_t ap_shm_destroy(ap_shmem_t *); -ap_status_t ap_shm_malloc(ap_shmem_t *, ap_size_t, void **); -ap_status_t ap_shm_calloc(ap_shmem_t *, ap_size_t, ap_size_t, void **); -ap_status_t ap_shm_realloc(ap_shmem_t *, ap_size_t, void **); -ap_status_t ap_shm_free(ap_shmem_t *, void *); -ap_status_t ap_shm_strdup(ap_shmem_t *, const char *, char **); -ap_status_t ap_shm_sizeof(ap_shmem_t *, void *, ap_size_t *); -ap_status_t ap_shm_maxsize(ap_size_t *); -ap_status_t ap_shm_available(ap_shmem_t *, ap_size_t *); -ap_status_t ap_shm_child_create(ap_context_t *, const char *, ap_shmem_t**); - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_FILE_IO_H */ - - diff --git a/include/apr_signal.h b/include/apr_signal.h deleted file mode 100644 index b9699f006..000000000 --- a/include/apr_signal.h +++ /dev/null @@ -1,74 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_SIGNAL_H -#define APR_SIGNAL_H - -#include "apr_general.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef int ap_signum_t; - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_SIGNAL_H */ - - diff --git a/include/apr_thread_proc.h b/include/apr_thread_proc.h deleted file mode 100644 index 8abe7a7a2..000000000 --- a/include/apr_thread_proc.h +++ /dev/null @@ -1,141 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_THREAD_PROC_H -#define APR_THREAD_PROC_H - -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_win.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef enum {APR_SHELLCMD, APR_PROGRAM} ap_cmdtype_e; -typedef enum {APR_WAIT, APR_NOWAIT} ap_wait_how_e; - -#define APR_CANCEL_ASYNCH 1 -#define APR_CANCEL_DEFER 2 -#define APR_CANCEL_ENABLE 3 -#define APR_CANCEL_DISABLE 4 - -typedef struct thread_t ap_thread_t; -typedef struct threadattr_t ap_threadattr_t; -typedef struct proc_t ap_proc_t; -typedef struct procattr_t ap_procattr_t; - -typedef struct threadkey_t ap_key_t; - -typedef void *(API_THREAD_FUNC *ap_thread_start_t)(void *); - -/* Thread Function definitions */ -ap_status_t ap_create_threadattr(ap_context_t *, ap_threadattr_t **); -ap_status_t ap_setthreadattr_detach(ap_threadattr_t *, ap_int32_t); -ap_status_t ap_getthreadattr_detach(ap_threadattr_t *); -ap_status_t ap_create_thread(ap_context_t *, ap_threadattr_t *, - ap_thread_start_t, void *, ap_thread_t **); -ap_status_t ap_thread_exit(ap_thread_t *, ap_status_t *); -ap_status_t ap_thread_join(ap_thread_t *thd, ap_status_t *); -ap_status_t ap_thread_detach(ap_thread_t *); - -ap_status_t ap_cancel_thread(ap_thread_t *); -ap_status_t ap_setcanceltype(ap_context_t *, ap_int32_t); -ap_status_t ap_setcancelstate(ap_context_t *, ap_int32_t); -ap_status_t ap_get_threaddata(ap_thread_t *, void *); -ap_status_t ap_set_threaddata(ap_thread_t *, void *); - -ap_status_t ap_create_thread_private(ap_context_t *, void (*dest)(void *), - ap_key_t **); -ap_status_t ap_get_thread_private(ap_key_t *, void **); -ap_status_t ap_set_thread_private(ap_key_t *, void *); -ap_status_t ap_delete_thread_private(ap_key_t *); -ap_status_t ap_get_threadkeydata(ap_key_t *, void *); -ap_status_t ap_set_threadkeydata(ap_key_t *, void *); - -/* Process Function definitions */ -ap_status_t ap_createprocattr_init(ap_context_t *, ap_procattr_t **); -ap_status_t ap_setprocattr_io(ap_procattr_t *, ap_int32_t, ap_int32_t, - ap_int32_t); -ap_status_t ap_setprocattr_dir(ap_procattr_t *, char *); -ap_status_t ap_setprocattr_cmdtype(ap_procattr_t *, ap_cmdtype_e); -ap_status_t ap_setprocattr_detach(ap_procattr_t *, ap_int32_t); -ap_status_t ap_get_procdata(ap_proc_t *, void *); -ap_status_t ap_set_procdata(ap_proc_t *, void *); - -ap_status_t ap_get_childin(ap_proc_t *, ap_file_t **); -ap_status_t ap_get_childout(ap_proc_t *, ap_file_t **); -ap_status_t ap_get_childerr(ap_proc_t *, ap_file_t **); - -ap_status_t ap_fork(ap_context_t *, ap_proc_t **); -ap_status_t ap_create_process(ap_context_t *, char *, char *const [], char **, - ap_procattr_t *, ap_proc_t **); -ap_status_t ap_wait_proc(ap_proc_t *, ap_wait_how_e); - -ap_status_t ap_kill(ap_proc_t *, ap_int32_t); -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_FILE_IO_H */ - - - - - - - - diff --git a/include/apr_time.h b/include/apr_time.h deleted file mode 100644 index 4ded82a91..000000000 --- a/include/apr_time.h +++ /dev/null @@ -1,103 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef APR_TIME_H -#define APR_TIME_H - -#include "apr_general.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef enum {APR_LOCALTIME, APR_UTCTIME} ap_timetype_e; - -typedef struct atime_t ap_time_t; - -/* Function Definitions */ -ap_status_t ap_make_time(ap_context_t *, ap_time_t **); -ap_status_t ap_current_time(ap_time_t *); -ap_status_t ap_explode_time(ap_time_t *, ap_timetype_e); -ap_status_t ap_implode_time(ap_time_t *); - -/* accessor functions */ -ap_status_t ap_get_curtime(ap_time_t *, ap_int64_t *); -ap_status_t ap_timediff(ap_time_t *, ap_time_t *, ap_int32_t *); - -ap_status_t ap_get_sec(ap_time_t *, ap_int32_t *); -ap_status_t ap_get_min(ap_time_t *, ap_int32_t *); -ap_status_t ap_get_hour(ap_time_t *, ap_int32_t *); -ap_status_t ap_get_mday(ap_time_t *, ap_int32_t *); -ap_status_t ap_get_mon(ap_time_t *, ap_int32_t *); -ap_status_t ap_get_year(ap_time_t *, ap_int32_t *); -ap_status_t ap_get_wday(ap_time_t *, ap_int32_t *); - -ap_status_t ap_set_sec(ap_time_t *, ap_int32_t); -ap_status_t ap_set_min(ap_time_t *, ap_int32_t); -ap_status_t ap_set_hour(ap_time_t *, ap_int32_t); -ap_status_t ap_set_mday(ap_time_t *, ap_int32_t); -ap_status_t ap_set_mon(ap_time_t *, ap_int32_t); -ap_status_t ap_set_year(ap_time_t *, ap_int32_t); -ap_status_t ap_set_wday(ap_time_t *, ap_int32_t); - -ap_status_t ap_get_timedata(ap_time_t *, void *); -ap_status_t ap_set_timedata(ap_time_t *, void *); - -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_TIME_H */ diff --git a/include/apr_win.h b/include/apr_win.h deleted file mode 100644 index c6772d34b..000000000 --- a/include/apr_win.h +++ /dev/null @@ -1,126 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifdef WIN32 - -#ifndef APR_WIN_H -#define APR_WIN_H -/*#define WIN32_LEAN_AND_MEAN*/ -#include -#include -#include -#include -#include -#include - -typedef enum {APR_WIN_NT, APR_WIN_95, APR_WIN_98} ap_oslevel_e; - -#define SIGHUP 1 -/* 2 is used for SIGINT on windows */ -#define SIGQUIT 3 -/* 4 is used for SIGILL on windows */ -#define SIGTRAP 5 -#define SIGIOT 6 -#define SIGBUS 7 -/* 8 is used for SIGFPE on windows */ -#define SIGKILL 9 -#define SIGUSR1 10 -/* 11 is used for SIGSEGV on windows */ -#define SIGUSR2 12 -#define SIGPIPE 13 -#define SIGALRM 14 -/* 15 is used for SIGTERM on windows */ -#define SIGSTKFLT 16 -#define SIGCHLD 17 -#define SIGCONT 18 -#define SIGSTOP 19 -#define SIGTSTP 20 -/* 21 is used for SIGBREAK on windows */ -/* 22 is used for SIGABRT on windows */ -#define SIGTTIN 23 -#define SIGTTOU 24 -#define SIGURG 25 -#define SIGXCPU 26 -#define SIGXFSZ 27 -#define SIGVTALRM 28 -#define SIGPROF 29 -#define SIGWINCH 30 -#define SIGIO 31 - -typedef _off_t off_t; -typedef int pid_t; -typedef void (Sigfunc)(int); - -#define __attribute__(__x) - -#define SIZEOF_SHORT 2 -#define SIZEOF_INT 4 -#define SIZEOF_LONGLONG 8 - -#define API_EXPORT(x) x -#define API_EXPORT_NONSTD(x) x -#define API_THREAD_FUNC __stdcall -#define API_VAR_IMPORT _declspec(dllimport) - -#define strcasecmp(s1, s2) stricmp(s1, s2) -#define sleep(t) Sleep(t * 1000) - -time_t WinTimeToUnixTime(FILETIME *); -unsigned __stdcall SignalHandling(void *); - -int thread_ready(void); - -#endif /*APR_WIN_H*/ -#endif /*WIN32*/ diff --git a/include/arch/beos/locks.h b/include/arch/beos/locks.h deleted file mode 100644 index 3d8ad8b2f..000000000 --- a/include/arch/beos/locks.h +++ /dev/null @@ -1,79 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include -#include "apr_lock.h" -#include "apr_file_io.h" - -struct lock_t { - ap_context_t *cntxt; - ap_locktype_e type; - int curr_locked; - char *fname; - /* Inter proc */ - sem_id sem_interproc; - int32 ben_interproc; - /* Intra Proc */ - sem_id sem_intraproc; - int32 ben_intraproc; - /* At some point, we should do a type for both inter and intra process - * locking here. Something like pthread_mutex with PTHREAD_PROCESS_SHARED - */ -}; - -#endif /* LOCKS_H */ - diff --git a/include/arch/beos/threadproc.h b/include/arch/beos/threadproc.h deleted file mode 100644 index 64e87052f..000000000 --- a/include/arch/beos/threadproc.h +++ /dev/null @@ -1,124 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "fileio.h" -#include "apr_file_io.h" -#include - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define SHELL_PATH "/bin/sh" - -#define PTHREAD_CANCEL_AYNCHRONOUS CANCEL_ASYNCH; -#define PTHREAD_CANCEL_DEFERRED CANCEL_DEFER; - -#define PTHREAD_CANCEL_ENABLE CANCEL_ENABLE; -#define PTHREAD_CANCEL_DISABLE CANCEL_DISABLE; - -#define BEOS_MAX_DATAKEYS 128 - -struct thread_t { - ap_context_t *cntxt; - thread_id td; -}; - -struct threadattr_t { - ap_context_t *cntxt; - int32 attr; - int detached; - int joinable; -}; - -struct threadkey_t { - ap_context_t *cntxt; - int32 key; -}; - -struct beos_private_data { - const void ** data; - int count; - volatile thread_id td; -}; - -struct beos_key { - int assigned; - int count; - sem_id lock; - int32 ben_lock; - void (* destructor) (); -}; - -struct procattr_t { - ap_context_t *cntxt; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; -}; - -struct proc_t { - ap_context_t *cntxt; - pid_t pid; - struct procattr_t *attr; -}; - -#endif /* ! THREAD_PROC_H */ - diff --git a/include/arch/os2/fileio.h b/include/arch/os2/fileio.h deleted file mode 100644 index 0d40b4af7..000000000 --- a/include/arch/os2/fileio.h +++ /dev/null @@ -1,94 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#define INCL_DOS -#include - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct file_t { - ap_context_t *cntxt; - ULONG filedes; - char * fname; - int isopen; - int buffered; - FILESTATUS3 status; - int validstatus; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - ULONG handle; - FILEFINDBUF3 entry; - int validentry; -}; - -struct iovec_t { - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void *); -mode_t get_fileperms(ap_fileperms_t); -long os2date2unix( FDATE os2date, FTIME os2time ); -int os2errno( ULONG oserror ); - -#endif /* ! FILE_IO_H */ - diff --git a/include/arch/os2/locks.h b/include/arch/os2/locks.h deleted file mode 100644 index 86c304d1d..000000000 --- a/include/arch/os2/locks.h +++ /dev/null @@ -1,72 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include "apr_lock.h" -#include "apr_file_io.h" -#define INCL_DOS -#include - -struct lock_t { - ap_context_t *cntxt; - ap_locktype_e type; - int curr_locked; - char *fname; - HMTX hMutex; -}; - -#endif /* LOCKS_H */ - diff --git a/include/arch/os2/threadproc.h b/include/arch/os2/threadproc.h deleted file mode 100644 index 215a7f9fd..000000000 --- a/include/arch/os2/threadproc.h +++ /dev/null @@ -1,108 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_file_io.h" - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define APR_THREADATTR_DETACHED 1 - -#define SHELL_PATH "cmd.exe" -#define APR_THREAD_STACKSIZE 65536 - -struct threadattr_t { - ap_context_t *cntxt; - unsigned long attr; -}; - -struct thread_t { - ap_context_t *cntxt; - struct threadattr_t *attr; - unsigned long tid; - ap_thread_start_t func; - void *data; - void *rv; -}; - -struct threadkey_t { - ap_context_t *cntxt; - unsigned long *key; -}; - -struct procattr_t { - ap_context_t *cntxt; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; -}; - -struct proc_t { - ap_context_t *cntxt; - pid_t pid; - struct procattr_t *attr; - int running; -}; - -typedef void (*os2_thread_start_t)(void *); - -#endif /* ! THREAD_PROC_H */ - diff --git a/include/arch/unix/fileio.h b/include/arch/unix/fileio.h deleted file mode 100644 index 1800205fb..000000000 --- a/include/arch/unix/fileio.h +++ /dev/null @@ -1,103 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#include -#include -#include -#include -#include -#include -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct file_t { - ap_context_t *cntxt; - int filedes; - FILE *filehand; - char * fname; - int oflags; - int buffered; - int stated; - int eof_hit; - mode_t protection; - uid_t user; - gid_t group; - off_t size; - time_t atime; - time_t mtime; - time_t ctime; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - DIR *dirstruct; - struct dirent *entry; -}; - -struct iovec_t { - ap_context_t *cntxt; - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void *); -mode_t get_fileperms(ap_fileperms_t); - -#endif /* ! FILE_IO_H */ - diff --git a/include/arch/unix/locks.h b/include/arch/unix/locks.h deleted file mode 100644 index cb83bf264..000000000 --- a/include/arch/unix/locks.h +++ /dev/null @@ -1,112 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include "apr_lock.h" -#include "apr_file_io.h" - -#if defined (USE_USLOCK_SERIALIZE) -#include -#elif defined (USE_SYSVSEM_SERIALIZE) -#include -#include -#include -#include -#elif defined (USE_FLOCK_SERIALIZE) || (USE_FCNTL_SERIALIZE) -#include -#include -#endif -#include - -#ifndef HAVE_UNION_SEMUN -/* it makes no sense, but this isn't defined on solaris */ -union semun { - long val; - struct semid_ds *buf; - ushort *array; -}; -#endif - -struct lock_t { - ap_context_t *cntxt; - ap_locktype_e type; - int curr_locked; - char *fname; -#if defined (USE_SYSVSEM_SERIALIZE) - int interproc; - struct sembuf op_on; - struct sembuf op_off; -#elif defined (USE_FCNTL_SERIALIZE) - int interproc; - struct flock lock_it; - struct flock unlock_it; -#elif defined (USE_PROC_PTHREAD_SERIALIZE) - pthread_mutex_t *interproc; -#elif defined (USE_FLOCK_SERIALIZE) - int interproc; -#else - /* No Interprocess serialization. Too bad. */ -#endif -#if defined (USE_PTHREAD_SERIALIZE) - pthread_mutex_t *intraproc; -#endif - /* At some point, we should do a type for both inter and intra process - * locking here. Something like pthread_mutex with PTHREAD_PROCESS_SHARED - */ -}; - -#endif /* LOCKS_H */ - diff --git a/include/arch/unix/misc.h b/include/arch/unix/misc.h deleted file mode 100644 index a496c372e..000000000 --- a/include/arch/unix/misc.h +++ /dev/null @@ -1,71 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef MISC_H -#define MISC_H - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct context_t { - struct ap_pool_t *pool; - ap_int16_t signal_safe; - ap_int16_t cancel_safe; - void *prog_data; -}; - -#endif /* ! MISC_H */ - diff --git a/include/arch/unix/threadproc.h b/include/arch/unix/threadproc.h deleted file mode 100644 index fc9755011..000000000 --- a/include/arch/unix/threadproc.h +++ /dev/null @@ -1,105 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define SHELL_PATH "/bin/sh" - -struct thread_t { - ap_context_t *cntxt; - pthread_t *td; -}; - -struct threadattr_t { - ap_context_t *cntxt; - pthread_attr_t *attr; -}; - -struct threadkey_t { - ap_context_t *cntxt; - pthread_key_t key; -}; - -struct procattr_t { - ap_context_t *cntxt; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; - ap_int32_t detached; -}; - -struct proc_t { - ap_context_t *cntxt; - pid_t pid; - struct procattr_t *attr; -}; - -/*This will move to apr_threadproc.h in time, but I need to figure it out - * on windows first. :) - */ -ap_status_t ap_detach(ap_context_t *, struct proc_t **); - -#endif /* ! THREAD_PROC_H */ - diff --git a/include/arch/win32/atime.h b/include/arch/win32/atime.h deleted file mode 100644 index cba8000da..000000000 --- a/include/arch/win32/atime.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef ATIME_H -#define ATIME_H - -#include "apr_time.h" -#include - -struct atime_t { - ap_context_t *cntxt; - time_t currtime; - SYSTEMTIME *explodedtime; -}; - - -#endif /* ! ATIME_H */ - diff --git a/include/arch/win32/fileio.h b/include/arch/win32/fileio.h deleted file mode 100644 index 5bb8f9a6e..000000000 --- a/include/arch/win32/fileio.h +++ /dev/null @@ -1,121 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef FILE_IO_H -#define FILE_IO_H - -#ifdef HAVE_SYS_STAT_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_FCNTL_H -#include -#endif -#ifdef HAVE_TIME_H -#include -#endif -#ifdef HAVE_DIRENT_H -#include -#endif -#ifdef HAVE_UIO_H -#include -#endif -#include "apr_win.h" -#include "apr_pools.h" -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct file_t { - ap_context_t *cntxt; - HANDLE filehand; - char *fname; - char *demonfname; - char *lowerdemonfname; - int buffered; - int append; - int eof_hit; -/* mode_t protection; - uid_t user; - gid_t group;*/ - off_t size; - time_t atime; - time_t mtime; - time_t ctime; -}; - -struct dir_t { - ap_context_t *cntxt; - char *dirname; - HANDLE dirhand; - WIN32_FIND_DATA *entry; -}; - -struct iovec_t { - ap_context_t *cntxt; - struct iovec *iovec; -}; - -ap_status_t file_cleanup(void *); -/*mode_t get_fileperms(ap_fileperms_t); -*/ -API_EXPORT(char *) ap_os_systemcase_filename(struct context_t *pCont, - const char *szFile); -char * canonical_filename(struct context_t *pCont, const char *szFile); - -#endif /* ! FILE_IO_H */ - diff --git a/include/arch/win32/locks.h b/include/arch/win32/locks.h deleted file mode 100644 index 7ae4f7031..000000000 --- a/include/arch/win32/locks.h +++ /dev/null @@ -1,67 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include "apr_lock.h" - -struct lock_t { - ap_context_t *cntxt; - HANDLE mutex; - char *fname; -}; - -#endif /* LOCKS_H */ - diff --git a/include/arch/win32/threadproc.h b/include/arch/win32/threadproc.h deleted file mode 100644 index 72d71af1d..000000000 --- a/include/arch/win32/threadproc.h +++ /dev/null @@ -1,105 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include "apr_win.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define SHELL_PATH "/bin/sh" - -struct thread_t { - ap_context_t *cntxt; - HANDLE td; - ap_int32_t cancel; - ap_int32_t cancel_how; -}; - -struct threadattr_t { - ap_context_t *cntxt; - ap_int32_t detach; - -}; - -struct threadkey_t { - ap_context_t *cntxt; - DWORD key; - -}; - -struct procattr_t { - ap_context_t *cntxt; - STARTUPINFO si; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; - ap_int32_t detached; -}; - -struct proc_t { - ap_context_t *cntxt; - PROCESS_INFORMATION pi; - struct procattr_t *attr; -}; - -#endif /* ! THREAD_PROC_H */ - diff --git a/lib/Makefile.in b/lib/Makefile.in deleted file mode 100644 index 25ae2f24b..000000000 --- a/lib/Makefile.in +++ /dev/null @@ -1,89 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -AR=@AR@ -RM=@RM@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../inc -INCDIR1=../include -INCDIR2=../misc/@OSDIR@ -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) - -LIB=@LIBPREFIX@apr.a - -OBJS=apr_cpystrn.o \ - apr_fnmatch.o \ - apr_execve.o \ - apr_md5.o \ - apr_pools.o \ - apr_signal.o \ - apr_slack.o \ - apr_snprintf.o \ - apr_tables.o \ - apr_getpass.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -apr_cpystrn.o: apr_cpystrn.c $(INCDIR)/apr_config.h -apr_execve.o: apr_execve.c $(INCDIR)/apr_config.h -apr_fnmatch.o: apr_fnmatch.c $(INCDIR)/apr_config.h $(INCDIR)/apr_fnmatch.h \ - $(INCDIR)/apr_lib.h ../include/apr_general.h ../include/apr_config.h \ - ../include/apr_errno.h ../include/apr_file_io.h $(INCDIR)/hsregex.h -apr_getpass.o: apr_getpass.c $(INCDIR)/apr_config.h \ - ../include/apr_errno.h $(INCDIR)/apr_lib.h ../include/apr_general.h \ - ../include/apr_config.h ../include/apr_file_io.h $(INCDIR)/hsregex.h -apr_md5.o: apr_md5.c $(INCDIR)/apr_config.h $(INCDIR)/apr_md5.h \ - $(INCDIR)/apr_lib.h ../include/apr_general.h ../include/apr_config.h \ - ../include/apr_errno.h ../include/apr_file_io.h $(INCDIR)/hsregex.h -apr_pools.o: apr_pools.c $(INCDIR)/apr_config.h ../include/apr_general.h \ - ../include/apr_config.h ../include/apr_errno.h ../include/apr_pools.h \ - $(INCDIR)/apr_lib.h ../include/apr_file_io.h $(INCDIR)/hsregex.h \ - ../misc/unix/misc.h -apr_signal.o: apr_signal.c $(INCDIR)/apr_config.h $(INCDIR)/apr_lib.h \ - ../include/apr_general.h ../include/apr_config.h \ - ../include/apr_errno.h ../include/apr_file_io.h $(INCDIR)/hsregex.h -apr_slack.o: apr_slack.c $(INCDIR)/apr_config.h -apr_snprintf.o: apr_snprintf.c $(INCDIR)/apr_config.h $(INCDIR)/apr_lib.h \ - ../include/apr_general.h ../include/apr_config.h \ - ../include/apr_errno.h ../include/apr_file_io.h $(INCDIR)/hsregex.h -apr_tables.o: apr_tables.c $(INCDIR)/apr_config.h \ - ../include/apr_general.h ../include/apr_config.h \ - ../include/apr_errno.h ../include/apr_pools.h $(INCDIR)/apr_lib.h \ - ../include/apr_file_io.h $(INCDIR)/hsregex.h ../misc/unix/misc.h diff --git a/lib/apr_cpystrn.c b/lib/apr_cpystrn.c deleted file mode 100644 index ed24b600a..000000000 --- a/lib/apr_cpystrn.c +++ /dev/null @@ -1,101 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif - -#if HAVE_SYS_TYPES_H -#include -#endif - -/* - * Apache's "replacement" for the strncpy() function. We roll our - * own 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 '\0' to allow us to "check" for truncation - * - * apr_cpystrn() follows the same call structure as strncpy(). - */ - -API_EXPORT(char *) apr_cpystrn(char *dst, const char *src, size_t dst_size) -{ - - char *d, *end; - - if (dst_size == 0) { - return (dst); - } - - d = dst; - end = dst + dst_size - 1; - - for (; d < end; ++d, ++src) { - if (!(*d = *src)) { - return (d); - } - } - - *d = '\0'; /* always null terminate */ - - return (d); -} diff --git a/lib/apr_execve.c b/lib/apr_execve.c deleted file mode 100644 index d584a8551..000000000 --- a/lib/apr_execve.c +++ /dev/null @@ -1,390 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1998-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - * Portions of this code are under this license: - * - * Copyright (c) 1980, 1991 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. - */ -#ifndef WIN32 -#include "apr_config.h" -#endif -/*---------------------------------------------------------------*/ - -#ifdef NEED_HASHBANG_EMUL - -#undef execle -#undef execve - -static const char **hashbang(const char *filename, char **argv); - - -/* Historically, a list of arguments on the stack was often treated as - * being equivalent to an array (since they already were "contiguous" - * on the stack, and the arguments were pushed in the correct order). - * On today's processors, this is not necessarily equivalent, because - * often arguments are padded or passed partially in registers, - * or the stack direction is backwards. - * To be on the safe side, we copy the argument list to our own - * local argv[] array. The va_arg logic makes sure we do the right thing. - * XXX: malloc() is used because we expect to be overlaid soon. - */ -int apr_execle(const char *filename, const char *argv0, ...) -{ - va_list adummy; - char **envp; - char **argv; - int argc, ret; - - /* First pass: Count arguments on stack */ - va_start(adummy, argv0); - for (argc = 1; va_arg(adummy, char *) != NULL; ++argc) { - continue; - } - va_end(adummy); - - if ((argv = (char **) malloc((argc + 2) * sizeof(*argv))) == NULL) { - fprintf(stderr, "Ouch! Out of memory in apr_execle()!\n"); - return -1; - } - - /* Pass two --- copy the argument strings into the result space */ - va_start(adummy, argv0); - argv[0] = argv0; - for (argc = 1; (argv[argc] = va_arg(adummy, char *)) != NULL; ++argc) { - continue; - } - envp = va_arg(adummy, char **); - va_end(adummy); - - ret = apr_execve(filename, argv, envp); - free(argv); - - return ret; -} - -/* Count number of entries in vector "args", including the trailing NULL entry - */ -static int -count_args(const char **args) -{ - int i; - for (i = 0; args[i] != NULL; ++i) { - continue; - } - return i+1; -} - -/* Emulate the execve call, respecting a #!/interpreter line if present. - * On "real" unixes, the kernel does this. - * We have to fiddle with the argv array to make it work on platforms - * which don't support the "hashbang" interpreter line by default. - */ -int apr_execve(const char *filename, const char *argv[], - const char *envp[]) -{ - const char **script_argv; - extern char **environ; - - if (envp == NULL) { - envp = (const char **) environ; - } - - /* Try to execute the file directly first: */ - execve(filename, argv, envp); - - /* Still with us? Then something went seriously wrong. - * From the (linux) man page: - * EACCES The file is not a regular file. - * EACCES Execute permission is denied for the file. - * EACCES Search permission is denied on a component of the path prefix. - * EPERM The file system is mounted noexec. - * EPERM The file system is mounted nosuid and the file has an SUID - * or SGID bit set. - * E2BIG The argument list is too big. - * ENOEXEC The magic number in the file is incorrect. - * EFAULT filename points outside your accessible address space. - * ENAMETOOLONG filename is too long. - * ENOENT The file does not exist. - * ENOMEM Insufficient kernel memory was available. - * ENOTDIR A component of the path prefix is not a directory. - * ELOOP filename contains a circular reference (i.e., via a symbolic link) - */ - - if (errno == ENOEXEC) { - /* Probably a script. - * Have a look; if there's a "#!" header then try to emulate - * the feature found in all modern OS's: - * Interpret the line following the #! as a command line - * in shell style. - */ - if ((script_argv = hashbang(filename, argv)) != NULL) { - - /* new filename is the interpreter to call */ - filename = script_argv[0]; - - /* Restore argv[0] as on entry */ - if (argv[0] != NULL) { - script_argv[0] = argv[0]; - } - - execve(filename, script_argv, envp); - - free(script_argv); - } - /* - * Script doesn't start with a hashbang line! - * So, try to have the default shell execute it. - * For this, the size of argv must be increased by one - * entry: the shell's name. The remaining args are appended. - */ - else { - int i = count_args(argv) + 1; /* +1 for leading SHELL_PATH */ - - if ((script_argv = malloc(sizeof(*script_argv) * i)) == NULL) { - fprintf(stderr, "Ouch! Out of memory in apr_execve()!\n"); - return -1; - } - - script_argv[0] = SHELL_PATH; - - while (i > 0) { - script_argv[i] = argv[i-1]; - --i; - } - - execve(SHELL_PATH, script_argv, envp); - - free(script_argv); - } - } - return -1; -} - -/*---------------------------------------------------------------*/ - -/* - * From: peter@zeus.dialix.oz.au (Peter Wemm) - * (taken from tcsh) - * If exec() fails look first for a #! [word] [word] .... - * If it is, splice the header into the argument list and retry. - * Return value: the original argv array (sans argv[0]), with the - * script's argument list prepended. - * XXX: malloc() is used so that everything can be free()ed after a failure. - */ -#define HACKBUFSZ 1024 /* Max chars in #! vector */ -#define HACKVECSZ 128 /* Max words in #! vector */ -static const char **hashbang(const char *filename, char **argv) -{ - char lbuf[HACKBUFSZ]; - char *sargv[HACKVECSZ]; - const char **newargv; - char *p, *ws; - int fd; - int sargc = 0; - int i, j; -#ifdef WIN32 - int fw = 0; /* found at least one word */ - int first_word = 0; -#endif /* WIN32 */ - - if ((fd = open(filename, O_RDONLY)) == -1) { - return NULL; - } - - if (read(fd, (char *) lbuf, 2) != 2 - || lbuf[0] != '#' || lbuf[1] != '!' - || read(fd, (char *) lbuf, HACKBUFSZ) <= 0) { - close(fd); - return NULL; - } - - close(fd); - - ws = NULL; /* word started = 0 */ - - for (p = lbuf; p < &lbuf[HACKBUFSZ];) { - switch (*p) { - case ' ': - case '\t': -#ifdef NEW_CRLF - case '\r': -#endif /*NEW_CRLF */ - if (ws) { /* a blank after a word.. save it */ - *p = '\0'; -#ifndef WIN32 - if (sargc < HACKVECSZ - 1) { - sargv[sargc++] = ws; - } - ws = NULL; -#else /* WIN32 */ - if (sargc < HACKVECSZ - 1) { - sargv[sargc] = first_word ? NULL : hb_subst(ws); - if (sargv[sargc] == NULL) { - sargv[sargc] = ws; - } - sargc++; - } - ws = NULL; - fw = 1; - first_word = 1; -#endif /* WIN32 */ - } - p++; - continue; - - case '\0': /* Whoa!! what the hell happened */ - return NULL; - - case '\n': /* The end of the line. */ - if ( -#ifdef WIN32 - fw || -#endif /* WIN32 */ - ws) { /* terminate the last word */ - *p = '\0'; -#ifndef WIN32 - if (sargc < HACKVECSZ - 1) { - sargv[sargc++] = ws; - } -#else /* WIN32 */ - if (sargc < HACKVECSZ - 1) { /* deal with the 1-word case */ - sargv[sargc] = first_word ? NULL : hb_subst(ws); - if (sargv[sargc] == NULL) { - sargv[sargc] = ws; - } - sargc++; - } -#endif /* !WIN32 */ - sargv[sargc] = NULL; - } - /* Count number of entries in the old argv vector */ - for (i = 0; argv[i] != NULL; ++i) { - continue; - } - ++i; - - newargv = (char **) malloc((p - lbuf + 1) - + (i + sargc + 1) * sizeof(*newargv)); - if (newargv == NULL) { - fprintf(stderr, "Ouch! Out of memory in hashbang()!\n"); - return NULL; - } - ws = &((char *) newargv)[(i + sargc + 1) * sizeof(*newargv)]; - - /* Copy entries to allocated memory */ - for (j = 0; j < sargc; ++j) { - newargv[j] = strcpy(ws, sargv[j]); - ws += strlen(ws) + 1; /* skip trailing '\0' */ - } - newargv[sargc] = filename; - - /* Append the old array. The old argv[0] is skipped. */ - if (i > 1) { - memcpy(&newargv[sargc + 1], &argv[1], - (i - 1) * sizeof(*newargv)); - } - - newargv[sargc + i] = NULL; - - ws = NULL; - - return newargv; - - default: - if (!ws) { /* Start a new word? */ - ws = p; - } - p++; - break; - } - } - return NULL; -} -#else -extern void apr_execve_is_not_here(void); -void apr_execve_is_not_here(void) {} -#endif /* NEED_HASHBANG_EMUL */ diff --git a/lib/apr_fnmatch.c b/lib/apr_fnmatch.c deleted file mode 100644 index c06b08142..000000000 --- a/lib/apr_fnmatch.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (c) 1989, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Guido van Rossum. - * - * 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. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94"; -#endif /* LIBC_SCCS and not lint */ - -/* - * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6. - * Compares a filename or pathname to a pattern. - */ -#ifndef WIN32 -#include "apr_config.h" -#endif -#include "apr_fnmatch.h" -#include "apr_lib.h" -#include - -#define EOS '\0' - -static const char *rangematch(const char *, int, int); - -API_EXPORT(int) apr_fnmatch(const char *pattern, const char *string, int flags) -{ - const char *stringstart; - char c, test; - - for (stringstart = string;;) { - switch (c = *pattern++) { - case EOS: - return (*string == EOS ? 0 : FNM_NOMATCH); - case '?': - if (*string == EOS) { - return (FNM_NOMATCH); - } - if (*string == '/' && (flags & FNM_PATHNAME)) { - return (FNM_NOMATCH); - } - if (*string == '.' && (flags & FNM_PERIOD) && - (string == stringstart || - ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) { - return (FNM_NOMATCH); - } - ++string; - break; - case '*': - c = *pattern; - /* Collapse multiple stars. */ - while (c == '*') { - c = *++pattern; - } - - if (*string == '.' && (flags & FNM_PERIOD) && - (string == stringstart || - ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) { - return (FNM_NOMATCH); - } - - /* Optimize for pattern with * at end or before /. */ - if (c == EOS) { - if (flags & FNM_PATHNAME) { - return (strchr(string, '/') == NULL ? 0 : FNM_NOMATCH); - } - else { - return (0); - } - } - else if (c == '/' && flags & FNM_PATHNAME) { - if ((string = strchr(string, '/')) == NULL) { - return (FNM_NOMATCH); - } - break; - } - - /* General case, use recursion. */ - while ((test = *string) != EOS) { - if (!apr_fnmatch(pattern, string, flags & ~FNM_PERIOD)) { - return (0); - } - if (test == '/' && flags & FNM_PATHNAME) { - break; - } - ++string; - } - return (FNM_NOMATCH); - case '[': - if (*string == EOS) { - return (FNM_NOMATCH); - } - if (*string == '/' && flags & FNM_PATHNAME) { - return (FNM_NOMATCH); - } - if (*string == '.' && (flags & FNM_PERIOD) && - (string == stringstart || - ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) { - return (FNM_NOMATCH); - } - if ((pattern = rangematch(pattern, *string, flags)) == NULL) { - return (FNM_NOMATCH); - } - ++string; - break; - case '\\': - if (!(flags & FNM_NOESCAPE)) { - if ((c = *pattern++) == EOS) { - c = '\\'; - --pattern; - } - } - /* FALLTHROUGH */ - default: - if (flags & FNM_CASE_BLIND) { - if (apr_tolower(c) != apr_tolower(*string)) { - return (FNM_NOMATCH); - } - } - else if (c != *string) { - return (FNM_NOMATCH); - } - string++; - break; - } - /* NOTREACHED */ - } -} - -static const char *rangematch(const char *pattern, int test, int flags) -{ - int negate, ok; - char c, c2; - - /* - * A bracket expression starting with an unquoted circumflex - * character produces unspecified results (IEEE 1003.2-1992, - * 3.13.2). This implementation treats it like '!', for - * consistency with the regular expression syntax. - * J.T. Conklin (conklin@ngai.kaleida.com) - */ - if ((negate = (*pattern == '!' || *pattern == '^'))) { - ++pattern; - } - - for (ok = 0; (c = *pattern++) != ']';) { - if (c == '\\' && !(flags & FNM_NOESCAPE)) { - c = *pattern++; - } - if (c == EOS) { - return (NULL); - } - if (*pattern == '-' && (c2 = *(pattern + 1)) != EOS && c2 != ']') { - pattern += 2; - if (c2 == '\\' && !(flags & FNM_NOESCAPE)) { - c2 = *pattern++; - } - if (c2 == EOS) { - return (NULL); - } - if ((c <= test && test <= c2) - || ((flags & FNM_CASE_BLIND) - && ((apr_tolower(c) <= apr_tolower(test)) - && (apr_tolower(test) <= apr_tolower(c2))))) { - ok = 1; - } - } - else if ((c == test) - || ((flags & FNM_CASE_BLIND) - && (apr_tolower(c) == apr_tolower(test)))) { - ok = 1; - } - } - return (ok == negate ? NULL : pattern); -} - - -/* This function is an Apache addition */ -/* return non-zero if pattern has any glob chars in it */ -API_EXPORT(int) apr_is_fnmatch(const char *pattern) -{ - int nesting; - - nesting = 0; - while (*pattern) { - switch (*pattern) { - case '?': - case '*': - return 1; - - case '\\': - if (*pattern++ == '\0') { - return 0; - } - break; - - case '[': /* '[' is only a glob if it has a matching ']' */ - ++nesting; - break; - - case ']': - if (nesting) { - return 1; - } - break; - } - ++pattern; - } - return 0; -} diff --git a/lib/apr_getpass.c b/lib/apr_getpass.c deleted file mode 100644 index 036c8c1ee..000000000 --- a/lib/apr_getpass.c +++ /dev/null @@ -1,173 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -/* - * ap_getpass.c: abstraction to provide for obtaining a password from the - * command line in whatever way the OS supports. In the best case, it's a - * wrapper for the system library's getpass() routine; otherwise, we - * use one we define ourselves. - */ -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif -#include "apr_errno.h" -#include -#include -#include "apr_lib.h" - -#ifdef WIN32 -#include -#endif - -#ifndef CHARSET_EBCDIC -#define LF 10 -#define CR 13 -#else /* CHARSET_EBCDIC */ -#define LF '\n' -#define CR '\r' -#endif /* CHARSET_EBCDIC */ - -#define MAX_STRING_LEN 256 - -#define ERR_OVERFLOW 5 - -#ifdef MPE -/* - * MPE lacks getpass() and a way to suppress stdin echo. So for now, just - * issue the prompt and read the results with echo. (Ugh). - */ - -static char *getpass(const char *prompt) -{ - static char password[MAX_STRING_LEN]; - - fputs(prompt, stderr); - gets((char *) &password); - - if (strlen((char *) &password) > (MAX_STRING_LEN - 1)) { - password[MAX_STRING_LEN - 1] = '\0'; - } - - return (char *) &password; -} - -#endif - -#ifdef WIN32 -/* - * Windows lacks getpass(). So we'll re-implement it here. - */ - -static char *getpass(const char *prompt) -{ - static char password[MAX_STRING_LEN]; - int n = 0; - - fputs(prompt, stderr); - - while ((password[n] = _getch()) != '\r') { - if (password[n] >= ' ' && password[n] <= '~') { - n++; - printf("*"); - } - else { - printf("\n"); - fputs(prompt, stderr); - n = 0; - } - } - - password[n] = '\0'; - printf("\n"); - - if (n > (MAX_STRING_LEN - 1)) { - password[MAX_STRING_LEN - 1] = '\0'; - } - - return (char *) &password; -} -#endif - -/* - * Use the OS getpass() routine (or our own) to obtain a password from - * the input stream. - * - * Exit values: - * 0: Success - * 5: Partial success; entered text truncated to the size of the - * destination buffer - * - * Restrictions: Truncation also occurs according to the host system's - * getpass() semantics, or at position 255 if our own version is used, - * but the caller is *not* made aware of it. - */ - -API_EXPORT(ap_status_t) ap_getpass(const char *prompt, char *pwbuf, size_t *bufsiz) -{ - char *pw_got; - int result = 0; - - pw_got = getpass(prompt); - if (strlen(pw_got) > (*bufsiz - 1)) { - *bufsiz = ERR_OVERFLOW; - return APR_ENAMETOOLONG; - } - apr_cpystrn(pwbuf, pw_got, *bufsiz); - *bufsiz = result; - return APR_SUCCESS; -} diff --git a/lib/apr_md5.c b/lib/apr_md5.c deleted file mode 100644 index e41cfde2a..000000000 --- a/lib/apr_md5.c +++ /dev/null @@ -1,609 +0,0 @@ -/* - * 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. - */ - -/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm - */ - -/* 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 (c) 1996-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - * The apr_MD5Encode() routine uses much code obtained from the FreeBSD 3.0 - * MD5 crypt() function, which is licenced as follows: - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - */ -#ifndef WIN32 -#include "apr_config.h" -#endif -#include "apr_md5.h" -#include "apr_lib.h" - -#ifdef HAVE_CRYPT_H -#include -#endif - -/* Constants for MD5Transform routine. - */ - -#define S11 7 -#define S12 12 -#define S13 17 -#define S14 22 -#define S21 5 -#define S22 9 -#define S23 14 -#define S24 20 -#define S31 4 -#define S32 11 -#define S33 16 -#define S34 23 -#define S41 6 -#define S42 10 -#define S43 15 -#define S44 21 - -static void MD5Transform(UINT4 state[4], const unsigned char block[64]); -static void Encode(unsigned char *output, const UINT4 *input, - unsigned int len); -static void Decode(UINT4 *output, const unsigned char *input, - unsigned int len); - -static unsigned char PADDING[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -/* F, G, H and I are basic MD5 functions. - */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define I(x, y, z) ((y) ^ ((x) | (~z))) - -/* ROTATE_LEFT rotates x left n bits. - */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. - Rotation is separate from addition to prevent recomputation. - */ -#define FF(a, b, c, d, x, s, ac) { \ - (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define GG(a, b, c, d, x, s, ac) { \ - (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define HH(a, b, c, d, x, s, ac) { \ - (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define II(a, b, c, d, x, s, ac) { \ - (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } - -/* MD5 initialization. Begins an MD5 operation, writing a new context. - */ -API_EXPORT(void) apr_MD5Init(APR_MD5_CTX * context) -{ - context->count[0] = context->count[1] = 0; - /* Load magic initialization constants. */ - context->state[0] = 0x67452301; - context->state[1] = 0xefcdab89; - context->state[2] = 0x98badcfe; - context->state[3] = 0x10325476; -} - -/* MD5 block update operation. Continues an MD5 message-digest - operation, processing another message block, and updating the - context. - */ -API_EXPORT(void) apr_MD5Update(APR_MD5_CTX * context, const unsigned char *input, - unsigned int inputLen) -{ - unsigned int i, idx, partLen; - - /* Compute number of bytes mod 64 */ - idx = (unsigned int) ((context->count[0] >> 3) & 0x3F); - - /* Update number of bits */ - if ((context->count[0] += ((UINT4) inputLen << 3)) < ((UINT4) inputLen << 3)) - context->count[1]++; - context->count[1] += (UINT4) inputLen >> 29; - - partLen = 64 - idx; - - /* Transform as many times as possible. */ -#ifndef CHARSET_EBCDIC - if (inputLen >= partLen) { - memcpy(&context->buffer[idx], input, partLen); - MD5Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) - MD5Transform(context->state, &input[i]); - - idx = 0; - } - else - i = 0; - - /* Buffer remaining input */ - memcpy(&context->buffer[idx], &input[i], inputLen - i); -#else /*CHARSET_EBCDIC*/ - if (inputLen >= partLen) { - ebcdic2ascii_strictly(&context->buffer[idx], input, partLen); - MD5Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) { - unsigned char inp_tmp[64]; - ebcdic2ascii_strictly(inp_tmp, &input[i], 64); - MD5Transform(context->state, inp_tmp); - } - - idx = 0; - } - else - i = 0; - - /* Buffer remaining input */ - ebcdic2ascii_strictly(&context->buffer[idx], &input[i], inputLen - i); -#endif /*CHARSET_EBCDIC*/ -} - -/* MD5 finalization. Ends an MD5 message-digest operation, writing the - the message digest and zeroizing the context. - */ -API_EXPORT(void) apr_MD5Final(unsigned char digest[16], APR_MD5_CTX * context) -{ - unsigned char bits[8]; - unsigned int idx, padLen; - - - /* Save number of bits */ - Encode(bits, context->count, 8); - -#ifdef CHARSET_EBCDIC - /* XXX: @@@: In order to make this no more complex than necessary, - * this kludge converts the bits[] array using the ascii-to-ebcdic - * table, because the following apr_MD5Update() re-translates - * its input (ebcdic-to-ascii). - * Otherwise, we would have to pass a "conversion" flag to apr_MD5Update() - */ - ascii2ebcdic(bits,bits,8); - - /* Since everything is converted to ascii within apr_MD5Update(), - * the initial 0x80 (PADDING[0]) must be stored as 0x20 - */ - PADDING[0] = os_toebcdic[0x80]; -#endif /*CHARSET_EBCDIC*/ - - /* Pad out to 56 mod 64. */ - idx = (unsigned int) ((context->count[0] >> 3) & 0x3f); - padLen = (idx < 56) ? (56 - idx) : (120 - idx); - apr_MD5Update(context, PADDING, padLen); - - /* Append length (before padding) */ - apr_MD5Update(context, bits, 8); - - /* Store state in digest */ - Encode(digest, context->state, 16); - - /* Zeroize sensitive information. */ - memset(context, 0, sizeof(*context)); -} - -/* MD5 basic transformation. Transforms state based on block. */ -static void MD5Transform(UINT4 state[4], const unsigned char block[64]) -{ - UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; - - Decode(x, block, 64); - - /* Round 1 */ - FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */ - FF(d, a, b, c, x[1], S12, 0xe8c7b756); /* 2 */ - FF(c, d, a, b, x[2], S13, 0x242070db); /* 3 */ - FF(b, c, d, a, x[3], S14, 0xc1bdceee); /* 4 */ - FF(a, b, c, d, x[4], S11, 0xf57c0faf); /* 5 */ - FF(d, a, b, c, x[5], S12, 0x4787c62a); /* 6 */ - FF(c, d, a, b, x[6], S13, 0xa8304613); /* 7 */ - FF(b, c, d, a, x[7], S14, 0xfd469501); /* 8 */ - FF(a, b, c, d, x[8], S11, 0x698098d8); /* 9 */ - FF(d, a, b, c, x[9], S12, 0x8b44f7af); /* 10 */ - FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[1], S21, 0xf61e2562); /* 17 */ - GG(d, a, b, c, x[6], S22, 0xc040b340); /* 18 */ - GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - GG(b, c, d, a, x[0], S24, 0xe9b6c7aa); /* 20 */ - GG(a, b, c, d, x[5], S21, 0xd62f105d); /* 21 */ - GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - GG(b, c, d, a, x[4], S24, 0xe7d3fbc8); /* 24 */ - GG(a, b, c, d, x[9], S21, 0x21e1cde6); /* 25 */ - GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - GG(c, d, a, b, x[3], S23, 0xf4d50d87); /* 27 */ - GG(b, c, d, a, x[8], S24, 0x455a14ed); /* 28 */ - GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - GG(d, a, b, c, x[2], S22, 0xfcefa3f8); /* 30 */ - GG(c, d, a, b, x[7], S23, 0x676f02d9); /* 31 */ - GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[5], S31, 0xfffa3942); /* 33 */ - HH(d, a, b, c, x[8], S32, 0x8771f681); /* 34 */ - HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - HH(a, b, c, d, x[1], S31, 0xa4beea44); /* 37 */ - HH(d, a, b, c, x[4], S32, 0x4bdecfa9); /* 38 */ - HH(c, d, a, b, x[7], S33, 0xf6bb4b60); /* 39 */ - HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - HH(d, a, b, c, x[0], S32, 0xeaa127fa); /* 42 */ - HH(c, d, a, b, x[3], S33, 0xd4ef3085); /* 43 */ - HH(b, c, d, a, x[6], S34, 0x4881d05); /* 44 */ - HH(a, b, c, d, x[9], S31, 0xd9d4d039); /* 45 */ - HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - HH(b, c, d, a, x[2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II(a, b, c, d, x[0], S41, 0xf4292244); /* 49 */ - II(d, a, b, c, x[7], S42, 0x432aff97); /* 50 */ - II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - II(b, c, d, a, x[5], S44, 0xfc93a039); /* 52 */ - II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - II(d, a, b, c, x[3], S42, 0x8f0ccc92); /* 54 */ - II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - II(b, c, d, a, x[1], S44, 0x85845dd1); /* 56 */ - II(a, b, c, d, x[8], S41, 0x6fa87e4f); /* 57 */ - II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - II(c, d, a, b, x[6], S43, 0xa3014314); /* 59 */ - II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - II(a, b, c, d, x[4], S41, 0xf7537e82); /* 61 */ - II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - II(c, d, a, b, x[2], S43, 0x2ad7d2bb); /* 63 */ - II(b, c, d, a, x[9], S44, 0xeb86d391); /* 64 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - - /* Zeroize sensitive information. */ - memset(x, 0, sizeof(x)); -} - -/* Encodes input (UINT4) into output (unsigned char). Assumes len is - a multiple of 4. - */ -static void Encode(unsigned char *output, const UINT4 *input, unsigned int len) -{ - unsigned int i, j; - UINT4 k; - - for (i = 0, j = 0; j < len; i++, j += 4) { - k = input[i]; - output[j] = (unsigned char) (k & 0xff); - output[j + 1] = (unsigned char) ((k >> 8) & 0xff); - output[j + 2] = (unsigned char) ((k >> 16) & 0xff); - output[j + 3] = (unsigned char) ((k >> 24) & 0xff); - } -} - -/* Decodes input (unsigned char) into output (UINT4). Assumes len is - * a multiple of 4. - */ -static void Decode(UINT4 *output, const unsigned char *input, unsigned int len) -{ - unsigned int i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((UINT4) input[j]) | (((UINT4) input[j + 1]) << 8) | - (((UINT4) input[j + 2]) << 16) | (((UINT4) input[j + 3]) << 24); -} - -/* - * Define the Magic String prefix that identifies a password as being - * hashed using our algorithm. - */ -static const char *apr1_id = "$apr1$"; - -/* - * The following MD5 password encryption code was largely borrowed from - * the FreeBSD 3.0 /usr/src/lib/libcrypt/crypt.c file, which is - * licenced as stated at the top of this file. - */ - -static void to64(char *s, unsigned long v, int n) -{ - static unsigned char itoa64[] = /* 0 ... 63 => ASCII - 64 */ - "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - - while (--n >= 0) { - *s++ = itoa64[v&0x3f]; - v >>= 6; - } -} - -API_EXPORT(void) apr_MD5Encode(const char *pw, const char *salt, - char *result, size_t nbytes) -{ - /* - * Minimum size is 8 bytes for salt, plus 1 for the trailing NUL, - * plus 4 for the '$' separators, plus the password hash itself. - * Let's leave a goodly amount of leeway. - */ - - char passwd[120], *p; - const char *sp, *ep; - unsigned char final[16]; - int sl, pl, i; - APR_MD5_CTX ctx, ctx1; - unsigned long l; - - /* - * Refine the salt first. It's possible we were given an already-hashed - * string as the salt argument, so extract the actual salt value from it - * if so. Otherwise just use the string up to the first '$' as the salt. - */ - sp = salt; - - /* - * If it starts with the magic string, then skip that. - */ - if (!strncmp(sp, apr1_id, strlen(apr1_id))) { - sp += strlen(apr1_id); - } - - /* - * It stops at the first '$' or 8 chars, whichever comes first - */ - for (ep = sp; (*ep != '\0') && (*ep != '$') && (ep < (sp + 8)); ep++) { - continue; - } - - /* - * Get the length of the true salt - */ - sl = ep - sp; - - /* - * 'Time to make the doughnuts..' - */ - apr_MD5Init(&ctx); - - /* - * The password first, since that is what is most unknown - */ - apr_MD5Update(&ctx, pw, strlen(pw)); - - /* - * Then our magic string - */ - apr_MD5Update(&ctx, apr1_id, strlen(apr1_id)); - - /* - * Then the raw salt - */ - apr_MD5Update(&ctx, sp, sl); - - /* - * Then just as many characters of the MD5(pw, salt, pw) - */ - apr_MD5Init(&ctx1); - apr_MD5Update(&ctx1, pw, strlen(pw)); - apr_MD5Update(&ctx1, sp, sl); - apr_MD5Update(&ctx1, pw, strlen(pw)); - apr_MD5Final(final, &ctx1); - for(pl = strlen(pw); pl > 0; pl -= 16) { - apr_MD5Update(&ctx, final, (pl > 16) ? 16 : pl); - } - - /* - * Don't leave anything around in vm they could use. - */ - memset(final, 0, sizeof(final)); - - /* - * Then something really weird... - */ - for (i = strlen(pw); i != 0; i >>= 1) { - if (i & 1) { - apr_MD5Update(&ctx, final, 1); - } - else { - apr_MD5Update(&ctx, pw, 1); - } - } - - /* - * Now make the output string. We know our limitations, so we - * can use the string routines without bounds checking. - */ - strcpy(passwd, apr1_id); - strncat(passwd, sp, sl); - strcat(passwd, "$"); - - apr_MD5Final(final, &ctx); - - /* - * And now, just to make sure things don't run too fast.. - * On a 60 Mhz Pentium this takes 34 msec, so you would - * need 30 seconds to build a 1000 entry dictionary... - */ - for (i = 0; i < 1000; i++) { - apr_MD5Init(&ctx1); - if (i & 1) { - apr_MD5Update(&ctx1, pw, strlen(pw)); - } - else { - apr_MD5Update(&ctx1, final, 16); - } - if (i % 3) { - apr_MD5Update(&ctx1, sp, sl); - } - - if (i % 7) { - apr_MD5Update(&ctx1, pw, strlen(pw)); - } - - if (i & 1) { - apr_MD5Update(&ctx1, final, 16); - } - else { - apr_MD5Update(&ctx1, pw, strlen(pw)); - } - apr_MD5Final(final,&ctx1); - } - - p = passwd + strlen(passwd); - - l = (final[ 0]<<16) | (final[ 6]<<8) | final[12]; to64(p, l, 4); p += 4; - l = (final[ 1]<<16) | (final[ 7]<<8) | final[13]; to64(p, l, 4); p += 4; - l = (final[ 2]<<16) | (final[ 8]<<8) | final[14]; to64(p, l, 4); p += 4; - l = (final[ 3]<<16) | (final[ 9]<<8) | final[15]; to64(p, l, 4); p += 4; - l = (final[ 4]<<16) | (final[10]<<8) | final[ 5]; to64(p, l, 4); p += 4; - l = final[11] ; to64(p, l, 2); p += 2; - *p = '\0'; - - /* - * Don't leave anything around in vm they could use. - */ - memset(final, 0, sizeof(final)); - - apr_cpystrn(result, passwd, nbytes - 1); -} - -/* - * Validate a plaintext password against a smashed one. Use either - * crypt() (if available) or apr_MD5Encode(), depending upon the format - * of the smashed input password. Return NULL if they match, or - * an explanatory text string if they don't. - */ - -API_EXPORT(char *) apr_validate_password(const char *passwd, const char *hash) -{ - char sample[120]; -#ifndef WIN32 - char *crypt_pw; -#endif - if (!strncmp(hash, apr1_id, strlen(apr1_id))) { - /* - * The hash was created using our custom algorithm. - */ - apr_MD5Encode(passwd, hash, sample, sizeof(sample)); - } - else { - /* - * It's not our algorithm, so feed it to crypt() if possible. - */ -#ifdef WIN32 - apr_cpystrn(sample, passwd, sizeof(sample) - 1); -#else - crypt_pw = crypt(passwd, hash); - apr_cpystrn(sample, crypt_pw, sizeof(sample) - 1); -#endif - } - return (strcmp(sample, hash) == 0) ? NULL : "password mismatch"; -} diff --git a/lib/apr_pools.c b/lib/apr_pools.c deleted file mode 100644 index 1aa2009c0..000000000 --- a/lib/apr_pools.c +++ /dev/null @@ -1,2110 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - * Resource allocation code... the code here is responsible for making - * sure that nothing leaks. - * - * rst --- 4/95 --- 6/95 - */ - -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif - -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_lib.h" -#include "misc.h" -#include -#include - -/* - * Debugging support: Define this to enable code which helps detect re-use - * of freed memory and other such nonsense. - * - * The theory is simple. The FILL_BYTE (0xa5) is written over all malloc'd - * memory as we receive it, and is written over everything that we free up - * during a clear_pool. We check that blocks on the free list always - * have the FILL_BYTE in them, and we check during palloc() that the bytes - * still have FILL_BYTE in them. If you ever see garbage URLs or whatnot - * containing lots of 0xa5s then you know something used data that's been - * freed or uninitialized. - */ -/* #define ALLOC_DEBUG */ - -/* - * Debugging support: If defined all allocations will be done with - * malloc and free()d appropriately at the end. This is intended to be - * used with something like Electric Fence or Purify to help detect - * memory problems. Note that if you're using efence then you should also - * add in ALLOC_DEBUG. But don't add in ALLOC_DEBUG if you're using Purify - * because ALLOC_DEBUG would hide all the uninitialized read errors that - * Purify can diagnose. - */ -/* #define ALLOC_USE_MALLOC */ - -/* - * Pool debugging support: This is intended to detect cases where the - * wrong pool is used when assigning data to an object in another pool. - * In particular, it causes the table_{set,add,merge}n routines to check - * that their arguments are safe for the table they're being placed in. - * It currently only works with the unix multiprocess model, but could - * be extended to others. - */ -/* #define POOL_DEBUG */ - -/* - * Provide diagnostic information about make_table() calls which are - * possibly too small. This requires a recent gcc which supports - * __builtin_return_address(). The error_log output will be a - * message such as: - * table_push: table created by 0x804d874 hit limit of 10 - * Use "l *0x804d874" to find the source that corresponds to. It - * indicates that a table allocated by a call at that address has - * possibly too small an initial table size guess. - */ -/* #define MAKE_TABLE_PROFILE */ - -/* - * Provide some statistics on the cost of allocations. It requires a - * bit of an understanding of how alloc.c works. - */ -/* #define ALLOC_STATS */ - -#ifdef POOL_DEBUG -#ifdef ALLOC_USE_MALLOC -#error "sorry, no support for ALLOC_USE_MALLOC and POOL_DEBUG at the same time" -#endif /* ALLOC_USE_MALLOC */ - -#ifdef MULTITHREAD -# error "sorry, no support for MULTITHREAD and POOL_DEBUG at the same time" -#endif /* MULTITHREAD */ - -#endif /* POOL_DEBUG */ - -#ifdef ALLOC_USE_MALLOC -#undef BLOCK_MINFREE -#undef BLOCK_MINALLOC -#define BLOCK_MINFREE 0 -#define BLOCK_MINALLOC 0 -#endif /* ALLOC_USE_MALLOC */ - -/***************************************************************** - * - * Managing free storage blocks... - */ - -union align { - /* - * Types which are likely to have the longest RELEVANT alignment - * restrictions... - */ - - char *cp; - void (*f) (void); - long l; - FILE *fp; - double d; -}; - -#define CLICK_SZ (sizeof(union align)) - -union block_hdr { - union align a; - - /* Actual header... */ - - struct { - char *endp; - union block_hdr *next; - char *first_avail; -#ifdef POOL_DEBUG - union block_hdr *global_next; - ap_pool_t *owning_pool; -#endif /* POOL_DEBUG */ - } h; -}; - -/* - * Static cells for managing our internal synchronisation. - */ -static union block_hdr *block_freelist = NULL; -static ap_mutex_t *alloc_mutex = NULL; -static ap_mutex_t *spawn_mutex = NULL; - -#ifdef POOL_DEBUG -static char *known_stack_point; -static int stack_direction; -static union block_hdr *global_block_list; -#define FREE_POOL ((ap_pool_t *)(-1)) -#endif /* POOL_DEBUG */ - -#ifdef ALLOC_STATS -static unsigned long long num_free_blocks_calls; -static unsigned long long num_blocks_freed; -static unsigned max_blocks_in_one_free; -static unsigned num_malloc_calls; -static unsigned num_malloc_bytes; -#endif /* ALLOC_STATS */ - -#ifdef ALLOC_DEBUG -#define FILL_BYTE ((char)(0xa5)) -#define debug_fill(ptr,size) ((void)memset((ptr), FILL_BYTE, (size))) - -static APR_INLINE void debug_verify_filled(const char *ptr, const char *endp, - const char *error_msg) -{ - for ( ; ptr < endp; ++ptr) { - if (*ptr != FILL_BYTE) { - fputs(error_msg, stderr); - abort(); - exit(1); - } - } -} - -#else /* ALLOC_DEBUG */ -#define debug_fill(a,b) -#define debug_verify_filled(a,b,c) -#endif /* ALLOC_DEBUG */ - -/* - * Get a completely new block from the system pool. Note that we rely on - * malloc() to provide aligned memory. - */ - -static union block_hdr *malloc_block(int size) -{ - union block_hdr *blok; - -#ifdef ALLOC_DEBUG - /* make some room at the end which we'll fill and expect to be - * always filled - */ - size += CLICK_SZ; -#endif /* ALLOC_DEBUG */ - -#ifdef ALLOC_STATS - ++num_malloc_calls; - num_malloc_bytes += size + sizeof(union block_hdr); -#endif /* ALLOC_STATS */ - - blok = (union block_hdr *) malloc(size + sizeof(union block_hdr)); - if (blok == NULL) { - fprintf(stderr, "Ouch! malloc failed in malloc_block()\n"); - exit(1); - } - debug_fill(blok, size + sizeof(union block_hdr)); - blok->h.next = NULL; - blok->h.first_avail = (char *) (blok + 1); - blok->h.endp = size + blok->h.first_avail; - -#ifdef ALLOC_DEBUG - blok->h.endp -= CLICK_SZ; -#endif /* ALLOC_DEBUG */ - -#ifdef POOL_DEBUG - blok->h.global_next = global_block_list; - global_block_list = blok; - blok->h.owning_pool = NULL; -#endif /* POOL_DEBUG */ - - return blok; -} - - - -#if defined(ALLOC_DEBUG) && !defined(ALLOC_USE_MALLOC) -static void chk_on_blk_list(union block_hdr *blok, union block_hdr *free_blk) -{ - debug_verify_filled(blok->h.endp, blok->h.endp + CLICK_SZ, - "Ouch! Someone trounced the padding " - "at the end of a block!\n"); - while (free_blk) { - if (free_blk == blok) { - fprintf(stderr, "Ouch! Freeing free block\n"); - abort(); - exit(1); - } - free_blk = free_blk->h.next; - } -} -#else /* defined(ALLOC_DEBUG) && !defined(ALLOC_USE_MALLOC) */ -#define chk_on_blk_list(_x, _y) -#endif /* defined(ALLOC_DEBUG) && !defined(ALLOC_USE_MALLOC) */ - -/* Free a chain of blocks --- must be called with alarms blocked. */ - -static void free_blocks(union block_hdr *blok) -{ -#ifdef ALLOC_USE_MALLOC - union block_hdr *next; - - for ( ; blok; blok = next) { - next = blok->h.next; - free(blok); - } -#else /* ALLOC_USE_MALLOC */ - -#ifdef ALLOC_STATS - unsigned num_blocks; -#endif /* ALLOC_STATS */ - - /* - * First, put new blocks at the head of the free list --- - * we'll eventually bash the 'next' pointer of the last block - * in the chain to point to the free blocks we already had. - */ - - union block_hdr *old_free_list; - - if (blok == NULL) { - return; /* Sanity check --- freeing empty pool? */ - } - - (void) ap_acquire_mutex(alloc_mutex); - old_free_list = block_freelist; - block_freelist = blok; - - /* - * Next, adjust first_avail pointers of each block --- have to do it - * sooner or later, and it simplifies the search in new_block to do it - * now. - */ - -#ifdef ALLOC_STATS - num_blocks = 1; -#endif /* ALLOC_STATS */ - - while (blok->h.next != NULL) { - -#ifdef ALLOC_STATS - ++num_blocks; -#endif /* ALLOC_STATS */ - - chk_on_blk_list(blok, old_free_list); - blok->h.first_avail = (char *) (blok + 1); - debug_fill(blok->h.first_avail, blok->h.endp - blok->h.first_avail); -#ifdef POOL_DEBUG - blok->h.owning_pool = FREE_POOL; -#endif /* POOL_DEBUG */ - blok = blok->h.next; - } - - chk_on_blk_list(blok, old_free_list); - blok->h.first_avail = (char *) (blok + 1); - debug_fill(blok->h.first_avail, blok->h.endp - blok->h.first_avail); -#ifdef POOL_DEBUG - blok->h.owning_pool = FREE_POOL; -#endif /* POOL_DEBUG */ - - /* Finally, reset next pointer to get the old free blocks back */ - - blok->h.next = old_free_list; - -#ifdef ALLOC_STATS - if (num_blocks > max_blocks_in_one_free) { - max_blocks_in_one_free = num_blocks; - } - ++num_free_blocks_calls; - num_blocks_freed += num_blocks; -#endif /* ALLOC_STATS */ - - (void) ap_release_mutex(alloc_mutex); -#endif /* ALLOC_USE_MALLOC */ -} - -/* - * Get a new block, from our own free list if possible, from the system - * if necessary. Must be called with alarms blocked. - */ - -static union block_hdr *new_block(int min_size) -{ - union block_hdr **lastptr = &block_freelist; - union block_hdr *blok = block_freelist; - - /* First, see if we have anything of the required size - * on the free list... - */ - - while (blok != NULL) { - if (min_size + BLOCK_MINFREE <= blok->h.endp - blok->h.first_avail) { - *lastptr = blok->h.next; - blok->h.next = NULL; - debug_verify_filled(blok->h.first_avail, blok->h.endp, - "Ouch! Someone trounced a block " - "on the free list!\n"); - return blok; - } - else { - lastptr = &blok->h.next; - blok = blok->h.next; - } - } - - /* Nope. */ - - min_size += BLOCK_MINFREE; - blok = malloc_block((min_size > BLOCK_MINALLOC) - ? min_size : BLOCK_MINALLOC); - return blok; -} - - -/* Accounting */ - -static long bytes_in_block_list(union block_hdr *blok) -{ - long size = 0; - - while (blok) { - size += blok->h.endp - (char *) (blok + 1); - blok = blok->h.next; - } - - return size; -} - - -/***************************************************************** - * - * Pool internals and management... - * NB that subprocesses are not handled by the generic cleanup code, - * basically because we don't want cleanups for multiple subprocesses - * to result in multiple three-second pauses. - */ - -struct process_chain; -struct cleanup; - -static void run_cleanups(struct cleanup *c); -static void free_proc_chain(struct process_chain *p); - -static ap_pool_t *permanent_pool; - -/* Each pool structure is allocated in the start of its own first block, - * so we need to know how many bytes that is (once properly aligned...). - * This also means that when a pool's sub-pool is destroyed, the storage - * associated with it is *completely* gone, so we have to make sure it - * gets taken off the parent's sub-pool list... - */ - -#define POOL_HDR_CLICKS (1 + ((sizeof(struct ap_pool_t) - 1) / CLICK_SZ)) -#define POOL_HDR_BYTES (POOL_HDR_CLICKS * CLICK_SZ) - -API_EXPORT(ap_pool_t *) ap_make_sub_pool(ap_pool_t *p) -{ - union block_hdr *blok; - ap_pool_t *new_pool; - - ap_block_alarms(); - - (void) ap_acquire_mutex(alloc_mutex); - - blok = new_block(POOL_HDR_BYTES); - new_pool = (ap_pool_t *) blok->h.first_avail; - blok->h.first_avail += POOL_HDR_BYTES; -#ifdef POOL_DEBUG - blok->h.owning_pool = new_pool; -#endif - - memset((char *) new_pool, '\0', sizeof(struct ap_pool_t)); - new_pool->free_first_avail = blok->h.first_avail; - new_pool->first = new_pool->last = blok; - - if (p) { - new_pool->parent = p; - new_pool->sub_next = p->sub_pools; - if (new_pool->sub_next) { - new_pool->sub_next->sub_prev = new_pool; - } - p->sub_pools = new_pool; - } - - (void) ap_release_mutex(alloc_mutex); - ap_unblock_alarms(); - - return new_pool; -} - -#ifdef POOL_DEBUG -static void stack_var_init(char *s) -{ - char t; - - if (s < &t) { - stack_direction = 1; /* stack grows up */ - } - else { - stack_direction = -1; /* stack grows down */ - } -} -#endif - -#ifdef ALLOC_STATS -static void dump_stats(void) -{ - fprintf(stderr, - "alloc_stats: [%d] #free_blocks %llu #blocks %llu max " - "%u #malloc %u #bytes %u\n", - (int) getpid(), - num_free_blocks_calls, - num_blocks_freed, - max_blocks_in_one_free, - num_malloc_calls, - num_malloc_bytes); -} -#endif - -ap_pool_t *ap_init_alloc(void) -{ -#ifdef POOL_DEBUG - char s; - - known_stack_point = &s; - stack_var_init(&s); -#endif - alloc_mutex = ap_create_mutex(NULL); - spawn_mutex = ap_create_mutex(NULL); - permanent_pool = ap_make_sub_pool(NULL); -#ifdef ALLOC_STATS - atexit(dump_stats); -#endif - - return permanent_pool; -} - -API_EXPORT(void) ap_clear_pool(struct context_t *a) -{ - ap_block_alarms(); - - (void) ap_acquire_mutex(alloc_mutex); - while (a->pool->sub_pools) { - ap_destroy_pool(a); - } - (void) ap_release_mutex(alloc_mutex); - /* - * Don't hold the mutex during cleanups. - */ - run_cleanups(a->pool->cleanups); - a->pool->cleanups = NULL; - free_proc_chain(a->pool->subprocesses); - a->pool->subprocesses = NULL; - free_blocks(a->pool->first->h.next); - a->pool->first->h.next = NULL; - - a->pool->last = a->pool->first; - a->pool->first->h.first_avail = a->pool->free_first_avail; - debug_fill(a->pool->first->h.first_avail, - a->pool->first->h.endp - a->pool->first->h.first_avail); - -#ifdef ALLOC_USE_MALLOC - { - void *c, *n; - - for (c = a->pool->allocation_list; c; c = n) { - n = *(void **)c; - free(c); - } - a->pool->allocation_list = NULL; - } -#endif - - ap_unblock_alarms(); -} - -API_EXPORT(void) ap_destroy_pool(struct context_t *a) -{ - ap_block_alarms(); - ap_clear_pool(a); - - (void) ap_acquire_mutex(alloc_mutex); - if (a->pool->parent) { - if (a->pool->parent->sub_pools == a->pool) { - a->pool->parent->sub_pools = a->pool->sub_next; - } - if (a->pool->sub_prev) { - a->pool->sub_prev->sub_next = a->pool->sub_next; - } - if (a->pool->sub_next) { - a->pool->sub_next->sub_prev = a->pool->sub_prev; - } - } - (void) ap_release_mutex(alloc_mutex); - - free_blocks(a->pool->first); - ap_unblock_alarms(); -} - -API_EXPORT(long) ap_bytes_in_pool(ap_pool_t *p) -{ - return bytes_in_block_list(p->first); -} -API_EXPORT(long) ap_bytes_in_free_blocks(void) -{ - return bytes_in_block_list(block_freelist); -} - -/***************************************************************** - * POOL_DEBUG support - */ -#ifdef POOL_DEBUG - -/* the unix linker defines this symbol as the last byte + 1 of - * the executable... so it includes TEXT, BSS, and DATA - */ -extern char _end; - -/* is ptr in the range [lo,hi) */ -#define is_ptr_in_range(ptr, lo, hi) \ - (((unsigned long)(ptr) - (unsigned long)(lo)) \ - < (unsigned long)(hi) - (unsigned long)(lo)) - -/* Find the pool that ts belongs to, return NULL if it doesn't - * belong to any pool. - */ -API_EXPORT(ap_pool_t *) ap_find_pool(const void *ts) -{ - const char *s = ts; - union block_hdr **pb; - union block_hdr *b; - - /* short-circuit stuff which is in TEXT, BSS, or DATA */ - if (is_ptr_in_range(s, 0, &_end)) { - return NULL; - } - /* consider stuff on the stack to also be in the NULL pool... - * XXX: there's cases where we don't want to assume this - */ - if ((stack_direction == -1 && is_ptr_in_range(s, &ts, known_stack_point)) - || (stack_direction == 1 - && is_ptr_in_range(s, known_stack_point, &ts))) { - abort(); - return NULL; - } - ap_block_alarms(); - /* search the global_block_list */ - for (pb = &global_block_list; *pb; pb = &b->h.global_next) { - b = *pb; - if (is_ptr_in_range(s, b, b->h.endp)) { - if (b->h.owning_pool == FREE_POOL) { - fprintf(stderr, - "Ouch! find_pool() called on pointer " - "in a free block\n"); - abort(); - exit(1); - } - if (b != global_block_list) { - /* - * promote b to front of list, this is a hack to speed - * up the lookup - */ - *pb = b->h.global_next; - b->h.global_next = global_block_list; - global_block_list = b; - } - ap_unblock_alarms(); - return b->h.owning_pool; - } - } - ap_unblock_alarms(); - return NULL; -} - -/* return TRUE iff a is an ancestor of b - * NULL is considered an ancestor of all pools - */ -API_EXPORT(int) ap_pool_is_ancestor(ap_pool_t *a, ap_pool_t *b) -{ - if (a == NULL) { - return 1; - } - while (a->joined) { - a = a->joined; - } - while (b) { - if (a == b) { - return 1; - } - b = b->parent; - } - return 0; -} - -/* - * All blocks belonging to sub will be changed to point to p - * instead. This is a guarantee by the caller that sub will not - * be destroyed before p is. - */ -API_EXPORT(void) ap_pool_join(ap_pool_t *p, ap_pool_t *sub) -{ - union block_hdr *b; - - /* We could handle more general cases... but this is it for now. */ - if (sub->parent != p) { - fprintf(stderr, "pool_join: p is not parent of sub\n"); - abort(); - } - ap_block_alarms(); - while (p->joined) { - p = p->joined; - } - sub->joined = p; - for (b = global_block_list; b; b = b->h.global_next) { - if (b->h.owning_pool == sub) { - b->h.owning_pool = p; - } - } - ap_unblock_alarms(); -} -#endif - -/***************************************************************** - * - * Allocating stuff... - */ - - -API_EXPORT(void *) ap_palloc(struct context_t *c, int reqsize) -{ -#ifdef ALLOC_USE_MALLOC - ap_pool_t *a = c->pool; - int size = reqsize + CLICK_SZ; - void *ptr; - - ap_block_alarms(); - ptr = malloc(size); - if (ptr == NULL) { - fputs("Ouch! Out of memory!\n", stderr); - exit(1); - } - debug_fill(ptr, size); /* might as well get uninitialized protection */ - *(void **)ptr = a->allocation_list; - a->allocation_list = ptr; - ap_unblock_alarms(); - return (char *)ptr + CLICK_SZ; -#else - - /* - * Round up requested size to an even number of alignment units - * (core clicks) - */ - ap_pool_t *a = c->pool; - int nclicks = 1 + ((reqsize - 1) / CLICK_SZ); - int size = nclicks * CLICK_SZ; - - /* First, see if we have space in the block most recently - * allocated to this pool - */ - - union block_hdr *blok = a->last; - char *first_avail = blok->h.first_avail; - char *new_first_avail; - - if (reqsize <= 0) { - return NULL; - } - - new_first_avail = first_avail + size; - - if (new_first_avail <= blok->h.endp) { - debug_verify_filled(first_avail, blok->h.endp, - "Ouch! Someone trounced past the end " - "of their allocation!\n"); - blok->h.first_avail = new_first_avail; - return (void *) first_avail; - } - - /* Nope --- get a new one that's guaranteed to be big enough */ - - ap_block_alarms(); - - (void) ap_acquire_mutex(alloc_mutex); - - blok = new_block(size); - a->last->h.next = blok; - a->last = blok; -#ifdef POOL_DEBUG - blok->h.owning_pool = a; -#endif - - (void) ap_release_mutex(alloc_mutex); - - ap_unblock_alarms(); - - first_avail = blok->h.first_avail; - blok->h.first_avail += size; - - return (void *) first_avail; -#endif -} - -API_EXPORT(void *) ap_pcalloc(struct context_t *a, int size) -{ - void *res = ap_palloc(a, size); - memset(res, '\0', size); - return res; -} - -API_EXPORT(char *) ap_pstrdup(struct context_t *a, const char *s) -{ - char *res; - size_t len; - - if (s == NULL) { - return NULL; - } - len = strlen(s) + 1; - res = ap_palloc(a, len); - memcpy(res, s, len); - return res; -} - -API_EXPORT(char *) ap_pstrndup(struct context_t *a, const char *s, int n) -{ - char *res; - - if (s == NULL) { - return NULL; - } - res = ap_palloc(a, n + 1); - memcpy(res, s, n); - res[n] = '\0'; - return res; -} - -API_EXPORT_NONSTD(char *) ap_pstrcat(struct context_t *a, ...) -{ - char *cp, *argp, *res; - - /* Pass one --- find length of required string */ - - int len = 0; - va_list adummy; - - va_start(adummy, a); - - while ((cp = va_arg(adummy, char *)) != NULL) { - len += strlen(cp); - } - - va_end(adummy); - - /* Allocate the required string */ - - res = (char *) ap_palloc(a, len + 1); - cp = res; - *cp = '\0'; - - /* Pass two --- copy the argument strings into the result space */ - - va_start(adummy, a); - - while ((argp = va_arg(adummy, char *)) != NULL) { - strcpy(cp, argp); - cp += strlen(argp); - } - - va_end(adummy); - - /* Return the result string */ - - return res; -} - -/* - * ap_psprintf is implemented by writing directly into the current - * block of the pool, starting right at first_avail. If there's - * insufficient room, then a new block is allocated and the earlier - * output is copied over. The new block isn't linked into the pool - * until all the output is done. - * - * Note that this is completely safe because nothing else can - * allocate in this pool while ap_psprintf is running. alarms are - * blocked, and the only thing outside of alloc.c that's invoked - * is ap_vformatter -- which was purposefully written to be - * self-contained with no callouts. - */ - -struct psprintf_data { - ap_vformatter_buff_t vbuff; -#ifdef ALLOC_USE_MALLOC - char *base; -#else - union block_hdr *blok; - int got_a_new_block; -#endif -}; - -static int psprintf_flush(ap_vformatter_buff_t *vbuff) -{ - struct psprintf_data *ps = (struct psprintf_data *)vbuff; -#ifdef ALLOC_USE_MALLOC - int size; - char *ptr; - - size = (char *)ps->vbuff.curpos - ps->base; - ptr = realloc(ps->base, 2*size); - if (ptr == NULL) { - fputs("Ouch! Out of memory!\n", stderr); - exit(1); - } - ps->base = ptr; - ps->vbuff.curpos = ptr + size; - ps->vbuff.endpos = ptr + 2*size - 1; - return 0; -#else - union block_hdr *blok; - union block_hdr *nblok; - size_t cur_len; - char *strp; - - blok = ps->blok; - strp = ps->vbuff.curpos; - cur_len = strp - blok->h.first_avail; - - /* must try another blok */ - (void) ap_acquire_mutex(alloc_mutex); - nblok = new_block(2 * cur_len); - (void) ap_release_mutex(alloc_mutex); - memcpy(nblok->h.first_avail, blok->h.first_avail, cur_len); - ps->vbuff.curpos = nblok->h.first_avail + cur_len; - /* save a byte for the NUL terminator */ - ps->vbuff.endpos = nblok->h.endp - 1; - - /* did we allocate the current blok? if so free it up */ - if (ps->got_a_new_block) { - debug_fill(blok->h.first_avail, blok->h.endp - blok->h.first_avail); - (void) ap_acquire_mutex(alloc_mutex); - blok->h.next = block_freelist; - block_freelist = blok; - (void) ap_release_mutex(alloc_mutex); - } - ps->blok = nblok; - ps->got_a_new_block = 1; - /* note that we've deliberately not linked the new block onto - * the pool yet... because we may need to flush again later, and - * we'd have to spend more effort trying to unlink the block. - */ - return 0; -#endif -} - -API_EXPORT(char *) ap_pvsprintf(struct context_t *c, const char *fmt, va_list ap) -{ -#ifdef ALLOC_USE_MALLOC - ap_pool_t *p = c->pool; - struct psprintf_data ps; - void *ptr; - - ap_block_alarms(); - ps.base = malloc(512); - if (ps.base == NULL) { - fputs("Ouch! Out of memory!\n", stderr); - exit(1); - } - /* need room at beginning for allocation_list */ - ps.vbuff.curpos = ps.base + CLICK_SZ; - ps.vbuff.endpos = ps.base + 511; - ap_vformatter(psprintf_flush, &ps.vbuff, fmt, ap); - *ps.vbuff.curpos++ = '\0'; - ptr = ps.base; - /* shrink */ - ptr = realloc(ptr, (char *)ps.vbuff.curpos - (char *)ptr); - if (ptr == NULL) { - fputs("Ouch! Out of memory!\n", stderr); - exit(1); - } - *(void **)ptr = p->allocation_list; - p->allocation_list = ptr; - ap_unblock_alarms(); - return (char *)ptr + CLICK_SZ; -#else - struct psprintf_data ps; - char *strp; - int size; - ap_pool_t *p = c->pool; - - ap_block_alarms(); - ps.blok = p->last; - ps.vbuff.curpos = ps.blok->h.first_avail; - ps.vbuff.endpos = ps.blok->h.endp - 1; /* save one for NUL */ - ps.got_a_new_block = 0; - - ap_vformatter(psprintf_flush, &ps.vbuff, fmt, ap); - - strp = ps.vbuff.curpos; - *strp++ = '\0'; - - size = strp - ps.blok->h.first_avail; - size = (1 + ((size - 1) / CLICK_SZ)) * CLICK_SZ; - strp = ps.blok->h.first_avail; /* save away result pointer */ - ps.blok->h.first_avail += size; - - /* have to link the block in if it's a new one */ - if (ps.got_a_new_block) { - p->last->h.next = ps.blok; - p->last = ps.blok; -#ifdef POOL_DEBUG - ps.blok->h.owning_pool = p; -#endif - } - ap_unblock_alarms(); - - return strp; -#endif -} - -API_EXPORT_NONSTD(char *) ap_psprintf(struct context_t *p, const char *fmt, ...) -{ - va_list ap; - char *res; - - va_start(ap, fmt); - res = ap_pvsprintf(p, fmt, ap); - va_end(ap); - return res; -} - -/***************************************************************** - * - * Managing generic cleanups. - */ - -struct cleanup { - void *data; - ap_status_t (*plain_cleanup) (void *); - ap_status_t (*child_cleanup) (void *); - struct cleanup *next; -}; - -API_EXPORT(void) ap_register_cleanup(struct context_t *p, void *data, - ap_status_t (*plain_cleanup) (void *), - ap_status_t (*child_cleanup) (void *)) -{ - struct cleanup *c; - c = (struct cleanup *) ap_palloc(p, sizeof(struct cleanup)); - c->data = data; - c->plain_cleanup = plain_cleanup; - c->child_cleanup = child_cleanup; - c->next = p->pool->cleanups; - p->pool->cleanups = c; -} - -API_EXPORT(void) ap_kill_cleanup(struct context_t *p, void *data, - ap_status_t (*cleanup) (void *)) -{ - struct cleanup *c = p->pool->cleanups; - struct cleanup **lastp = &p->pool->cleanups; - - while (c) { - if (c->data == data && c->plain_cleanup == cleanup) { - *lastp = c->next; - break; - } - - lastp = &c->next; - c = c->next; - } -} - -API_EXPORT(void) ap_run_cleanup(struct context_t *p, void *data, - ap_status_t (*cleanup) (void *)) -{ - ap_block_alarms(); /* Run cleanup only once! */ - (*cleanup) (data); - ap_kill_cleanup(p, data, cleanup); - ap_unblock_alarms(); -} - -static void run_cleanups(struct cleanup *c) -{ - while (c) { - (*c->plain_cleanup) (c->data); - c = c->next; - } -} - -static void run_child_cleanups(struct cleanup *c) -{ - while (c) { - (*c->child_cleanup) (c->data); - c = c->next; - } -} - -static void cleanup_pool_for_exec(ap_pool_t *p) -{ - run_child_cleanups(p->cleanups); - p->cleanups = NULL; - - for (p = p->sub_pools; p; p = p->sub_next) { - cleanup_pool_for_exec(p); - } -} - -API_EXPORT(void) ap_cleanup_for_exec(void) -{ -#if !defined(WIN32) && !defined(OS2) - /* - * Don't need to do anything on NT or OS/2, because I - * am actually going to spawn the new process - not - * exec it. All handles that are not inheritable, will - * be automajically closed. The only problem is with - * file handles that are open, but there isn't much - * I can do about that (except if the child decides - * to go out and close them - */ - ap_block_alarms(); - cleanup_pool_for_exec(permanent_pool); - ap_unblock_alarms(); -#endif /* ndef WIN32 */ -} - -API_EXPORT_NONSTD(void) ap_null_cleanup(void *data) -{ - /* do nothing cleanup routine */ -} - -/***************************************************************** - * - * Files and file descriptors; these are just an application of the - * generic cleanup interface. - */ -#if 0 /*not really needed any more, apr takes care of this stuff */ -static void fd_cleanup(void *fdv) -{ - close((int) (long) fdv); -} - -API_EXPORT(void) ap_note_cleanups_for_fd(ap_pool_t *p, int fd) -{ - ap_register_cleanup(p, (void *) (long) fd, fd_cleanup, fd_cleanup); -} - -API_EXPORT(void) ap_kill_cleanups_for_fd(ap_pool_t *p, int fd) -{ - ap_kill_cleanup(p, (void *) (long) fd, fd_cleanup); -} - -API_EXPORT(int) ap_popenf(ap_pool_t *a, const char *name, int flg, int mode) -{ - int fd; - int save_errno; - - ap_block_alarms(); - fd = open(name, flg, mode); - save_errno = errno; - if (fd >= 0) { - fd = ap_slack(fd, ap_SLACK_HIGH); - ap_note_cleanups_for_fd(a, fd); - } - ap_unblock_alarms(); - errno = save_errno; - return fd; -} - -API_EXPORT(int) ap_pclosef(ap_pool_t *a, int fd) -{ - int res; - int save_errno; - - ap_block_alarms(); - res = close(fd); - save_errno = errno; - ap_kill_cleanup(a, (void *) (long) fd, fd_cleanup); - ap_unblock_alarms(); - errno = save_errno; - return res; -} - -#ifdef WIN32 -static void h_cleanup(void *fdv) -{ - CloseHandle((HANDLE) fdv); -} - -API_EXPORT(void) ap_note_cleanups_for_h(ap_pool_t *p, HANDLE hDevice) -{ - ap_register_cleanup(p, (void *) hDevice, h_cleanup, h_cleanup); -} - -API_EXPORT(int) ap_pcloseh(ap_pool_t *a, HANDLE hDevice) -{ - int res=0; - int save_errno; - - ap_block_alarms(); - - if (!CloseHandle(hDevice)) { - res = GetLastError(); - } - - save_errno = errno; - ap_kill_cleanup(a, (void *) hDevice, h_cleanup); - ap_unblock_alarms(); - errno = save_errno; - return res; -} -#endif -*/ -/* Note that we have separate plain_ and child_ cleanups for FILE *s, - * since fclose() would flush I/O buffers, which is extremely undesirable; - * we just close the descriptor. - */ -/* -static void file_cleanup(void *fpv) -{ - fclose((FILE *) fpv); -} -static void file_child_cleanup(void *fpv) -{ - close(fileno((FILE *) fpv)); -} - -API_EXPORT(void) ap_note_cleanups_for_file(ap_pool_t *p, FILE *fp) -{ - ap_register_cleanup(p, (void *) fp, file_cleanup, file_child_cleanup); -} - -API_EXPORT(FILE *) ap_pfopen(ap_pool_t *a, const char *name, - const char *mode) -{ - FILE *fd = NULL; - int baseFlag, desc; - int modeFlags = 0; - int saved_errno; - -#ifdef WIN32 - modeFlags = _S_IREAD | _S_IWRITE; -#else - modeFlags = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; -#endif - - ap_block_alarms(); - - if (*mode == 'a') { - /* Work around faulty implementations of fopen */ - baseFlag = (*(mode + 1) == '+') ? O_RDWR : O_WRONLY; - desc = open(name, baseFlag | O_APPEND | O_CREAT, - modeFlags); - if (desc >= 0) { - desc = ap_slack(desc, ap_SLACK_LOW); - fd = ap_fdopen(desc, mode); - } - } - else { - fd = fopen(name, mode); - } - saved_errno = errno; - if (fd != NULL) { - ap_note_cleanups_for_file(a, fd); - } - ap_unblock_alarms(); - errno = saved_errno; - return fd; -} - -API_EXPORT(FILE *) ap_pfdopen(ap_pool_t *a, int fd, const char *mode) -{ - FILE *f; - int saved_errno; - - ap_block_alarms(); - f = ap_fdopen(fd, mode); - saved_errno = errno; - if (f != NULL) { - ap_note_cleanups_for_file(a, f); - } - ap_unblock_alarms(); - errno = saved_errno; - return f; -} - - -API_EXPORT(int) ap_pfclose(ap_pool_t *a, FILE *fd) -{ - int res; - - ap_block_alarms(); - res = fclose(fd); - ap_kill_cleanup(a, (void *) fd, file_cleanup); - ap_unblock_alarms(); - return res; -} - -/* - * DIR * with cleanup - */ - -static void dir_cleanup(void *dv) -{ - closedir((DIR *) dv); -} - -API_EXPORT(DIR *) ap_popendir(ap_pool_t *p, const char *name) -{ - DIR *d; - int save_errno; - - ap_block_alarms(); - d = opendir(name); - if (d == NULL) { - save_errno = errno; - ap_unblock_alarms(); - errno = save_errno; - return NULL; - } - ap_register_cleanup(p, (void *) d, dir_cleanup, dir_cleanup); - ap_unblock_alarms(); - return d; -} - -API_EXPORT(void) ap_pclosedir(ap_pool_t *p, DIR * d) -{ - ap_block_alarms(); - ap_kill_cleanup(p, (void *) d, dir_cleanup); - closedir(d); - ap_unblock_alarms(); -} - -/***************************************************************** - * - * Files and file descriptors; these are just an application of the - * generic cleanup interface. - */ - -static void socket_cleanup(void *fdv) -{ - closesocket((int) (long) fdv); -} - -API_EXPORT(void) ap_note_cleanups_for_socket(ap_pool_t *p, int fd) -{ - ap_register_cleanup(p, (void *) (long) fd, socket_cleanup, - socket_cleanup); -} - -API_EXPORT(void) ap_kill_cleanups_for_socket(ap_pool_t *p, int sock) -{ - ap_kill_cleanup(p, (void *) (long) sock, socket_cleanup); -} - -API_EXPORT(int) ap_psocket(ap_pool_t *p, int domain, int type, int protocol) -{ - int fd; - - ap_block_alarms(); - fd = socket(domain, type, protocol); - if (fd == -1) { - int save_errno = errno; - ap_unblock_alarms(); - errno = save_errno; - return -1; - } - ap_note_cleanups_for_socket(p, fd); - ap_unblock_alarms(); - return fd; -} - -API_EXPORT(int) ap_pclosesocket(ap_pool_t *a, int sock) -{ - int res; - int save_errno; - - ap_block_alarms(); - res = closesocket(sock); -#ifdef WIN32 - errno = WSAGetLastError(); -#endif - save_errno = errno; - ap_kill_cleanup(a, (void *) (long) sock, socket_cleanup); - ap_unblock_alarms(); - errno = save_errno; - return res; -} - - -/* - * Here's a pool-based interface to POSIX regex's regcomp(). - * Note that we return regex_t instead of being passed one. - * The reason is that if you use an already-used regex_t structure, - * the memory that you've already allocated gets forgotten, and - * regfree() doesn't clear it. So we don't allow it. - */ - -static void regex_cleanup(void *preg) -{ - regfree((regex_t *) preg); -} - -API_EXPORT(regex_t *) ap_pregcomp(ap_pool_t *p, const char *pattern, - int cflags) -{ - regex_t *preg = ap_palloc(p, sizeof(regex_t)); - - if (regcomp(preg, pattern, cflags)) { - return NULL; - } - - ap_register_cleanup(p, (void *) preg, regex_cleanup, regex_cleanup); - - return preg; -} - - -API_EXPORT(void) ap_pregfree(ap_pool_t *p, regex_t * reg) -{ - ap_block_alarms(); - regfree(reg); - ap_kill_cleanup(p, (void *) reg, regex_cleanup); - ap_unblock_alarms(); -} -#endif /* if 0 not really needed anymore. APR takes care of this. */ -/***************************************************************** - * - * More grotty system stuff... subprocesses. Frump. These don't use - * the generic cleanup interface because I don't want multiple - * subprocesses to result in multiple three-second pauses; the - * subprocesses have to be "freed" all at once. If someone comes - * along with another resource they want to allocate which has the - * same property, we might want to fold support for that into the - * generic interface, but for now, it's a special case - */ - -API_EXPORT(void) ap_note_subprocess(struct context_t *a, pid_t pid, - enum kill_conditions how) -{ - struct process_chain *new = - (struct process_chain *) ap_palloc(a, sizeof(struct process_chain)); - - new->pid = pid; - new->kill_how = how; - new->next = a->pool->subprocesses; - a->pool->subprocesses = new; -} - -#ifdef WIN32 -#define os_pipe(fds) _pipe(fds, 512, O_BINARY | O_NOINHERIT) -#else -#define os_pipe(fds) pipe(fds) -#endif /* WIN32 */ - -/* for ap_fdopen, to get binary mode */ -#if defined (OS2) || defined (WIN32) -#define BINMODE "b" -#else -#define BINMODE -#endif - -#if 0 -static pid_t spawn_child_core(ap_pool_t *p, - int (*func) (void *, ap_child_info_t *), - void *data,enum kill_conditions kill_how, - int *pipe_in, int *pipe_out, int *pipe_err) -{ - pid_t pid; - int in_fds[2]; - int out_fds[2]; - int err_fds[2]; - int save_errno; - - if (pipe_in && os_pipe(in_fds) < 0) { - return 0; - } - - if (pipe_out && os_pipe(out_fds) < 0) { - save_errno = errno; - if (pipe_in) { - close(in_fds[0]); - close(in_fds[1]); - } - errno = save_errno; - return 0; - } - - if (pipe_err && os_pipe(err_fds) < 0) { - save_errno = errno; - if (pipe_in) { - close(in_fds[0]); - close(in_fds[1]); - } - if (pipe_out) { - close(out_fds[0]); - close(out_fds[1]); - } - errno = save_errno; - return 0; - } - -#ifdef WIN32 - - { - HANDLE thread_handle; - int hStdIn, hStdOut, hStdErr; - int old_priority; - ap_child_info_t info; - - (void) ap_acquire_mutex(spawn_mutex); - thread_handle = GetCurrentThread(); /* doesn't need to be closed */ - old_priority = GetThreadPriority(thread_handle); - SetThreadPriority(thread_handle, THREAD_PRIORITY_HIGHEST); - /* Now do the right thing with your pipes */ - if (pipe_in) { - hStdIn = dup(fileno(stdin)); - if (dup2(in_fds[0], fileno(stdin))) { - ap_log_error(APLOG_MARK, APLOG_ERR, NULL, - "dup2(stdin) failed"); - } - close(in_fds[0]); - } - if (pipe_out) { - hStdOut = dup(fileno(stdout)); - close(fileno(stdout)); - if (dup2(out_fds[1], fileno(stdout))) { - ap_log_error(APLOG_MARK, APLOG_ERR, NULL, - "dup2(stdout) failed"); - } - close(out_fds[1]); - } - if (pipe_err) { - hStdErr = dup(fileno(stderr)); - if (dup2(err_fds[1], fileno(stderr))) { - ap_log_error(APLOG_MARK, APLOG_ERR, NULL, - "dup2(stdin) failed"); - } - close(err_fds[1]); - } - - info.hPipeInputRead = GetStdHandle(STD_INPUT_HANDLE); - info.hPipeOutputWrite = GetStdHandle(STD_OUTPUT_HANDLE); - info.hPipeErrorWrite = GetStdHandle(STD_ERROR_HANDLE); - - pid = (*func) (data, &info); - if (pid == -1) { - pid = 0; /* map Win32 error code onto Unix default */ - } - - if (!pid) { - save_errno = errno; - close(in_fds[1]); - close(out_fds[0]); - close(err_fds[0]); - } - - /* restore the original stdin, stdout and stderr */ - if (pipe_in) { - dup2(hStdIn, fileno(stdin)); - close(hStdIn); - } - if (pipe_out) { - dup2(hStdOut, fileno(stdout)); - close(hStdOut); - } - if (pipe_err) { - dup2(hStdErr, fileno(stderr)); - close(hStdErr); - } - - if (pid) { - ap_note_subprocess(p, pid, kill_how); - if (pipe_in) { - *pipe_in = in_fds[1]; - } - if (pipe_out) { - *pipe_out = out_fds[0]; - } - if (pipe_err) { - *pipe_err = err_fds[0]; - } - } - SetThreadPriority(thread_handle, old_priority); - (void) ap_release_mutex(spawn_mutex); - /* - * go on to the end of the function, where you can - * unblock alarms and return the pid - */ - - } -#elif defined(OS2) - { - int save_in=-1, save_out=-1, save_err=-1; - - if (pipe_out) { - save_out = dup(STDOUT_FILENO); - dup2(out_fds[1], STDOUT_FILENO); - close(out_fds[1]); - } - - if (pipe_in) { - save_in = dup(STDIN_FILENO); - dup2(in_fds[0], STDIN_FILENO); - close(in_fds[0]); - } - - if (pipe_err) { - save_err = dup(STDERR_FILENO); - dup2(err_fds[1], STDERR_FILENO); - close(err_fds[1]); - } - - pid = func(data, NULL); - - if (pid) { - ap_note_subprocess(p, pid, kill_how); - } - - if (pipe_out) { - close(STDOUT_FILENO); - dup2(save_out, STDOUT_FILENO); - close(save_out); - *pipe_out = out_fds[0]; - } - - if (pipe_in) { - close(STDIN_FILENO); - dup2(save_in, STDIN_FILENO); - close(save_in); - *pipe_in = in_fds[1]; - } - - if (pipe_err) { - close(STDERR_FILENO); - dup2(save_err, STDERR_FILENO); - close(save_err); - *pipe_err = err_fds[0]; - } - } -#elif defined(TPF) - return (pid = ap_tpf_spawn_child(p, func, data, kill_how, - pipe_in, pipe_out, pipe_err, out_fds, - in_fds, err_fds)); -#else - - if ((pid = fork()) < 0) { - save_errno = errno; - if (pipe_in) { - close(in_fds[0]); - close(in_fds[1]); - } - if (pipe_out) { - close(out_fds[0]); - close(out_fds[1]); - } - if (pipe_err) { - close(err_fds[0]); - close(err_fds[1]); - } - errno = save_errno; - return 0; - } - - if (!pid) { - /* Child process */ - RAISE_SIGSTOP(SPAWN_CHILD); - - if (pipe_out) { - close(out_fds[0]); - dup2(out_fds[1], STDOUT_FILENO); - close(out_fds[1]); - } - - if (pipe_in) { - close(in_fds[1]); - dup2(in_fds[0], STDIN_FILENO); - close(in_fds[0]); - } - - if (pipe_err) { - close(err_fds[0]); - dup2(err_fds[1], STDERR_FILENO); - close(err_fds[1]); - } - - /* - * HP-UX SIGCHLD fix goes here, if someone will remind me - * what it is... - */ - signal(SIGCHLD, SIG_DFL); /* Was that it? */ - - func(data, NULL); - exit(1); /* Should only get here if the exec in func() failed */ - } - - /* Parent process */ - - ap_note_subprocess(p, pid, kill_how); - - if (pipe_out) { - close(out_fds[1]); - *pipe_out = out_fds[0]; - } - - if (pipe_in) { - close(in_fds[0]); - *pipe_in = in_fds[1]; - } - - if (pipe_err) { - close(err_fds[1]); - *pipe_err = err_fds[0]; - } -#endif /* WIN32 */ - - return pid; -} - - -API_EXPORT(int) ap_spawn_child(ap_pool_t *p, - int (*func) (void *v, ap_child_info_t *c), - void *data, enum kill_conditions kill_how, - FILE **pipe_in, FILE **pipe_out, - FILE **pipe_err) -{ - int fd_in, fd_out, fd_err; - pid_t pid; - int save_errno; - - ap_block_alarms(); - - pid = spawn_child_core(p, func, data, kill_how, - pipe_in ? &fd_in : NULL, - pipe_out ? &fd_out : NULL, - pipe_err ? &fd_err : NULL); - - if (pid == 0) { - save_errno = errno; - ap_unblock_alarms(); - errno = save_errno; - return 0; - } - - if (pipe_out) { - *pipe_out = ap_fdopen(fd_out, "r" BINMODE); - if (*pipe_out) { - ap_note_cleanups_for_file(p, *pipe_out); - } - else { - close(fd_out); - } - } - - if (pipe_in) { - *pipe_in = ap_fdopen(fd_in, "w" BINMODE); - if (*pipe_in) { - ap_note_cleanups_for_file(p, *pipe_in); - } - else { - close(fd_in); - } - } - - if (pipe_err) { - *pipe_err = ap_fdopen(fd_err, "r" BINMODE); - if (*pipe_err) { - ap_note_cleanups_for_file(p, *pipe_err); - } - else { - close(fd_err); - } - } - - ap_unblock_alarms(); - return pid; -} - -API_EXPORT(int) ap_bspawn_child(ap_pool_t *p, - int (*func) (void *v, ap_child_info_t *c), - void *data, enum kill_conditions kill_how, - BUFF **pipe_in, BUFF **pipe_out, - BUFF **pipe_err) -{ -#ifdef WIN32 - SECURITY_ATTRIBUTES sa = {0}; - HANDLE hPipeOutputRead = NULL; - HANDLE hPipeOutputWrite = NULL; - HANDLE hPipeInputRead = NULL; - HANDLE hPipeInputWrite = NULL; - HANDLE hPipeErrorRead = NULL; - HANDLE hPipeErrorWrite = NULL; - HANDLE hPipeInputWriteDup = NULL; - HANDLE hPipeOutputReadDup = NULL; - HANDLE hPipeErrorReadDup = NULL; - HANDLE hCurrentProcess; - pid_t pid = 0; - ap_child_info_t info; - - ap_block_alarms(); - - /* - * First thing to do is to create the pipes that we will use - * for stdin, stdout, and stderr in the child process. - */ - sa.nLength = sizeof(sa); - sa.bInheritHandle = TRUE; - sa.lpSecurityDescriptor = NULL; - - - /* Create pipes for standard input/output/error redirection. */ - if (pipe_in && !CreatePipe(&hPipeInputRead, &hPipeInputWrite, &sa, 0)) { - return 0; - } - - if (pipe_out && !CreatePipe(&hPipeOutputRead, &hPipeOutputWrite, &sa, 0)) { - if (pipe_in) { - CloseHandle(hPipeInputRead); - CloseHandle(hPipeInputWrite); - } - return 0; - } - - if (pipe_err && !CreatePipe(&hPipeErrorRead, &hPipeErrorWrite, &sa, 0)) { - if (pipe_in) { - CloseHandle(hPipeInputRead); - CloseHandle(hPipeInputWrite); - } - if (pipe_out) { - CloseHandle(hPipeOutputRead); - CloseHandle(hPipeOutputWrite); - } - return 0; - } - /* - * When the pipe handles are created, the security descriptor - * indicates that the handle can be inherited. However, we do not - * want the server side handles to the pipe to be inherited by the - * child CGI process. If the child CGI does inherit the server - * side handles, then the child may be left around if the server - * closes its handles (e.g. if the http connection is aborted), - * because the child will have a valid copy of handles to both - * sides of the pipes, and no I/O error will occur. Microsoft - * recommends using DuplicateHandle to turn off the inherit bit - * under NT and Win95. - */ - hCurrentProcess = GetCurrentProcess(); - if ((pipe_in && !DuplicateHandle(hCurrentProcess, hPipeInputWrite, - hCurrentProcess, - &hPipeInputWriteDup, 0, FALSE, - DUPLICATE_SAME_ACCESS)) - || (pipe_out && !DuplicateHandle(hCurrentProcess, hPipeOutputRead, - hCurrentProcess, &hPipeOutputReadDup, - 0, FALSE, DUPLICATE_SAME_ACCESS)) - || (pipe_err && !DuplicateHandle(hCurrentProcess, hPipeErrorRead, - hCurrentProcess, &hPipeErrorReadDup, - 0, FALSE, DUPLICATE_SAME_ACCESS))) { - if (pipe_in) { - CloseHandle(hPipeInputRead); - CloseHandle(hPipeInputWrite); - } - if (pipe_out) { - CloseHandle(hPipeOutputRead); - CloseHandle(hPipeOutputWrite); - } - if (pipe_err) { - CloseHandle(hPipeErrorRead); - CloseHandle(hPipeErrorWrite); - } - return 0; - } - else { - if (pipe_in) { - CloseHandle(hPipeInputWrite); - hPipeInputWrite = hPipeInputWriteDup; - } - if (pipe_out) { - CloseHandle(hPipeOutputRead); - hPipeOutputRead = hPipeOutputReadDup; - } - if (pipe_err) { - CloseHandle(hPipeErrorRead); - hPipeErrorRead = hPipeErrorReadDup; - } - } - - /* The script writes stdout to this pipe handle */ - info.hPipeOutputWrite = hPipeOutputWrite; - - /* The script reads stdin from this pipe handle */ - info.hPipeInputRead = hPipeInputRead; - - /* The script writes stderr to this pipe handle */ - info.hPipeErrorWrite = hPipeErrorWrite; - - /* - * Try to launch the CGI. Under the covers, this call - * will try to pick up the appropriate interpreter if - * one is needed. - */ - pid = func(data, &info); - if (pid == -1) { - /* Things didn't work, so cleanup */ - pid = 0; /* map Win32 error code onto Unix default */ - CloseHandle(hPipeOutputRead); - CloseHandle(hPipeInputWrite); - CloseHandle(hPipeErrorRead); - } - else { - if (pipe_out) { - /* - * This pipe represents stdout for the script, - * so we read from this pipe. - */ - /* Create a read buffer */ - *pipe_out = ap_bcreate(p, B_RD); - - /* Setup the cleanup routine for the handle */ - ap_note_cleanups_for_h(p, hPipeOutputRead); - - /* Associate the handle with the new buffer */ - ap_bpushh(*pipe_out, hPipeOutputRead); - } - - if (pipe_in) { - /* - * This pipe represents stdin for the script, so we - * write to this pipe. - */ - /* Create a write buffer */ - *pipe_in = ap_bcreate(p, B_WR); - - /* Setup the cleanup routine for the handle */ - ap_note_cleanups_for_h(p, hPipeInputWrite); - - /* Associate the handle with the new buffer */ - ap_bpushh(*pipe_in, hPipeInputWrite); - - } - - if (pipe_err) { - /* - * This pipe represents stderr for the script, so - * we read from this pipe. - */ - /* Create a read buffer */ - *pipe_err = ap_bcreate(p, B_RD); - - /* Setup the cleanup routine for the handle */ - ap_note_cleanups_for_h(p, hPipeErrorRead); - - /* Associate the handle with the new buffer */ - ap_bpushh(*pipe_err, hPipeErrorRead); - } - } - - - /* - * Now that handles have been inherited, close them to be safe. - * You don't want to read or write to them accidentally, and we - * sure don't want to have a handle leak. - */ - CloseHandle(hPipeOutputWrite); - CloseHandle(hPipeInputRead); - CloseHandle(hPipeErrorWrite); - -#else - int fd_in, fd_out, fd_err; - pid_t pid; - int save_errno; - - ap_block_alarms(); - - pid = spawn_child_core(p, func, data, kill_how, - pipe_in ? &fd_in : NULL, - pipe_out ? &fd_out : NULL, - pipe_err ? &fd_err : NULL); - - if (pid == 0) { - save_errno = errno; - ap_unblock_alarms(); - errno = save_errno; - return 0; - } - - if (pipe_out) { - *pipe_out = ap_bcreate(p, B_RD); - ap_note_cleanups_for_fd(p, fd_out); - ap_bpushfd(*pipe_out, fd_out, fd_out); - } - - if (pipe_in) { - *pipe_in = ap_bcreate(p, B_WR); - ap_note_cleanups_for_fd(p, fd_in); - ap_bpushfd(*pipe_in, fd_in, fd_in); - } - - if (pipe_err) { - *pipe_err = ap_bcreate(p, B_RD); - ap_note_cleanups_for_fd(p, fd_err); - ap_bpushfd(*pipe_err, fd_err, fd_err); - } -#endif - - ap_unblock_alarms(); - return pid; -} -#endif - -static void free_proc_chain(struct process_chain *procs) -{ - /* Dispose of the subprocesses we've spawned off in the course of - * whatever it was we're cleaning up now. This may involve killing - * some of them off... - */ - - struct process_chain *p; - int need_timeout = 0; - int status; - - if (procs == NULL) { - return; /* No work. Whew! */ - } - - /* First, check to see if we need to do the SIGTERM, sleep, SIGKILL - * dance with any of the processes we're cleaning up. If we've got - * any kill-on-sight subprocesses, ditch them now as well, so they - * don't waste any more cycles doing whatever it is that they shouldn't - * be doing anymore. - */ -#ifdef WIN32 - /* Pick up all defunct processes */ - for (p = procs; p; p = p->next) { - if (GetExitCodeProcess((HANDLE) p->pid, &status)) { - p->kill_how = kill_never; - } - } - - - for (p = procs; p; p = p->next) { - if (p->kill_how == kill_after_timeout) { - need_timeout = 1; - } - else if (p->kill_how == kill_always) { - TerminateProcess((HANDLE) p->pid, 1); - } - } - /* Sleep only if we have to... */ - - if (need_timeout) { - sleep(3); - } - - /* OK, the scripts we just timed out for have had a chance to clean up - * --- now, just get rid of them, and also clean up the system accounting - * goop... - */ - - for (p = procs; p; p = p->next) { - if (p->kill_how == kill_after_timeout) { - TerminateProcess((HANDLE) p->pid, 1); - } - } - - for (p = procs; p; p = p->next) { - CloseHandle((HANDLE) p->pid); - } -#else -#ifndef NEED_WAITPID - /* Pick up all defunct processes */ - for (p = procs; p; p = p->next) { - if (waitpid(p->pid, (int *) 0, WNOHANG) > 0) { - p->kill_how = kill_never; - } - } -#endif - - for (p = procs; p; p = p->next) { - if ((p->kill_how == kill_after_timeout) - || (p->kill_how == kill_only_once)) { - /* - * Subprocess may be dead already. Only need the timeout if not. - */ - if (kill(p->pid, SIGTERM) != -1) { - need_timeout = 1; - } - } - else if (p->kill_how == kill_always) { - kill(p->pid, SIGKILL); - } - } - - /* Sleep only if we have to... */ - - if (need_timeout) { - sleep(3); - } - - /* OK, the scripts we just timed out for have had a chance to clean up - * --- now, just get rid of them, and also clean up the system accounting - * goop... - */ - - for (p = procs; p; p = p->next) { - - if (p->kill_how == kill_after_timeout) { - kill(p->pid, SIGKILL); - } - - if (p->kill_how != kill_never) { - waitpid(p->pid, &status, 0); - } - } -#endif /* WIN32 */ -} diff --git a/lib/apr_signal.c b/lib/apr_signal.c deleted file mode 100644 index b4b361f02..000000000 --- a/lib/apr_signal.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_config.h" -#include "apr_lib.h" - -#ifndef NO_USE_SIGACTION -/* - * Replace standard signal() with the more reliable sigaction equivalent - * from W. Richard Stevens' "Advanced Programming in the UNIX Environment" - * (the version that does not automatically restart system calls). - */ -Sigfunc *signal(int signo, Sigfunc * func) -{ - struct sigaction act, oact; - - act.sa_handler = func; - sigemptyset(&act.sa_mask); - act.sa_flags = 0; -#ifdef SA_INTERRUPT /* SunOS */ - act.sa_flags |= SA_INTERRUPT; -#endif - if (sigaction(signo, &act, &oact) < 0) - return SIG_ERR; - return oact.sa_handler; -} -#else -/* need some function in this file, otherwise the linker on NeXT bitches */ -void apr_signal_is_not_here(void) {} -#endif diff --git a/lib/apr_slack.c b/lib/apr_slack.c deleted file mode 100644 index 8df9c8847..000000000 --- a/lib/apr_slack.c +++ /dev/null @@ -1,126 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - * apr_slack.c: File descriptor preallocation - * - * 3/21/93 Rob McCool - * 1995-96 Many changes by the Apache Group - * - */ - -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif - -#ifdef APACHE -#include "http_log.h" -#endif - -#ifndef NO_SLACK -int apr_slack(int fd, int line) -{ -#if !defined(F_DUPFD) - return fd; -#else - static int low_warned; - int new_fd; - -#ifdef HIGH_SLACK_LINE - if (line == APR_SLACK_HIGH && fd < HIGH_SLACK_LINE) { - new_fd = fcntl(fd, F_DUPFD, HIGH_SLACK_LINE); - if (new_fd != -1) { - close(fd); - return new_fd; - } - } -#endif - /* otherwise just assume line == APR_SLACK_LOW */ - if (fd >= LOW_SLACK_LINE) { - return fd; - } - new_fd = fcntl(fd, F_DUPFD, LOW_SLACK_LINE); - if (new_fd == -1) { - if (!low_warned) { - -#ifdef APACHE - /* Give them a warning here, because we really can't predict - * how libraries and such are going to fail. If we can't - * do this F_DUPFD there's a good chance that apache has too - * few descriptors available to it. Note we don't warn on - * the high line, because if it fails we'll eventually try - * the low line... - */ - apr_log_error(APLOG_MARK, APLOG_WARNING, NULL, - "unable to open a file descriptor above %u, " - "you may need to increase the number of descriptors", - LOW_SLACK_LINE); -#endif /* APACHE */ - low_warned = 1; - } - return fd; - } - close(fd); - return new_fd; -#endif -} -#else -/* need at least one function in the file for some linkers */ -void apr_slack_is_not_here(void) {} -#endif /* NO_SLACK */ diff --git a/lib/apr_snprintf.c b/lib/apr_snprintf.c deleted file mode 100644 index bcba6ae45..000000000 --- a/lib/apr_snprintf.c +++ /dev/null @@ -1,1026 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - * This code is based on, and used with the permission of, the - * SIO stdiocntxteplacement strx_* functions by Panos Tsirigotis - * for xinetd. - */ - -#ifndef WIN32 -#include "apr_config.h" -#else -#include -#include "apr_win.h" -#endif - -#include "apr_lib.h" -#include - -typedef enum { - NO = 0, YES = 1 -} boolean_e; - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif -#define NUL '\0' -#define INT_NULL ((int *)0) -#define WIDE_INT long - -typedef WIDE_INT wide_int; -typedef unsigned WIDE_INT u_wide_int; -typedef int bool_int; - -#define S_NULL "(null)" -#define S_NULL_LEN 6 - -#define FLOAT_DIGITS 6 -#define EXPONENT_LENGTH 10 - -/* - * NUM_BUF_SIZE is the size of the buffer used for arithmetic conversions - * - * XXX: this is a magic number; do not decrease it - */ -#define NUM_BUF_SIZE 512 - -/* - * cvt.c - IEEE floating point formatting routines for FreeBSD - * from GNU libc-4.6.27. Modified to be thread safe. - */ - -/* - * ap_ecvt converts to decimal - * the number of digits is specified by ndigit - * decpt is set to the position of the decimal point - * sign is set to 0 for positive, 1 for negative - */ - -#define NDIG 80 - -/* buf must have at least NDIG bytes */ -static char *ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag, char *buf) -{ - register int r2; - double fi, fj; - register char *p, *p1; - - if (ndigits >= NDIG - 1) - ndigits = NDIG - 2; - r2 = 0; - *sign = 0; - p = &buf[0]; - if (arg < 0) { - *sign = 1; - arg = -arg; - } - arg = modf(arg, &fi); - p1 = &buf[NDIG]; - /* - * Do integer part - */ - if (fi != 0) { - p1 = &buf[NDIG]; - while (fi != 0) { - fj = modf(fi / 10, &fi); - *--p1 = (int) ((fj + .03) * 10) + '0'; - r2++; - } - while (p1 < &buf[NDIG]) - *p++ = *p1++; - } - else if (arg > 0) { - while ((fj = arg * 10) < 1) { - arg = fj; - r2--; - } - } - p1 = &buf[ndigits]; - if (eflag == 0) - p1 += r2; - *decpt = r2; - if (p1 < &buf[0]) { - buf[0] = '\0'; - return (buf); - } - while (p <= p1 && p < &buf[NDIG]) { - arg *= 10; - arg = modf(arg, &fj); - *p++ = (int) fj + '0'; - } - if (p1 >= &buf[NDIG]) { - buf[NDIG - 1] = '\0'; - return (buf); - } - p = p1; - *p1 += 5; - while (*p1 > '9') { - *p1 = '0'; - if (p1 > buf) - ++ * --p1; - else { - *p1 = '1'; - (*decpt)++; - if (eflag == 0) { - if (p > buf) - *p = '0'; - p++; - } - } - } - *p = '\0'; - return (buf); -} - -static char *ap_ecvt(double arg, int ndigits, int *decpt, int *sign, char *buf) -{ - return (ap_cvt(arg, ndigits, decpt, sign, 1, buf)); -} - -static char *ap_fcvt(double arg, int ndigits, int *decpt, int *sign, char *buf) -{ - return (ap_cvt(arg, ndigits, decpt, sign, 0, buf)); -} - -/* - * ap_gcvt - Floating output conversion to - * minimal length string - */ - -static char *ap_gcvt(double number, int ndigit, char *buf, boolean_e altform) -{ - int sign, decpt; - register char *p1, *p2; - register int i; - char buf1[NDIG]; - - p1 = ap_ecvt(number, ndigit, &decpt, &sign, buf1); - p2 = buf; - if (sign) - *p2++ = '-'; - for (i = ndigit - 1; i > 0 && p1[i] == '0'; i--) - ndigit--; - if ((decpt >= 0 && decpt - ndigit > 4) - || (decpt < 0 && decpt < -3)) { /* use E-style */ - decpt--; - *p2++ = *p1++; - *p2++ = '.'; - for (i = 1; i < ndigit; i++) - *p2++ = *p1++; - *p2++ = 'e'; - if (decpt < 0) { - decpt = -decpt; - *p2++ = '-'; - } - else - *p2++ = '+'; - if (decpt / 100 > 0) - *p2++ = decpt / 100 + '0'; - if (decpt / 10 > 0) - *p2++ = (decpt % 100) / 10 + '0'; - *p2++ = decpt % 10 + '0'; - } - else { - if (decpt <= 0) { - if (*p1 != '0') - *p2++ = '.'; - while (decpt < 0) { - decpt++; - *p2++ = '0'; - } - } - for (i = 1; i <= ndigit; i++) { - *p2++ = *p1++; - if (i == decpt) - *p2++ = '.'; - } - if (ndigit < decpt) { - while (ndigit++ < decpt) - *p2++ = '0'; - *p2++ = '.'; - } - } - if (p2[-1] == '.' && !altform) - p2--; - *p2 = '\0'; - return (buf); -} - -/* - * The INS_CHAR macro inserts a character in the buffer and writes - * the buffer back to disk if necessary - * It uses the char pointers sp and bep: - * sp points to the next available character in the buffer - * bep points to the end-of-buffer+1 - * While using this macro, note that the nextb pointer is NOT updated. - * - * NOTE: Evaluation of the c argument should not have any side-effects - */ -#define INS_CHAR(c, sp, bep, cc) \ - { \ - if (sp >= bep) { \ - vbuff->curpos = sp; \ - if (flush_func(vbuff)) \ - return -1; \ - sp = vbuff->curpos; \ - bep = vbuff->endpos; \ - } \ - *sp++ = (c); \ - cc++; \ - } - -#define NUM( c ) ( c - '0' ) - -#define STR_TO_DEC( str, num ) \ - num = NUM( *str++ ) ; \ - while ( ap_isdigit( *str ) ) \ - { \ - num *= 10 ; \ - num += NUM( *str++ ) ; \ - } - -/* - * This macro does zero padding so that the precision - * requirement is satisfied. The padding is done by - * adding '0's to the left of the string that is going - * to be printed. - */ -#define FIX_PRECISION( adjust, precision, s, s_len ) \ - if ( adjust ) \ - while ( s_len < precision ) \ - { \ - *--s = '0' ; \ - s_len++ ; \ - } - -/* - * Macro that does padding. The padding is done by printing - * the character ch. - */ -#define PAD( width, len, ch ) do \ - { \ - INS_CHAR( ch, sp, bep, cc ) ; \ - width-- ; \ - } \ - while ( width > len ) - -/* - * Prefix the character ch to the string str - * Increase length - * Set the has_prefix flag - */ -#define PREFIX( str, length, ch ) *--str = ch ; length++ ; has_prefix = YES - - -/* - * Convert num to its decimal format. - * Return value: - * - a pointer to a string containing the number (no sign) - * - len contains the length of the string - * - is_negative is set to TRUE or FALSE depending on the sign - * of the number (always set to FALSE if is_unsigned is TRUE) - * - * The caller provides a buffer for the string: that is the buf_end argument - * which is a pointer to the END of the buffer + 1 (i.e. if the buffer - * is declared as buf[ 100 ], buf_end should be &buf[ 100 ]) - */ -static char *conv_10(register wide_int num, register bool_int is_unsigned, - register bool_int *is_negative, char *buf_end, - register int *len) -{ - register char *p = buf_end; - register u_wide_int magnitude; - - if (is_unsigned) { - magnitude = (u_wide_int) num; - *is_negative = FALSE; - } - else { - *is_negative = (num < 0); - - /* - * On a 2's complement machine, negating the most negative integer - * results in a number that cannot be represented as a signed integer. - * Here is what we do to obtain the number's magnitude: - * a. add 1 to the number - * b. negate it (becomes positive) - * c. convert it to unsigned - * d. add 1 - */ - if (*is_negative) { - wide_int t = num + 1; - - magnitude = ((u_wide_int) -t) + 1; - } - else - magnitude = (u_wide_int) num; - } - - /* - * We use a do-while loop so that we write at least 1 digit - */ - do { - register u_wide_int new_magnitude = magnitude / 10; - - *--p = (char) (magnitude - new_magnitude * 10 + '0'); - magnitude = new_magnitude; - } - while (magnitude); - - *len = buf_end - p; - return (p); -} - - - -static char *conv_in_addr(struct in_addr *ia, char *buf_end, int *len) -{ - unsigned addr = ntohl(ia->s_addr); - char *p = buf_end; - bool_int is_negative; - int sub_len; - - p = conv_10((addr & 0x000000FF) , TRUE, &is_negative, p, &sub_len); - *--p = '.'; - p = conv_10((addr & 0x0000FF00) >> 8, TRUE, &is_negative, p, &sub_len); - *--p = '.'; - p = conv_10((addr & 0x00FF0000) >> 16, TRUE, &is_negative, p, &sub_len); - *--p = '.'; - p = conv_10((addr & 0xFF000000) >> 24, TRUE, &is_negative, p, &sub_len); - - *len = buf_end - p; - return (p); -} - - - -static char *conv_sockaddr_in(struct sockaddr_in *si, char *buf_end, int *len) -{ - char *p = buf_end; - bool_int is_negative; - int sub_len; - - p = conv_10(ntohs(si->sin_port), TRUE, &is_negative, p, &sub_len); - *--p = ':'; - p = conv_in_addr(&si->sin_addr, p, &sub_len); - - *len = buf_end - p; - return (p); -} - - - -/* - * Convert a floating point number to a string formats 'f', 'e' or 'E'. - * The result is placed in buf, and len denotes the length of the string - * The sign is returned in the is_negative argument (and is not placed - * in buf). - */ -static char *conv_fp(register char format, register double num, - boolean_e add_dp, int precision, bool_int *is_negative, - char *buf, int *len) -{ - register char *s = buf; - register char *p; - int decimal_point; - char buf1[NDIG]; - - if (format == 'f') - p = ap_fcvt(num, precision, &decimal_point, is_negative, buf1); - else /* either e or E format */ - p = ap_ecvt(num, precision + 1, &decimal_point, is_negative, buf1); - - /* - * Check for Infinity and NaN - */ - if (ap_isalpha(*p)) { - *len = strlen(strcpy(buf, p)); - *is_negative = FALSE; - return (buf); - } - - if (format == 'f') { - if (decimal_point <= 0) { - *s++ = '0'; - if (precision > 0) { - *s++ = '.'; - while (decimal_point++ < 0) - *s++ = '0'; - } - else if (add_dp) - *s++ = '.'; - } - else { - while (decimal_point-- > 0) - *s++ = *p++; - if (precision > 0 || add_dp) - *s++ = '.'; - } - } - else { - *s++ = *p++; - if (precision > 0 || add_dp) - *s++ = '.'; - } - - /* - * copy the rest of p, the NUL is NOT copied - */ - while (*p) - *s++ = *p++; - - if (format != 'f') { - char temp[EXPONENT_LENGTH]; /* for exponent conversion */ - int t_len; - bool_int exponent_is_negative; - - *s++ = format; /* either e or E */ - decimal_point--; - if (decimal_point != 0) { - p = conv_10((wide_int) decimal_point, FALSE, &exponent_is_negative, - &temp[EXPONENT_LENGTH], &t_len); - *s++ = exponent_is_negative ? '-' : '+'; - - /* - * Make sure the exponent has at least 2 digits - */ - if (t_len == 1) - *s++ = '0'; - while (t_len--) - *s++ = *p++; - } - else { - *s++ = '+'; - *s++ = '0'; - *s++ = '0'; - } - } - - *len = s - buf; - return (buf); -} - - -/* - * Convert num to a base X number where X is a power of 2. nbits determines X. - * For example, if nbits is 3, we do base 8 conversion - * Return value: - * a pointer to a string containing the number - * - * The caller provides a buffer for the string: that is the buf_end argument - * which is a pointer to the END of the buffer + 1 (i.e. if the buffer - * is declared as buf[ 100 ], buf_end should be &buf[ 100 ]) - */ -static char *conv_p2(register u_wide_int num, register int nbits, - char format, char *buf_end, register int *len) -{ - register int mask = (1 << nbits) - 1; - register char *p = buf_end; - static const char low_digits[] = "0123456789abcdef"; - static const char upper_digits[] = "0123456789ABCDEF"; - register const char *digits = (format == 'X') ? upper_digits : low_digits; - - do { - *--p = digits[num & mask]; - num >>= nbits; - } - while (num); - - *len = buf_end - p; - return (p); -} - - -/* - * Do format conversion placing the output in buffer - */ -API_EXPORT(int) ap_vformatter(int (*flush_func)(ap_vformatter_buff_t *), - ap_vformatter_buff_t *vbuff, const char *fmt, va_list ap) -{ - register char *sp; - register char *bep; - register int cc = 0; - register int i; - - register char *s = NULL; - char *q; - int s_len; - - register int min_width = 0; - int precision = 0; - enum { - LEFT, RIGHT - } adjust; - char pad_char; - char prefix_char; - - double fp_num; - wide_int i_num = (wide_int) 0; - u_wide_int ui_num; - - char num_buf[NUM_BUF_SIZE]; - char char_buf[2]; /* for printing %% and % */ - - /* - * Flag variables - */ - boolean_e is_long; - boolean_e alternate_form; - boolean_e print_sign; - boolean_e print_blank; - boolean_e adjust_precision; - boolean_e adjust_width; - bool_int is_negative; - - sp = vbuff->curpos; - bep = vbuff->endpos; - - while (*fmt) { - if (*fmt != '%') { - INS_CHAR(*fmt, sp, bep, cc); - } - else { - /* - * Default variable settings - */ - adjust = RIGHT; - alternate_form = print_sign = print_blank = NO; - pad_char = ' '; - prefix_char = NUL; - - fmt++; - - /* - * Try to avoid checking for flags, width or precision - */ - if (!ap_islower(*fmt)) { - /* - * Recognize flags: -, #, BLANK, + - */ - for (;; fmt++) { - if (*fmt == '-') - adjust = LEFT; - else if (*fmt == '+') - print_sign = YES; - else if (*fmt == '#') - alternate_form = YES; - else if (*fmt == ' ') - print_blank = YES; - else if (*fmt == '0') - pad_char = '0'; - else - break; - } - - /* - * Check if a width was specified - */ - if (ap_isdigit(*fmt)) { - STR_TO_DEC(fmt, min_width); - adjust_width = YES; - } - else if (*fmt == '*') { - min_width = va_arg(ap, int); - fmt++; - adjust_width = YES; - if (min_width < 0) { - adjust = LEFT; - min_width = -min_width; - } - } - else - adjust_width = NO; - - /* - * Check if a precision was specified - * - * XXX: an unreasonable amount of precision may be specified - * resulting in overflow of num_buf. Currently we - * ignore this possibility. - */ - if (*fmt == '.') { - adjust_precision = YES; - fmt++; - if (ap_isdigit(*fmt)) { - STR_TO_DEC(fmt, precision); - } - else if (*fmt == '*') { - precision = va_arg(ap, int); - fmt++; - if (precision < 0) - precision = 0; - } - else - precision = 0; - } - else - adjust_precision = NO; - } - else - adjust_precision = adjust_width = NO; - - /* - * Modifier check - */ - if (*fmt == 'l') { - is_long = YES; - fmt++; - } - else { - if (*fmt == 'h') /* "short" backward compatibility */ - ++fmt; - is_long = NO; - } - - /* - * Argument extraction and printing. - * First we determine the argument type. - * Then, we convert the argument to a string. - * On exit from the switch, s points to the string that - * must be printed, s_len has the length of the string - * The precision requirements, if any, are reflected in s_len. - * - * NOTE: pad_char may be set to '0' because of the 0 flag. - * It is reset to ' ' by non-numeric formats - */ - switch (*fmt) { - case 'u': - if (is_long) - i_num = va_arg(ap, u_wide_int); - else - i_num = (wide_int) va_arg(ap, unsigned int); - s = conv_10(i_num, 1, &is_negative, - &num_buf[NUM_BUF_SIZE], &s_len); - FIX_PRECISION(adjust_precision, precision, s, s_len); - break; - - case 'd': - case 'i': - if (is_long) - i_num = va_arg(ap, wide_int); - else - i_num = (wide_int) va_arg(ap, int); - s = conv_10(i_num, 0, &is_negative, - &num_buf[NUM_BUF_SIZE], &s_len); - FIX_PRECISION(adjust_precision, precision, s, s_len); - - if (is_negative) - prefix_char = '-'; - else if (print_sign) - prefix_char = '+'; - else if (print_blank) - prefix_char = ' '; - break; - - - case 'o': - if (is_long) - ui_num = va_arg(ap, u_wide_int); - else - ui_num = (u_wide_int) va_arg(ap, unsigned int); - s = conv_p2(ui_num, 3, *fmt, - &num_buf[NUM_BUF_SIZE], &s_len); - FIX_PRECISION(adjust_precision, precision, s, s_len); - if (alternate_form && *s != '0') { - *--s = '0'; - s_len++; - } - break; - - - case 'x': - case 'X': - if (is_long) - ui_num = (u_wide_int) va_arg(ap, u_wide_int); - else - ui_num = (u_wide_int) va_arg(ap, unsigned int); - s = conv_p2(ui_num, 4, *fmt, - &num_buf[NUM_BUF_SIZE], &s_len); - FIX_PRECISION(adjust_precision, precision, s, s_len); - if (alternate_form && i_num != 0) { - *--s = *fmt; /* 'x' or 'X' */ - *--s = '0'; - s_len += 2; - } - break; - - - case 's': - s = va_arg(ap, char *); - if (s != NULL) { - s_len = strlen(s); - if (adjust_precision && precision < s_len) - s_len = precision; - } - else { - s = S_NULL; - s_len = S_NULL_LEN; - } - pad_char = ' '; - break; - - - case 'f': - case 'e': - case 'E': - fp_num = va_arg(ap, double); - /* - * * We use &num_buf[ 1 ], so that we have room for the sign - */ - s = conv_fp(*fmt, fp_num, alternate_form, - (adjust_precision == NO) ? FLOAT_DIGITS : precision, - &is_negative, &num_buf[1], &s_len); - if (is_negative) - prefix_char = '-'; - else if (print_sign) - prefix_char = '+'; - else if (print_blank) - prefix_char = ' '; - break; - - - case 'g': - case 'G': - if (adjust_precision == NO) - precision = FLOAT_DIGITS; - else if (precision == 0) - precision = 1; - /* - * * We use &num_buf[ 1 ], so that we have room for the sign - */ - s = ap_gcvt(va_arg(ap, double), precision, &num_buf[1], - alternate_form); - if (*s == '-') - prefix_char = *s++; - else if (print_sign) - prefix_char = '+'; - else if (print_blank) - prefix_char = ' '; - - s_len = strlen(s); - - if (alternate_form && (q = strchr(s, '.')) == NULL) { - s[s_len++] = '.'; - s[s_len] = '\0'; /* delimit for following strchr() */ - } - if (*fmt == 'G' && (q = strchr(s, 'e')) != NULL) - *q = 'E'; - break; - - - case 'c': - char_buf[0] = (char) (va_arg(ap, int)); - s = &char_buf[0]; - s_len = 1; - pad_char = ' '; - break; - - - case '%': - char_buf[0] = '%'; - s = &char_buf[0]; - s_len = 1; - pad_char = ' '; - break; - - - case 'n': - *(va_arg(ap, int *)) = cc; - break; - - /* - * This is where we extend the printf format, with a second - * type specifier - */ - case 'p': - switch(*++fmt) { - /* - * If the pointer size is equal to the size of an unsigned - * integer we convert the pointer to a hex number, otherwise - * we print "%p" to indicate that we don't handle "%p". - */ - case 'p': - ui_num = (u_wide_int) va_arg(ap, void *); - - if (sizeof(char *) <= sizeof(u_wide_int)) - s = conv_p2(ui_num, 4, 'x', - &num_buf[NUM_BUF_SIZE], &s_len); - else { - s = "%p"; - s_len = 2; - prefix_char = NUL; - } - pad_char = ' '; - break; - - /* print a struct sockaddr_in as a.b.c.d:port */ - case 'I': - { - struct sockaddr_in *si; - - si = va_arg(ap, struct sockaddr_in *); - if (si != NULL) { - s = conv_sockaddr_in(si, &num_buf[NUM_BUF_SIZE], &s_len); - if (adjust_precision && precision < s_len) - s_len = precision; - } - else { - s = S_NULL; - s_len = S_NULL_LEN; - } - pad_char = ' '; - } - break; - - /* print a struct in_addr as a.b.c.d */ - case 'A': - { - struct in_addr *ia; - - ia = va_arg(ap, struct in_addr *); - if (ia != NULL) { - s = conv_in_addr(ia, &num_buf[NUM_BUF_SIZE], &s_len); - if (adjust_precision && precision < s_len) - s_len = precision; - } - else { - s = S_NULL; - s_len = S_NULL_LEN; - } - pad_char = ' '; - } - break; - - case NUL: - /* if %p ends the string, oh well ignore it */ - continue; - - default: - s = "bogus %p"; - s_len = 8; - prefix_char = NUL; - break; - } - break; - - case NUL: - /* - * The last character of the format string was %. - * We ignore it. - */ - continue; - - - /* - * The default case is for unrecognized %'s. - * We print % to help the user identify what - * option is not understood. - * This is also useful in case the user wants to pass - * the output of format_converter to another function - * that understands some other % (like syslog). - * Note that we can't point s inside fmt because the - * unknown could be preceded by width etc. - */ - default: - char_buf[0] = '%'; - char_buf[1] = *fmt; - s = char_buf; - s_len = 2; - pad_char = ' '; - break; - } - - if (prefix_char != NUL && s != S_NULL && s != char_buf) { - *--s = prefix_char; - s_len++; - } - - if (adjust_width && adjust == RIGHT && min_width > s_len) { - if (pad_char == '0' && prefix_char != NUL) { - INS_CHAR(*s, sp, bep, cc); - s++; - s_len--; - min_width--; - } - PAD(min_width, s_len, pad_char); - } - - /* - * Print the string s. - */ - for (i = s_len; i != 0; i--) { - INS_CHAR(*s, sp, bep, cc); - s++; - } - - if (adjust_width && adjust == LEFT && min_width > s_len) - PAD(min_width, s_len, pad_char); - } - fmt++; - } - vbuff->curpos = sp; - return cc; -} - - -static int snprintf_flush(ap_vformatter_buff_t *vbuff) -{ - /* if the buffer fills we have to abort immediately, there is no way - * to "flush" an ap_snprintf... there's nowhere to flush it to. - */ - return -1; -} - - -API_EXPORT(int) ap_snprintf(char *buf, size_t len, const char *format,...) -{ - int cc; - va_list ap; - ap_vformatter_buff_t vbuff; - - if (len == 0) - return 0; - - /* save one byte for nul terminator */ - vbuff.curpos = buf; - vbuff.endpos = buf + len - 1; - va_start(ap, format); - cc = ap_vformatter(snprintf_flush, &vbuff, format, ap); - va_end(ap); - *vbuff.curpos = '\0'; - return (cc == -1) ? len : cc; -} - - -API_EXPORT(int) ap_vsnprintf(char *buf, size_t len, const char *format, - va_list ap) -{ - int cc; - ap_vformatter_buff_t vbuff; - - if (len == 0) - return 0; - - /* save one byte for nul terminator */ - vbuff.curpos = buf; - vbuff.endpos = buf + len - 1; - cc = ap_vformatter(snprintf_flush, &vbuff, format, ap); - *vbuff.curpos = '\0'; - return (cc == -1) ? len : cc; -} - diff --git a/lib/apr_tables.c b/lib/apr_tables.c deleted file mode 100644 index bcb72bb32..000000000 --- a/lib/apr_tables.c +++ /dev/null @@ -1,771 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - * Resource allocation code... the code here is responsible for making - * sure that nothing leaks. - * - * rst --- 4/95 --- 6/95 - */ - -#ifndef WIN32 -#include "apr_config.h" -#else -#include "apr_win.h" -#endif - -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_lib.h" -#include "misc.h" -#include -#include - -/***************************************************************** - * This file contains array and table functions only. - */ - -/***************************************************************** - * - * The 'array' functions... - */ - -static void make_array_core(ap_array_header_t *res, struct context_t *c, - int nelts, int elt_size) -{ - /* - * Assure sanity if someone asks for - * array of zero elts. - */ - if (nelts < 1) { - nelts = 1; - } - - res->elts = ap_pcalloc(c, nelts * elt_size); - - res->cont = c; - res->elt_size = elt_size; - res->nelts = 0; /* No active elements yet... */ - res->nalloc = nelts; /* ...but this many allocated */ -} - -API_EXPORT(ap_array_header_t *) ap_make_array(struct context_t *p, - int nelts, int elt_size) -{ - ap_array_header_t *res; - - res = (ap_array_header_t *) ap_palloc(p, sizeof(ap_array_header_t)); - make_array_core(res, p, nelts, elt_size); - return res; -} - -API_EXPORT(void *) ap_push_array(ap_array_header_t *arr) -{ - if (arr->nelts == arr->nalloc) { - int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2; - char *new_data; - - new_data = ap_pcalloc(arr->cont, arr->elt_size * new_size); - - memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size); - arr->elts = new_data; - arr->nalloc = new_size; - } - - ++arr->nelts; - return arr->elts + (arr->elt_size * (arr->nelts - 1)); -} - -API_EXPORT(void) ap_array_cat(ap_array_header_t *dst, - const ap_array_header_t *src) -{ - int elt_size = dst->elt_size; - - if (dst->nelts + src->nelts > dst->nalloc) { - int new_size = (dst->nalloc <= 0) ? 1 : dst->nalloc * 2; - char *new_data; - - while (dst->nelts + src->nelts > new_size) { - new_size *= 2; - } - - new_data = ap_pcalloc(dst->cont, elt_size * new_size); - memcpy(new_data, dst->elts, dst->nalloc * elt_size); - - dst->elts = new_data; - dst->nalloc = new_size; - } - - memcpy(dst->elts + dst->nelts * elt_size, src->elts, - elt_size * src->nelts); - dst->nelts += src->nelts; -} - -API_EXPORT(ap_array_header_t *) ap_copy_array(struct context_t *p, - const ap_array_header_t *arr) -{ - ap_array_header_t *res = ap_make_array(p, arr->nalloc, arr->elt_size); - - memcpy(res->elts, arr->elts, arr->elt_size * arr->nelts); - res->nelts = arr->nelts; - return res; -} - -/* This cute function copies the array header *only*, but arranges - * for the data section to be copied on the first push or arraycat. - * It's useful when the elements of the array being copied are - * read only, but new stuff *might* get added on the end; we have the - * overhead of the full copy only where it is really needed. - */ - -static APR_INLINE void copy_array_hdr_core(ap_array_header_t *res, - const ap_array_header_t *arr) -{ - res->elts = arr->elts; - res->elt_size = arr->elt_size; - res->nelts = arr->nelts; - res->nalloc = arr->nelts; /* Force overflow on push */ -} - -API_EXPORT(ap_array_header_t *) - ap_copy_array_hdr(struct context_t *p, - const ap_array_header_t *arr) -{ - ap_array_header_t *res; - - res = (ap_array_header_t *) ap_palloc(p, sizeof(ap_array_header_t)); - res->cont = p; - copy_array_hdr_core(res, arr); - return res; -} - -/* The above is used here to avoid consing multiple new array bodies... */ - -API_EXPORT(ap_array_header_t *) - ap_append_arrays(struct context_t *p, - const ap_array_header_t *first, - const ap_array_header_t *second) -{ - ap_array_header_t *res = ap_copy_array_hdr(p, first); - - ap_array_cat(res, second); - return res; -} - -/* ap_array_pstrcat generates a new string from the pool 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. - */ -API_EXPORT(char *) ap_array_pstrcat(struct context_t *p, - const ap_array_header_t *arr, - const char sep) -{ - char *cp, *res, **strpp; - int i, len; - - if (arr->nelts <= 0 || arr->elts == NULL) { /* Empty table? */ - return (char *) ap_pcalloc(p, 1); - } - - /* Pass one --- find length of required string */ - - len = 0; - for (i = 0, strpp = (char **) arr->elts; ; ++strpp) { - if (strpp && *strpp != NULL) { - len += strlen(*strpp); - } - if (++i >= arr->nelts) { - break; - } - if (sep) { - ++len; - } - } - - /* Allocate the required string */ - - res = (char *) ap_palloc(p, len + 1); - cp = res; - - /* Pass two --- copy the argument strings into the result space */ - - for (i = 0, strpp = (char **) arr->elts; ; ++strpp) { - if (strpp && *strpp != NULL) { - len = strlen(*strpp); - memcpy(cp, *strpp, len); - cp += len; - } - if (++i >= arr->nelts) { - break; - } - if (sep) { - *cp++ = sep; - } - } - - *cp = '\0'; - - /* Return the result string */ - - return res; -} - - -/***************************************************************** - * - * The "table" functions. - */ - -/* - * XXX: if you tweak this you should look at is_empty_table() and table_elts() - * in alloc.h - */ -#ifdef MAKE_TABLE_PROFILE -static ap_table_entry_t *table_push(ap_table_t *t) -{ - if (t->a.nelts == t->a.nalloc) { - fprintf(stderr, - "table_push: table created by %p hit limit of %u\n", - t->creator, t->a.nalloc); - } - return (ap_table_entry_t *) ap_push_array(&t->a); -} -#else /* MAKE_TABLE_PROFILE */ -#define table_push(t) ((ap_table_entry_t *) ap_push_array(&(t)->a)) -#endif /* MAKE_TABLE_PROFILE */ - - -API_EXPORT(ap_table_t *) ap_make_table(struct context_t *p, int nelts) -{ - ap_table_t *t = ap_palloc(p, sizeof(ap_table_t)); - - make_array_core(&t->a, p, nelts, sizeof(ap_table_entry_t)); -#ifdef MAKE_TABLE_PROFILE - t->creator = __builtin_return_address(0); -#endif - return t; -} - -API_EXPORT(ap_table_t *) ap_copy_table(struct context_t *p, const ap_table_t *t) -{ - ap_table_t *new = ap_palloc(p, sizeof(ap_table_t)); - -#ifdef POOL_DEBUG - /* we don't copy keys and values, so it's necessary that t->a.pool - * have a life span at least as long as p - */ - if (!ap_pool_is_ancestor(t->a.pool, p)) { - fprintf(stderr, "copy_table: t's pool is not an ancestor of p\n"); - abort(); - } -#endif - make_array_core(&new->a, p, t->a.nalloc, sizeof(ap_table_entry_t)); - memcpy(new->a.elts, t->a.elts, t->a.nelts * sizeof(ap_table_entry_t)); - new->a.nelts = t->a.nelts; - return new; -} - -API_EXPORT(void) ap_clear_table(ap_table_t *t) -{ - t->a.nelts = 0; -} - -API_EXPORT(const char *) ap_table_get(const ap_table_t *t, const char *key) -{ - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - int i; - - if (key == NULL) { - return NULL; - } - - for (i = 0; i < t->a.nelts; ++i) { - if (!strcasecmp(elts[i].key, key)) { - return elts[i].val; - } - } - - return NULL; -} - -API_EXPORT(void) ap_table_set(ap_table_t *t, const char *key, - const char *val) -{ - register int i, j, k; - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - int done = 0; - - for (i = 0; i < t->a.nelts; ) { - if (!strcasecmp(elts[i].key, key)) { - if (!done) { - elts[i].val = ap_pstrdup(t->a.cont, val); - done = 1; - ++i; - } - else { /* delete an extraneous element */ - for (j = i, k = i + 1; k < t->a.nelts; ++j, ++k) { - elts[j].key = elts[k].key; - elts[j].val = elts[k].val; - } - --t->a.nelts; - } - } - else { - ++i; - } - } - - if (!done) { - elts = (ap_table_entry_t *) table_push(t); - elts->key = ap_pstrdup(t->a.cont, key); - elts->val = ap_pstrdup(t->a.cont, val); - } -} - -API_EXPORT(void) ap_table_setn(ap_table_t *t, const char *key, - const char *val) -{ - register int i, j, k; - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - int done = 0; - -#ifdef POOL_DEBUG - { - if (!ap_pool_is_ancestor(ap_find_pool(key), t->a.pool)) { - fprintf(stderr, "table_set: key not in ancestor pool of t\n"); - abort(); - } - if (!ap_pool_is_ancestor(ap_find_pool(val), t->a.pool)) { - fprintf(stderr, "table_set: val not in ancestor pool of t\n"); - abort(); - } - } -#endif - - for (i = 0; i < t->a.nelts; ) { - if (!strcasecmp(elts[i].key, key)) { - if (!done) { - elts[i].val = (char *)val; - done = 1; - ++i; - } - else { /* delete an extraneous element */ - for (j = i, k = i + 1; k < t->a.nelts; ++j, ++k) { - elts[j].key = elts[k].key; - elts[j].val = elts[k].val; - } - --t->a.nelts; - } - } - else { - ++i; - } - } - - if (!done) { - elts = (ap_table_entry_t *) table_push(t); - elts->key = (char *)key; - elts->val = (char *)val; - } -} - -API_EXPORT(void) ap_table_unset(ap_table_t *t, const char *key) -{ - register int i, j, k; - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - - for (i = 0; i < t->a.nelts; ) { - if (!strcasecmp(elts[i].key, key)) { - - /* found an element to skip over - * there are any number of ways to remove an element from - * a contiguous block of memory. I've chosen one that - * doesn't do a memcpy/bcopy/array_delete, *shrug*... - */ - for (j = i, k = i + 1; k < t->a.nelts; ++j, ++k) { - elts[j].key = elts[k].key; - elts[j].val = elts[k].val; - } - --t->a.nelts; - } - else { - ++i; - } - } -} - -API_EXPORT(void) ap_table_merge(ap_table_t *t, const char *key, - const char *val) -{ - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - int i; - - for (i = 0; i < t->a.nelts; ++i) { - if (!strcasecmp(elts[i].key, key)) { - elts[i].val = ap_pstrcat(t->a.cont, elts[i].val, ", ", val, NULL); - return; - } - } - - elts = (ap_table_entry_t *) table_push(t); - elts->key = ap_pstrdup(t->a.cont, key); - elts->val = ap_pstrdup(t->a.cont, val); -} - -API_EXPORT(void) ap_table_mergen(ap_table_t *t, const char *key, - const char *val) -{ - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - int i; - -#ifdef POOL_DEBUG - { - if (!ap_pool_is_ancestor(ap_find_pool(key), t->a.pool)) { - fprintf(stderr, "table_set: key not in ancestor pool of t\n"); - abort(); - } - if (!ap_pool_is_ancestor(ap_find_pool(val), t->a.pool)) { - fprintf(stderr, "table_set: key not in ancestor pool of t\n"); - abort(); - } - } -#endif - - for (i = 0; i < t->a.nelts; ++i) { - if (!strcasecmp(elts[i].key, key)) { - elts[i].val = ap_pstrcat(t->a.cont, elts[i].val, ", ", val, NULL); - return; - } - } - - elts = (ap_table_entry_t *) table_push(t); - elts->key = (char *)key; - elts->val = (char *)val; -} - -API_EXPORT(void) ap_table_add(ap_table_t *t, const char *key, - const char *val) -{ - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - - elts = (ap_table_entry_t *) table_push(t); - elts->key = ap_pstrdup(t->a.cont, key); - elts->val = ap_pstrdup(t->a.cont, val); -} - -API_EXPORT(void) ap_table_addn(ap_table_t *t, const char *key, - const char *val) -{ - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - -#ifdef POOL_DEBUG - { - if (!ap_pool_is_ancestor(ap_find_pool(key), t->a.pool)) { - fprintf(stderr, "table_set: key not in ancestor pool of t\n"); - abort(); - } - if (!ap_pool_is_ancestor(ap_find_pool(val), t->a.pool)) { - fprintf(stderr, "table_set: key not in ancestor pool of t\n"); - abort(); - } - } -#endif - - elts = (ap_table_entry_t *) table_push(t); - elts->key = (char *)key; - elts->val = (char *)val; -} - -API_EXPORT(ap_table_t *) ap_overlay_tables(struct context_t *p, - const ap_table_t *overlay, - const ap_table_t *base) -{ - ap_table_t *res; - -#ifdef POOL_DEBUG - /* we don't copy keys and values, so it's necessary that - * overlay->a.pool and base->a.pool have a life span at least - * as long as p - */ - if (!ap_pool_is_ancestor(overlay->a.pool, p->pool)) { - fprintf(stderr, - "overlay_tables: overlay's pool is not an ancestor of p\n"); - abort(); - } - if (!ap_pool_is_ancestor(base->a.pool, p->pool)) { - fprintf(stderr, - "overlay_tables: base's pool is not an ancestor of p\n"); - abort(); - } -#endif - - res = ap_palloc(p, sizeof(ap_table_t)); - /* behave like append_arrays */ - res->a.cont = p; - copy_array_hdr_core(&res->a, &overlay->a); - ap_array_cat(&res->a, &base->a); - - return res; -} - -/* And now for something completely abstract ... - - * For each key value given as a vararg: - * run the function pointed to as - * int comp(void *r, char *key, char *value); - * on each valid key-value pair in the table t that matches the vararg key, - * or once for every valid key-value pair if the vararg list is empty, - * until the function returns false (0) or we finish the table. - * - * Note that we restart the traversal for each vararg, which means that - * duplicate varargs will result in multiple executions of the function - * for each matching key. Note also that if the vararg list is empty, - * only one traversal will be made and will cut short if comp returns 0. - * - * Note that the table_get and table_merge functions assume that each key in - * the table is unique (i.e., no multiple entries with the same key). This - * function does not make that assumption, since it (unfortunately) isn't - * true for some of Apache's tables. - * - * Note that rec is simply passed-on to the comp function, so that the - * caller can pass additional info for the task. - */ -API_EXPORT(void) ap_table_do(int (*comp) (void *, const char *, const char *), - void *rec, const ap_table_t *t, ...) -{ - va_list vp; - char *argp; - ap_table_entry_t *elts = (ap_table_entry_t *) t->a.elts; - int rv, i; - - va_start(vp, t); - - argp = va_arg(vp, char *); - - do { - for (rv = 1, i = 0; rv && (i < t->a.nelts); ++i) { - if (elts[i].key && (!argp || !strcasecmp(elts[i].key, argp))) { - rv = (*comp) (rec, elts[i].key, elts[i].val); - } - } - } while (argp && ((argp = va_arg(vp, char *)) != NULL)); - - va_end(vp); -} - -/* Curse libc and the fact that it doesn't guarantee a stable sort. We - * have to enforce stability ourselves by using the order field. If it - * provided a stable sort then we wouldn't even need temporary storage to - * do the work below. -djg - * - * ("stable sort" means that equal keys retain their original relative - * ordering in the output.) - */ -typedef struct { - char *key; - char *val; - int order; -} overlap_key; - -static int sort_overlap(const void *va, const void *vb) -{ - const overlap_key *a = va; - const overlap_key *b = vb; - int r; - - r = strcasecmp(a->key, b->key); - if (r) { - return r; - } - return a->order - b->order; -} - -/* prefer to use the stack for temp storage for overlaps smaller than this */ -#ifndef ap_OVERLAP_TABLES_ON_STACK -#define ap_OVERLAP_TABLES_ON_STACK (512) -#endif - -API_EXPORT(void) ap_overlap_tables(ap_table_t *a, const ap_table_t *b, - unsigned flags) -{ - overlap_key cat_keys_buf[ap_OVERLAP_TABLES_ON_STACK]; - overlap_key *cat_keys; - int nkeys; - ap_table_entry_t *e; - ap_table_entry_t *last_e; - overlap_key *left; - overlap_key *right; - overlap_key *last; - - nkeys = a->a.nelts + b->a.nelts; - if (nkeys < ap_OVERLAP_TABLES_ON_STACK) { - cat_keys = cat_keys_buf; - } - else { - /* XXX: could use scratch free space in a or b's pool instead... - * which could save an allocation in b's pool. - */ - cat_keys = ap_palloc(b->a.cont, sizeof(overlap_key) * nkeys); - } - - nkeys = 0; - - /* Create a list of the entries from a concatenated with the entries - * from b. - */ - e = (ap_table_entry_t *)a->a.elts; - last_e = e + a->a.nelts; - while (e < last_e) { - cat_keys[nkeys].key = e->key; - cat_keys[nkeys].val = e->val; - cat_keys[nkeys].order = nkeys; - ++nkeys; - ++e; - } - - e = (ap_table_entry_t *)b->a.elts; - last_e = e + b->a.nelts; - while (e < last_e) { - cat_keys[nkeys].key = e->key; - cat_keys[nkeys].val = e->val; - cat_keys[nkeys].order = nkeys; - ++nkeys; - ++e; - } - - qsort(cat_keys, nkeys, sizeof(overlap_key), sort_overlap); - - /* Now iterate over the sorted list and rebuild a. - * Start by making sure it has enough space. - */ - a->a.nelts = 0; - if (a->a.nalloc < nkeys) { - a->a.elts = ap_palloc(a->a.cont, a->a.elt_size * nkeys * 2); - a->a.nalloc = nkeys * 2; - } - - /* - * In both the merge and set cases we retain the invariant: - * - * left->key, (left+1)->key, (left+2)->key, ..., (right-1)->key - * are all equal keys. (i.e. strcasecmp returns 0) - * - * We essentially need to find the maximal - * right for each key, then we can do a quick merge or set as - * appropriate. - */ - - if (flags & ap_OVERLAP_TABLES_MERGE) { - left = cat_keys; - last = left + nkeys; - while (left < last) { - right = left + 1; - if (right == last - || strcasecmp(left->key, right->key)) { - ap_table_addn(a, left->key, left->val); - left = right; - } - else { - char *strp; - char *value; - size_t len; - - /* Have to merge some headers. Let's re-use the order field, - * since it's handy... we'll store the length of val there. - */ - left->order = strlen(left->val); - len = left->order; - do { - right->order = strlen(right->val); - len += 2 + right->order; - ++right; - } while (right < last - && !strcasecmp(left->key, right->key)); - /* right points one past the last header to merge */ - value = ap_palloc(a->a.cont, len + 1); - strp = value; - for (;;) { - memcpy(strp, left->val, left->order); - strp += left->order; - ++left; - if (left == right) { - break; - } - *strp++ = ','; - *strp++ = ' '; - } - *strp = 0; - ap_table_addn(a, (left-1)->key, value); - } - } - } - else { - left = cat_keys; - last = left + nkeys; - while (left < last) { - right = left + 1; - while (right < last && !strcasecmp(left->key, right->key)) { - ++right; - } - ap_table_addn(a, (right-1)->key, (right-1)->val); - left = right; - } - } -} - diff --git a/lib/lib.def b/lib/lib.def deleted file mode 100644 index 20996d469..000000000 --- a/lib/lib.def +++ /dev/null @@ -1,60 +0,0 @@ -; lib.def : - -LIBRARY lib -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - apr_MD5Final @1 - apr_MD5Init @2 - apr_MD5Update @3 - apr_cpystrn @4 - ap_register_cleanup @5 - ap_kill_cleanup @6 - apr_fnmatch @7 - apr_is_fnmatch @8 - apr_MD5Encode @9 - apr_validate_password @10 - ap_make_sub_pool @11 - ap_init_alloc @12 - ap_clear_pool @13 - ap_destroy_pool @14 - ap_bytes_in_pool @15 - ap_bytes_in_free_blocks @16 - ap_palloc @20 - ap_pcalloc @21 - ap_pstrdup @22 - ap_pstrndup @23 - ap_pstrcat @24 - ap_pvsprintf @25 - ap_psprintf @26 - ap_make_array @27 - ap_push_array @28 - ap_array_cat @29 - ap_copy_array @30 - ap_copy_array_hdr @31 - ap_append_arrays @32 - ap_array_pstrcat @33 - ap_make_table @34 - ap_copy_table @35 - ap_clear_table @36 - ap_table_get @37 - ap_table_set @38 - ap_table_setn @39 - ap_table_unset @40 - ap_table_merge @41 - ap_table_mergen @42 - ap_table_add @43 - ap_table_addn @44 - ap_overlay_tables @45 - ap_table_do @46 - ap_overlap_tables @47 - ap_run_cleanup @48 - ap_cleanup_for_exec @49 - ap_null_cleanup @50 - ap_note_subprocess @51 - apr_slack @54 - ap_vformatter @55 - ap_snprintf @56 - ap_vsnprintf @57 - ap_getpass @58 diff --git a/lib/lib.dsp b/lib/lib.dsp deleted file mode 100644 index b43422f15..000000000 --- a/lib/lib.dsp +++ /dev/null @@ -1,129 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=lib - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lib.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lib.mak" CFG="lib - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "lib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lib - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "lib - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /I "..\misc\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lib - Win32 Release" -# Name "lib - Win32 Debug" -# Begin Source File - -SOURCE=.\apr_cpystrn.c -# End Source File -# Begin Source File - -SOURCE=.\apr_execve.c -# End Source File -# Begin Source File - -SOURCE=.\apr_fnmatch.c -# End Source File -# Begin Source File - -SOURCE=.\apr_getpass.c -# End Source File -# Begin Source File - -SOURCE=.\apr_md5.c -# End Source File -# Begin Source File - -SOURCE=.\apr_pools.c -# End Source File -# Begin Source File - -SOURCE=.\apr_slack.c -# End Source File -# Begin Source File - -SOURCE=.\apr_snprintf.c -# End Source File -# Begin Source File - -SOURCE=.\apr_tables.c -# End Source File -# Begin Source File - -SOURCE=.\lib.def -# End Source File -# End Target -# End Project diff --git a/locks/beos/Makefile.in b/locks/beos/Makefile.in deleted file mode 100644 index 60dd5fdba..000000000 --- a/locks/beos/Makefile.in +++ /dev/null @@ -1,63 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/unix -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../liblock.a - -OBJS=locks.o \ - crossproc.o \ - intraproc.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -crossproc.o: crossproc.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_errno.h locks.h \ - ../../include/apr_file_io.h -intraproc.o: intraproc.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_errno.h locks.h \ - ../../include/apr_file_io.h -locks.o: locks.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_errno.h locks.h \ - ../../include/apr_file_io.h diff --git a/locks/beos/crossproc.c b/locks/beos/crossproc.c deleted file mode 100644 index b41198c39..000000000 --- a/locks/beos/crossproc.c +++ /dev/null @@ -1,116 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_lock.h" -#include "apr_general.h" -#include "locks.h" - -ap_status_t lock_inter_cleanup(ap_lock_t *lock) -{ - if (lock->curr_locked == 1) { - if (atomic_add(&lock->ben_interproc , -1) > 1){ - release_sem (lock->sem_interproc); - } - } - return APR_SUCCESS; -} - -ap_status_t create_inter_lock(ap_lock_t *new) -{ - new->sem_interproc = (sem_id)ap_palloc(new->cntxt, sizeof(sem_id)); - new->ben_interproc = (int32)ap_palloc(new->cntxt, sizeof(int32)); - - new->ben_interproc = 0; - new->sem_interproc = create_sem(0, "ap_intraproc"); - if (new->sem_interproc < B_NO_ERROR){ - lock_inter_cleanup(new); - return errno; - } - new->curr_locked == 0; - ap_register_cleanup(new->cntxt, (void *)new, lock_inter_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_inter(ap_lock_t *lock) -{ - if (atomic_add(&lock->ben_interproc, 1) > 0){ - acquire_sem(lock->sem_interproc); - } else { - return errno; - } - lock->curr_locked == 1; - return APR_SUCCESS; -} - -ap_status_t unlock_inter(ap_lock_t *lock) -{ - if (atomic_add(&lock->ben_interproc, -1) > 1){ - release_sem(lock->sem_interproc); - } else { - return errno; - } - lock->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_inter_lock(ap_lock_t *lock) -{ - ap_status_t stat; - if ((stat = lock_inter_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_inter_cleanup); - return APR_SUCCESS; - } - return stat; -} diff --git a/locks/beos/intraproc.c b/locks/beos/intraproc.c deleted file mode 100644 index 5e627d79c..000000000 --- a/locks/beos/intraproc.c +++ /dev/null @@ -1,122 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_lock.h" -#include "apr_general.h" -#include "locks.h" -#include -#include - -ap_status_t lock_intra_cleanup(ap_lock_t *lock) -{ -printf ("lock_intra_cleanup\n"); - if (lock->curr_locked == 1) { - if (atomic_add(&lock->ben_intraproc , -1) > 1){ - release_sem (lock->sem_intraproc); - } else { - return errno; - } - } - return APR_SUCCESS; -} - -ap_status_t create_intra_lock(struct lock_t *new) -{ - int32 stat; - new->sem_intraproc = (sem_id)ap_palloc(new->cntxt, sizeof(sem_id)); - new->ben_intraproc = (int32)ap_palloc(new->cntxt, sizeof(int32)); - - new->ben_intraproc = 0; - stat = create_sem(0, "ap_intraproc"); - if (stat < B_NO_ERROR){ - lock_intra_cleanup(new); - return stat; - } - new->sem_intraproc = stat; - new->curr_locked == 0; - ap_register_cleanup(new->cntxt, (void *)new, lock_intra_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_intra(ap_lock_t *lock) -{ - lock->curr_locked == 1; - if (atomic_add (&lock->ben_intraproc, 1) >0){ - if (acquire_sem(lock->sem_intraproc) != B_NO_ERROR){ - atomic_add(&lock->ben_intraproc,-1); - return errno; - } - } - return APR_SUCCESS; -} - -ap_status_t unlock_intra(ap_lock_t *lock) -{ - if (atomic_add(&lock->ben_intraproc, -1) > 1){ - release_sem(lock->sem_intraproc); - } - lock->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_intra_lock(ap_lock_t *lock) -{ - ap_status_t stat; - if ((stat = lock_intra_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_intra_cleanup); - return APR_SUCCESS; - } - return stat; -} diff --git a/locks/beos/locks.c b/locks/beos/locks.c deleted file mode 100644 index ca50665e1..000000000 --- a/locks/beos/locks.c +++ /dev/null @@ -1,143 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_lock.h" -#include "apr_general.h" -#include "locks.h" -#include -#include - -ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct lock_t **lock) -{ - struct lock_t *new; - ap_status_t stat; - - new = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - if (new == NULL){ - return APR_ENOMEM; - } - - new->cntxt = cont; - if (new->cntxt == NULL){ - printf ("null pool\n"); - return APR_ENOMEM; - } - new->type = type; - new->fname = strdup(fname); - - if (type != APR_CROSS_PROCESS) { - if ((stat = create_intra_lock(new)) != APR_SUCCESS) { - return stat; - } - } - if (type != APR_INTRAPROCESS) { - if ((stat = create_inter_lock(new)) != APR_SUCCESS) { - return stat; - } - } - (*lock) = new; - return APR_SUCCESS; -} - -ap_status_t ap_lock(ap_lock_t *lock) -{ - ap_status_t stat; - - if (lock->type != APR_CROSS_PROCESS) { - if ((stat = lock_intra(lock)) != APR_SUCCESS) { - return stat; - } - } - if (lock->type != APR_INTRAPROCESS) { - if ((stat = lock_inter(lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_unlock(ap_lock_t *lock) -{ - ap_status_t stat; - if (lock->type != APR_CROSS_PROCESS) { - if ((stat = unlock_intra(lock)) != APR_SUCCESS) { - return stat; - } - } - if (lock->type != APR_INTRAPROCESS) { - if ((stat = unlock_inter(lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_destroy_lock(ap_lock_t *lock) -{ - ap_status_t stat; - if (lock->type != APR_CROSS_PROCESS) { - if ((stat = destroy_intra_lock(lock)) != APR_SUCCESS) { - return stat; - } - } - if (lock->type != APR_INTRAPROCESS) { - if ((stat = destroy_inter_lock(lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - - diff --git a/locks/beos/locks.h b/locks/beos/locks.h deleted file mode 100644 index 3d8ad8b2f..000000000 --- a/locks/beos/locks.h +++ /dev/null @@ -1,79 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include -#include "apr_lock.h" -#include "apr_file_io.h" - -struct lock_t { - ap_context_t *cntxt; - ap_locktype_e type; - int curr_locked; - char *fname; - /* Inter proc */ - sem_id sem_interproc; - int32 ben_interproc; - /* Intra Proc */ - sem_id sem_intraproc; - int32 ben_intraproc; - /* At some point, we should do a type for both inter and intra process - * locking here. Something like pthread_mutex with PTHREAD_PROCESS_SHARED - */ -}; - -#endif /* LOCKS_H */ - diff --git a/locks/os2/Makefile.in b/locks/os2/Makefile.in deleted file mode 100644 index e519b292c..000000000 --- a/locks/os2/Makefile.in +++ /dev/null @@ -1,61 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/os2 -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../lock.a - -OBJS=locks.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -crossproc.o: crossproc.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_errno.h locks.h \ - ../../include/apr_file_io.h ../../file_io/unix/fileio.h -intraproc.o: intraproc.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_errno.h locks.h \ - ../../include/apr_file_io.h ../../file_io/unix/fileio.h -locks.o: locks.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_errno.h locks.h \ - ../../include/apr_file_io.h ../../file_io/unix/fileio.h diff --git a/locks/os2/locks.c b/locks/os2/locks.c deleted file mode 100644 index 300b557a2..000000000 --- a/locks/os2/locks.c +++ /dev/null @@ -1,147 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_general.h" -#include "apr_lib.h" -#include "locks.h" -#include "fileio.h" -#include -#define INCL_DOS -#include - - -ap_status_t lock_cleanup(void *thelock) -{ - struct lock_t *lock = thelock; - return ap_destroy_lock(lock); -} - - - -ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct lock_t **lock) -{ - struct lock_t *new; - ULONG rc; - char *semname; - - new = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - new->cntxt = cont; - new->type = type; - new->curr_locked = 0; - new->fname = ap_pstrdup(cont, fname); - semname = ap_pstrcat(cont, "/SEM32/", fname, NULL); - rc = DosCreateMutexSem(semname, &(new->hMutex), type == APR_CROSS_PROCESS ? DC_SEM_SHARED : 0, FALSE); - *lock = new; - return os2errno(rc); -} - - - -ap_status_t ap_lock(struct lock_t *lock) -{ - ULONG rc; - - if (!lock->curr_locked) { - rc = DosRequestMutexSem(lock->hMutex, SEM_INDEFINITE_WAIT); - - if (rc == 0) - lock->curr_locked = TRUE; - - return os2errno(rc); - } - - return APR_SUCCESS; -} - - - -ap_status_t ap_unlock(struct lock_t *lock) -{ - ULONG rc; - - if (lock->curr_locked) { - rc = DosReleaseMutexSem(lock->hMutex); - - if (rc == 0) - lock->curr_locked = FALSE; - - return os2errno(rc); - } - - return APR_SUCCESS; -} - - - -ap_status_t ap_destroy_lock(struct lock_t *lock) -{ - ULONG rc; - ap_status_t stat; - - stat = ap_unlock(lock); - - if (stat != APR_SUCCESS) - return stat; - - if (lock->hMutex == 0) - return APR_SUCCESS; - - rc = DosCloseMutexSem(lock->hMutex); - - if (!rc) - lock->hMutex = 0; - - return os2errno(rc); -} diff --git a/locks/os2/locks.h b/locks/os2/locks.h deleted file mode 100644 index 86c304d1d..000000000 --- a/locks/os2/locks.h +++ /dev/null @@ -1,72 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include "apr_lock.h" -#include "apr_file_io.h" -#define INCL_DOS -#include - -struct lock_t { - ap_context_t *cntxt; - ap_locktype_e type; - int curr_locked; - char *fname; - HMTX hMutex; -}; - -#endif /* LOCKS_H */ - diff --git a/locks/unix/.cvsignore b/locks/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/locks/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/locks/unix/Makefile.in b/locks/unix/Makefile.in deleted file mode 100644 index b47905dd8..000000000 --- a/locks/unix/Makefile.in +++ /dev/null @@ -1,67 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/unix -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../liblock.a - -OBJS=locks.o \ - crossproc.o \ - intraproc.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -crossproc.o: crossproc.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h locks.h ../../include/apr_file_io.h -intraproc.o: intraproc.c ../../include/apr_lock.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h locks.h ../../include/apr_file_io.h -locks.o: locks.c ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_portable.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_win.h \ - ../../include/apr_network_io.h ../../include/apr_lock.h \ - ../../include/apr_time.h locks.h diff --git a/locks/unix/crossproc.c b/locks/unix/crossproc.c deleted file mode 100644 index 3c2aeb511..000000000 --- a/locks/unix/crossproc.c +++ /dev/null @@ -1,377 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_lock.h" -#include "apr_general.h" -#include "locks.h" -#include -#include - -#if defined (USE_SYSVSEM_SERIALIZE) -ap_status_t lock_cleanup(struct lock_t *lock) -{ - union semun ick; - if (lock->curr_locked == 1) { - ick.val = 0; - semctl(new->interproc, 0, IPC_RMID, ick); - } - return APR_SUCCESS; -} - -ap_status_t create_inter_lock(struct lock_t *new) -{ - union semun ick; - struct semid_ds buf; - - new->interproc = semget(IPC_PRIVATE, 1, IPC_CREATE | 0600); - - if (new->interproc < 0) { - lock_cleanup(new); - return errno; - } - ick.val = 1; - if (semctl(new->interproc, 0, SETVAL, ick) < 0) { - lock_cleanup(new); - return errno; - } - /* pre-initialize these */ - new->op_on.sem_num = 0; - new->op_on.sem_op = -1; - new->op_on.sem_flg = SEM_UNDO; - new->op_off.sem_num = 0; - new->op_off.sem_op = 1; - new->op_off.sem_flg = SEM_UNDO; - - new->curr_locked == 0; - ap_register_cleanup(new->cntxt, (void *)new, lock_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_inter(struct lock_t *lock) -{ - new->curr_locked == 1; - if (semop(lock->interproc, &lock->op_on, 1) < 0) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t unlock_inter(struct lock_t *lock) -{ - if (semop(lock->interproc, &lock->op_off, 1) < 0) { - return errno; - } - new->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_inter_lock(struct lock_t *lock) -{ - ap_status_t stat; - - if ((stat = lock_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_cleanup); - return APR_SUCCESS; - } - return stat; -} - -ap_status_t child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) -{ - return APR_SUCCESS; -} - -#elif defined (USE_PROC_PTHREAD_SERIALIZE) - -ap_status_t lock_cleanup(struct lock_t *lock) -{ - if (lock->curr_locked == 1) { - if (pthread_mutex_unlock(lock->interproc)) { - return errno; - } - if (munmap((caddr_t)lock->interproc, sizeof(pthread_mutex_t))){ - return errno; - } - } - return APR_SUCCESS; -} - -ap_status_t create_inter_lock(struct lock_t *new) -{ - ap_status_t stat; - int fd; - pthread_mutexattr_t mattr; - - fd = open("/dev/zero", O_RDWR); - if (fd < 0) { - return errno; - } - - new->interproc = (pthread_mutex_t *)mmap((caddr_t) 0, - sizeof(pthread_mutex_t), - PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (new->interproc = (void *) (caddr_t) -1) { - return errno; - } - close(fd); - if ((stat = pthread_mutexattr_init(&mattr))) { - lock_cleanup(new); - return stat; - } - if ((stat = pthread_mutexattr_setpshared(&mattr, - PTHREAD_PROCESS_SHARED))) { - lock_cleanup(new); - return stat; - } - - if ((stat = pthread_mutex_init(new->interproc, &mattr))) { - lock_cleanup(new); - return stat; - } - - if ((stat = pthread_mutex_destroy(&mattr))) { - lock_cleanup(new); - return stat; - } - - new->curr_locked == 0; - ap_register_cleanup(new->cntxt, (void *)new, lock_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_inter(struct lock_t *lock) -{ - ap_status_t stat; - new->curr_locked == 1; - if (stat = pthread_mutex_lock(lock->interproc)) { - return stat; - } - return APR_SUCCESS; -} - -ap_status_t unlock_inter(struct lock_t *lock) -{ - ap_status_t stat; - - if (stat = pthread_mutex_unlock(lock->interproc)) { - returno stat; - } - new->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_inter_lock(struct lock_t *lock) -{ - ap_status_t stat; - if ((stat = lock_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_cleanup); - return APR_SUCCESS; - } - return stat; -} - -ap_status_t child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) -{ - return APR_SUCCESS; -} - -#elif defined (USE_FCNTL_SERIALIZE) - -ap_status_t lock_cleanup(struct lock_t *lock) -{ - if (lock->curr_locked == 1) { - if (fcntl(lock->interproc, F_SETLKW, &lock->unlock_it) < 0) { - return errno; - } - lock->curr_locked == 0; - } - return APR_SUCCESS; -} - -ap_status_t create_inter_lock(struct lock_t *new) -{ - new->interproc = open(new->fname, O_CREAT | O_WRONLY | O_EXCL, 0644); - - if (new->interproc < 0) { - lock_cleanup(new); - return errno; - } - /* pre-initialize these */ - new->lock_it.l_whence = SEEK_SET; /* from current point */ - new->lock_it.l_start = 0; /* -"- */ - new->lock_it.l_len = 0; /* until end of file */ - new->lock_it.l_type = F_WRLCK; /* set exclusive/write lock */ - new->lock_it.l_pid = 0; /* pid not actually interesting */ - new->unlock_it.l_whence = SEEK_SET; /* from current point */ - new->unlock_it.l_start = 0; /* -"- */ - new->unlock_it.l_len = 0; /* until end of file */ - new->unlock_it.l_type = F_UNLCK; /* set exclusive/write lock */ - new->unlock_it.l_pid = 0; /* pid not actually interesting */ - - new->curr_locked == 0; - unlink(new->fname); - ap_register_cleanup(new->cntxt, (void *)new, lock_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_inter(struct lock_t *lock) -{ - lock->curr_locked == 1; - if (fcntl(lock->interproc, F_SETLKW, &lock->lock_it) < 0) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t unlock_inter(struct lock_t *lock) -{ - if (fcntl(lock->interproc, F_SETLKW, &lock->unlock_it) < 0) { - return errno; - } - lock->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_inter_lock(struct lock_t *lock) -{ - ap_status_t stat; - if ((stat = lock_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_cleanup); - return APR_SUCCESS; - } - return stat; -} - -ap_status_t child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) -{ - return APR_SUCCESS; -} - -#elif defined (USE_FLOCK_SERIALIZE) -ap_status_t lock_cleanup(struct lock_t *lock) -{ - if (lock->curr_locked == 1) { - if (flock(lock->interproc, LOCK_UN) < 0) { - return errno; - } - lock->curr_locked == 0; - } - unlink(lock->fname); - return APR_SUCCESS; -} - -ap_status_t create_inter_lock(struct lock_t *new) -{ - new->interproc = open(new->fname, O_CREAT | O_WRONLY | O_EXCL, 0600); - - if (new->interproc < 0) { - lock_cleanup(new); - return errno; - } - new->curr_locked == 0; - ap_register_cleanup(new->cntxt, (void *)new, lock_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_inter(struct lock_t *lock) -{ - lock->curr_locked == 1; - if (flock(lock->interproc, LOCK_EX) < 0) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t unlock_inter(struct lock_t *lock) -{ - if (flock(lock->interproc, LOCK_UN) < 0) { - return errno; - } - lock->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_inter_lock(struct lock_t *lock) -{ - ap_status_t stat; - if ((stat = lock_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_cleanup); - return APR_SUCCESS; - } - return stat; -} - -ap_status_t child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) -{ - struct lock_t *new; - - new = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - - new->interproc = open(new->fname, O_CREAT | O_WRONLY | O_EXCL, 0600); - if (new->interproc == -1) { - destroy_inter_lock(new); - return errno; - } - return APR_SUCCESS; -} - -#else -/* No inter-process mutex on this platform. Use at your own risk */ -#define create_inter_lock(x, y) -#define lock_inter(x, y) -#define unlock_inter(x, y) -#define destroy_inter_lock(x, y) -#define child_init_lock(x, y, z) -#endif diff --git a/locks/unix/intraproc.c b/locks/unix/intraproc.c deleted file mode 100644 index cb8cca1b8..000000000 --- a/locks/unix/intraproc.c +++ /dev/null @@ -1,134 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_lock.h" -#include "apr_general.h" -#include "locks.h" - -#if defined (USE_PTHREAD_SERIALIZE) - -ap_status_t lock_intra_cleanup(struct lock_t *lock) -{ - ap_status_t stat; - if (lock->curr_locked == 1) { - if (stat = pthread_mutex_unlock(lock->intraproc)) { - return stat; - } - } - return APR_SUCCESS; -} - -ap_status_t create_intra_lock(struct lock_t *new) -{ - ap_status_t stat; - pthread_mutexattr_t mattr; - - new->intraproc = (pthread_mutex_t *)ap_palloc(new->cntxt, - sizeof(pthread_mutex_t)); - if (new->intraproc == NULL ) { - return errno; - } - if ((stat = pthread_mutexattr_init(&mattr))) { - lock_intra_cleanup(new); - return stat; - } - - if ((stat = pthread_mutex_init(new->intraproc, &mattr))) { - lock_intra_cleanup(new); - return stat; - } - - if ((stat = pthread_mutex_destroy(new->intraproc))) { - lock_intra_cleanup(new); - return stat; - } - - new->curr_locked == 0; - ap_register_cleanup(new->cntxt, (void *)new, lock_intra_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t lock_intra(struct lock_t *lock) -{ - ap_status_t stat; - - lock->curr_locked == 1; - if (stat = pthread_mutex_lock(lock->intraproc)) { - return stat; - } - return APR_SUCCESS; -} - -ap_status_t unlock_intra(struct lock_t *lock) -{ - ap_status_t stat; - - if (stat = pthread_mutex_unlock(lock->intraproc)) { - return stat; - } - lock->curr_locked == 0; - return APR_SUCCESS; -} - -ap_status_t destroy_intra_lock(struct lock_t *lock) -{ - ap_status_t stat; - if ((stat = lock_intra_cleanup(lock)) == APR_SUCCESS) { - ap_kill_cleanup(lock->cntxt, lock, lock_intra_cleanup); - return APR_SUCCESS; - } - return stat; -} -#endif diff --git a/locks/unix/locks.c b/locks/unix/locks.c deleted file mode 100644 index f8c782c8b..000000000 --- a/locks/unix/locks.c +++ /dev/null @@ -1,284 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_general.h" -#include "apr_portable.h" -#include "locks.h" -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_lock(ap_context_t *, ap_locktype_e, char *, - * ap_lock_t **) - * Create a new instance of a lock structure. - * arg 1) The context to operate on. - * arg 2) The type of lock to create, one of: - * APR_CROSS_PROCESS -- lock processes from the protected area. - * APR_INTRAPROCESS -- lock threads from the protected area. - * APR_LOCKALL -- lock processes and threads from the - * protected area. - * arg 3) 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. - * arg 4) The newly created lock structure. - * NOTE: APR_CROSS_PROCESS may lock both processes and threads, but it is - * only garaunteed to lock processes. - */ -ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct lock_t **lock) -{ - struct lock_t *new; - ap_status_t stat; - - new = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - - new->cntxt = cont; - new->type = type; - new->fname = strdup(fname); - - if (type != APR_CROSS_PROCESS) { - if ((stat = create_intra_lock(new)) != APR_SUCCESS) { - return stat; - } - } - if (type != APR_INTRAPROCESS) { - if ((stat = create_inter_lock(new)) != APR_SUCCESS) { - return stat; - } - } - *lock = new; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_lock(ap_lock_t *) - * Lock a protected region. - * arg 1) The lock to set. - */ -ap_status_t ap_lock(struct lock_t *lock) -{ - ap_status_t stat; - if (lock->type != APR_CROSS_PROCESS) { - if ((stat = lock_intra(lock)) != APR_SUCCESS) { - return stat; - } - } - if (lock->type != APR_INTRAPROCESS) { - if ((stat = lock_inter(lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_unlock(ap_lock_t *) - * Unlock a protected region. - * arg 1) The lock to reset. - */ -ap_status_t ap_unlock(struct lock_t *lock) -{ - ap_status_t stat; - - if (lock->type != APR_CROSS_PROCESS) { - if ((stat = unlock_intra(lock)) != APR_SUCCESS) { - return stat; - } - } - if (lock->type != APR_INTRAPROCESS) { - if ((stat = unlock_inter(lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_destroy_lock(ap_lock_t *) - * Free the memory associated with a lock. - * arg 1) The lock to free. - * NOTE: If the lock is currently active when it is destroyed, it - * will be unlocked first. - */ -ap_status_t ap_destroy_lock(struct lock_t *lock) -{ - ap_status_t stat; - if (lock->type != APR_CROSS_PROCESS) { - if ((stat = destroy_intra_lock(lock)) != APR_SUCCESS) { - return stat; - } - } - if (lock->type != APR_INTRAPROCESS) { - if ((stat = destroy_inter_lock(lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_child_init_lock(ap_context_t *, char *, ap_lock_t **) - * Re-open a lock in a child process. - * arg 1) The context to operate on. - * arg 2) 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. This filename should be the same - * one that was passed to ap_create_lock - * arg 1) The newly re-opened lock structure. - * NOTE: This function doesn't always do something, it depends on the - * locking mechanism chosen for the platform, but it is a good - * idea to call it regardless, because it makes the code more - * portable. - */ -ap_status_t ap_child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) -{ - ap_status_t stat; - if ((*lock)->type != APR_CROSS_PROCESS) { - if ((stat = child_init_lock(cont, fname, lock)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_lockdata(ap_lock_t *, void *) - * Return the context associated with the current lock. - * arg 1) The currently open lock. - * arg 2) The user data associated with the lock. - */ -ap_status_t ap_get_lockdata(struct lock_t *lock, void *data) -{ - if (lock != NULL) { - return ap_get_userdata(lock->cntxt, &data); - } - else { - data = NULL; - return APR_ENOLOCK; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_lockdata(ap_lock_t *, void *) - * Return the context associated with the current lock. - * arg 1) The currently open lock. - * arg 2) The user data to associate with the lock. - */ -ap_status_t ap_set_lockdata(struct lock_t *lock, void *data) -{ - if (lock != NULL) { - return ap_set_userdata(lock->cntxt, data); - } - else { - data = NULL; - return APR_ENOLOCK; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_lock(ap_lock_t **, ap_os_lock_t *) - * onvert the lock from os specific type to apr type - * arg 1) The apr lock to convert. - * arg 2) The os specific lock we are converting to. - */ -ap_status_t ap_get_os_lock(struct lock_t *lock, ap_os_lock_t *oslock) -{ - if (lock == NULL) { - return APR_ENOLOCK; - } - oslock->crossproc = lock->interproc; -#if defined (USE_SYSVSEM_SERIALIZE) - oslock->op_on = lock->op_on; - oslock->op_off = lock->op_off; -#elif defined (USE_FCNTL_SERIALIZE) - oslock->lock_it = lock->lock_it; - oslock->unlock_it = lock->unlock_it; -#endif -#if defined (USE_PTHREAD_SERIALIZE) - oslock->intraproc = lock->intraproc; -#endif - - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_lock(ap_context_t *, ap_lock_t **, ap_os_lock_t *) - * onvert the lock from os specific type to apr type - * arg 1) The context to use if it is needed. - * arg 2) The apr lock we are converting to. - * arg 3) The os specific lock to convert. - */ -ap_status_t ap_put_os_lock(ap_context_t *cont, struct lock_t **lock, - ap_os_lock_t *thelock) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*lock) == NULL) { - (*lock) = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - (*lock)->cntxt = cont; - } - (*lock)->interproc = thelock->crossproc; -#if defined (USE_SYSVSEM_SERIALIZE) - (*lock)->op_on = thelock->op_on; - (*lock)->op_off = thelock->op_off; -#elif defined (USE_FCNTL_SERIALIZE) - (*lock)->lock_it = thelock->lock_it; - (*lock)->unlock_it = thelock->unlock_it; -#endif -#if defined (USE_PTHREAD_SERIALIZE) - (*lock)->intraproc = thelock->intraproc; -#endif - return APR_SUCCESS; -} - diff --git a/locks/unix/locks.h b/locks/unix/locks.h deleted file mode 100644 index cb83bf264..000000000 --- a/locks/unix/locks.h +++ /dev/null @@ -1,112 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include "apr_lock.h" -#include "apr_file_io.h" - -#if defined (USE_USLOCK_SERIALIZE) -#include -#elif defined (USE_SYSVSEM_SERIALIZE) -#include -#include -#include -#include -#elif defined (USE_FLOCK_SERIALIZE) || (USE_FCNTL_SERIALIZE) -#include -#include -#endif -#include - -#ifndef HAVE_UNION_SEMUN -/* it makes no sense, but this isn't defined on solaris */ -union semun { - long val; - struct semid_ds *buf; - ushort *array; -}; -#endif - -struct lock_t { - ap_context_t *cntxt; - ap_locktype_e type; - int curr_locked; - char *fname; -#if defined (USE_SYSVSEM_SERIALIZE) - int interproc; - struct sembuf op_on; - struct sembuf op_off; -#elif defined (USE_FCNTL_SERIALIZE) - int interproc; - struct flock lock_it; - struct flock unlock_it; -#elif defined (USE_PROC_PTHREAD_SERIALIZE) - pthread_mutex_t *interproc; -#elif defined (USE_FLOCK_SERIALIZE) - int interproc; -#else - /* No Interprocess serialization. Too bad. */ -#endif -#if defined (USE_PTHREAD_SERIALIZE) - pthread_mutex_t *intraproc; -#endif - /* At some point, we should do a type for both inter and intra process - * locking here. Something like pthread_mutex with PTHREAD_PROCESS_SHARED - */ -}; - -#endif /* LOCKS_H */ - diff --git a/locks/win32/locks.c b/locks/win32/locks.c deleted file mode 100644 index f7d38933a..000000000 --- a/locks/win32/locks.c +++ /dev/null @@ -1,178 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_general.h" -#include "apr_lib.h" -#include "locks.h" -#include "apr_portable.h" - -ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct lock_t **lock) -{ - struct lock_t *newlock; - SECURITY_ATTRIBUTES sec; - - newlock = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - - newlock->cntxt = cont; - newlock->fname = strdup(fname); - - sec.nLength = sizeof(SECURITY_ATTRIBUTES); - sec.lpSecurityDescriptor = NULL; - - if (type == APR_CROSS_PROCESS || type == APR_LOCKALL) { - sec.bInheritHandle = TRUE; - } - else { - sec.bInheritHandle = FALSE; - } - - newlock->mutex = CreateMutex(&sec, FALSE, fname); - *lock = newlock; - return APR_SUCCESS; -} - -ap_status_t ap_child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) -{ - (*lock) = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - - if ((*lock) == NULL) { - return APR_ENOMEM; - } - - (*lock)->fname = strdup(fname); - (*lock)->mutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, fname); - - if ((*lock)->mutex == NULL) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_lock(struct lock_t *lock) -{ - DWORD rv; - - rv = WaitForSingleObject(lock->mutex, INFINITE); - - if (rv == WAIT_OBJECT_0 || rv == WAIT_ABANDONED) { - return APR_SUCCESS; - } - if (rv == WAIT_TIMEOUT) { - return APR_TIMEUP; - } - - return APR_EEXIST; -} - -ap_status_t ap_unlock(struct lock_t *lock) -{ - if (ReleaseMutex(lock->mutex) == 0) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_destroy_lock(struct lock_t *lock) -{ - if (CloseHandle(lock->mutex) == 0) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_get_lockdata(struct lock_t *lock, void *data) -{ - if (lock != NULL) { - return ap_get_userdata(lock->cntxt, &data); - } - else { - data = NULL; - return APR_ENOLOCK; - } -} - -ap_status_t ap_set_lockdata(struct lock_t *lock, void *data) -{ - if (lock != NULL) { - return ap_set_userdata(lock->cntxt, data); - } - else { - data = NULL; - return APR_ENOLOCK; - } -} - -ap_status_t ap_get_os_lock(struct lock_t *lock, ap_os_lock_t *thelock) -{ - if (lock == NULL) { - return APR_ENOFILE; - } - thelock = &(lock->mutex); - return APR_SUCCESS; -} - -ap_status_t ap_put_os_lock(ap_context_t *cont, struct lock_t **lock, - ap_os_lock_t *thelock) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*lock) == NULL) { - (*lock) = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); - (*lock)->cntxt = cont; - } - (*lock)->mutex = *thelock; - return APR_SUCCESS; -} diff --git a/locks/win32/locks.def b/locks/win32/locks.def deleted file mode 100644 index b52c3b18e..000000000 --- a/locks/win32/locks.def +++ /dev/null @@ -1,15 +0,0 @@ -; locks.def : - -LIBRARY locks -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_create_lock @1 - ap_lock @2 - ap_unlock @3 - ap_destroy_lock @4 - ap_child_init_lock @5 - ap_get_lockdata @6 - ap_set_lockdata @7 - ap_get_os_lock @8 \ No newline at end of file diff --git a/locks/win32/locks.dsp b/locks/win32/locks.dsp deleted file mode 100644 index 936a14d9b..000000000 --- a/locks/win32/locks.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="locks" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=locks - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "locks.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "locks.mak" CFG="locks - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "locks - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "locks - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "locks - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "locks - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\debug\lib.lib ..\..\misc\win32\debug\misc.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "locks - Win32 Release" -# Name "locks - Win32 Debug" -# Begin Source File - -SOURCE=.\locks.c -# End Source File -# Begin Source File - -SOURCE=.\locks.def -# End Source File -# Begin Source File - -SOURCE=.\locks.h -# End Source File -# End Target -# End Project diff --git a/locks/win32/locks.h b/locks/win32/locks.h deleted file mode 100644 index 7ae4f7031..000000000 --- a/locks/win32/locks.h +++ /dev/null @@ -1,67 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifndef LOCKS_H -#define LOCKS_H - -#include "apr_lock.h" - -struct lock_t { - ap_context_t *cntxt; - HANDLE mutex; - char *fname; -}; - -#endif /* LOCKS_H */ - diff --git a/misc/beos/Makefile.in b/misc/beos/Makefile.in deleted file mode 100644 index a502388fe..000000000 --- a/misc/beos/Makefile.in +++ /dev/null @@ -1,56 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/unix -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../libmisc.a - -OBJS=start.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -start.o: start.c $(INCDIR)/apr_config.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - $(INCDIR)/apr_pools.h $(INCDIR)/apr_lib.h \ - $(INCDIR)/hsregex.h diff --git a/misc/beos/misc.h b/misc/beos/misc.h deleted file mode 100644 index a496c372e..000000000 --- a/misc/beos/misc.h +++ /dev/null @@ -1,71 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef MISC_H -#define MISC_H - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct context_t { - struct ap_pool_t *pool; - ap_int16_t signal_safe; - ap_int16_t cancel_safe; - void *prog_data; -}; - -#endif /* ! MISC_H */ - diff --git a/misc/beos/start.c b/misc/beos/start.c deleted file mode 100644 index eb5231ceb..000000000 --- a/misc/beos/start.c +++ /dev/null @@ -1,131 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include "apr_config.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "misc.h" -#include -#include - -ap_status_t ap_create_context(ap_context_t *cont, void *data, ap_context_t **newcont) -{ - ap_context_t *new; - ap_pool_t *pool; - - if (cont) { - pool = ap_make_sub_pool(cont->pool); - } - else { - pool = ap_init_alloc();; - } - - if (pool == NULL) { - return APR_ENOPOOL; - } - - if (cont) { - new = (struct context_t *)ap_palloc(cont, sizeof(struct context_t)); - } - else { - new = (struct context_t *)malloc(sizeof(struct context_t)); - } - - new->pool = pool; - if (data == NULL && cont) { - new->prog_data = cont->prog_data; - } - else { - new->prog_data = data; - } - if (cont) { - new->signal_safe = cont->signal_safe; - new->cancel_safe = cont->cancel_safe; - } - else { - new->signal_safe = 0; - new->cancel_safe = 0; - } - - *newcont = new; - return APR_SUCCESS; -} - -ap_status_t ap_set_signal_safe(ap_context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->signal_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_set_cancel_safe(ap_context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->cancel_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_destroy_context(ap_context_t *cont) -{ - ap_destroy_pool(cont->pool); - return APR_SUCCESS; -} diff --git a/misc/os2/Makefile.in b/misc/os2/Makefile.in deleted file mode 100644 index a042e3f39..000000000 --- a/misc/os2/Makefile.in +++ /dev/null @@ -1,56 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/os2 -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../misc.a - -OBJS=start.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -start.o: start.c ../../include/apr_general.h \ - ../../include/apr_errno.h ../include/apr_pools.h \ - ../include/apr_lib.h ../include/apr_config.h \ - ../include/hsregex.h diff --git a/misc/os2/misc.h b/misc/os2/misc.h deleted file mode 100644 index a496c372e..000000000 --- a/misc/os2/misc.h +++ /dev/null @@ -1,71 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef MISC_H -#define MISC_H - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct context_t { - struct ap_pool_t *pool; - ap_int16_t signal_safe; - ap_int16_t cancel_safe; - void *prog_data; -}; - -#endif /* ! MISC_H */ - diff --git a/misc/os2/start.c b/misc/os2/start.c deleted file mode 100644 index ade80f619..000000000 --- a/misc/os2/start.c +++ /dev/null @@ -1,129 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "misc.h" -#include -#include - -ap_status_t ap_create_context(struct context_t *cont, void *data, ap_context_t **newcont) -{ - struct context_t *new; - ap_pool_t *pool; - - if (cont) { - pool = ap_make_sub_pool(cont->pool); - } - else { - pool = ap_init_alloc();; - } - - if (pool == NULL) { - return APR_ENOPOOL; - } - - if (cont) { - new = (struct context_t *)ap_palloc(cont, sizeof(struct context_t)); - } - else { - new = (struct context_t *)malloc(sizeof(struct context_t)); - } - - new->pool = pool; - if (data == NULL && cont) { - new->prog_data = cont->prog_data; - } - else { - new->prog_data = data; - } - if (cont) { - new->signal_safe = cont->signal_safe; - new->cancel_safe = cont->cancel_safe; - } - else { - new->signal_safe = 0; - new->cancel_safe = 0; - } - - *newcont = new; - return APR_SUCCESS; -} - -ap_status_t ap_set_signal_safe(struct context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->signal_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_set_cancel_safe(struct context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->cancel_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_destroy_context(struct context_t *cont) -{ - ap_destroy_pool(cont->pool); - return APR_SUCCESS; -} - diff --git a/misc/unix/.cvsignore b/misc/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/misc/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/misc/unix/Makefile.in b/misc/unix/Makefile.in deleted file mode 100644 index 68fbbc05d..000000000 --- a/misc/unix/Makefile.in +++ /dev/null @@ -1,61 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/unix -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../libmisc.a - -OBJS=start.o getopt.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -getopt.o: getopt.c misc.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_file_io.h -start.o: start.c ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_pools.h $(INCDIR)/apr_lib.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h misc.h diff --git a/misc/unix/getopt.c b/misc/unix/getopt.c deleted file mode 100644 index 55fb69b10..000000000 --- a/misc/unix/getopt.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1987, 1993, 1994 - * 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. - */ - -#include -#include -#include -#include "misc.h" - -int opterr = 1, /* if error message should be printed */ - optind = 1, /* index into parent argv vector */ - optopt, /* character checked for validity */ - optreset; /* reset getopt */ -char *optarg; /* argument associated with option */ - -#define EMSG "" - -/* ***APRDOC******************************************************** - * ap_status_t ap_getopt(ap_context_t *, ap_int32_t, char *const *, - * const char *, ap_int32_t) - * Parse the command line options passed to the program. - * arg 1) The context to operate on. - * arg 2) The number of arguments passed to ap_getopt to parse - * arg 3) The array of command line options to parse - * arg 4) A string of characters that are acceptable options to the program. - * characters followed by ":" are required to have an option - * associated - * arg 5) The next option found. There are four potential values for - * this variable on exit. They are: - * APR_EOF -- No more options to parse - * APR_BADCH -- Found a bad option character - * APR_BADARG -- Missing parameter for the found option - * Other -- The next option found. - * NOTE: Arguments 2 and 3 are most commonly argc and argv from - * main(argc, argv) - */ -ap_status_t ap_getopt(struct context_t *cont, ap_int32_t nargc, - char *const *nargv, const char *ostr, ap_int32_t *rv) -{ - char *p; - static char *place = EMSG; /* option letter processing */ - char *oli; /* option letter list index */ - - if (optreset || !*place) { /* update scanning pointer */ - optreset = 0; - if (optind >= nargc || *(place = nargv[optind]) != '-') { - place = EMSG; - *rv = optopt; - return (APR_EOF); - } - if (place[1] && *++place == '-') { /* found "--" */ - ++optind; - place = EMSG; - *rv = optopt; - return (APR_EOF); - } - } /* option letter okay? */ - if ((optopt = (int) *place++) == (int) ':' || - !(oli = strchr(ostr, optopt))) { - /* - * if the user didn't specify '-' as an option, - * assume it means -1. - */ - if (optopt == (int) '-') - *rv = optopt; - return (APR_EOF); - if (!*place) - ++optind; - if (opterr && *ostr != ':') { - if (!(p = strrchr(*nargv, '/'))) - p = *nargv; - else - ++p; - (void) fprintf(stderr, - "%s: illegal option -- %c\n", p, optopt); - } - *rv = optopt; - return APR_BADCH; - } - if (*++oli != ':') { /* don't need argument */ - optarg = NULL; - if (!*place) - ++optind; - } - else { /* need an argument */ - if (*place) /* no white space */ - optarg = place; - else if (nargc <= ++optind) { /* no arg */ - place = EMSG; - if (*ostr == ':') - *rv = optopt; - return (APR_BADARG); - if (opterr) { - if (!(p = strrchr(*nargv, '/'))) - p = *nargv; - else - ++p; - (void) fprintf(stderr, - "%s: option requires an argument -- %c\n", - p, optopt); - } - *rv = optopt; - return (APR_BADCH); - } - else /* white space */ - optarg = nargv[optind]; - place = EMSG; - ++optind; - } - *rv = optopt; - return APR_SUCCESS; -} - - diff --git a/misc/unix/misc.h b/misc/unix/misc.h deleted file mode 100644 index a496c372e..000000000 --- a/misc/unix/misc.h +++ /dev/null @@ -1,71 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef MISC_H -#define MISC_H - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct context_t { - struct ap_pool_t *pool; - ap_int16_t signal_safe; - ap_int16_t cancel_safe; - void *prog_data; -}; - -#endif /* ! MISC_H */ - diff --git a/misc/unix/start.c b/misc/unix/start.c deleted file mode 100644 index 8b4bf00a3..000000000 --- a/misc/unix/start.c +++ /dev/null @@ -1,210 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "misc.h" -#include -#include -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_context(ap_context_t *, void *, ap_context_t **) - * Create a new context. - * arg 1) The parent context. If this is NULL, the new context is a root - * context. If it is non-NULL, the new context will inherit all - * of it's parent context's attributes, except the pool will be a - * sub-pool. - * arg 2) Any data to be assocaited with the context. If this is a - * sub-context, and this value is NULL, the new context will - * inherit the data from it's parent. - * arg 3) The context we have just created. - */ -ap_status_t ap_create_context(struct context_t *cont, void *data, - struct context_t **newcont) -{ - struct context_t *new; - ap_pool_t *pool; - - if (cont) { - pool = ap_make_sub_pool(cont->pool); - } - else { - pool = ap_init_alloc();; - } - - if (pool == NULL) { - return APR_ENOPOOL; - } - - if (cont) { - new = (struct context_t *)ap_palloc(cont, sizeof(struct context_t)); - } - else { - new = (struct context_t *)malloc(sizeof(struct context_t)); - } - - new->pool = pool; - if (data == NULL && cont) { - new->prog_data = cont->prog_data; - } - else { - new->prog_data = data; - } - if (cont) { - new->signal_safe = cont->signal_safe; - new->cancel_safe = cont->cancel_safe; - } - else { - new->signal_safe = 0; - new->cancel_safe = 0; - } - - *newcont = new; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_signal_safe(ap_context_t *, ap_int16_t) - * Set the signal safe attribute of the program. If this bit-is on, then - * any apr function which uses this context IS signal safe. - * arg 1) The context to modify. - * arg 2) Should functions be signal safe or not? - */ -ap_status_t ap_set_signal_safe(struct context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->signal_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_cancel_safe(ap_context_t *, ap_int16_t) - * Set the cancel safe attribute of the program. If this bit-is off, then - * any thread which is in a function using this context IS NOT allowed - * to be cancelled. - * arg 1) The context to modify. - * arg 2) Should functions be cancellable or not? - */ -ap_status_t ap_set_cancel_safe(struct context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->cancel_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_destroy_context(ap_context_t *) - * Free the context and all of it's child contexts'. - * arg 1) The context to free. - */ -ap_status_t ap_destroy_context(struct context_t *cont) -{ - ap_destroy_pool(cont); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_userdata(ap_context_t *, void *) - * Set the data associated with the current context. - * arg 1) The current context. - * arg 2) The user data associated with the context. - */ -ap_status_t ap_set_userdata(struct context_t *cont, void *data) -{ - if (cont) { - cont->prog_data = data; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_userdata(ap_context_t *, void **) - * Return the data associated with the current context. - * arg 1) The current context. - * arg 2) The user data associated with the context. - */ -ap_status_t ap_get_userdata(struct context_t *cont, void **data) -{ - if (cont) { - (*data) = cont->prog_data; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_initialize() - * Setup any APR internal data structures. This MUST be the first - * function called for any APR program. - */ -ap_status_t ap_initialize(void) -{ -#ifdef HAVE_PTHREAD_H - sigset_t sigset; - - sigfillset(&sigset); - pthread_sigmask(SIG_BLOCK, &sigset, NULL); -#endif - return APR_SUCCESS; -} - diff --git a/misc/win32/getopt.c b/misc/win32/getopt.c deleted file mode 100644 index 6941ef451..000000000 --- a/misc/win32/getopt.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1987, 1993, 1994 - * 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. - */ - -#include -#include -#include -#include "misc.h" - -int opterr = 1, /* if error message should be printed */ - optind = 1, /* index into parent argv vector */ - optopt, /* character checked for validity */ - optreset; /* reset getopt */ -char *optarg = ""; /* argument associated with option */ - -#define EMSG "" - -/* ***APRDOC******************************************************** - * ap_status_t ap_getopt(ap_context_t *, ap_int32_t, char *const *, - * const char *, ap_int32_t) - * Parse the command line options passed to the program. - * arg 1) The context to operate on. - * arg 2) The number of arguments passed to ap_getopt to parse - * arg 3) The array of command line options to parse - * arg 4) A string of characters that are acceptable options to the program. - * characters followed by ":" are required to have an option - * associated - * arg 5) The next option found. There are four potential values for - * this variable on exit. They are: - * APR_EOF -- No more options to parse - * APR_BADCH -- Found a bad option character - * APR_BADARG -- Missing parameter for the found option - * Other -- The next option found. - * NOTE: Arguments 2 and 3 are most commonly argc and argv from - * main(argc, argv) - */ -ap_status_t ap_getopt(struct context_t *cont, ap_int32_t nargc, - char *const *nargv, const char *ostr, ap_int32_t *rv) -{ - char *p; - static char *place = EMSG; /* option letter processing */ - char *oli; /* option letter list index */ - - if (optreset || !*place) { /* update scanning pointer */ - optreset = 0; - if (optind >= nargc || *(place = nargv[optind]) != '-') { - place = EMSG; - *rv = optopt; - return (APR_EOF); - } - if (place[1] && *++place == '-') { /* found "--" */ - ++optind; - place = EMSG; - *rv = optopt; - return (APR_EOF); - } - } /* option letter okay? */ - if ((optopt = (int) *place++) == (int) ':' || - !(oli = strchr(ostr, optopt))) { - /* - * if the user didn't specify '-' as an option, - * assume it means -1. - */ - if (optopt == (int) '-') - *rv = optopt; - return (APR_EOF); - if (!*place) - ++optind; - if (opterr && *ostr != ':') { - if (!(p = strrchr(*nargv, '/'))) - p = *nargv; - else - ++p; - (void) fprintf(stderr, - "%s: illegal option -- %c\n", p, optopt); - } - *rv = optopt; - return APR_BADCH; - } - if (*++oli != ':') { /* don't need argument */ - optarg = NULL; - if (!*place) - ++optind; - } - else { /* need an argument */ - if (*place) /* no white space */ - optarg = place; - else if (nargc <= ++optind) { /* no arg */ - place = EMSG; - if (*ostr == ':') - *rv = optopt; - return (APR_BADARG); - if (opterr) { - if (!(p = strrchr(*nargv, '/'))) - p = *nargv; - else - ++p; - (void) fprintf(stderr, - "%s: option requires an argument -- %c\n", - p, optopt); - } - *rv = optopt; - return (APR_BADCH); - } - else /* white space */ - optarg = nargv[optind]; - place = EMSG; - ++optind; - } - *rv = optopt; - return APR_SUCCESS; -} - - diff --git a/misc/win32/misc.def b/misc/win32/misc.def deleted file mode 100644 index e1e650194..000000000 --- a/misc/win32/misc.def +++ /dev/null @@ -1,24 +0,0 @@ -; misc.def : - -LIBRARY misc -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_os_systemcase_filename @1 - canonical_filename @2 - ap_create_context @3 - ap_set_signal_safe @4 - ap_set_cancel_safe @5 - ap_destroy_context @6 - WinTimeToUnixTime @7 - ap_get_oslevel @8 - ap_get_userdata @9 - ap_set_userdata @10 - ap_initialize @11 - ap_getopt @12 - opterr @13 DATA - optind @14 DATA - optopt @15 DATA - optreset @16 DATA - optarg @17 DATA diff --git a/misc/win32/misc.dsp b/misc/win32/misc.dsp deleted file mode 100644 index 844eb182d..000000000 --- a/misc/win32/misc.dsp +++ /dev/null @@ -1,113 +0,0 @@ -# Microsoft Developer Studio Project File - Name="misc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=misc - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "misc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "misc.mak" CFG="misc - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "misc - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "misc - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "misc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "misc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib ..\..\lib\Debug\lib.lib ..\..\signal\win32\Debug\signal.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "misc - Win32 Release" -# Name "misc - Win32 Debug" -# Begin Source File - -SOURCE=.\getopt.c -# End Source File -# Begin Source File - -SOURCE=.\misc.def -# End Source File -# Begin Source File - -SOURCE=.\misc.h -# End Source File -# Begin Source File - -SOURCE=.\names.c -# End Source File -# Begin Source File - -SOURCE=.\start.c -# End Source File -# Begin Source File - -SOURCE=.\timetest.c -# End Source File -# End Target -# End Project diff --git a/misc/win32/misc.h b/misc/win32/misc.h deleted file mode 100644 index 716d16cd4..000000000 --- a/misc/win32/misc.h +++ /dev/null @@ -1,74 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef MISC_H -#define MISC_H - -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_errno.h" - -struct context_t { - struct ap_pool_t *pool; - ap_int16_t signal_safe; - ap_int16_t cancel_safe; - void *prog_data; -}; - -#define WSAHighByte 2 -#define WSALowByte 0 - -#endif /* ! MISC_H */ - diff --git a/misc/win32/names.c b/misc/win32/names.c deleted file mode 100644 index 9ce9a49aa..000000000 --- a/misc/win32/names.c +++ /dev/null @@ -1,318 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#ifdef WIN32 -#include "apr_win.h" -#endif -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include - -/* Returns TRUE if the input string is a string - * of one or more '.' characters. - */ -static BOOL OnlyDots(char *pString) -{ - char *c; - - if (*pString == '\0') - return FALSE; - - for (c = pString;*c;c++) - if (*c != '.') - return FALSE; - - return TRUE; -} - -/* Accepts as input a pathname, and tries to match it to an - * existing path and return the pathname in the case that - * is present on the existing path. This routine also - * converts alias names to long names. - */ -API_EXPORT(char *) ap_os_systemcase_filename(struct context_t *pCont, - const char *szFile) -{ - char buf[HUGE_STRING_LEN]; - char *pInputName; - char *p, *q; - BOOL bDone = FALSE; - BOOL bFileExists = TRUE; - HANDLE hFind; - WIN32_FIND_DATA wfd; - - if (!szFile || strlen(szFile) == 0 || strlen(szFile) >= sizeof(buf)) - return ap_pstrdup(pCont, ""); - - buf[0] = '\0'; - pInputName = ap_pstrdup(pCont, szFile); - - /* First convert all slashes to \ so Win32 calls work OK */ - for (p = pInputName; *p; p++) { - if (*p == '/') - *p = '\\'; - } - - p = pInputName; - /* If there is drive information, copy it over. */ - if (pInputName[1] == ':') { - buf[0] = tolower(*p++); - buf[1] = *p++; - buf[2] = '\0'; - - /* If all we have is a drive letter, then we are done */ - if (strlen(pInputName) == 2) - bDone = TRUE; - } - - q = p; - if (*p == '\\') { - p++; - if (*p == '\\') /* Possible UNC name */ - { - p++; - /* Get past the machine name. FindFirstFile */ - /* will not find a machine name only */ - p = strchr(p, '\\'); - if (p) - { - p++; - /* Get past the share name. FindFirstFile */ - /* will not find a \\machine\share name only */ - p = strchr(p, '\\'); - if (p) { - strncat(buf,q,p-q); - q = p; - p++; - } - } - - if (!p) - p = q; - } - } - - p = strchr(p, '\\'); - - while (!bDone) { - if (p) - *p = '\0'; - - if (strchr(q, '*') || strchr(q, '?')) - bFileExists = FALSE; - - /* If the path exists so far, call FindFirstFile - * again. However, if this portion of the path contains - * only '.' charaters, skip the call to FindFirstFile - * since it will convert '.' and '..' to actual names. - * Note: in the call to OnlyDots, we may have to skip - * a leading slash. - */ - if (bFileExists && !OnlyDots((*q == '.' ? q : q+1))) { - hFind = FindFirstFile(pInputName, &wfd); - - if (hFind == INVALID_HANDLE_VALUE) { - bFileExists = FALSE; - } - else { - FindClose(hFind); - - if (*q == '\\') - strcat(buf,"\\"); - strcat(buf, wfd.cFileName); - } - } - - if (!bFileExists || OnlyDots((*q == '.' ? q : q+1))) { - strcat(buf, q); - } - - if (p) { - q = p; - *p++ = '\\'; - p = strchr(p, '\\'); - } - else { - bDone = TRUE; - } - } - - /* First convert all slashes to / so server code handles it ok */ - for (p = buf; *p; p++) { - if (*p == '\\') - *p = '/'; - } - - return ap_pstrdup(pCont, buf); -} - -/* Perform canonicalization with the exception that the - * input case is preserved. - */ -char * canonical_filename(struct context_t *pCont, const char *szFile) -{ - char *pNewStr; - char *s; - char *p; - char *q; - - if (szFile == NULL || strlen(szFile) == 0) - return ap_pstrdup(pCont, ""); - - pNewStr = ap_pstrdup(pCont, szFile); - - /* Change all '\' characters to '/' characters. - * While doing this, remove any trailing '.'. - * Also, blow away any directories with 3 or - * more '.' - */ - for (p = pNewStr,s = pNewStr; *s; s++,p++) { - if (*s == '\\' || *s == '/') { - - q = p; - while (p > pNewStr && *(p-1) == '.') - p--; - - if (p == pNewStr && q-p <= 2 && *p == '.') - p = q; - else if (p > pNewStr && p < q && *(p-1) == '/') { - if (q-p > 2) - p--; - else - p = q; - } - - *p = '/'; - } - else { - *p = *s; - } - } - *p = '\0'; - - /* Blow away any final trailing '.' since on Win32 - * foo.bat == foo.bat. == foo.bat... etc. - * Also blow away any trailing spaces since - * "filename" == "filename " - */ - q = p; - while (p > pNewStr && (*(p-1) == '.' || *(p-1) == ' ')) - p--; - if ((p > pNewStr) || - (p == pNewStr && q-p > 2)) - *p = '\0'; - - - /* One more security issue to deal with. Win32 allows - * you to create long filenames. However, alias filenames - * are always created so that the filename will - * conform to 8.3 rules. According to the Microsoft - * Developer's network CD (1/98) - * "Automatically generated aliases are composed of the - * first six characters of the filename plus ~n - * (where n is a number) and the first three characters - * after the last period." - * Here, we attempt to detect and decode these names. - */ - p = strchr(pNewStr, '~'); - if (p != NULL) { - char *pConvertedName, *pQstr, *pPstr; - char buf[HUGE_STRING_LEN]; - /* We potentially have a short name. Call - * ap_os_systemcase_filename to examine the filesystem - * and possibly extract the long name. - */ - pConvertedName = ap_os_systemcase_filename(pCont, pNewStr); - - /* Since we want to preserve the incoming case as much - * as we can, compare for differences in the string and - * only substitute in the path names that changed. - */ - if (stricmp(pNewStr, pConvertedName)) { - buf[0] = '\0'; - - q = pQstr = pConvertedName; - p = pPstr = pNewStr; - do { - q = strchr(q,'/'); - p = strchr(p,'/'); - - if (p != NULL) { - *q = '\0'; - *p = '\0'; - } - - if (stricmp(pQstr, pPstr)) - strcat(buf, pQstr); /* Converted name */ - else - strcat(buf, pPstr); /* Original name */ - - - if (p != NULL) { - pQstr = q; - pPstr = p; - *q++ = '/'; - *p++ = '/'; - } - - } while (p != NULL); - - pNewStr = ap_pstrdup(pCont, buf); - } - } - return pNewStr; -} diff --git a/misc/win32/start.c b/misc/win32/start.c deleted file mode 100644 index 99a64d985..000000000 --- a/misc/win32/start.c +++ /dev/null @@ -1,212 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_win.h" -#include "misc.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_lib.h" -#include -#include - -ap_status_t clean_cont(void *data) -{ - WSACleanup(); - return APR_SUCCESS; -} - - -ap_status_t ap_create_context(ap_context_t *cont, void *data, ap_context_t **newcont) -{ - int iVersionRequested; - WSADATA wsaData; - int err; - ap_context_t *new; - ap_pool_t *pool; - - if (cont) { - pool = ap_make_sub_pool(cont->pool); - } - else { - pool = ap_init_alloc();; - } - - if (pool == NULL) { - return APR_ENOPOOL; - } - - if (cont) { - new = (ap_context_t *)ap_palloc(cont, sizeof(ap_context_t)); - } - else { - new = (ap_context_t *)malloc(sizeof(ap_context_t)); - } - new->pool = pool; - if (data == NULL && cont) { - new->prog_data = cont->prog_data; - } - else { - new->prog_data = data; - } - if (cont) { - new->signal_safe = cont->signal_safe; - new->cancel_safe = cont->cancel_safe; - } - else { - new->signal_safe = 0; - new->cancel_safe = 0; - } - - iVersionRequested = MAKEWORD(WSAHighByte, WSALowByte); - err = WSAStartup((WORD) iVersionRequested, &wsaData); - if (err) { - return APR_EEXIST; - } - if (LOBYTE(wsaData.wVersion) != WSAHighByte || - HIBYTE(wsaData.wVersion) != WSALowByte) { - WSACleanup(); - return APR_EEXIST; - } - - ap_register_cleanup(new, NULL, clean_cont, NULL); - - *newcont = new; - return APR_SUCCESS; -} - -ap_status_t ap_set_signal_safe(ap_context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->signal_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_set_cancel_safe(ap_context_t *cont, ap_int16_t safe) -{ - if (cont) { - cont->cancel_safe = safe; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_destroy_context(ap_context_t *cont) -{ - ap_destroy_pool(cont); - return APR_SUCCESS; -} - -ap_status_t ap_get_oslevel(ap_context_t *cont, ap_oslevel_e *level) -{ - static OSVERSIONINFO oslev; - static BOOL first = TRUE; - - if (first) { - first = FALSE; - GetVersionEx(&oslev); - } - if (oslev.dwPlatformId == VER_PLATFORM_WIN32_NT) { - (*level) = APR_WIN_NT; - return APR_SUCCESS; - } - else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { - if (oslev.dwMinorVersion == 0) { - (*level) = APR_WIN_95; - return APR_SUCCESS; - } - else if (oslev.dwMinorVersion > 0) { - (*level) = APR_WIN_98; - return APR_SUCCESS; - } - } - return APR_EEXIST; -} - -ap_status_t ap_set_userdata(struct context_t *cont, void *data) -{ - if (cont) { - cont->prog_data = data; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -ap_status_t ap_get_userdata(struct context_t *cont, void **data) -{ - if (cont) { - (*data) = cont->prog_data; - return APR_SUCCESS; - } - return APR_ENOCONT; -} - -/* This puts one thread in a Listen for signals mode */ -ap_status_t ap_initialize(void) -{ - unsigned tid; - - if (_beginthreadex(NULL, 0, SignalHandling, NULL, 0, &tid) == 0) { - return APR_EEXIST; - } - - while (thread_ready() != 1) { - sleep(1); - } - - return APR_SUCCESS; -} diff --git a/misc/win32/timetest.c b/misc/win32/timetest.c deleted file mode 100644 index bb7d3313e..000000000 --- a/misc/win32/timetest.c +++ /dev/null @@ -1,75 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include -#include -#include - -time_t WinTimeToUnixTime(FILETIME *time) -{ - LONGLONG temp = 0; - /* Convert to one 64 bit number so we can work with it. */ - temp = time->dwHighDateTime; - temp = temp << 32; - temp |= time->dwLowDateTime; - - /* Convert from Windows epoch (Jan 1, 1600) to Unix - * epoch (Jan 1, 1970) - */ - temp -= 116444736000000000; - /* Convert from 100 nano-sec blocks to seconds. */ - temp /= 10000000; - - return (time_t) temp; -} diff --git a/network_io/beos/Makefile.in b/network_io/beos/Makefile.in deleted file mode 100644 index fe0106086..000000000 --- a/network_io/beos/Makefile.in +++ /dev/null @@ -1,63 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../libnetwork.a - -OBJS=poll.o \ - sendrecv.o \ - sockets.o \ - sockopt.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -poll.o: poll.c networkio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_network_io.h -sendrecv.o: sendrecv.c networkio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_network_io.h -socket.o: socket.c -sockets.o: sockets.c networkio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_network_io.h -sockopt.o: sockopt.c networkio.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../include/apr_network_io.h diff --git a/network_io/beos/networkio.h b/network_io/beos/networkio.h deleted file mode 100644 index c16caa379..000000000 --- a/network_io/beos/networkio.h +++ /dev/null @@ -1,90 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef NETWORK_IO_H -#define NETWORK_IO_H - -#include -#include -#include "apr_general.h" - -#define POLLIN 1 -#define POLLPRI 2 -#define POLLOUT 4 -#define POLLERR 8 -#define POLLHUP 16 -#define POLLNVAL 32 - -struct socket_t { - ap_context_t *cntxt; - int socketdes; - char *remote_hostname; - struct sockaddr_in * addr; - int addr_len; -}; - -struct pollfd_t { - ap_context_t *cntxt; - struct socket_t *sock; - fd_set *read; - fd_set *write; - fd_set *except; - int highsock; -}; - -ap_int16_t get_event(ap_int16_t); - -#endif /* ! NETWORK_IO_H */ - diff --git a/network_io/beos/poll.c b/network_io/beos/poll.c deleted file mode 100644 index 2253e3911..000000000 --- a/network_io/beos/poll.c +++ /dev/null @@ -1,180 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - - -#include "networkio.h" -#include "apr_network_io.h" -#include "networkio.h" -#include "apr_general.h" - -/* BeOS R4 doesn't have a poll function, but R5 will have */ -/* so for the time being we try our best with an implementaion that */ -/* uses select. However, select on beos isn't that hot either, so */ -/* until R5 we have to live with a less than perfect implementation */ - -/* Apparently those sneaky people at Be included support for write in */ -/* select for R4.5 of BeOS. So here we use code that uses the write */ -/* bits. */ - -ap_status_t ap_setup_poll(ap_context_t *cont, ap_int32_t num, struct pollfd_t ** -new) -{ - (*new) = (struct pollfd_t *)ap_palloc(cont, sizeof(struct pollfd_t) * num); - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->read = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - (*new)->write = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - (*new)->except = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - FD_ZERO((*new)->read); - FD_ZERO((*new)->write); - FD_ZERO((*new)->except); - (*new)->highsock = -1; - return APR_SUCCESS; -} - -ap_status_t ap_add_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t event) -{ - if (event & APR_POLLIN) { - FD_SET(sock->socketdes, aprset->read); - } - if (event & APR_POLLPRI) { - FD_SET(sock->socketdes, aprset->read); - } - if (event & APR_POLLOUT) { - FD_SET(sock->socketdes, aprset->write); - } - if (sock->socketdes > aprset->highsock) { - aprset->highsock = sock->socketdes; - } - return APR_SUCCESS; -} - -ap_status_t ap_poll(struct pollfd_t *aprset, ap_int32_t *nsds, ap_int32_t timeout) -{ - int rv; - struct timeval *thetime; - - if (timeout == -1) { - thetime = NULL; - } - else { - /* Convert milli-seconds into seconds and micro-seconds. */ - thetime = (struct timeval *)ap_palloc(aprset->cntxt, sizeof(struct timeval)); - thetime->tv_sec = timeout / (1000); - timeout = timeout % 1000; - thetime->tv_usec = timeout * 1000; - } - - rv = select(aprset->highsock + 1, aprset->read, aprset->write, - NULL, thetime); - - (*nsds) = rv; - if ((*nsds) == 0) { - return APR_TIMEUP; - } - if ((*nsds) < 0) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_get_revents(struct pollfd_t *aprset, struct socket_t *sock, ap_int16_t *event) -{ - ap_int16_t revents = 0; - char data[256]; - int dummy = 256; - - if (FD_ISSET(sock->socketdes, aprset->read)) { - revents |= APR_POLLIN; - if (recv(sock->socketdes, &data, 0, 0) == -1) { - switch (errno) { - case ECONNRESET: - case ECONNABORTED: - case ESHUTDOWN: - case ENETRESET: { - revents ^= APR_POLLIN; - revents |= APR_POLLHUP; - break; - } - case ENOTSOCK: { - revents ^= APR_POLLIN; - revents |= APR_POLLNVAL; - } - default: { - revents ^= APR_POLLIN; - revents |= APR_POLLERR; - } - } - } - } - if (FD_ISSET(sock->socketdes, aprset->write)) { - revents |= APR_POLLOUT; - } - - /* Still no support for execpt bits in BeOS R4.5 so for the time being */ - /* we can't check this. Hopefully the error checking above will allow */ - /* sufficient errors to be recognised to cover this. */ - - /*if (FD_ISSET(sock->socketdes, aprset->except)) { - revents |= APR_POLLPRI; - }*/ - - (*event) = revents; - return APR_SUCCESS; -} - diff --git a/network_io/beos/sendrecv.c b/network_io/beos/sendrecv.c deleted file mode 100644 index 122288e83..000000000 --- a/network_io/beos/sendrecv.c +++ /dev/null @@ -1,139 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1996-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include -#include "networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" - -ap_status_t ap_send(struct socket_t *sock, const char *buf, ap_ssize_t *len, time_t sec) -{ - ssize_t rv; - int sendlen = *len; - - do { - rv = send(sock->socketdes, buf, sendlen,0); - } while (rv == -1 && errno == EINTR); - - if (rv == -1 && errno == EAGAIN && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->socketdes, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, NULL, &fdset, NULL, &tv); - } while (srv == -1 && errno == EINTR); - - if (srv < 1) { - (*len) = -1; - return errno; - } - else { - do { - rv = send(sock->socketdes, buf, sendlen,0); - } while (rv == -1 && errno == EINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - -ap_status_t ap_recv(struct socket_t *sock, char *buf, ap_ssize_t *len, time_t sec) -{ - ap_ssize_t rv; - int recvlen = *len; - - do { - rv = recv(sock->socketdes, buf, recvlen,0); - } while (rv == -1 && errno == EINTR); - - if (rv == -1 && errno == EAGAIN && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->socketdes, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, &fdset, NULL, NULL, &tv); - } while (srv == -1 && errno == EINTR); - - if (srv < 1) { - (*len) = -1; - return errno; - } - else { - do { - rv = recv(sock->socketdes, buf, recvlen,0); - } while (rv == -1 && errno == EINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - diff --git a/network_io/beos/sockets.c b/network_io/beos/sockets.c deleted file mode 100644 index 167918ece..000000000 --- a/network_io/beos/sockets.c +++ /dev/null @@ -1,202 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include -#include -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" - -ap_status_t socket_cleanup(void *sock) -{ - struct socket_t *thesocket = sock; - if (closesocket(thesocket->socketdes) == 0) { - thesocket->socketdes = -1; - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_create_tcp_socket(ap_context_t *cont, struct socket_t **new) -{ - (*new) = (struct socket_t *)ap_palloc(cont,sizeof(struct socket_t)); - - if ((*new) == NULL){ - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->addr = (struct sockaddr_in *) ap_palloc((*new)->cntxt, - sizeof (struct sockaddr_in)); - if ((*new)->addr == NULL){ - return APR_ENOMEM; - } - - (*new)->socketdes = socket(AF_INET ,SOCK_STREAM, 0); - (*new)->remote_hostname=NULL; - - (*new)->addr->sin_family = AF_INET; - - (*new)->addr_len = sizeof(*(*new)->addr); - memset(&(*new)->addr->sin_zero, 0, sizeof((*new)->addr->sin_zero)); - - if ((*new)->socketdes < 0) { - return errno; - } - else { - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; - } -} - -ap_status_t ap_shutdown(struct socket_t *thesocket, ap_shutdown_how_e how) -{ - /*if (shutdown(thesocket->socketdes, how) == 0) {*/ - return APR_SUCCESS; - /*} - else { - return APR_FAILURE; - }*/ -} - -ap_status_t ap_close_socket(struct socket_t *thesocket) -{ - ap_kill_cleanup(thesocket->cntxt,thesocket,socket_cleanup); - return socket_cleanup(thesocket); -} - -ap_status_t ap_setport(struct socket_t *sock, ap_uint32_t port) -{ - sock->addr->sin_port = htons((short)port); - return APR_SUCCESS; -} - -ap_status_t ap_bind(struct socket_t *sock) -{ - sock->addr->sin_addr.s_addr = INADDR_ANY; - if (bind(sock->socketdes, (struct sockaddr *)sock->addr, sock->addr_len) == -1) - return errno; - else - return APR_SUCCESS; -} - -ap_status_t ap_listen(struct socket_t *sock, ap_int32_t backlog) -{ - if (listen(sock->socketdes, backlog) == -1) - return errno; - else - return APR_SUCCESS; -} - -ap_status_t ap_accept(const struct socket_t *sock, struct socket_t **new) -{ - struct hostent *hptr; - - (*new) = (struct socket_t *)ap_palloc(sock->cntxt, - sizeof(ap_socket_t)); - - (*new)->cntxt = sock->cntxt; - (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - (*new)->addr_len = sizeof(struct sockaddr_in); - - (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->addr, - &(*new)->addr_len); - - if ((*new)->socketdes <0){ - return errno; - } - - hptr = gethostbyaddr((char*)&(*new)->addr->sin_addr, - sizeof(struct in_addr), AF_INET); - if (hptr != NULL){ - (*new)->remote_hostname = strdup(hptr->h_name); - } - - ap_register_cleanup((*new)->cntxt, (void *)new, - socket_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t ap_connect(struct socket_t *sock, char *hostname) -{ - struct hostent *hp; - - hp = gethostbyname(hostname); - if ((sock->socketdes < 0) || (!sock->addr)) { - return APR_ENOTSOCK; - } - - memcpy((char *)&sock->addr->sin_addr, hp->h_addr , hp->h_length); - - sock->addr->sin_family = AF_INET; - - memset(sock->addr->sin_zero, 0, sizeof(sock->addr->sin_zero)); - - sock->addr_len = sizeof(sock->addr); - - while ((connect(sock->socketdes, (const struct sockaddr *)sock->addr, sock->addr_len) < 0)){ - if (errno != EALREADY && errno != EINPROGRESS) - return errno; - } - - sock->remote_hostname = strdup(hostname); - return APR_SUCCESS; -} diff --git a/network_io/beos/sockopt.c b/network_io/beos/sockopt.c deleted file mode 100644 index e3aa5228e..000000000 --- a/network_io/beos/sockopt.c +++ /dev/null @@ -1,107 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include -#include -#include -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" - -ap_status_t ap_setsocketopt(struct socket_t *sock, ap_int32_t opt, ap_int32_t on) -{ - int one; - if (on){ - one = 1; - }else { - one = 0; - } - if (opt & APR_SO_DEBUG) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, &one, sizeof(one)) == -1) { - return errno; - } - } - if (opt & APR_SO_REUSEADDR) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) == -1) { - return errno; - } - } - if (opt & APR_SO_NONBLOCK) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_NONBLOCK, &one, sizeof(one)) == -1){ - return errno; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_gethostname(ap_context_t *cont, char * buf, int len) -{ - if (gethostname(buf, len) == -1){ - return errno; - } else { - return APR_SUCCESS; - } -} - -ap_status_t ap_get_remote_hostname(struct socket_t *sock, char **name) -{ - (*name) = (char*)ap_pstrdup(sock->cntxt, sock->remote_hostname); - if (*name) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} diff --git a/network_io/os2/Makefile.in b/network_io/os2/Makefile.in deleted file mode 100644 index 05dc0b630..000000000 --- a/network_io/os2/Makefile.in +++ /dev/null @@ -1,67 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../network.a - -OBJS=poll.o \ - sendrecv.o \ - sockets.o \ - sockopt.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -poll.o: poll.c ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - networkio.h -sendrecv.o: sendrecv.c ../../include/apr_errno.h \ - ../../include/apr_general.h ../../include/apr_network_io.h \ - networkio.h -sockets.o: sockets.c ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - networkio.h $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -sockopt.o: sockopt.c ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - networkio.h diff --git a/network_io/os2/networkio.h b/network_io/os2/networkio.h deleted file mode 100644 index c8ab17de2..000000000 --- a/network_io/os2/networkio.h +++ /dev/null @@ -1,81 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef NETWORK_IO_H -#define NETWORK_IO_H - -#include "apr_network_io.h" -#include "apr_general.h" - -struct socket_t { - ap_context_t *cntxt; - int socketdes; - char *remote_hostname; - struct sockaddr_in *addr; - int addr_len; -}; - -struct pollfd_t { - ap_context_t *cntxt; - struct socket_t *sock; - ap_int16_t events; - ap_int16_t revents; - int curpos; -}; - -ap_int16_t get_event(ap_int16_t); - -#endif /* ! NETWORK_IO_H */ - diff --git a/network_io/os2/poll.c b/network_io/os2/poll.c deleted file mode 100644 index f4d0b6c90..000000000 --- a/network_io/os2/poll.c +++ /dev/null @@ -1,168 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" - -/* OS/2 doesn't have a poll function, implement using select */ - -ap_status_t ap_setup_poll(ap_context_t *cont, ap_int32_t num, struct pollfd_t **new) -{ - (*new) = (struct pollfd_t *)ap_palloc(cont, sizeof(struct pollfd_t) * num); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->curpos = 0; - return APR_SUCCESS; -} - - - -ap_status_t ap_add_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t event) -{ - int i = 0; - - while (i < aprset->curpos && aprset[i].sock->socketdes != sock->socketdes) { - i++; - } - if (i >= aprset->curpos) { - aprset->curpos++; - } - aprset[i].sock = sock; - aprset[i].events = event; - - return APR_SUCCESS; -} - - - -ap_status_t ap_poll(struct pollfd_t *pollfdset, ap_int32_t *nsds, ap_int32_t timeout) -{ - int i; - int rv = 0, maxfd = 0; - time_t starttime; - struct timeval tv; - fd_set readfds, writefds, exceptfds; - - FD_ZERO(&readfds); - FD_ZERO(&writefds); - FD_ZERO(&exceptfds); - - for (i = 0; i < *nsds; i++) { - if (pollfdset[i].sock->socketdes > maxfd) - maxfd = pollfdset[i].sock->socketdes; - - if (pollfdset[i].events & APR_POLLIN) - FD_SET(pollfdset[i].sock->socketdes, &readfds); - - if (pollfdset[i].events & APR_POLLOUT) - FD_SET(pollfdset[i].sock->socketdes, &writefds); - - if (pollfdset[i].events & APR_POLLPRI) - FD_SET(pollfdset[i].sock->socketdes, &exceptfds); - } - - tv.tv_sec = timeout; - tv.tv_usec = 0; - time(&starttime); - - do { - rv = select(maxfd + 1, &readfds, &writefds, &exceptfds, timeout >= 0 ? &tv : NULL); - - if (rv < 0 && errno == EINTR && timeout >= 0 ) { - time_t elapsed = time(NULL) - starttime; - - if (timeout <= elapsed) - break; - - tv.tv_sec = timeout - elapsed; - } - } while ( rv < 0 && errno == EINTR ); - - if (rv >= 0) { - for (i = 0; i < *nsds; i++) { - pollfdset[i].revents = - (FD_ISSET(pollfdset[i].sock->socketdes, &readfds) ? APR_POLLIN : 0) + - (FD_ISSET(pollfdset[i].sock->socketdes, &writefds) ? APR_POLLOUT : 0) + - (FD_ISSET(pollfdset[i].sock->socketdes, &exceptfds) ? APR_POLLPRI : 0); - } - } - - (*nsds) = rv; - return rv < 0 ? errno : APR_SUCCESS; -} - - - -ap_status_t ap_get_revents(struct pollfd_t *aprset, struct socket_t *sock, ap_int16_t *event) -{ - int i = 0; - - while (i < aprset->curpos && aprset[i].sock->socketdes != sock->socketdes) { - i++; - } - if (i >= aprset->curpos) { - return APR_INVALSOCK; - } - (*event) = aprset[i].revents; - return APR_SUCCESS; -} diff --git a/network_io/os2/sendrecv.c b/network_io/os2/sendrecv.c deleted file mode 100644 index 7c83d2389..000000000 --- a/network_io/os2/sendrecv.c +++ /dev/null @@ -1,135 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1996-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include - -ap_status_t ap_send(struct socket_t *sock, const char *buf, ap_ssize_t *len, time_t sec) -{ - ssize_t rv; - - do { - rv = write(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - - if (rv == -1 && errno == EAGAIN && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->socketdes, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, NULL, &fdset, NULL, &tv); - } while (srv == -1 && errno == EINTR); - - if (srv < 1) { - (*len) = -1; - return errno; - } - else { - do { - rv = write(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - -ap_status_t ap_recv(struct socket_t *sock, char *buf, ap_ssize_t *len, time_t sec) -{ - ssize_t rv; - - do { - rv = read(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - - if (rv == -1 && errno == EAGAIN && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->socketdes, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, &fdset, NULL, NULL, &tv); - } while (srv == -1 && errno == EINTR); - - if (srv < 1) { - (*len) = -1; - return errno; - } - else { - do { - rv = read(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - diff --git a/network_io/os2/sockets.c b/network_io/os2/sockets.c deleted file mode 100644 index f0500b9c1..000000000 --- a/network_io/os2/sockets.c +++ /dev/null @@ -1,209 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -#include -#include -#include - -ap_status_t socket_cleanup(void *sock) -{ - struct socket_t *thesocket = sock; - if (close(thesocket->socketdes) == 0) { - thesocket->socketdes = -1; - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_create_tcp_socket(ap_context_t *cont, struct socket_t **new) -{ - (*new) = (struct socket_t *)ap_palloc(cont, sizeof(struct socket_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - - if ((*new)->addr == NULL) { - return APR_ENOMEM; - } - - (*new)->socketdes = socket(AF_INET ,SOCK_STREAM, IPPROTO_TCP); - (*new)->remote_hostname = NULL; - - (*new)->addr->sin_family = AF_INET; - - (*new)->addr_len = sizeof(*(*new)->addr); - - if ((*new)->socketdes < 0) { - return errno; - } - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t ap_shutdown(struct socket_t *thesocket, ap_shutdown_how_e how) -{ - if (shutdown(thesocket->socketdes, how) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_close_socket(struct socket_t *thesocket) -{ - ap_kill_cleanup(thesocket->cntxt, thesocket, socket_cleanup); - return socket_cleanup(thesocket); -} - -ap_status_t ap_setport(struct socket_t *sock, ap_uint32_t port) -{ - sock->addr->sin_port = htons((short)port); - return APR_SUCCESS; -} - -ap_status_t ap_bind(struct socket_t *sock) -{ - sock->addr->sin_addr.s_addr = INADDR_ANY; - if (bind(sock->socketdes, (struct sockaddr *)sock->addr, sock->addr_len) == -1) - return errno; - else - return APR_SUCCESS; -} - -ap_status_t ap_listen(struct socket_t *sock, ap_int32_t backlog) -{ - if (listen(sock->socketdes, backlog) == -1) - return errno; - else - return APR_SUCCESS; -} - -ap_status_t ap_accept(const struct socket_t *sock, struct socket_t **new) -{ - struct hostent *hptr; - - (*new) = (struct socket_t *)ap_palloc(sock->cntxt, - sizeof(struct socket_t)); - - (*new)->cntxt = sock->cntxt; - (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - (*new)->addr_len = sizeof(struct sockaddr_in); - - (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->addr, - &(*new)->addr_len); - - if ((*new)->socketdes < 0) { - return errno; - } - - hptr = gethostbyaddr((char *)&(*new)->addr->sin_addr, - sizeof(struct in_addr), AF_INET); - if (hptr != NULL) { - (*new)->remote_hostname = strdup(hptr->h_name); - } - - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t ap_connect(struct socket_t *sock, char *hostname) -{ - struct hostent *hp; - - hp = gethostbyname(hostname); - - if ((sock->socketdes < 0) || (!sock->addr)) { - return APR_ENOTSOCK; - } - if (!hp) { - if (h_errno == TRY_AGAIN) { - return EAGAIN; - } - return h_errno; - } - - memcpy((char *)&sock->addr->sin_addr, hp->h_addr_list[0], hp->h_length); - - sock->addr->sin_family = AF_INET; - - sock->addr_len = sizeof(*sock->addr); - - if ((connect(sock->socketdes, (const struct sockaddr *)sock->addr, sock->addr_len) < 0) && - (errno != EINPROGRESS)) { - return errno; - } - else { - sock->remote_hostname = strdup(hostname); - return APR_SUCCESS; - } -} - diff --git a/network_io/os2/sockopt.c b/network_io/os2/sockopt.c deleted file mode 100644 index ef00169e4..000000000 --- a/network_io/os2/sockopt.c +++ /dev/null @@ -1,174 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -#include -#include -#include -#include - -int soblock(int sd) -{ - int fd_flags; - - fd_flags = fcntl(sd, F_GETFL, 0); -#if defined(O_NONBLOCK) - fd_flags &= ~O_NONBLOCK; -#elif defined(O_NDELAY) - fd_flags &= ~O_NDELAY; -#elif defined(FNDELAY) - fd_flags &= ~O_FNDELAY; -#else - /* XXXX: this breaks things, but an alternative isn't obvious...*/ - return -1; -#endif - if (fcntl(sd, F_SETFL, fd_flags) == -1) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t sononblock(int sd) -{ - int fd_flags; - - fd_flags = fcntl(sd, F_GETFL, 0); -#if defined(O_NONBLOCK) - fd_flags |= O_NONBLOCK; -#elif defined(O_NDELAY) - fd_flags |= O_NDELAY; -#eli f defined(FNDELAY) - fd_flags |= O_FNDELAY; -#else - /* XXXX: this breaks things, but an alternative isn't obvious...*/ - return -1; -#endif - if (fcntl(sd, F_SETFL, fd_flags) == -1) { - return errno; - } - return APR_SUCCESS; -} - - -ap_status_t ap_setsocketopt(struct socket_t *sock, ap_int32_t opt, ap_int32_t on) -{ - int one; - struct linger li; - ap_status_t stat; - - if (on) - one = 1; - else - one = 0; - - if (opt & APR_SO_KEEPALIVE) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) { - return errno; - } - } - if (opt & APR_SO_DEBUG) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) { - return errno; - } - } - if (opt & APR_SO_REUSEADDR) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) { - return errno; - } - } - if (opt & APR_SO_NONBLOCK) { - if (on) { - if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) - return stat; - } - else { - if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) - return stat; - } - } - if (opt & APR_SO_LINGER) { - li.l_onoff = on; - li.l_linger = MAX_SECS_TO_LINGER; - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) { - return errno; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_gethostname(ap_context_t *cont, char *buf, int len) -{ - if (gethostname(buf, len) == -1) - return errno; - else - return APR_SUCCESS; -} - -ap_status_t ap_get_remote_hostname(struct socket_t *sock, char **name) -{ - (*name) = ap_pstrdup(sock->cntxt, sock->remote_hostname); - if (*name) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - - diff --git a/network_io/unix/.cvsignore b/network_io/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/network_io/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/network_io/unix/.sockets.c.swp b/network_io/unix/.sockets.c.swp deleted file mode 100644 index 79243d163..000000000 Binary files a/network_io/unix/.sockets.c.swp and /dev/null differ diff --git a/network_io/unix/Makefile.in b/network_io/unix/Makefile.in deleted file mode 100644 index 8ffeb66b7..000000000 --- a/network_io/unix/Makefile.in +++ /dev/null @@ -1,75 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../libnetwork.a - -OBJS=poll.o \ - sendrecv.o \ - sockets.o \ - sockopt.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -poll.o: poll.c networkio.h ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h $(INCDIR)/apr_lib.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -sendrecv.o: sendrecv.c networkio.h ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h -sockets.o: sockets.c networkio.h ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h ../../include/apr_portable.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_win.h ../../include/apr_lock.h \ - ../../include/apr_time.h $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -sockopt.o: sockopt.c networkio.h ../../include/apr_network_io.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h $(INCDIR)/apr_lib.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h diff --git a/network_io/unix/networkio.h b/network_io/unix/networkio.h deleted file mode 100644 index d71c819a1..000000000 --- a/network_io/unix/networkio.h +++ /dev/null @@ -1,90 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef NETWORK_IO_H -#define NETWORK_IO_H - -#include "apr_network_io.h" -#include "apr_general.h" -#include - -struct socket_t { - ap_context_t *cntxt; - int socketdes; - char *remote_hostname; - struct sockaddr_in *addr; - size_t addr_len; -}; - -struct pollfd_t { - ap_context_t *cntxt; -#ifdef HAVE_POLL - int *sock; - int curpos; -#else - fd_set *read; - fd_set *write; - fd_set *except; - int highsock; -#endif - ap_int16_t *events; - ap_int16_t *revents; - -}; - -ap_int16_t get_event(ap_int16_t); - -#endif /* ! NETWORK_IO_H */ - diff --git a/network_io/unix/poll.c b/network_io/unix/poll.c deleted file mode 100644 index dcb9b112f..000000000 --- a/network_io/unix/poll.c +++ /dev/null @@ -1,460 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include - -#ifdef HAVE_POLL /* We can just use poll to do our socket polling. */ - -/* ***APRDOC******************************************************** - * ap_status_t ap_setup_poll(ap_context_t *, ap_int32_t, ap_pollfd_t **) - * Setup the memory required for poll to operate properly. - * arg 1) The context to operate on. - * arg 2) The number of socket descriptors to be polled. - * arg 3) The poll structure to be used. - */ -ap_status_t ap_setup_poll(ap_context_t *cont, ap_int32_t num, struct pollfd_t **new) -{ - (*new) = (struct pollfd_t *)ap_palloc(cont, sizeof(struct pollfd_t)); - (*new)->sock = ap_palloc(cont, sizeof(struct socket_t) * num); - (*new)->events = ap_palloc(cont, sizeof(ap_int16_t) * num); - (*new)->revents = ap_palloc(cont, sizeof(ap_int16_t) * num); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->curpos = 0; - return APR_SUCCESS; -} - -ap_int16_t get_event(ap_int16_t event) -{ - ap_int16_t rv = 0; - - if (event & APR_POLLIN) - rv |= POLLIN; - if (event & APR_POLLPRI) - rv |= POLLPRI; - if (event & APR_POLLOUT) - rv |= POLLOUT; - if (event & APR_POLLERR) - rv |= POLLERR; - if (event & APR_POLLHUP) - rv |= POLLHUP; - if (event & APR_POLLNVAL) - rv |= POLLNVAL; - - return rv; -} - -ap_int16_t get_revent(ap_int16_t event) -{ - ap_int16_t rv = 0; - - if (event & POLLIN) - rv |= APR_POLLIN; - if (event & POLLPRI) - rv |= APR_POLLPRI; - if (event & POLLOUT) - rv |= APR_POLLOUT; - if (event & POLLERR) - rv |= APR_POLLERR; - if (event & POLLHUP) - rv |= APR_POLLHUP; - if (event & POLLNVAL) - rv |= APR_POLLNVAL; - - return rv; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_add_poll_socket(ap_pollfd_t *, ap_socket_t *, ap_int16_t) - * Add a socket to the poll structure. - * arg 1) The poll structure we will be using. - * arg 2) The socket to add to the current poll structure. - * arg 3) 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 - */ -ap_status_t ap_add_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t event) -{ - int i = 0; - - while (i < aprset->curpos && aprset->sock[i] != sock->socketdes) { - i++; - } - if (i >= aprset->curpos) { - aprset->curpos++; - } - aprset->sock[i] = sock->socketdes; - aprset->events[i] = get_event(event); - - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_poll(ap_pollfd_t *, ap_int32_t *, ap_int32_t) - * Poll the sockets in the poll structure. This is a blocking call, - * and it will not return until either a socket has been signalled, or - * the timeout has expired. - * arg 1) The poll structure we will be using. - * arg 2) The number of sockets we are polling. - * arg 3) The amount of time in seconds 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. - * NOTE: The number of sockets signalled is returned in the second argument. - */ -ap_status_t ap_poll(struct pollfd_t *aprset, ap_int32_t *nsds, ap_int32_t timeout) -{ - int i; - struct pollfd *pollset; - int rv; - - pollset = (struct pollfd *)ap_palloc(aprset->cntxt, - sizeof(struct pollfd) * (*nsds)); - - for (i = 0; i < (*nsds); i++) { - pollset[i].fd = aprset->sock[i]; - pollset[i].events = aprset->events[i]; - } - - if (timeout != -1) { - timeout *= 1000; - } - - rv = poll(pollset, (*nsds), timeout); - (*nsds) = rv; - - for (i = 0; i < (*nsds); i++) { - aprset->revents[i] = get_revent(pollset[i].revents); - } - - if ((*nsds) < 0) { - return errno; - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_revents(ap_pollfd_t *, ap_socket_t *, ap_int_16_t *) - * Get the return events for the specified socket. - * arg 1) The poll structure we will be using. - * arg 2) The socket we wish to get information about. - * arg 3) The returned events for the socket. One of: - * APR_POLLIN -- Data is available to be read - * APR_POLLPRI -- Prioirty 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. - */ -ap_status_t ap_get_revents(struct pollfd_t *aprset, struct socket_t *sock, ap_int16_t *event) -{ - int i = 0; - - while (i < aprset->curpos && aprset->sock[i] != sock->socketdes) { - i++; - } - if (i >= aprset->curpos) { - return APR_INVALSOCK; - } - (*event) = aprset->revents[i]; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_remove_poll_socket(ap_pollfd_t *, ap_socket_t *, ap_int16_t) - * Add a socket to the poll structure. - * arg 1) The poll structure we will be using. - * arg 2) The socket to remove from the current poll structure. - * arg 3) The events to stop looking for during 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 - */ -ap_status_t ap_remove_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t events) -{ - ap_int16_t newevents; - int i = 0; - - while (i < aprset->curpos && aprset->sock[i] != sock->socketdes) { - i++; - } - if (i >= aprset->curpos) { - return APR_NOTFOUND; - } - newevents = get_event(events); - if (aprset->events[i] & newevents) { - aprset->events[i] ^= newevents; - } - - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_clear_poll_sockets(ap_pollfd_t *) - * Remove all sockets from the poll structure. - * arg 1) The poll structure we will be using. - * arg 3) The events to clear from all sockets. 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 - */ -ap_status_t ap_clear_poll_sockets(struct pollfd_t *aprset, ap_int16_t events) -{ - int i = 0; - ap_int16_t newevents; - - newevents = get_event(events); - - while (i < aprset->curpos) { - if (aprset->events[i] & newevents) { - aprset->events[i] ^= newevents; - } - - return APR_SUCCESS; - i++; - } -} - -#else /* Use select to mimic poll */ - -ap_status_t ap_setup_poll(ap_context_t *cont, ap_int32_t num, struct pollfd_t ** -new) -{ - (*new) = (struct pollfd_t *)ap_palloc(cont, sizeof(struct pollfd_t) * num); - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->read = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - (*new)->write = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - (*new)->except = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - FD_ZERO((*new)->read); - FD_ZERO((*new)->write); - FD_ZERO((*new)->except); - (*new)->highsock = -1; - return APR_SUCCESS; -} - -ap_status_t ap_add_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t event) -{ - if (event & APR_POLLIN) { - FD_SET(sock->socketdes, aprset->read); - } - if (event & APR_POLLPRI) { - FD_SET(sock->socketdes, aprset->read); - } - if (event & APR_POLLOUT) { - FD_SET(sock->socketdes, aprset->write); - } - if (sock->socketdes > aprset->highsock) { - aprset->highsock = sock->socketdes; - } - return APR_SUCCESS; -} - -ap_status_t ap_poll(struct pollfd_t *aprset, ap_int32_t *nsds, ap_int32_t timeout) -{ - int rv; - struct timeval *thetime; - - if (timeout == -1) { - thetime = NULL; - } - else { - /* Convert milli-seconds into seconds and micro-seconds. */ - thetime = (struct timeval *)ap_palloc(aprset->cntxt, sizeof(struct timeval)); - thetime->tv_sec = timeout; - thetime->tv_usec = 0; - } - - rv = select(aprset->highsock + 1, aprset->read, aprset->write, - aprset->except, thetime); - - (*nsds) = rv; - if ((*nsds) == 0) { - return APR_TIMEUP; - } - if ((*nsds) < 0) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_get_revents(struct pollfd_t *aprset, struct socket_t *sock, ap_int16_t *event) -{ - ap_int16_t revents = 0; - char data[256]; - int dummy = 256; - int flags = MSG_PEEK; - - /* We just want to PEEK at the data, so I am setting up a dummy WSABUF - * variable here. - */ - if (FD_ISSET(sock->socketdes, aprset->read)) { - revents |= APR_POLLIN; - if (recv(sock->socketdes, &data, dummy, flags) == -1) { - switch (errno) { - case ECONNRESET: - case ECONNABORTED: - case ESHUTDOWN: - case ENETRESET: { - revents ^= APR_POLLIN; - revents |= APR_POLLHUP; - break; - } - case ENOTSOCK: { - revents ^= APR_POLLIN; - revents |= APR_POLLNVAL; - } - default: { - revents ^= APR_POLLIN; - revents |= APR_POLLERR; - } - } - } - } - if (FD_ISSET(sock->socketdes, aprset->write)) { - revents |= APR_POLLOUT; - } - /* I am assuming that the except is for out of band data, not a failed - * connection on a non-blocking socket. Might be a bad assumption, but - * it works for now. rbb. - */ - if (FD_ISSET(sock->socketdes, aprset->except)) { - revents |= APR_POLLPRI; - } - - (*event) = revents; - return APR_SUCCESS; -} - -ap_status_t ap_remove_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t events) -{ - if (event & APR_POLLIN) { - FD_CLR(sock->socketdes, aprset->read); - } - if (event & APR_POLLPRI) { - FD_CLR(sock->socketdes, aprset->read); - } - if (event & APR_POLLOUT) { - FD_CLR(sock->socketdes, aprset->write); - } - return APR_SUCCESS; -} - -ap_status_t ap_clear_poll_sockets(struct pollfd_t *aprset, ap_int16_t event) -{ - if (event & APR_POLLIN) { - FD_ZERO(aprset->read); - } - if (event & APR_POLLPRI) { - FD_ZERO(aprset->read); - } - if (event & APR_POLLOUT) { - FD_ZERO(aprset->write); - } - aprset->highsock = 0; - return APR_SUCCESS; -} - -#endif - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_polldata(ap_pollfd_t *, void *) - * Return the context associated with the current poll. - * arg 1) The currently open pollfd. - * arg 2) The user data associated with the pollfd. - */ -ap_status_t ap_get_polldata(struct pollfd_t *pollfd, void *data) -{ - if (pollfd != NULL) { - return ap_get_userdata(pollfd->cntxt, &data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_polldata(ap_pollfd_t *, void *) - * Return the context associated with the current poll. - * arg 1) The currently open pollfd. - * arg 2) The user data to associate with the pollfd. - */ -ap_status_t ap_set_polldata(struct pollfd_t *pollfd, void *data) -{ - if (pollfd != NULL) { - return ap_set_userdata(pollfd->cntxt, data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - diff --git a/network_io/unix/sendrecv.c b/network_io/unix/sendrecv.c deleted file mode 100644 index d97dbecb9..000000000 --- a/network_io/unix/sendrecv.c +++ /dev/null @@ -1,167 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1996-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_send(ap_socket_t *, const char *, ap_ssize_t *, time_t) - * Send data over a network. - * arg 1) The socket to send the data over. - * arg 2) The buffer which contains the data to be sent. - * arg 3) The maximum number of bytes to send - * arg 4) The amount of time in seconds to try sending this data. - * NOTE: The number of bytes actually sent is stored in argument 3. It is - * not currently possible to have this behave like a blocking write. - * If the timeout is zero, it will try to send the data, and return - * immediately. - */ -ap_status_t ap_send(struct socket_t *sock, const char *buf, ap_ssize_t *len, time_t sec) -{ - ssize_t rv; - - do { - rv = write(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - - if (rv == -1 && errno == EAGAIN && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->socketdes, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, NULL, &fdset, NULL, &tv); - } while (srv == -1 && errno == EINTR); - - if (srv == 0) { - (*len) = -1; - return APR_TIMEUP; - } - else if (srv < 0) { - (*len) = -1; - return errno; - } - else { - do { - rv = write(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_recv(ap_socket_t *, char *, ap_ssize_t *, time_t) - * Read data from a network. - * arg 1) The socket to read the data from. - * arg 2) The buffer to store the data in. - * arg 3) The maximum number of bytes to read - * arg 4) The amount of time in seconds to try reading data. - * NOTE: The number of bytes actually read is stored in argument 3. It is - * not currently possible to have this behave like a blocking read. - * If the timeout is zero, it will try to read data, and return - * immediately. - */ -ap_status_t ap_recv(struct socket_t *sock, char *buf, ap_ssize_t *len, time_t sec) -{ - ssize_t rv; - - do { - rv = read(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - - if (rv == -1 && errno == EAGAIN && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->socketdes, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, &fdset, NULL, NULL, &tv); - } while (srv == -1 && errno == EINTR); - - if (srv == 0) { - (*len) = -1; - return APR_TIMEUP; - } - else if (srv < 0) { - (*len) = -1; - return errno; - } - else { - do { - rv = read(sock->socketdes, buf, (*len)); - } while (rv == -1 && errno == EINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - diff --git a/network_io/unix/sockets.c b/network_io/unix/sockets.c deleted file mode 100644 index e8952af10..000000000 --- a/network_io/unix/sockets.c +++ /dev/null @@ -1,341 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_portable.h" -#include "apr_lib.h" -#include -#include -#include -#include -#include -#include - -ap_status_t socket_cleanup(void *sock) -{ - struct socket_t *thesocket = sock; - if (close(thesocket->socketdes) == 0) { - thesocket->socketdes = -1; - return APR_SUCCESS; - } - else { - return errno; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_tcp_socket(ap_context_t *, ap_socket_t **) - * Create a socket for tcp communication. - * arg 1) The context to use - * arg 2) The new socket that has been setup. - */ -ap_status_t ap_create_tcp_socket(ap_context_t *cont, struct socket_t **new) -{ - (*new) = (struct socket_t *)ap_palloc(cont, sizeof(struct socket_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - - if ((*new)->addr == NULL) { - return APR_ENOMEM; - } - - (*new)->socketdes = socket(AF_INET ,SOCK_STREAM, IPPROTO_TCP); - (*new)->remote_hostname = NULL; - - (*new)->addr->sin_family = AF_INET; - - (*new)->addr_len = sizeof(*(*new)->addr); - - if ((*new)->socketdes < 0) { - return errno; - } - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_shutdown(ap_socket_t *, ap_shutdown_how_e) - * Shutdown either reading, writing, or both sides of a tcp socket. - * arg 1) The socket to close - * arg 2) 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 - * NOTE: This does not actually close the socket descriptor, it just - * controls which calls are still valid on the socket. - */ -ap_status_t ap_shutdown(struct socket_t *thesocket, ap_shutdown_how_e how) -{ - if (shutdown(thesocket->socketdes, how) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_close_socket(ap_socket_t *) - * Close a tcp socket. - * arg 1) The socket to close - */ -ap_status_t ap_close_socket(struct socket_t *thesocket) -{ - ap_kill_cleanup(thesocket->cntxt, thesocket, socket_cleanup); - return socket_cleanup(thesocket); -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setport(ap_socket_t *, ap_uint32_t) - * Assocaite a port with a socket. - * arg 1) The socket use - * arg 2) The port this socket will be dealing with. - * NOTE: This does not bind the two together, it is just telling apr - * that this socket is going to use this port if possible. If - * the port is already used, we won't find out about it here. - */ -ap_status_t ap_setport(struct socket_t *sock, ap_uint32_t port) -{ - sock->addr->sin_port = htons((short)port); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_bind(ap_socket_t *) - * Bind the socket to it's assocaited port - * arg 1) The socket to bind - * NOTE: This is where we will find out if there is any other process - * using the selected port. - */ -ap_status_t ap_bind(struct socket_t *sock) -{ - sock->addr->sin_addr.s_addr = INADDR_ANY; - if (bind(sock->socketdes, (struct sockaddr *)sock->addr, sock->addr_len) == -1) - return errno; - else - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_listen(ap_socket_t *, ap_int32_t) - * Listen to a bound socketi for connections. - * arg 1) The socket to listen on - * arg 2) 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. - */ -ap_status_t ap_listen(struct socket_t *sock, ap_int32_t backlog) -{ - if (listen(sock->socketdes, backlog) == -1) - return errno; - else - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_accept(ap_socket_t *, ap_socket_t **) - * Accept a new connection request - * arg 1) The socket we are listening on - * arg 2) 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. - */ -ap_status_t ap_accept(const struct socket_t *sock, struct socket_t **new) -{ - struct hostent *hptr; - - (*new) = (struct socket_t *)ap_palloc(sock->cntxt, - sizeof(struct socket_t)); - - (*new)->cntxt = sock->cntxt; - (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - (*new)->addr_len = sizeof(struct sockaddr_in); - - (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->addr, - &(*new)->addr_len); - - if ((*new)->socketdes < 0) { - return errno; - } - - hptr = gethostbyaddr((char *)&(*new)->addr->sin_addr, - sizeof(struct in_addr), AF_INET); - if (hptr != NULL) { - (*new)->remote_hostname = strdup(hptr->h_name); - } - - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_connect(ap_socket_t *, char *) - * Issue a connection request to a socket either on the same machine - * or a different one. - * arg 1) The socket we wish to use for our side of the connection - * arg 2) The hostname of the machine we wish to connect to. - */ -ap_status_t ap_connect(struct socket_t *sock, char *hostname) -{ - struct hostent *hp; - - hp = gethostbyname(hostname); - - if ((sock->socketdes < 0) || (!sock->addr)) { - return APR_ENOTSOCK; - } - if (!hp) { - if (h_errno == TRY_AGAIN) { - return EAGAIN; - } - return h_errno; - } - - memcpy((char *)&sock->addr->sin_addr, hp->h_addr_list[0], hp->h_length); - - sock->addr->sin_family = AF_INET; - - sock->addr_len = sizeof(*sock->addr); - - if ((connect(sock->socketdes, (const struct sockaddr *)sock->addr, sock->addr_len) < 0) && - (errno != EINPROGRESS)) { - return errno; - } - else { - sock->remote_hostname = strdup(hostname); - return APR_SUCCESS; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_socketdata(ap_socket_t *, void *) - * Return the context associated with the current socket. - * arg 1) The currently open socket. - * arg 2) The user data associated with the socket. - */ -ap_status_t ap_get_socketdata(struct socket_t *socket, void *data) -{ - if (socket != NULL) { - return ap_get_userdata(socket->cntxt, &data); - } - else { - data = NULL; - return APR_ENOSOCKET; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_socketdata(ap_socket_t *, void *) - * Set the context associated with the current socket. - * arg 1) The currently open socket. - * arg 2) The user data to associate with the socket. - */ -ap_status_t ap_set_socketdata(struct socket_t *socket, void *data) -{ - if (socket != NULL) { - return ap_set_userdata(socket->cntxt, data); - } - else { - data = NULL; - return APR_ENOSOCKET; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_sock(ap_socket_t *, ap_os_sock_t *) - * Convert the socket from an apr type to an OS specific socket - * arg 1) The socket to convert. - * arg 2) The os specifc equivelant of the apr socket.. - */ -ap_status_t ap_get_os_sock(struct socket_t *sock, ap_os_sock_t *thesock) -{ - if (sock == NULL) { - return APR_ENOSOCKET; - } - thesock = &(sock->socketdes); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_sock(ap_context_t *, ap_socket_t **, ap_os_socket_t *) - * Convert a socket from the os specific type to the apr type - * arg 1) The context to use. - * arg 2) The socket to convert to. - * arg 3) The socket we are converting to an apr type. - */ -ap_status_t ap_put_os_sock(ap_context_t *cont, struct socket_t **sock, - ap_os_sock_t *thesock) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*sock) == NULL) { - (*sock) = (struct socket_t *)ap_palloc(cont, sizeof(struct socket_t)); - (*sock)->cntxt = cont; - } - (*sock)->socketdes = *thesock; - return APR_SUCCESS; -} - diff --git a/network_io/unix/sockopt.c b/network_io/unix/sockopt.c deleted file mode 100644 index e4f855a9b..000000000 --- a/network_io/unix/sockopt.c +++ /dev/null @@ -1,201 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -#include -#include -#include -#include - -ap_status_t soblock(int sd) -{ - int fd_flags; - - fd_flags = fcntl(sd, F_GETFL, 0); -#if defined(O_NONBLOCK) - fd_flags &= ~O_NONBLOCK; -#elif defined(O_NDELAY) - fd_flags &= ~O_NDELAY; -#elif defined(FNDELAY) - fd_flags &= ~O_FNDELAY; -#else - /* XXXX: this breaks things, but an alternative isn't obvious...*/ - return -1; -#endif - if (fcntl(sd, F_SETFL, fd_flags) == -1) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t sononblock(int sd) -{ - int fd_flags; - - fd_flags = fcntl(sd, F_GETFL, 0); -#if defined(O_NONBLOCK) - fd_flags |= O_NONBLOCK; -#elif defined(O_NDELAY) - fd_flags |= O_NDELAY; -#eli f defined(FNDELAY) - fd_flags |= O_FNDELAY; -#else - /* XXXX: this breaks things, but an alternative isn't obvious...*/ - return -1; -#endif - if (fcntl(sd, F_SETFL, fd_flags) == -1) { - return errno; - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setsocketopt(ap_socket_t *, ap_int32_t , ap_int32_t) - * Setup socket options for the specified socket - * arg 1) The socket to set up. - * arg 2) 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. - * arg 3) Are we turning the option on or off. - */ -ap_status_t ap_setsocketopt(struct socket_t *sock, ap_int32_t opt, ap_int32_t on) -{ - int one; - struct linger li; - ap_status_t stat; - - if (on) - one = 1; - else - one = 0; - - if (opt & APR_SO_KEEPALIVE) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) { - return errno; - } - } - if (opt & APR_SO_DEBUG) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) { - return errno; - } - } - if (opt & APR_SO_REUSEADDR) { - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) { - return errno; - } - } - if (opt & APR_SO_NONBLOCK) { - if (on) { - if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) - return stat; - } - else { - if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) - return stat; - } - } - if (opt & APR_SO_LINGER) { - li.l_onoff = on; - li.l_linger = MAX_SECS_TO_LINGER; - if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) { - return errno; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_gethostname(ap_context_t *, char *, ap_int32_t) - * Get name of the current machine - * arg 1) The context to use. - * arg 2) A buffer to store the hostname in. - * arg 3) The maximum length of the hostname that can be stored in the - * buffer provided. - */ -ap_status_t ap_gethostname(ap_context_t *cont, char *buf, ap_int32_t len) -{ - if (gethostname(buf, len) == -1) - return errno; - else - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_remote_hostname(ap_socket_t *, char *) - * Get name of the machine we are currently connected to. - * arg 1) The socket to examine. - * arg 2) A buffer to store the hostname in. - */ -ap_status_t ap_get_remote_hostname(struct socket_t *sock, char **name) -{ - (*name) = ap_pstrdup(sock->cntxt, sock->remote_hostname); - if (*name) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - - diff --git a/network_io/win32/network_io.def b/network_io/win32/network_io.def deleted file mode 100644 index 21adf40aa..000000000 --- a/network_io/win32/network_io.def +++ /dev/null @@ -1,31 +0,0 @@ -; network_io.def : - -LIBRARY network_io -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_create_tcp_socket @1 - ap_shutdown @2 - ap_close_socket @3 - ap_bind @4 - ap_listen @5 - ap_accept @6 - ap_connect @7 - ap_get_remote_hostname @8 - ap_gethostname @9 - ap_send @10 - ap_recv @11 - ap_setsocketopt @12 - ap_setport @13 - ap_setup_poll @14 - ap_poll @15 - ap_add_poll_socket @16 - ap_get_revents @17 - ap_get_socketdata @18 - ap_set_socketdata @19 - ap_get_polldata @20 - ap_set_polldata @21 - ap_get_os_sock @22 - ap_remove_poll_socket @23 - ap_clear_poll_sockets @24 \ No newline at end of file diff --git a/network_io/win32/network_io.dsp b/network_io/win32/network_io.dsp deleted file mode 100644 index db5072491..000000000 --- a/network_io/win32/network_io.dsp +++ /dev/null @@ -1,115 +0,0 @@ -# Microsoft Developer Studio Project File - Name="network_io" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=network_io - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "network_io.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "network_io.mak" CFG="network_io - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "network_io - Win32 Release" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "network_io - Win32 Debug" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "network_io - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "network_io - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib ..\..\lib\Debug\lib.lib ..\..\misc\win32\Debug\misc.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "network_io - Win32 Release" -# Name "network_io - Win32 Debug" -# Begin Source File - -SOURCE=.\network_io.def -# End Source File -# Begin Source File - -SOURCE=.\networkio.h -# End Source File -# Begin Source File - -SOURCE=.\poll.c -# End Source File -# Begin Source File - -SOURCE=.\sendrecv.c -# End Source File -# Begin Source File - -SOURCE=.\sockets.c -# End Source File -# Begin Source File - -SOURCE=.\sockopt.c -# End Source File -# End Target -# End Project diff --git a/network_io/win32/networkio.h b/network_io/win32/networkio.h deleted file mode 100644 index bd830f256..000000000 --- a/network_io/win32/networkio.h +++ /dev/null @@ -1,81 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef NETWORK_IO_H -#define NETWORK_IO_H - -#include "apr_network_io.h" -#include "apr_general.h" - -struct socket_t { - ap_context_t *cntxt; - SOCKET sock; - char *remote_hostname; - struct sockaddr_in *addr; - size_t addr_len; -}; - -struct pollfd_t { - ap_context_t *cntxt; - fd_set *read; - int numread; - fd_set *write; - int numwrite; - fd_set *except; - int numexcept; -}; - -#endif /* ! NETWORK_IO_H */ - diff --git a/network_io/win32/poll.c b/network_io/win32/poll.c deleted file mode 100644 index 77cb8dd93..000000000 --- a/network_io/win32/poll.c +++ /dev/null @@ -1,254 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include - - -ap_status_t ap_setup_poll(ap_context_t *cont, ap_int32_t num, struct pollfd_t **new) -{ - (*new) = (struct pollfd_t *)ap_palloc(cont, sizeof(struct pollfd_t) * num); - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->read = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - (*new)->write = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - (*new)->except = (fd_set *)ap_palloc(cont, sizeof(fd_set)); - FD_ZERO((*new)->read); - (*new)->numread = 0; - FD_ZERO((*new)->write); - (*new)->numwrite = 0; - FD_ZERO((*new)->except); - (*new)->numexcept = 0; - return APR_SUCCESS; -} - -ap_status_t ap_add_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t event) -{ - if (event & APR_POLLIN) { - FD_SET(sock->sock, aprset->read); - aprset->numread++; - } - if (event & APR_POLLPRI) { - FD_SET(sock->sock, aprset->read); - aprset->numexcept++; - } - if (event & APR_POLLOUT) { - FD_SET(sock->sock, aprset->write); - aprset->numwrite++; - } - return APR_SUCCESS; -} - -ap_status_t ap_poll(struct pollfd_t *aprset, ap_int32_t *nsds, ap_int32_t timeout) -{ - int rv; - struct timeval *thetime; - fd_set *newread = NULL; - fd_set *newwrite = NULL; - fd_set *newexcept = NULL; - - if (timeout == -1) { - thetime = NULL; - } - else { - /* Convert milli-seconds into seconds and micro-seconds. */ - thetime = (struct timeval *)ap_palloc(aprset->cntxt, sizeof(struct timeval)); - thetime->tv_sec = timeout; - thetime->tv_usec = 0; - } - - if (aprset->numread != 0) { - newread = aprset->read; - } - if (aprset->numwrite != 0) { - newwrite = aprset->write; - } - if (aprset->numexcept != 0) { - newexcept = aprset->except; - } - - if (newread == NULL && newwrite == NULL && newexcept == NULL) { - Sleep(100); /* Should sleep for timeout, but that will be fixed next */ - return APR_TIMEUP; - } - else { - rv = select(500, newread, newwrite, newexcept, thetime); - } - - (*nsds) = rv; - if ((*nsds) < 0) { - rv = GetLastError(); - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_get_revents(struct pollfd_t *aprset, struct socket_t *sock, ap_int16_t *event) -{ - ap_int16_t revents = 0; - WSABUF data; - int dummy; - int flags = MSG_PEEK; - - /* We just want to PEEK at the data, so I am setting up a dummy WSABUF - * variable here. - */ - data.len = 256; - data.buf = (char *)ap_palloc(aprset->cntxt, 256); - - if (FD_ISSET(sock->sock, aprset->read)) { - revents |= APR_POLLIN; - if (WSARecv(sock->sock, &data, 1, &dummy, &flags, NULL, - NULL) == SOCKET_ERROR) { - dummy = WSAGetLastError(); - switch (dummy) { - case WSAECONNRESET: - case WSAECONNABORTED: - case WSAESHUTDOWN: - case WSAENETRESET: { - revents ^= APR_POLLIN; - revents |= APR_POLLHUP; - break; - } - case WSAENOTSOCK: { - revents ^= APR_POLLIN; - revents |= APR_POLLNVAL; - } - default: { - revents ^= APR_POLLIN; - revents |= APR_POLLERR; - } - } - } - } - if (FD_ISSET(sock->sock, aprset->write)) { - revents |= APR_POLLOUT; - } - /* I am assuming that the except is for out of band data, not a failed - * connection on a non-blocking socket. Might be a bad assumption, but - * it works for now. rbb. - */ - if (FD_ISSET(sock->sock, aprset->except)) { - revents |= APR_POLLPRI; - } - - (*event) = revents; - return APR_SUCCESS; -} - -ap_status_t ap_get_polldata(struct pollfd_t *pollfd, void *data) -{ - if (pollfd != NULL) { - return ap_get_userdata(pollfd->cntxt, &data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - -ap_status_t ap_set_polldata(struct pollfd_t *pollfd, void *data) -{ - if (pollfd != NULL) { - return ap_set_userdata(pollfd->cntxt, data); - } - else { - data = NULL; - return APR_ENOFILE; - } -} - -ap_status_t ap_remove_poll_socket(struct pollfd_t *aprset, - struct socket_t *sock, ap_int16_t events) -{ - if (events & APR_POLLIN) { - FD_CLR(sock->sock, aprset->read); - aprset->numread--; - } - if (events & APR_POLLPRI) { - FD_CLR(sock->sock, aprset->read); - aprset->numexcept--; - } - if (events & APR_POLLOUT) { - FD_CLR(sock->sock, aprset->write); - aprset->numwrite--; - } - return APR_SUCCESS; -} - -ap_status_t ap_clear_poll_sockets(struct pollfd_t *aprset, ap_int16_t events) -{ - if (events & APR_POLLIN) { - FD_ZERO(aprset->read); - aprset->numread = 0; - } - if (events & APR_POLLPRI) { - FD_ZERO(aprset->read); - aprset->numexcept = 0; - } - if (events & APR_POLLOUT) { - FD_ZERO(aprset->write); - aprset->numwrite = 0; - } - return APR_SUCCESS; -} diff --git a/network_io/win32/sendrecv.c b/network_io/win32/sendrecv.c deleted file mode 100644 index 2e61b2171..000000000 --- a/network_io/win32/sendrecv.c +++ /dev/null @@ -1,166 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1996-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include "apr_lib.h" -#include - -ap_status_t ap_send(struct socket_t *sock, const char *buf, ap_ssize_t *len, time_t sec) -{ - ap_ssize_t rv; - WSABUF data; - int lasterror; - - data.len = *len; - data.buf = ap_pstrdup(sock->cntxt, buf); - do { - rv = WSASend(sock->sock, &data, 1, len, 0, NULL, NULL); - if (rv == SOCKET_ERROR) { - lasterror = WSAGetLastError(); - } - } while (rv == SOCKET_ERROR && lasterror == WSAEINTR); - - if (rv == SOCKET_ERROR && lasterror == WSAEWOULDBLOCK && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->sock, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, NULL, &fdset, NULL, &tv); - if (srv == SOCKET_ERROR) { - lasterror = WSAGetLastError(); - } - } while (srv == SOCKET_ERROR && errno == WSAEINTR); - - if (srv == 0) { - (*len) = -1; - return APR_TIMEUP; - } - if (srv < 0) { - (*len) = -1; - return APR_EEXIST; - } - else { - do { - rv = WSASend(sock->sock, &data, 1, len, 0, NULL, NULL); - if (rv == SOCKET_ERROR) { - lasterror = WSAGetLastError(); - } - } while (rv == SOCKET_ERROR && lasterror == WSAEINTR); - } - } - return APR_SUCCESS; -} - -ap_status_t ap_recv(struct socket_t *sock, char *buf, ap_ssize_t *len, time_t sec) -{ - ap_ssize_t rv; - int lasterror; - - do { - rv = recv(sock->sock, buf, *len, 0); - if (rv == SOCKET_ERROR) { - lasterror = WSAGetLastError(); - } - } while (rv == SOCKET_ERROR && lasterror == WSAEINTR); - - if (rv == SOCKET_ERROR && lasterror == WSAEWOULDBLOCK && sec > 0) { - struct timeval tv; - fd_set fdset; - int srv; - - do { - FD_ZERO(&fdset); - FD_SET(sock->sock, &fdset); - tv.tv_sec = sec; - tv.tv_usec = 0; - - srv = select(FD_SETSIZE, &fdset, NULL, NULL, &tv); - if (srv == SOCKET_ERROR) { - lasterror = WSAGetLastError(); - } - } while (srv == SOCKET_ERROR && errno == WSAEINTR); - - if (srv == 0) { - (*len) = -1; - return APR_TIMEUP; - } - else if (srv < 0) { - (*len) = -1; - return errno; - } - else { - do { - rv = recv(sock->sock, buf, *len, 0); - if (rv == SOCKET_ERROR) { - lasterror = WSAGetLastError(); - } - } while (rv == SOCKET_ERROR && lasterror == WSAEINTR); - } - } - (*len) = rv; - return APR_SUCCESS; -} - diff --git a/network_io/win32/sockets.c b/network_io/win32/sockets.c deleted file mode 100644 index 03748aaef..000000000 --- a/network_io/win32/sockets.c +++ /dev/null @@ -1,288 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include -#include -#include - - -ap_status_t socket_cleanup(void *sock) -{ - struct socket_t *thesocket = sock; - if (closesocket(thesocket->sock) != SOCKET_ERROR) { - thesocket->sock = INVALID_SOCKET; - return APR_SUCCESS; - } - else { - return APR_EEXIST; - } -} - -ap_status_t ap_create_tcp_socket(ap_context_t *cont, struct socket_t **new) -{ - (*new) = (struct socket_t *)ap_palloc(cont, sizeof(struct socket_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->addr = (struct sockaddr_in *)ap_pcalloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - - if ((*new)->addr == NULL) { - return APR_ENOMEM; - } - /* For right now, we are not using socket groups. We may later. - * No flags to use when creating a socket, so use 0 for that parameter as well. - */ - (*new)->sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - (*new)->remote_hostname = NULL; - - (*new)->addr->sin_family = AF_INET; - - (*new)->addr_len = sizeof(*(*new)->addr); - - (*new)->addr->sin_port = 0; - - if ((*new)->sock == INVALID_SOCKET) { - return APR_EEXIST; - } - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t ap_shutdown(struct socket_t *thesocket, ap_shutdown_how_e how) -{ - int winhow; - - switch (how) { - case APR_SHUTDOWN_READ: { - winhow = SD_RECEIVE; - break; - } - case APR_SHUTDOWN_WRITE: { - winhow = SD_SEND; - break; - } - case APR_SHUTDOWN_READWRITE: { - winhow = SD_BOTH; - break; - } - } - if (shutdown(thesocket->sock, winhow) == 0) { - return APR_SUCCESS; - } - else { - return APR_EEXIST; - } -} - -ap_status_t ap_close_socket(struct socket_t *thesocket) -{ - ap_kill_cleanup(thesocket->cntxt, thesocket, socket_cleanup); - return socket_cleanup(thesocket); -} - -ap_status_t ap_setport(struct socket_t *sock, ap_uint32_t port) -{ - sock->addr->sin_port = htons((short)port); - return APR_SUCCESS; -} - -ap_status_t ap_bind(struct socket_t *sock) -{ - sock->addr->sin_addr.s_addr = INADDR_ANY; - if (bind(sock->sock, (struct sockaddr *)sock->addr, sock->addr_len) == -1) { - return errno; - } - else - return APR_SUCCESS; -} - -ap_status_t ap_listen(struct socket_t *sock, ap_int32_t backlog) -{ - if (listen(sock->sock, backlog) == SOCKET_ERROR) - return APR_EEXIST; - else - return APR_SUCCESS; -} - -ap_status_t ap_accept(const struct socket_t *sock, struct socket_t **new) -{ - struct hostent *hptr; - - - (*new) = (struct socket_t *)ap_palloc(sock->cntxt, - sizeof(struct socket_t)); - - (*new)->cntxt = sock->cntxt; - (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt, - sizeof(struct sockaddr_in)); - (*new)->addr_len = sizeof(struct sockaddr_in); - - (*new)->sock = accept(sock->sock, (struct sockaddr *)(*new)->addr, - &(*new)->addr_len); - - if ((*new)->sock == INVALID_SOCKET) { - return errno; - } - - hptr = gethostbyaddr((char *)&(*new)->addr->sin_addr, - sizeof(struct in_addr), AF_INET); - if (hptr != NULL) { - (*new)->remote_hostname = strdup(hptr->h_name); - } - - ap_register_cleanup((*new)->cntxt, (void *)(*new), - socket_cleanup, NULL); - return APR_SUCCESS; -} - -ap_status_t ap_connect(struct socket_t *sock, char *hostname) -{ - struct hostent *hp; - int lasterror; - fd_set temp; - - if ((sock->sock == INVALID_SOCKET) || (!sock->addr)) { - return APR_ENOTSOCK; - } - - if (*hostname >= '0' && *hostname <= '9' && - strspn(hostname, "0123456789.") == strlen(hostname)) { - sock->addr->sin_addr.s_addr = inet_addr(hostname); - } - else { - hp = gethostbyname(hostname); - memcpy((char *)&sock->addr->sin_addr, hp->h_addr_list[0], hp->h_length); - sock->addr_len = sizeof(*sock->addr); - if (!hp) { - if (h_errno == TRY_AGAIN) { - return EAGAIN; - } - return h_errno; - } - } - - sock->addr->sin_family = AF_INET; - - if (connect(sock->sock, (const struct sockaddr *)sock->addr, - sock->addr_len) == 0) { - sock->remote_hostname = strdup(hostname); - return APR_SUCCESS; - } - else { - lasterror = WSAGetLastError(); - if (lasterror == WSAEWOULDBLOCK) { - FD_ZERO(&temp); - FD_SET(sock->sock, &temp); - if (select(sock->sock+1, NULL, &temp, NULL, NULL) == 1) { - return APR_SUCCESS; - } - return APR_EEXIST; - } - } -} - -ap_status_t ap_get_socketdata(struct socket_t *socket, void *data) -{ - if (socket != NULL) { - return ap_get_userdata(socket->cntxt, &data); - } - else { - data = NULL; - return APR_ENOSOCKET; - } -} - -ap_status_t ap_set_socketdata(struct socket_t *socket, void *data) -{ - if (socket != NULL) { - return ap_set_userdata(socket->cntxt, data); - } - else { - data = NULL; - return APR_ENOSOCKET; - } -} - -ap_status_t ap_get_os_sock(struct socket_t *sock, ap_os_sock_t *thesock) -{ - if (sock == NULL) { - return APR_ENOSOCKET; - } - thesock = &(sock->sock); - return APR_SUCCESS; -} - -ap_status_t ap_put_os_sock(ap_context_t *cont, struct socket_t **sock, - ap_os_sock_t *thesock) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*sock) == NULL) { - (*sock) = (struct socket_t *)ap_palloc(cont, sizeof(struct socket_t)); - (*sock)->cntxt = cont; - } - (*sock)->sock = *thesock; - return APR_SUCCESS; -} diff --git a/network_io/win32/sockopt.c b/network_io/win32/sockopt.c deleted file mode 100644 index 316aaaa31..000000000 --- a/network_io/win32/sockopt.c +++ /dev/null @@ -1,146 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include - -ap_status_t soblock(SOCKET sd) -{ - int one = 1; - - if (ioctlsocket(sd, FIONBIO, &one) == SOCKET_ERROR) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t sononblock(SOCKET sd) -{ - int zero = 0; - - if (ioctlsocket(sd, FIONBIO, &zero) == SOCKET_ERROR) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_setsocketopt(struct socket_t *sock, ap_int32_t opt, ap_int32_t on) -{ - int one; - struct linger li; - ap_status_t stat; - - if (on) - one = 1; - else - one = 0; - - if (opt & APR_SO_KEEPALIVE) { - if (setsockopt(sock->sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) { - return APR_EEXIST; - } - } - if (opt & APR_SO_DEBUG) { - if (setsockopt(sock->sock, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) { - return APR_EEXIST; - } - } - if (opt & APR_SO_REUSEADDR) { - if (setsockopt(sock->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) { - return APR_EEXIST; - } - } - if (opt & APR_SO_NONBLOCK) { - if (on) { - if ((stat = soblock(sock->sock)) != APR_SUCCESS) - return stat; - } - else { - if ((stat = sononblock(sock->sock)) != APR_SUCCESS) - return stat; - } - } - if (opt & APR_SO_LINGER) { - li.l_onoff = on; - li.l_linger = MAX_SECS_TO_LINGER; - if (setsockopt(sock->sock, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) { - return APR_EEXIST; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_gethostname(ap_context_t *cont, char *buf, int len) -{ - if (gethostname(buf, len) == -1) - return APR_EEXIST; - else - return APR_SUCCESS; -} - -ap_status_t ap_get_remote_hostname(struct socket_t *sock, char **name) -{ - (*name) = ap_pstrdup(sock->cntxt, sock->remote_hostname); - if (*name) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - - diff --git a/shmem/shmem.c b/shmem/shmem.c deleted file mode 100644 index 7dc7768cf..000000000 --- a/shmem/shmem.c +++ /dev/null @@ -1,157 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -struct shmem_t { - MM *mm; - ap_context_t *cntxt; -} - -ap_status_t ap_shm_create(ap_context_t *cont, ap_size_t size, const char *file, struct shmem_t **new) -{ - MM *mm = mm_create(size, file); - - if (mm == NULL) { - return APR_ENOMEM; - } - (*new) = (struct shmem_t *)mm_malloc(mm, sizeof(struct shmem_t)); - if ((*new) == NULL) - return APR_ENOMEM; - } - (*new)->mm = mm; - (*new)->cntxt = cont; - return APR_SUCCESS; -} - -ap_status_t ap_shm_destroy(struct shmem_t *shared) -{ - mm_destroy(shared->mm); - shared->mm = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_shm_malloc(struct shmem_t *shared, ap_size_t size, void **entity) -{ - entity = mm_malloc(shared->mm, size); - if (entity == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_calloc(struct shmem_t *shared, ap_size_t size, void **entity) -{ - entity = mm_calloc(shared->mm, size); - if (entity == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_realloc(struct shmem_t *shared, ap_size_t size, void **entity) -{ - void *new; - - new = mm_realloc(shared->mm, *entity, size); - if (new == NULL) - return APR_ENOMEM; - } - - (*entity) = new; - return APR_SUCCESS; -} - -ap_status_t apr_shm_free(struct shmem_t *shared, void *entity) -{ - mm_free(shared->mm, entity); - return APR_SUCCESS; -} - -ap_status_t ap_shm_strdup(struct shmem_t *shared, const char *old, char **new) -{ - (*new) = mm_strdup(shared->mm, old); - if ((*new) == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_sizeof(struct shmem_t *shared, const void *ent, - ap_size_t *size) -{ - *size = mm_sizeof(shared->mm, ent); - if ((*size) == -1) { - return APR_EINVAL; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_maxsize(ap_size_t **size) -{ - (*size) = mm_maxsize(); - if ((*size) <= 0) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_available(struct shmem_t *shared, ap_size_t *size) -{ - (*size) = mm_available(shared->mm); - if ((*size <= 0) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - diff --git a/shmem/unix/Makefile.in b/shmem/unix/Makefile.in deleted file mode 100644 index e028f3955..000000000 --- a/shmem/unix/Makefile.in +++ /dev/null @@ -1,52 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -Imm -I. - -LIB=../libshmem.a - -OBJS=shmem.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE diff --git a/shmem/unix/mm/CHANGES b/shmem/unix/mm/CHANGES deleted file mode 100644 index a1baf219c..000000000 --- a/shmem/unix/mm/CHANGES +++ /dev/null @@ -1,132 +0,0 @@ - - MM CHANGES - ========== - - Changes between 1.0.7 and 1.0.8 (22-Jun-1999 to 24-Jun-1999) - - *) Added important MAP_FAILED fallback also to Autoconf stuff - *) Upgraded to latest shtool 1.3.0-dev to fix two Awk problems - - Changes between 1.0.6 and 1.0.7 (06-Jun-1999 to 22-Jun-1999) - - *) Upgraded to latest shtool 1.3.0-dev - *) Avoid -g under non-debugging situation - *) Complain with a fatal error message when MM_SHM_MAXSEGSIZE - couldn't be determined. - *) Updated config.guess/config.sub - *) Fixed a nasty permission bug for the lock files: - they were opened write-only, but at least fcntl() - requires them to be opened read-write. - *) Check return value of mm_core_lock() in mm_alloc.c - - Changes between 1.0.5 and 1.0.6 (02-Jun-1999 to 06-Jun-1999) - - *) Fixed mm_malloc() function: it returned the wrong pointer when a chunk - was reused and forgot to lock/unlock the data structures. - *) Fixed internal best-fit algorithm for finding a free memory chunk: - - things got inserted out of order in the list - - when chunk is found which matches size exactly it stops immediately - - lowered chunk splitting threshold to MIN(2*size,128) - *) Moved internal definitions in mm.h to private section - - Changes between 1.0.4 and 1.0.5 (21-May-1999 to 02-Jun-1999) - - *) Fixed output of mm-config.in - *) Fixed output of configure --help - *) Upgraded to GNU libtool 1.3.2 - *) Upgraded to shtool 1.2.9 - *) Made libtool calls visible but use --quiet - *) Hint user to send feedback only on errors or for new platform - *) Removed unnecessary "elf" hint for FreeBSD from config.guess - - Changes between 1.0.3 and 1.0.4 (15-May-1999 to 21-May-1999) - - *) Fixed maximum memory size determination and internal handling - *) Documented the mm_lib_xxx() functions. - - Changes between 1.0.2 and 1.0.3 (26-Apr-1999 to 15-May-1999) - - *) Added {MM,mm,mm_core}_permission() function - *) Fixed version information and mod_ssl URL in manual page - *) Upgraded config.{guess,sub} from libtool 1.3 distribution - *) Upgraded to GNU libtool 1.3 - *) Upgraded to shtool 1.2.7 - *) Fixed public includes for xx_t types - *) Fixed mm_vers.c and shtool type inside CVS - - Changes between 1.0.1 and 1.0.2 (18-Apr-1999 to 26-Apr-1999) - - *) Upgraded to GNU libtool 1.2f - *) Upgraded to shtool 1.1.0 - - Changes between 1.0.0 and 1.0.1 (18-Mar-1999 to 18-Apr-1999) - - *) Fixed "dist" Makefile target to not distribute CVS stuff - *) Upgraded lshtool to the latest version - *) Const'ification of the API - - Changes between 1.0b6 and 1.0.0 (18-Mar-1999 to 28-Mar-1999) - - *) Finally cleaned up and polished the mm.pod manual page. - *) Fixed mm-config program - - Changes between 1.0b5 and 1.0b6 (18-Mar-1999 to 18-Mar-1999) - - *) Added {MM,mm}_maxsize() to manual page - *) Changed MM_create() signature to match mm_create() - - Changes between 1.0b4 and 1.0b5 (15-Mar-1999 to 18-Mar-1999) - - *) Make sure the maximum allocateable size takes - the overhead of the memory pool into account. - *) Fixed lshtool and this way hex version string - *) Fixed Makefile for mm_test target dependecies - *) Added {MM,mm}_maxsize() function to let one - determine in advance the maximum allocateable pool - - Changes between 1.0b3 and 1.0b4 (15-Mar-1999 to 15-Mar-1999) - - *) Added mm-config.pod manpage - *) Split mm-config --ldflags into --ldflags and --libs - *) Removed TODO and fulltest files - - Changes between 1.0b2 and 1.0b3 (13-Mar-1999 to 15-Mar-1999) - - *) Added Autoconf check for determining max shared mem segment size - *) Changed -1 to MAP_FAILED when available - *) Replaced 8KB default shared memory segment size with max size - *) Added mm_core_maxsegsize() function - *) Use a remembered offset for mmap() on temporary files - *) Imported source tree into CVS - *) Added read-only locking support - *) Fixed MMFILE and MMZERO variants - - Changes between 1.0b1 and 1.0b2 (12-Mar-1999 to 13-Mar-1999) - - *) Updated the mm.pod manual page. - *) Split README into README and LICENSE files - *) Fixed becho problems - *) Added a test suite summary - *) Added INSTALL file - *) Reduced mm_test's memory size from 1MB to 512KB - *) Fixed unsigned long and %X related warnings - - Changes between 1.0b0 and 1.0b1 (11-Mar-1999 to 12-Mar-1999) - - *) Enhanced mm_test - *) Added {MM,mm}_available() function - *) Fixed MMZERO - *) Fixed IPC Semaphore initialization - *) Added --with-{sem,shm}=TYPE options - *) Fixed "make test" and mm_memory_display() function - *) Added mm_lib.c source with mm_lib_xx() functions - - Changes between 0.9.0 and 1.0b0 (10-Mar-1999 to 11-Mar-1999) - - *) Switched to GNU Autoconf and GNU Libtool - - Changes between GENESIS and 0.9.0 (Jan-1999 to 10-Mar-1999) - - *) Created initial version on FreeBSD - *) Ported to Linux and Solaris - diff --git a/shmem/unix/mm/INSTALL b/shmem/unix/mm/INSTALL deleted file mode 100644 index 1f42c1d4a..000000000 --- a/shmem/unix/mm/INSTALL +++ /dev/null @@ -1,19 +0,0 @@ - __ __ __ __ - | \/ | \/ | - | |\/| | |\/| | - | | | | | | | - |_| |_|_| |_| - - MM - Shared Memory Library - - To install the MM library into /path/to/mm/{bin,lib,include,man}/ perform - the following steps in your shell: - - $ ./configure --prefix=/path/to/mm - $ make - $ make test - $ make install - - This installs at least a static variant of the MM library and when your - platforms support it, also a shared library variant of the MM library. - diff --git a/shmem/unix/mm/LICENSE b/shmem/unix/mm/LICENSE deleted file mode 100644 index 3bd1c3d41..000000000 --- a/shmem/unix/mm/LICENSE +++ /dev/null @@ -1,40 +0,0 @@ - - ==================================================================== - Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: - "This product includes software developed by - Ralf S. Engelschall ." - - 4. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes software developed by - Ralf S. Engelschall ." - - THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY - EXPRESSED 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 RALF S. ENGELSCHALL OR - ITS 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. - ==================================================================== - diff --git a/shmem/unix/mm/Makefile.in b/shmem/unix/mm/Makefile.in deleted file mode 100644 index 195642e52..000000000 --- a/shmem/unix/mm/Makefile.in +++ /dev/null @@ -1,221 +0,0 @@ -## ==================================================================== -## Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: -## "This product includes software developed by -## Ralf S. Engelschall ." -## -## 4. Redistributions of any form whatsoever must retain the following -## acknowledgment: -## "This product includes software developed by -## Ralf S. Engelschall ." -## -## THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY -## EXPRESSED 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 RALF S. ENGELSCHALL OR -## ITS 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. -## ==================================================================== - -## -## Makefile -## - -@SET_MAKE@ - -TOP = . -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -mandir = @mandir@ - -SHELL = /bin/sh -CC = @CC@ -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -RM = rm -f -LIBTOOL = @LIBTOOL@ -SHTOOL = @SHTOOL@ - -MAN = mm.3 mm-config.1 -OBJ = mm_global.o mm_alloc.o mm_core.o mm_lib.o mm_vers.o -LOBJ = mm_global.lo mm_alloc.lo mm_core.lo mm_lib.lo mm_vers.lo - -_VERSION_FILE = \ - mm_vers.c -_VERSION = \ - $(SHTOOL) version -l c -n MM -p MM $$OPT $(_VERSION_FILE);\ - V=`$(SHTOOL) version -l c -d long $(_VERSION_FILE)`;\ - sed -e "s/Version .*(.*)/Version $$V/g" README.n && mv README.n README - -.SUFFIXES: .o .lo - -.c.o: - $(LIBTOOL) --quiet $(CC) -c $(CFLAGS) $< - -.c.lo: - $(LIBTOOL) --quiet $(CC) -c $(CFLAGS) $< - -all: libmm.la $(MAN) mm_test - -libmm.la: $(OBJ) $(LOBJ) - $(LIBTOOL) --quiet $(CC) -o libmm.la $(LOBJ) \ - -rpath $(libdir) -version-info `$(SHTOOL) version -l c -d libtool mm_vers.c` - -mm_alloc.c mm_core.c mm_global.c: mm_conf.h mm.h mm_vers.c - -test: mm_test - @./mm_test; \ - if [ $$? -eq 0 ]; then \ - PLATFORM=`./config.guess`; PLATFORM=`./config.sub $$PLATFORM`; \ - if [ ".`grep $$PLATFORM README`" = . ]; then \ - echo "Please send the following summary via Email to the author"; \ - echo "Ralf S. Engelschall for inclusion into"; \ - echo "the list of successfully tested platforms (see README file):"; \ - echo ""; \ - echo "Ok" >.fbtool; \ - ./fbtool -d; \ - fi; \ - else \ - echo "Please send the following summary together with as much other"; \ - echo "details about the configuration, build and test steps to the author"; \ - echo "Ralf S. Engelschall to help him in tracking"; \ - echo "down your platform problem."; \ - echo ""; \ - echo "Failed" >.fbtool; \ - ./fbtool -d; \ - fi - -debug: mm_test - @$(LIBTOOL) --mode=execute gdb mm_test - -mm_test: mm_test.lo libmm.la - $(LIBTOOL) --quiet $(CC) -o $@ mm_test.lo libmm.la - -mm.3: mm.pod - V1=`$(SHTOOL) version -l c -d short $(_VERSION_FILE)`; \ - V2=`$(SHTOOL) version -l c -d long $(_VERSION_FILE)`; \ - D=`$(SHTOOL) version -l c -d long $(_VERSION_FILE) | sed -e 's;.*(;;' -e 's;).*;;'`; \ - pod2man --section=3 --center="Shared Memory Library" --release="$$D" --date="MM $$V1" mm.pod |\ - perl -p -e 's;^(\\\&\s+.+?)([Mm][Mm]_[a-zA-Z0-9_]+)(\(.+?)$$;$$1\\fB$$2\\fR$$3;' |\ - sed -e "s;MM_VERSION_STR;$$V2;" >mm.3 - -mm-config.1: mm-config.pod - V1=`$(SHTOOL) version -l c -d short $(_VERSION_FILE)`; \ - V2=`$(SHTOOL) version -l c -d long $(_VERSION_FILE)`; \ - D=`$(SHTOOL) version -l c -d long $(_VERSION_FILE) | sed -e 's;.*(;;' -e 's;).*;;'`; \ - pod2man --section=3 --center="Shared Memory Library" --release="$$D" --date="MM $$V1" mm-config.pod |\ - perl -p -e 's;^(\\\&\s+.+?)([Mm][Mm]_[a-zA-Z0-9_]+)(\(.+?)$$;$$1\\fB$$2\\fR$$3;' |\ - sed -e "s;MM_VERSION_STR;$$V2;" >mm-config.1 - -update: - @$(RM) ltmain.sh ltconfig - @$(MAKE) $(MFLAGS) ltmain.sh ltconfig configure - -configure: configure.in aclocal.m4 - $(RM) configure - autoconf - -ltmain.sh: - @F=`libtoolize -n -c -f | grep 'cp.*ltmain.sh' |\ - sed -e 's;[^/]*;;' -e 's; .*;;'`; \ - echo "ltmain.sh <-- $$F"; cat $$F |\ - sed -e 's:/bin/sh; then:/bin/sh || test "$$nonopt" = ./shtool;then:' \ - -e 's:exec \$$SHELL \$$0 --finish:exit 0 #:' >ltmain.sh - -ltconfig: - @F=`libtoolize -n -c -f | grep 'cp.*ltconfig' | sed -e 's;[^/]*;;' -e 's; .*;;'`; \ - echo "ltconfig <-- $$F"; cp $$F . - -install: all - $(SHTOOL) mkdir -f -p -m 755 $(bindir) - $(SHTOOL) mkdir -f -p -m 755 $(includedir) - $(SHTOOL) mkdir -f -p -m 755 $(libdir) - $(SHTOOL) mkdir -f -p -m 755 $(mandir)/man1 - $(SHTOOL) mkdir -f -p -m 755 $(mandir)/man3 - $(SHTOOL) install -c -m 755 mm-config $(bindir)/mm-config - $(SHTOOL) install -c -m 644 mm-config.1 $(mandir)/man1/mm-config.1 - $(SHTOOL) install -c -m 644 mm.3 $(mandir)/man3/mm.3 - $(SHTOOL) install -c -m 644 mm.h $(includedir)/mm.h - @$(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 libmm.la $(libdir)/libmm.la - -clean: - $(RM) mm_test mm_test.o mm_test.lo - $(RM) core *.core *.bak *~ - $(RM) $(LOBJ) - $(RM) $(OBJ) - $(RM) libmm.la - $(RM) -r .libs - -distclean: clean - $(RM) Makefile - $(RM) mm-config mm_conf.h - $(RM) config.h config.cache config.status config.log - $(RM) libtool - $(RM) .fbtool - -realclean: distclean - $(RM) $(MAN) - -dist: distclean - @$(SHTOOL) fixperm -v *; \ - V=`$(SHTOOL) version -l c -d short $(_VERSION_FILE)`; \ - gtar --no-recursion -cvf - `find * -depth -print | sort | grep -v CVS | grep -v .cvsignore ` |\ - tardy --user_number=0 --user_name=rse \ - --group_number=0 --group_name=en \ - --prefix=mm-$$V - |\ - gzip --best >/tmp/mm-$$V.tar.gz && \ - cp /tmp/mm-$$V.tar.gz .; rm -f /tmp/mm-$$V.tar.gz; \ - ls -l mm-$$V.tar.gz - -snap: distclean - @$(SHTOOL) fixperm *; \ - V=`$(SHTOOL) version -l c -d short $(_VERSION_FILE)`; \ - gtar --no-recursion -cvf - `find * -depth -print | sort | grep -v CVS | grep -v .cvsignore ` |\ - tardy --user_number=0 --user_name=rse \ - --group_number=0 --group_name=en \ - --prefix=mm-$$V - |\ - gzip --best >/tmp/mm-$$V-SNAP.tar.gz && \ - cp /tmp/mm-$$V-SNAP.tar.gz .; rm -f /tmp/mm-$$V-SNAP.tar.gz; \ - ls -l mm-$$V-SNAP.tar.gz - -new-version: - OPT='-i v' && $(_VERSION) -new-revision: - OPT='-i r' && $(_VERSION) -new-patchlevel: - OPT='-i P' && $(_VERSION) -new-betalevel: - OPT='-i b' && $(_VERSION) -new-alphalevel: - OPT='-i a' && $(_VERSION) -new-snaplevel: - OPT='-i s' && $(_VERSION) -new-release: - OPT='-s $(R)' && $(_VERSION) -update-version: - OPT="-s `$(SHTOOL) version -l c -d short $(_VERSION_FILE)`" && $(_VERSION) - diff --git a/shmem/unix/mm/README b/shmem/unix/mm/README deleted file mode 100644 index 5a19d6c08..000000000 --- a/shmem/unix/mm/README +++ /dev/null @@ -1,87 +0,0 @@ - __ __ __ __ - | \/ | \/ | - | |\/| | |\/| | - | | | | | | | - |_| |_|_| |_| - - MM - Shared Memory Library - Copyright (c) 1999 Ralf S. Engelschall, All rights reserved. - Version 1.0.8 (24-Jun-1999) - - The MM library is a 2-layer abstraction library which simplifies the usage - of shared memory between forked (and this way strongly related) processes - under Unix platforms. On the first (lower) layer it hides all platform - dependent implementation details (allocation and locking) when dealing with - shared memory segments and on the second (higher) layer it provides a - high-level malloc(3)-style API for a convenient and well known way to work - with data-structures inside those shared memory segments. - - This library was successfully tested on the following platforms (and - should automatically adjust to other platforms, of course): - - o i386-unknown-freebsd3.1 FreeBSD 3.1 - o i386-unknown-freebsd3.2 FreeBSD 3.2 - o i386-unknown-freebsd2.2.7 FreeBSD 2.2.7 - o i386-unknown-freebsd2.2.8 FreeBSD 2.2.8 - o i386-unknown-freebsd2.2.2 FreeBSD 2.2.2 - o i386-unknown-openbsd2.5 OpenBSD 2.5 - o i386-pc-bsdi4.0.1 BSDI 4.0.1 - o i586-pc-linux-gnu RedHat 5.2 - o i586-pc-linux-gnu RedHat 5.0 - o i686-pc-linux-gnu Redhat 6.0 - o i486-pc-linux-gnulibc1 Linux - o i686-pc-linux-gnulibc1 Slackware 4.0 - o i586-pc-linux-gnulibc1 Slackware 4.0 - o sparc-sun-solaris2.6 Solaris 2.6 - o sparc-sun-solaris2.7 Solaris 2.7 - o i386-pc-solaris2.7 Solaris 2.7 - o alphaev56-dec-osf4.0d Digital Unix v4.0D - o alphaev56-dec-osf4.0c Digital Unix v4.0C - o powerpc-ibm-aix4.2.0.0 AIX 4.2 - o powerpc-ibm-aix4.3.1.0 AIX 4.2 - o alphaev56-unknown-linux-gnu Linux/Alpha - o powerpc-unknown-linux-gnu LinuxPPC 4 - o m68k-apple-aux3.1.1 A/UX 3.1.1 - o hppa1.1-hp-hpux10.10 HP-UX 10.10 - o hppa1.1-hp-hpux10.20 HP-UX 10.20 - o hppa2.0-hp-hpux10.20 HP-UX 10.20 - o arm-unknown-linux-gnu Corel Netwinder SA110 - o mips-sni-sysv4 SIEMENS ReliantUNIX - o mips-sgi-irix6.2 IRIX 6.2 - o mips-sgi-irix6.3 IRIX 6.3 - o mips-sgi-irix6.4 IRIX 6.4 - o mips-sgi-irix6.5 IRIX 6.5.4 - - Credit has to be given to the following people who contributed ideas, - bugfixes, hints, gave platform feedback, etc. (in alphabetical order): - - o Ronald Appelfelder - o Robert Belleman - o Jeff Clark - o Eric Cholet - o Dean Gaudet - o Ask Bjoern Hansen - o Jim Jagielski - o Mats Josefsson - o Sergey Kachanovsky - o Martin Kraemer - o Rasmus Lerdorf - o Dave Malhotra - o Christophe Massiot - o Patrick - o Charles Randall - o David Rees - o Christian Reiber - o Dan Sullivan - o Tom Vaughan - o Rick Watson - o Mark Wilkie - o Cliff Woolley - - The documentation and latest release can be found on - http://www.engelschall.com/sw/mm/ - - Ralf S. Engelschall - rse@engelschall.com - www.engelschall.com - diff --git a/shmem/unix/mm/aclocal.m4 b/shmem/unix/mm/aclocal.m4 deleted file mode 100644 index e9db9c5a4..000000000 --- a/shmem/unix/mm/aclocal.m4 +++ /dev/null @@ -1,355 +0,0 @@ -dnl ## -dnl ## -dnl ## -define(AC_PROG_LIBTOOL,[dnl -AC_ARG_ENABLE(static,dnl -[ --enable-static build static libraries (default=yes)], -enable_static="$enableval", -enable_static=yes -)dnl -AC_ARG_ENABLE(shared,dnl -[ --enable-shared build shared libraries (default=yes)], -enable_shared="$enableval", -enable_shared=yes -)dnl -libtool_flags='' -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" LD="$LD" \ -${CONFIG_SHELL-/bin/sh} ltconfig --no-reexec \ -$libtool_flags --no-verify ltmain.sh $PLATFORM ||\ -AC_MSG_ERROR([libtool configuration failed]) -LIBTOOL="\$(TOP)/libtool" -AC_SUBST(LIBTOOL) -])dnl -dnl ## -dnl ## -dnl ## -define(AC_CHECK_DEBUGGING,[dnl -AC_MSG_CHECKING(for compilation debug mode) -AC_ARG_ENABLE(debug,dnl -[ --enable-debug build for debugging], -[dnl -if test ".$ac_cv_prog_gcc" = ".yes"; then - case "$CFLAGS" in - *-O2* ) ;; - * ) CFLAGS="$CFLAGS -O2" ;; - esac - case "$CFLAGS" in - *-g* ) ;; - * ) CFLAGS="$CFLAGS -g" ;; - esac - CFLAGS="$CFLAGS -ggdb3" - CFLAGS="$CFLAGS -Wall -Wshadow -Wpointer-arith -Wcast-align" - CFLAGS="$CFLAGS -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline" -else - case "$CFLAGS" in - *-g* ) ;; - * ) CFLAGS="$CFLAGS -g" ;; - esac -fi -msg="enabled" -AC_DEFINE(MM_DEBUG) -],[ -case "$CFLAGS" in - *-g* ) CFLAGS=`echo "$CFLAGS" |\ - sed -e 's/ -g //g' -e 's/ -g$//' -e 's/^-g //g' -e 's/^-g$//'` ;; -esac -msg=disabled -])dnl -AC_MSG_RESULT([$msg]) -]) -dnl ## -dnl ## -dnl ## -define(AC_CONFIGURE_PART,[dnl -AC_MSG_RESULT() -AC_MSG_RESULT(${T_MD}$1:${T_ME}) -])dnl -dnl ## -dnl ## -dnl ## -define(AC_CHECK_DEFINE,[dnl -AC_CACHE_CHECK(for $1 in $2, ac_cv_define_$1, -AC_EGREP_CPP([YES_IS_DEFINED], [ -#include <$2> -#ifdef $1 -YES_IS_DEFINED -#endif -], ac_cv_define_$1=yes; AC_DEFINE(HAVE_$1), ac_cv_define_$1=no) -)])dnl -dnl ## -dnl ## -dnl ## -define(AC_IFALLYES,[dnl -ac_rc=yes -for ac_spec in $1; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - $2 -else - : - $3 -fi -])dnl -dnl ## -dnl ## -dnl ## -define(AC_BEGIN_DECISION,[dnl -ac_decision_item='$1' -ac_decision_msg='FAILED' -ac_decision='' -])dnl -define(AC_DECIDE,[dnl -ac_decision='$1' -ac_decision_msg='$2' -ac_decision_$1=yes -ac_decision_$1_msg='$2' -])dnl -define(AC_DECISION_OVERRIDE,[dnl - ac_decision='' - for ac_item in $1; do - eval "ac_decision_this=\$ac_decision_${ac_item}" - if test ".$ac_decision_this" = .yes; then - ac_decision=$ac_item - eval "ac_decision_msg=\$ac_decision_${ac_item}_msg" - fi - done -])dnl -define(AC_DECISION_FORCE,[dnl -ac_decision="$1" -eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" -])dnl -define(AC_END_DECISION,[dnl -if test ".$ac_decision" = .; then - echo "[$]0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - AC_MSG_RESULT([decision on $ac_decision_item... $ac_decision_msg]) -fi -])dnl -dnl ## -dnl ## -dnl ## -AC_DEFUN(AC_TEST_FILE, -[AC_REQUIRE([AC_PROG_CC]) -ac_safe=`echo "$1" | sed 'y%./+-%__p_%'` -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(ac_cv_file_$ac_safe, [ - if test -r $1; then - eval "ac_cv_file_$ac_safe=yes" - else - eval "ac_cv_file_$ac_safe=no" - fi -])dnl -if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) -else - AC_MSG_RESULT(no) -ifelse([$3], , , [$3]) -fi -]) -dnl ## -dnl ## AC_PROG_NM - find the path to a BSD-compatible name lister -dnl ## -AC_DEFUN(AC_PROG_NM, -[AC_MSG_CHECKING([for BSD-compatible nm]) -AC_CACHE_VAL(ac_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - ac_cv_path_NM="$NM" -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" - else - ac_cv_path_NM="$ac_dir/nm" - fi - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm -fi]) -NM="$ac_cv_path_NM" -AC_MSG_RESULT([$NM]) -AC_SUBST(NM) -]) -dnl # -dnl # -dnl # -define(AC_CHECK_MAXSEGSIZE,[dnl -AC_MSG_CHECKING(for shared memory maximum segment size) -OCFLAGS="$CFLAGS" -case "$1" in - MM_SHMT_MM* ) CFLAGS="-DTEST_MMAP $CFLAGS" ;; - MM_SHMT_IPCSHM ) CFLAGS="-DTEST_SHMGET $CFLAGS" ;; -esac -cross_compile=no -AC_TRY_RUN( -changequote(<<, >>)dnl -<< -#include -#include -#include -#include -#include -#include -#ifdef TEST_MMAP -#include -#endif -#ifdef TEST_SHMGET -#include -#include -#endif -#if !defined(MAP_FAILED) -#define MAP_FAILED ((void *)-1) -#endif - -int testit(int size) -{ - int fd; - void *segment; -#ifdef TEST_MMAP - char file[] = "./ac_test.tmp"; - unlink(file); - if ((fd = open(file, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR)) == -1) - return 0; - if (ftruncate(fd, size) == -1) - return 0; - if ((segment = (void *)mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_SHARED, fd, 0)) == MAP_FAILED) { - close(fd); - return 0; - } - munmap((caddr_t)segment, size); - close(fd); - unlink(file); -#endif -#ifdef TEST_SHMGET - if ((fd = shmget(IPC_PRIVATE, size, SHM_R|SHM_W|IPC_CREAT)) == -1) - return 0; - if ((segment = (void *)shmat(fd, NULL, 0)) == ((void *)-1)) { - shmctl(fd, IPC_RMID, NULL); - return 0; - } - shmdt(segment); - shmctl(fd, IPC_RMID, NULL); -#endif - return 1; -} - -#define ABS(n) ((n) >= 0 ? (n) : (-(n))) - -int main(int argc, char *argv[]) -{ - int t, m, b; - int d; - int rc; - FILE *f; - - /* - * Find maximum possible allocation size by performing a - * binary search starting with a search space between 0 and - * 64MB of memory. - */ - t = 1024*1024*64 /* = 67108864 */; - if (testit(t)) - m = t; - else { - m = 1024*1024*32; - b = 0; - for (;;) { - /* fprintf(stderr, "t=%d, m=%d, b=%d\n", t, m, b); */ - rc = testit(m); - if (rc) { - d = ((t-m)/2); - b = m; - } - else { - d = -((m-b)/2); - t = m; - } - if (ABS(d) < 1024*1) { - if (!rc) - m = b; - break; - } - if (m < 1024*8) - break; - m += d; - } - if (m < 1024*8) - m = 0; - } - if ((f = fopen("conftestval", "w")) == NULL) - exit(1); - fprintf(f, "%d\n", m); - fclose(f); - exit(0); -} ->> -changequote([, ])dnl -,[ -MM_SHM_MAXSEGSIZE="`cat conftestval`" -msg="$MM_SHM_MAXSEGSIZE" -if test $msg -eq 67108864; then - msg="64MB (soft limit)" -elif test $msg -gt 1048576; then - msg="`expr $msg / 1024`" - msg="`expr $msg / 1024`" - msg="${msg}MB" -elif test $msg -gt 1024; then - msg="`expr $msg / 1024`" - msg="${msg}KB" -else - MM_SHM_MAXSEGSIZE=0 - msg=unknown -fi -], -MM_SHM_MAXSEGSIZE=0 -msg=unknown -, -MM_SHM_MAXSEGSIZE=0 -msg=unknown -)dnl -CFLAGS="$OCFLAGS" -test ".$msg" = .unknown && AC_MSG_ERROR([Unable to determine maximum shared memory segment size]) -AC_MSG_RESULT([$msg]) -AC_DEFINE_UNQUOTED(MM_SHM_MAXSEGSIZE, $MM_SHM_MAXSEGSIZE) -]) diff --git a/shmem/unix/mm/config.guess b/shmem/unix/mm/config.guess deleted file mode 100755 index 88ada08f5..000000000 --- a/shmem/unix/mm/config.guess +++ /dev/null @@ -1,1082 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 -# Free Software Foundation, Inc. -# -# This file 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - -# Written by Per Bothner . -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# Please send patches to the Autoconf mailing list . -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# Use $HOST_CC if defined. $CC may point to a cross-compiler -if test x"$CC_FOR_BUILD" = x; then - if test x"$HOST_CC" != x; then - CC_FOR_BUILD="$HOST_CC" - else - if test x"$CC" != x; then - CC_FOR_BUILD="$CC" - else - CC_FOR_BUILD=cc - fi - fi -fi - - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <$dummy.s - .globl main - .ent main -main: - .frame \$30,0,\$26,0 - .prologue 0 - .long 0x47e03d80 # implver $0 - lda \$2,259 - .long 0x47e20c21 # amask $2,$1 - srl \$1,8,\$2 - sll \$2,2,\$2 - sll \$0,3,\$0 - addl \$1,\$0,\$0 - addl \$2,\$0,\$0 - ret \$31,(\$26),1 - .end main -EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy - case "$?" in - 7) - UNAME_MACHINE="alpha" - ;; - 15) - UNAME_MACHINE="alphaev5" - ;; - 14) - UNAME_MACHINE="alphaev56" - ;; - 10) - UNAME_MACHINE="alphapca56" - ;; - 16) - UNAME_MACHINE="alphaev6" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 - exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - arm32:NetBSD:*:*) - echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - SR2?01:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - macppc:NetBSD:*:*) - echo powerpc-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - sed 's/^ //' << EOF >$dummy.c - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - rm -f $dummy.c $dummy - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i?86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*T3E:*:*:*) - echo t3e-cray-unicosmk${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F300:UNIX_System_V:*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # uname on the ARM produces all sorts of strangeness, and we need to - # filter it out. - case "$UNAME_MACHINE" in - armv*) UNAME_MACHINE=$UNAME_MACHINE ;; - arm* | sa110*) UNAME_MACHINE="arm" ;; - esac - - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - ld_help_string=`cd /; ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ - | sed -ne '/supported emulations:/!d - s/[ ][ ]*/ /g - s/.*supported emulations: *// - s/ .*// - p'` - case "$ld_supported_emulations" in - *ia64) echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 ;; - i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; - i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; - sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c < -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;; - esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - sed 's/^ //' <$dummy.s - .globl main - .ent main - main: - .frame \$30,0,\$26,0 - .prologue 0 - .long 0x47e03d80 # implver $0 - lda \$2,259 - .long 0x47e20c21 # amask $2,$1 - srl \$1,8,\$2 - sll \$2,2,\$2 - sll \$0,3,\$0 - addl \$1,\$0,\$0 - addl \$2,\$0,\$0 - ret \$31,(\$26),1 - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy - case "$?" in - 7) - UNAME_MACHINE="alpha" - ;; - 15) - UNAME_MACHINE="alphaev5" - ;; - 14) - UNAME_MACHINE="alphaev56" - ;; - 10) - UNAME_MACHINE="alphapca56" - ;; - 16) - UNAME_MACHINE="alphaev6" - ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c </dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c < -#ifdef __cplusplus - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i?86:*:5:7*) - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585 - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE} - exit 0 ;; - i?86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:*:6*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/shmem/unix/mm/config.sub b/shmem/unix/mm/config.sub deleted file mode 100755 index e4944414b..000000000 --- a/shmem/unix/mm/config.sub +++ /dev/null @@ -1,1216 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, 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. - -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi - -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - linux-gnu*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=vxworks - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \ - | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v) - basic_machine=$basic_machine-unknown - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i[34567]86) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ - | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ - | mipstx39-* | mipstx39el-* | mcore-* \ - | f301-* | armv*-* | t3e-* \ - | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* ) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-cbm - ;; - amigaos | amigados) - basic_machine=m68k-cbm - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-cbm - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [ctj]90-cray) - basic_machine=c90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - os=-mvs - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i[34567]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i[34567]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i[34567]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - i386-go32 | go32) - basic_machine=i386-unknown - os=-go32 - ;; - i386-mingw32 | mingw32) - basic_machine=i386-unknown - os=-mingw32 - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | *MiNT) - basic_machine=m68k-atari - os=-mint - ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - msdos) - basic_machine=i386-unknown - os=-msdos - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-corel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - np1) - basic_machine=np1-gould - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexen) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexen-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=rs6000-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=t3e-cray - os=-unicos - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sparc | sparcv9) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -*MiNT) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-corel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f301-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -*MiNT) - vendor=atari - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os diff --git a/shmem/unix/mm/configure b/shmem/unix/mm/configure deleted file mode 100755 index d6c8d9c18..000000000 --- a/shmem/unix/mm/configure +++ /dev/null @@ -1,2923 +0,0 @@ -#! /bin/sh - -# From configure.in Revision: 1.4 - -SHTOOL="\$(TOP)/shtool" - -ac_shtool="./shtool" -T_MD=`$ac_shtool echo -n -e %B` -T_ME=`$ac_shtool echo -n -e %b` -PLATFORM=`./config.guess` -PLATFORM=`./config.sub $PLATFORM` -MM_VERSION_STR="`$ac_shtool version -l c -d long mm_vers.c`" - - -echo "${T_MD}Configuring MM library, Version ${MM_VERSION_STR}${T_ME}" -echo "Copyright (c) 1999 Ralf S. Engelschall, All Rights Reserved." -echo "Platform: ${T_MD}${PLATFORM}${T_ME}" - - - - - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.14 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_default_prefix=/usr/local -ac_help="$ac_help - --enable-debug build for debugging" -ac_help="$ac_help - --enable-static build static libraries (default=yes)" -ac_help="$ac_help - --enable-shared build shared libraries (default=yes)" -ac_help="$ac_help - --with-shm=TYPE force shared memory type: MMFILE MMZERO MMPOSX MMANON IPCSHM" -ac_help="$ac_help - --with-sem=TYPE force semaphore type: FLOCK FCNTL IPCSEM" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.14" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=README - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - - - -echo "$ac_t""" 1>&6 -echo "$ac_t""${T_MD}Build Tools:${T_ME}" 1>&6 - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:565: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:595: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:646: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:678: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 689 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:720: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:725: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:753: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:785: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -echo $ac_n "checking for compilation debug mode""... $ac_c" 1>&6 -echo "configure:865: checking for compilation debug mode" >&5 -# Check whether --enable-debug or --disable-debug was given. -if test "${enable_debug+set}" = set; then - enableval="$enable_debug" - if test ".$ac_cv_prog_gcc" = ".yes"; then - case "$CFLAGS" in - *-O2* ) ;; - * ) CFLAGS="$CFLAGS -O2" ;; - esac - case "$CFLAGS" in - *-g* ) ;; - * ) CFLAGS="$CFLAGS -g" ;; - esac - CFLAGS="$CFLAGS -ggdb3" - CFLAGS="$CFLAGS -Wall -Wshadow -Wpointer-arith -Wcast-align" - CFLAGS="$CFLAGS -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline" -else - case "$CFLAGS" in - *-g* ) ;; - * ) CFLAGS="$CFLAGS -g" ;; - esac -fi -msg="enabled" -cat >> confdefs.h <<\EOF -#define MM_DEBUG 1 -EOF - - -else - -case "$CFLAGS" in - *-g* ) CFLAGS=`echo "$CFLAGS" |\ - sed -e 's/ -g //g' -e 's/ -g$//' -e 's/^-g //g' -e 's/^-g$//'` ;; -esac -msg=disabled - -fi -echo "$ac_t""$msg" 1>&6 - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:905: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftestmake -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= -else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - enable_static="$enableval" -else - enable_static=yes - -fi -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - enable_shared="$enableval" -else - enable_shared=yes - -fi -libtool_flags='' -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" LD="$LD" \ -${CONFIG_SHELL-/bin/sh} ltconfig --no-reexec \ -$libtool_flags --no-verify ltmain.sh $PLATFORM ||\ -{ echo "configure: error: libtool configuration failed" 1>&2; exit 1; } -LIBTOOL="\$(TOP)/libtool" - - - -case "$PLATFORM:$CC" in - *-hp-hpux*:cc ) CFLAGS="$CFLAGS -Ae +DAportable" ;; -esac - - -echo "$ac_t""" 1>&6 -echo "$ac_t""${T_MD}Platform Environment:${T_ME}" 1>&6 - - -for ac_hdr in stdio.h stdlib.h string.h errno.h limits.h unistd.h fcntl.h sys/stat.h sys/types.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:973: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:983: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -ac_decision_item='mandatory system headers' -ac_decision_msg='FAILED' -ac_decision='' - -ac_rc=yes -for ac_spec in header:stdio.h header:stdlib.h header:string.h header:errno.h header:limits.h header:unistd.h header:fcntl.h header:sys/stat.h header:sys/types.h; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='fine' -ac_decision_msg='all fine' -ac_decision_fine=yes -ac_decision_fine_msg='all fine' - -else - : - -fi - -if test ".$ac_decision" = .; then - echo "$0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - echo "$ac_t""decision on $ac_decision_item... $ac_decision_msg" 1>&6 -fi - - -for ac_hdr in memory.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1063: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in memcpy memset bcopy -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1102: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); -char (*f)(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - -; return 0; } -EOF -if { (eval echo configure:1131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for _POSIX_PATH_MAX in limits.h""... $ac_c" 1>&6 -echo "configure:1156: checking for _POSIX_PATH_MAX in limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define__POSIX_PATH_MAX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef _POSIX_PATH_MAX -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define__POSIX_PATH_MAX=yes; cat >> confdefs.h <<\EOF -#define HAVE__POSIX_PATH_MAX 1 -EOF - -else - rm -rf conftest* - ac_cv_define__POSIX_PATH_MAX=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define__POSIX_PATH_MAX" 1>&6 -echo $ac_n "checking for PATH_MAX in limits.h""... $ac_c" 1>&6 -echo "configure:1188: checking for PATH_MAX in limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_PATH_MAX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef PATH_MAX -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_PATH_MAX=yes; cat >> confdefs.h <<\EOF -#define HAVE_PATH_MAX 1 -EOF - -else - rm -rf conftest* - ac_cv_define_PATH_MAX=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_PATH_MAX" 1>&6 -echo $ac_n "checking for MAXPATHLEN in sys/param.h""... $ac_c" 1>&6 -echo "configure:1220: checking for MAXPATHLEN in sys/param.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_MAXPATHLEN'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef MAXPATHLEN -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_MAXPATHLEN=yes; cat >> confdefs.h <<\EOF -#define HAVE_MAXPATHLEN 1 -EOF - -else - rm -rf conftest* - ac_cv_define_MAXPATHLEN=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_MAXPATHLEN" 1>&6 -echo $ac_n "checking for _POSIX_CHILD_MAX in limits.h""... $ac_c" 1>&6 -echo "configure:1252: checking for _POSIX_CHILD_MAX in limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define__POSIX_CHILD_MAX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef _POSIX_CHILD_MAX -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define__POSIX_CHILD_MAX=yes; cat >> confdefs.h <<\EOF -#define HAVE__POSIX_CHILD_MAX 1 -EOF - -else - rm -rf conftest* - ac_cv_define__POSIX_CHILD_MAX=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define__POSIX_CHILD_MAX" 1>&6 -echo $ac_n "checking for CHILD_MAX in limits.h""... $ac_c" 1>&6 -echo "configure:1284: checking for CHILD_MAX in limits.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_CHILD_MAX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef CHILD_MAX -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_CHILD_MAX=yes; cat >> confdefs.h <<\EOF -#define HAVE_CHILD_MAX 1 -EOF - -else - rm -rf conftest* - ac_cv_define_CHILD_MAX=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_CHILD_MAX" 1>&6 - -case $PLATFORM in - *-*-sunos* ) cat >> confdefs.h <<\EOF -#define MM_OS_SUNOS 1 -EOF - ;; -esac - - -echo "$ac_t""" 1>&6 -echo "$ac_t""${T_MD}Virtual Memory Page Size:${T_ME}" 1>&6 - - -for ac_hdr in unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1332: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1342: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in getpagesize sysconf -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1371: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); -char (*f)(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - -; return 0; } -EOF -if { (eval echo configure:1400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for _SC_PAGESIZE in unistd.h""... $ac_c" 1>&6 -echo "configure:1425: checking for _SC_PAGESIZE in unistd.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define__SC_PAGESIZE'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef _SC_PAGESIZE -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define__SC_PAGESIZE=yes; cat >> confdefs.h <<\EOF -#define HAVE__SC_PAGESIZE 1 -EOF - -else - rm -rf conftest* - ac_cv_define__SC_PAGESIZE=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define__SC_PAGESIZE" 1>&6 - -ac_decision_item='memory page size determination' -ac_decision_msg='FAILED' -ac_decision='' - -ac_rc=yes -for ac_spec in header:unistd.h func:getpagesize; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_VMPS_GETPAGESIZE' -ac_decision_msg='4.2BSD getpagesize()' -ac_decision_MM_VMPS_GETPAGESIZE=yes -ac_decision_MM_VMPS_GETPAGESIZE_msg='4.2BSD getpagesize()' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:unistd.h func:sysconf define:_SC_PAGESIZE; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_VMPS_SYSCONF' -ac_decision_msg='POSIX.1 sysconf(_SC_PAGESIZE)' -ac_decision_MM_VMPS_SYSCONF=yes -ac_decision_MM_VMPS_SYSCONF_msg='POSIX.1 sysconf(_SC_PAGESIZE)' - -else - : - -fi - -if test ".$ac_decision" = .; then - echo "$0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - echo "$ac_t""decision on $ac_decision_item... $ac_decision_msg" 1>&6 -fi - -cat >> confdefs.h <&6 -echo "$ac_t""${T_MD}Shared Memory Implementation:${T_ME}" 1>&6 - - -for ac_hdr in sys/mman.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1555: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for MAP_ANON in sys/mman.h""... $ac_c" 1>&6 -echo "configure:1592: checking for MAP_ANON in sys/mman.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_MAP_ANON'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef MAP_ANON -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_MAP_ANON=yes; cat >> confdefs.h <<\EOF -#define HAVE_MAP_ANON 1 -EOF - -else - rm -rf conftest* - ac_cv_define_MAP_ANON=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_MAP_ANON" 1>&6 -for ac_func in mmap munmap shm_open shm_unlink -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1626: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); -char (*f)(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - -; return 0; } -EOF -if { (eval echo configure:1655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - -ac_safe=`echo "/dev/zero" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for /dev/zero""... $ac_c" 1>&6 -echo "configure:1682: checking for /dev/zero" >&5 -if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - if test -r /dev/zero; then - eval "ac_cv_file_$ac_safe=yes" - else - eval "ac_cv_file_$ac_safe=no" - fi - -fi -if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 - -fi - -for ac_hdr in sys/ipc.h sys/shm.h sys/file.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1706: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1716: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in shmget shmat shmdt shmctl -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1745: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); -char (*f)(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - -; return 0; } -EOF -if { (eval echo configure:1774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - -ac_decision_item='shared memory allocation method' -ac_decision_msg='FAILED' -ac_decision='' - -ac_rc=yes -for ac_spec in header:sys/mman.h func:mmap func:munmap; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SHMT_MMFILE' -ac_decision_msg='Classical mmap() on temporary file' -ac_decision_MM_SHMT_MMFILE=yes -ac_decision_MM_SHMT_MMFILE_msg='Classical mmap() on temporary file' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:sys/mman.h func:mmap func:munmap func:shm_open func:shm_unlink; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SHMT_MMPOSX' -ac_decision_msg='mmap() via POSIX.1 shm_open() on temporary file' -ac_decision_MM_SHMT_MMPOSX=yes -ac_decision_MM_SHMT_MMPOSX_msg='mmap() via POSIX.1 shm_open() on temporary file' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:sys/mman.h func:mmap func:munmap file:/dev/zero; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SHMT_MMZERO' -ac_decision_msg='SVR4-style mmap() on /dev/zero' -ac_decision_MM_SHMT_MMZERO=yes -ac_decision_MM_SHMT_MMZERO_msg='SVR4-style mmap() on /dev/zero' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:sys/ipc.h header:sys/shm.h header:sys/file.h func:shmget func:shmat func:shmdt func:shmctl; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SHMT_IPCSHM' -ac_decision_msg='SysV IPC shmget()' -ac_decision_MM_SHMT_IPCSHM=yes -ac_decision_MM_SHMT_IPCSHM_msg='SysV IPC shmget()' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:sys/mman.h func:mmap func:munmap define:MAP_ANON; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SHMT_MMANON' -ac_decision_msg='4.4BSD-style mmap() via MAP_ANON' -ac_decision_MM_SHMT_MMANON=yes -ac_decision_MM_SHMT_MMANON_msg='4.4BSD-style mmap() via MAP_ANON' - -else - : - -fi - -case $PLATFORM in - *-*-linux* ) - # Linux has problems with MM_SHMT_MMANON - ac_decision='' - for ac_item in MM_SHMT_MMANON MM_SHMT_MMFILE MM_SHMT_MMZERO MM_SHMT_MMPOSX MM_SHMT_IPCSHM; do - eval "ac_decision_this=\$ac_decision_${ac_item}" - if test ".$ac_decision_this" = .yes; then - ac_decision=$ac_item - eval "ac_decision_msg=\$ac_decision_${ac_item}_msg" - fi - done - - ;; -esac -# Check whether --with-shm or --without-shm was given. -if test "${with_shm+set}" = set; then - withval="$with_shm" - ac_decision="MM_SHMT_$withval" -eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" - - -fi -if test ".$ac_decision" = .; then - echo "$0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - echo "$ac_t""decision on $ac_decision_item... $ac_decision_msg" 1>&6 -fi - -cat >> confdefs.h <&6 -echo "configure:2016: checking for shared memory maximum segment size" >&5 -OCFLAGS="$CFLAGS" -case "$ac_decision" in - MM_SHMT_MM* ) CFLAGS="-DTEST_MMAP $CFLAGS" ;; - MM_SHMT_IPCSHM ) CFLAGS="-DTEST_SHMGET $CFLAGS" ;; -esac -cross_compile=no -if test "$cross_compiling" = yes; then - MM_SHM_MAXSEGSIZE=0 -msg=unknown - -else - cat > conftest.$ac_ext < -#include -#include -#include -#include -#include -#ifdef TEST_MMAP -#include -#endif -#ifdef TEST_SHMGET -#include -#include -#endif -#if !defined(MAP_FAILED) -#define MAP_FAILED ((void *)-1) -#endif - -int testit(int size) -{ - int fd; - void *segment; -#ifdef TEST_MMAP - char file[] = "./ac_test.tmp"; - unlink(file); - if ((fd = open(file, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR)) == -1) - return 0; - if (ftruncate(fd, size) == -1) - return 0; - if ((segment = (void *)mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_SHARED, fd, 0)) == MAP_FAILED) { - close(fd); - return 0; - } - munmap((caddr_t)segment, size); - close(fd); - unlink(file); -#endif -#ifdef TEST_SHMGET - if ((fd = shmget(IPC_PRIVATE, size, SHM_R|SHM_W|IPC_CREAT)) == -1) - return 0; - if ((segment = (void *)shmat(fd, NULL, 0)) == ((void *)-1)) { - shmctl(fd, IPC_RMID, NULL); - return 0; - } - shmdt(segment); - shmctl(fd, IPC_RMID, NULL); -#endif - return 1; -} - -#define ABS(n) ((n) >= 0 ? (n) : (-(n))) - -int main(int argc, char *argv[]) -{ - int t, m, b; - int d; - int rc; - FILE *f; - - /* - * Find maximum possible allocation size by performing a - * binary search starting with a search space between 0 and - * 64MB of memory. - */ - t = 1024*1024*64 /* = 67108864 */; - if (testit(t)) - m = t; - else { - m = 1024*1024*32; - b = 0; - for (;;) { - /* fprintf(stderr, "t=%d, m=%d, b=%d\n", t, m, b); */ - rc = testit(m); - if (rc) { - d = ((t-m)/2); - b = m; - } - else { - d = -((m-b)/2); - t = m; - } - if (ABS(d) < 1024*1) { - if (!rc) - m = b; - break; - } - if (m < 1024*8) - break; - m += d; - } - if (m < 1024*8) - m = 0; - } - if ((f = fopen("conftestval", "w")) == NULL) - exit(1); - fprintf(f, "%d\n", m); - fclose(f); - exit(0); -} - - -EOF -if { (eval echo configure:2134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - -MM_SHM_MAXSEGSIZE="`cat conftestval`" -msg="$MM_SHM_MAXSEGSIZE" -if test $msg -eq 67108864; then - msg="64MB (soft limit)" -elif test $msg -gt 1048576; then - msg="`expr $msg / 1024`" - msg="`expr $msg / 1024`" - msg="${msg}MB" -elif test $msg -gt 1024; then - msg="`expr $msg / 1024`" - msg="${msg}KB" -else - MM_SHM_MAXSEGSIZE=0 - msg=unknown -fi - -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - MM_SHM_MAXSEGSIZE=0 -msg=unknown - -fi -rm -fr conftest* -fi -CFLAGS="$OCFLAGS" -test ".$msg" = .unknown && { echo "configure: error: Unable to determine maximum shared memory segment size" 1>&2; exit 1; } -echo "$ac_t""$msg" 1>&6 -cat >> confdefs.h <&6 -echo "$ac_t""${T_MD}Mutual Exclusion Implementation:${T_ME}" 1>&6 - - -for ac_hdr in sys/ipc.h sys/sem.h sys/file.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2181: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in semget semctl -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2220: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); -char (*f)(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - -; return 0; } -EOF -if { (eval echo configure:2249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for LOCK_EX in sys/file.h""... $ac_c" 1>&6 -echo "configure:2274: checking for LOCK_EX in sys/file.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_LOCK_EX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef LOCK_EX -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_LOCK_EX=yes; cat >> confdefs.h <<\EOF -#define HAVE_LOCK_EX 1 -EOF - -else - rm -rf conftest* - ac_cv_define_LOCK_EX=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_LOCK_EX" 1>&6 -echo $ac_n "checking for F_SETLK in fcntl.h""... $ac_c" 1>&6 -echo "configure:2306: checking for F_SETLK in fcntl.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_F_SETLK'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef F_SETLK -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_F_SETLK=yes; cat >> confdefs.h <<\EOF -#define HAVE_F_SETLK 1 -EOF - -else - rm -rf conftest* - ac_cv_define_F_SETLK=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_F_SETLK" 1>&6 -echo $ac_n "checking for IPC_PRIVATE in sys/ipc.h""... $ac_c" 1>&6 -echo "configure:2338: checking for IPC_PRIVATE in sys/ipc.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_IPC_PRIVATE'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef IPC_PRIVATE -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_IPC_PRIVATE=yes; cat >> confdefs.h <<\EOF -#define HAVE_IPC_PRIVATE 1 -EOF - -else - rm -rf conftest* - ac_cv_define_IPC_PRIVATE=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_IPC_PRIVATE" 1>&6 -echo $ac_n "checking for SEM_UNDO in sys/sem.h""... $ac_c" 1>&6 -echo "configure:2370: checking for SEM_UNDO in sys/sem.h" >&5 -if eval "test \"`echo '$''{'ac_cv_define_SEM_UNDO'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef SEM_UNDO -YES_IS_DEFINED -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "YES_IS_DEFINED" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_define_SEM_UNDO=yes; cat >> confdefs.h <<\EOF -#define HAVE_SEM_UNDO 1 -EOF - -else - rm -rf conftest* - ac_cv_define_SEM_UNDO=no -fi -rm -f conftest* - - -fi - -echo "$ac_t""$ac_cv_define_SEM_UNDO" 1>&6 - -echo $ac_n "checking whether union semun is defined in sys/sem.h""... $ac_c" 1>&6 -echo "configure:2403: checking whether union semun is defined in sys/sem.h" >&5 -cat > conftest.$ac_ext < -#include -#include - -int main() { - -union semun arg; -semctl(0, 0, 0, arg); - -; return 0; } -EOF -if { (eval echo configure:2419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cat >> confdefs.h <<\EOF -#define HAVE_UNION_SEMUN 1 -EOF - -msg=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - msg=no -fi -rm -f conftest* -echo "$ac_t""$msg" 1>&6 - -ac_decision_item='mutual exclusion implementation method' -ac_decision_msg='FAILED' -ac_decision='' - -ac_rc=yes -for ac_spec in header:sys/file.h define:LOCK_EX; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SEMT_FLOCK' -ac_decision_msg='4.2BSD-style flock() on temporary file' -ac_decision_MM_SEMT_FLOCK=yes -ac_decision_MM_SEMT_FLOCK_msg='4.2BSD-style flock() on temporary file' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:sys/ipc.h header:sys/sem.h header:sys/file.h func:semget func:semctl; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SEMT_IPCSEM' -ac_decision_msg='SysV IPC semget()' -ac_decision_MM_SEMT_IPCSEM=yes -ac_decision_MM_SEMT_IPCSEM_msg='SysV IPC semget()' - -else - : - -fi - -ac_rc=yes -for ac_spec in header:fcntl.h define:F_SETLK; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - ac_decision='MM_SEMT_FCNTL' -ac_decision_msg='SVR4-style fcntl() on temporary file' -ac_decision_MM_SEMT_FCNTL=yes -ac_decision_MM_SEMT_FCNTL_msg='SVR4-style fcntl() on temporary file' - -else - : - -fi - -# Check whether --with-sem or --without-sem was given. -if test "${with_sem+set}" = set; then - withval="$with_sem" - ac_decision="MM_SEMT_$withval" -eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" - - -fi -if test ".$ac_decision" = .; then - echo "$0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - echo "$ac_t""decision on $ac_decision_item... $ac_decision_msg" 1>&6 -fi - -cat >> confdefs.h <&6 -echo "$ac_t""${T_MD}Output Substitution:${T_ME}" 1>&6 - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.14" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile mm-config mm_conf.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHTOOL@%$SHTOOL%g -s%@MM_VERSION_STR@%$MM_VERSION_STR%g -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@SET_MAKE@%$SET_MAKE%g -s%@LIBTOOL@%$LIBTOOL%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -chmod a+x mm-config - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/shmem/unix/mm/configure.in b/shmem/unix/mm/configure.in deleted file mode 100644 index 04dcd166b..000000000 --- a/shmem/unix/mm/configure.in +++ /dev/null @@ -1,192 +0,0 @@ -dnl ## -dnl ## Autoconf specification for MM library -dnl ## - -dnl # -dnl # standard Autoconf prolog -dnl # - -AC_PREREQ(2.14)dnl -AC_REVISION($Revision: 1.1 $) - -dnl # shtool bootstrap -SHTOOL="\$(TOP)/shtool" -AC_SUBST(SHTOOL) -ac_shtool="./shtool" -T_MD=`$ac_shtool echo -n -e %B` -T_ME=`$ac_shtool echo -n -e %b` -PLATFORM=`./config.guess` -PLATFORM=`./config.sub $PLATFORM` -MM_VERSION_STR="`$ac_shtool version -l c -d long mm_vers.c`" -AC_SUBST(MM_VERSION_STR) - -dnl # friendly header ;-) -echo "${T_MD}Configuring MM library, Version ${MM_VERSION_STR}${T_ME}" -echo "Copyright (c) 1999 Ralf S. Engelschall, All Rights Reserved." -echo "Platform: ${T_MD}${PLATFORM}${T_ME}" - -dnl # autoconf initialization -AC_INIT(README) -AC_CONFIG_HEADER(mm_conf.h)dnl -AC_PREFIX_DEFAULT(/usr/local) - -dnl # -dnl # determine build tools and parameters -dnl # - -AC_CONFIGURE_PART(Build Tools) -AC_PROG_CC -AC_PROG_CPP -AC_CHECK_DEBUGGING -AC_SET_MAKE -AC_PROG_LIBTOOL - -dnl # support for some special platform/compiler options -case "$PLATFORM:$CC" in - *-hp-hpux*:cc ) CFLAGS="$CFLAGS -Ae +DAportable" ;; -esac - -dnl # -dnl # determine system parameters -dnl # - -AC_CONFIGURE_PART(Platform Environment) - -AC_HAVE_HEADERS(stdio.h stdlib.h string.h dnl - errno.h limits.h unistd.h fcntl.h dnl - sys/stat.h sys/types.h) -AC_BEGIN_DECISION([mandatory system headers]) -AC_IFALLYES(header:stdio.h header:stdlib.h header:string.h dnl - header:errno.h header:limits.h header:unistd.h header:fcntl.h dnl - header:sys/stat.h header:sys/types.h, - AC_DECIDE(fine, [all fine])) -AC_END_DECISION - -AC_HAVE_HEADERS(memory.h) -AC_CHECK_FUNCS(memcpy memset bcopy) -AC_CHECK_DEFINE(_POSIX_PATH_MAX, limits.h) -AC_CHECK_DEFINE(PATH_MAX, limits.h) -AC_CHECK_DEFINE(MAXPATHLEN, sys/param.h) -AC_CHECK_DEFINE(_POSIX_CHILD_MAX, limits.h) -AC_CHECK_DEFINE(CHILD_MAX, limits.h) - -dnl # some special defines for brain dead platforms -case $PLATFORM in - *-*-sunos* ) AC_DEFINE(MM_OS_SUNOS) ;; -esac - -dnl # -dnl # method to determine virtual memory page size -dnl # - -AC_CONFIGURE_PART(Virtual Memory Page Size) - -AC_HAVE_HEADERS(unistd.h) -AC_HAVE_FUNCS(getpagesize sysconf) -AC_CHECK_DEFINE(_SC_PAGESIZE, unistd.h) - -AC_BEGIN_DECISION([memory page size determination]) -AC_IFALLYES(header:unistd.h func:getpagesize, - AC_DECIDE(MM_VMPS_GETPAGESIZE, [4.2BSD getpagesize()])) -AC_IFALLYES(header:unistd.h func:sysconf define:_SC_PAGESIZE, - AC_DECIDE(MM_VMPS_SYSCONF, [POSIX.1 sysconf(_SC_PAGESIZE)])) -AC_END_DECISION -AC_DEFINE_UNQUOTED($ac_decision) - -dnl # -dnl # Shared Memory -dnl # - -AC_CONFIGURE_PART(Shared Memory Implementation) - -AC_HAVE_HEADERS(sys/mman.h) -AC_CHECK_DEFINE(MAP_ANON, sys/mman.h) -AC_HAVE_FUNCS(mmap munmap shm_open shm_unlink) -AC_TEST_FILE(/dev/zero) -AC_HAVE_HEADERS(sys/ipc.h sys/shm.h sys/file.h) -AC_HAVE_FUNCS(shmget shmat shmdt shmctl) - -AC_BEGIN_DECISION([shared memory allocation method]) -AC_IFALLYES(header:sys/mman.h func:mmap func:munmap, - AC_DECIDE(MM_SHMT_MMFILE, [Classical mmap() on temporary file])) -AC_IFALLYES(header:sys/mman.h func:mmap func:munmap func:shm_open func:shm_unlink, - AC_DECIDE(MM_SHMT_MMPOSX, [mmap() via POSIX.1 shm_open() on temporary file])) -AC_IFALLYES(header:sys/mman.h func:mmap func:munmap file:/dev/zero, - AC_DECIDE(MM_SHMT_MMZERO, [SVR4-style mmap() on /dev/zero])) -AC_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl - func:shmget func:shmat func:shmdt func:shmctl, - AC_DECIDE(MM_SHMT_IPCSHM, [SysV IPC shmget()])) -AC_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON, - AC_DECIDE(MM_SHMT_MMANON, [4.4BSD-style mmap() via MAP_ANON])) -case $PLATFORM in - *-*-linux* ) - # Linux has problems with MM_SHMT_MMANON - AC_DECISION_OVERRIDE(MM_SHMT_MMANON MM_SHMT_MMFILE MM_SHMT_MMZERO dnl - MM_SHMT_MMPOSX MM_SHMT_IPCSHM) - ;; -esac -AC_ARG_WITH(shm,dnl -[ --with-shm=TYPE force shared memory type: MMFILE MMZERO MMPOSX MMANON IPCSHM], -AC_DECISION_FORCE(MM_SHMT_$withval) -)dnl -AC_END_DECISION -AC_DEFINE_UNQUOTED($ac_decision) - -AC_CHECK_MAXSEGSIZE($ac_decision) - -dnl # -dnl # Mutex -dnl # - -AC_CONFIGURE_PART(Mutual Exclusion Implementation) - -AC_HAVE_HEADERS(sys/ipc.h sys/sem.h sys/file.h) -AC_HAVE_FUNCS(semget semctl) -AC_CHECK_DEFINE(LOCK_EX, sys/file.h) -AC_CHECK_DEFINE(F_SETLK, fcntl.h) -AC_CHECK_DEFINE(IPC_PRIVATE, sys/ipc.h) -AC_CHECK_DEFINE(SEM_UNDO, sys/sem.h) - -AC_MSG_CHECKING(whether union semun is defined in sys/sem.h) -AC_TRY_COMPILE([ -#include -#include -#include -],[ -union semun arg; -semctl(0, 0, 0, arg); -], -AC_DEFINE(HAVE_UNION_SEMUN) -msg=yes,dnl -msg=no) -AC_MSG_RESULT([$msg]) - -AC_BEGIN_DECISION([mutual exclusion implementation method]) -AC_IFALLYES(header:sys/file.h define:LOCK_EX, - AC_DECIDE(MM_SEMT_FLOCK, [4.2BSD-style flock() on temporary file])) -AC_IFALLYES(header:sys/ipc.h header:sys/sem.h header:sys/file.h dnl - func:semget func:semctl, - AC_DECIDE(MM_SEMT_IPCSEM, [SysV IPC semget()])) -AC_IFALLYES(header:fcntl.h define:F_SETLK, - AC_DECIDE(MM_SEMT_FCNTL, [SVR4-style fcntl() on temporary file])) -AC_ARG_WITH(sem,dnl -[ --with-sem=TYPE force semaphore type: FLOCK FCNTL IPCSEM], -AC_DECISION_FORCE(MM_SEMT_$withval) -)dnl -AC_END_DECISION -AC_DEFINE_UNQUOTED($ac_decision) - -dnl # -dnl # finally: source file substitution... -dnl # - -AC_CONFIGURE_PART(Output Substitution) - -AC_OUTPUT(dnl -Makefile dnl -mm-config dnl -,dnl -chmod a+x mm-config -)dnl - -dnl ##EOF## diff --git a/shmem/unix/mm/fbtool b/shmem/unix/mm/fbtool deleted file mode 100755 index c46a38062..000000000 --- a/shmem/unix/mm/fbtool +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -## -## fbtool -- MM library feedback tool -## Copyright (c) 1999 Ralf S. Engelschall, All Rights Reserved. -## - -if [ ! -f .fbtool ]; then - echo "fbtool:Error: still no results known"; - exit 1 -fi -result=`cat .fbtool` - -PLATFORM=`./config.guess` -PLATFORM=`./config.sub $PLATFORM` - -VMPS=`grep MM_VMPS_ mm_conf.h | grep define | sed -e 's;.*MM_;MM_;' -e 's; .*;;'`; \ -SHMT=`grep MM_SHMT_ mm_conf.h | grep define | sed -e 's;.*MM_;MM_;' -e 's; .*;;'`; \ -SEMT=`grep MM_SEMT_ mm_conf.h | grep define | sed -e 's;.*MM_;MM_;' -e 's; .*;;'`; \ -SEGS=`grep MM_SHM_MAXSEGSIZE mm_conf.h | grep define | sed -e 's;.*SIZE *;;' -e 's; .*;;'`; \ - -TMP=".fbsummary" -rm -f $TMP >/dev/null 2>&1 -touch $TMP -echo "+-MM-Library-Test-Suite-Summary---------------------------" >>$TMP -echo "| Platform : $PLATFORM" >>$TMP -echo "| Memory Page Size Type : $VMPS" >>$TMP -echo "| Shared Memory Type : $SHMT" >>$TMP -echo "| Semaphore Type : $SEMT" >>$TMP -echo "| Maximum Segment Size : $SEGS" >>$TMP -echo "| Test Suite : $result" >>$TMP -echo "+---------------------------------------------------------" >>$TMP - -case $1 in - -d ) cat $TMP ;; - -s ) ;; -esac - -rm -f $TMP >/dev/null 2>&1 - diff --git a/shmem/unix/mm/ltconfig b/shmem/unix/mm/ltconfig deleted file mode 100755 index a362c48d3..000000000 --- a/shmem/unix/mm/ltconfig +++ /dev/null @@ -1,2967 +0,0 @@ -#! /bin/sh - -# ltconfig - Create a system-specific libtool. -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This file 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 lot of this script is taken from autoconf-2.10. - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} -echo=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. - exec "$SHELL" "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null`} - case X$UNAME in - *-DOS) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi - -if test "X${echo_test_string+set}" != "Xset"; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || - test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH /usr/ucb; do - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running ltconfig again with it. - ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - echo='printf "%s\n"' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # Cool, printf works - : - elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL $0 --fallback-echo" - elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# The name of this program. -progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - -# Constants: -PROGRAM=ltconfig -PACKAGE=libtool -VERSION=1.3.2 -TIMESTAMP=" (1.385.2.150 1999/05/26 00:28:32)" -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' -rm="rm -f" - -help="Try \`$progname --help' for more information." - -# Global variables: -default_ofile=libtool -can_build_shared=yes -enable_shared=yes -# All known linkers require a `.a' archive for static linking. -enable_static=yes -enable_fast_install=yes -enable_dlopen=unknown -enable_win32_dll=no -ltmain= -silent= -srcdir= -ac_config_guess= -ac_config_sub= -host= -nonopt= -ofile="$default_ofile" -verify_host=yes -with_gcc=no -with_gnu_ld=no -need_locks=yes -ac_ext=c -objext=o -libext=a -cache_file= - -old_AR="$AR" -old_CC="$CC" -old_CFLAGS="$CFLAGS" -old_CPPFLAGS="$CPPFLAGS" -old_LDFLAGS="$LDFLAGS" -old_LD="$LD" -old_LN_S="$LN_S" -old_LIBS="$LIBS" -old_NM="$NM" -old_RANLIB="$RANLIB" -old_DLLTOOL="$DLLTOOL" -old_OBJDUMP="$OBJDUMP" -old_AS="$AS" - -# Parse the command line options. -args= -prev= -for option -do - case "$option" in - -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - eval "$prev=\$option" - prev= - continue - fi - - case "$option" in - --help) cat <&2 - echo "$help" 1>&2 - exit 1 - ;; - - *) - if test -z "$ltmain"; then - ltmain="$option" - elif test -z "$host"; then -# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 -# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then -# echo "$progname: warning \`$option' is not a valid host type" 1>&2 -# fi - host="$option" - else - echo "$progname: too many arguments" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac -done - -if test -z "$ltmain"; then - echo "$progname: you must specify a LTMAIN file" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -if test ! -f "$ltmain"; then - echo "$progname: \`$ltmain' does not exist" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -# Quote any args containing shell metacharacters. -ltconfig_args= -for arg -do - case "$arg" in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ltconfig_args="$ltconfig_args '$arg'" ;; - *) ltconfig_args="$ltconfig_args $arg" ;; - esac -done - -# A relevant subset of AC_INIT. - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 5 compiler messages saved in config.log -# 6 checking for... messages and results -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>>./config.log - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -if test -n "$cache_file" && test -r "$cache_file"; then - echo "loading cache $cache_file within ltconfig" - . $cache_file -fi - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to LTMAIN. - srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. -fi - -trap "$rm conftest*; exit 1" 1 2 15 -if test "$verify_host" = yes; then - # Check for config.guess and config.sub. - ac_aux_dir= - for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/config.guess; then - ac_aux_dir=$ac_dir - break - fi - done - if test -z "$ac_aux_dir"; then - echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 - echo "$help" 1>&2 - exit 1 - fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - - # Make sure we can run config.sub. - if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : - else - echo "$progname: cannot run $ac_config_sub" 1>&2 - echo "$help" 1>&2 - exit 1 - fi - - echo $ac_n "checking host system type""... $ac_c" 1>&6 - - host_alias=$host - case "$host_alias" in - "") - if host_alias=`$SHELL $ac_config_guess`; then : - else - echo "$progname: cannot guess host type; you must specify one" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac - host=`$SHELL $ac_config_sub $host_alias` - echo "$ac_t$host" 1>&6 - - # Make sure the host verified. - test -z "$host" && exit 1 - -elif test -z "$host"; then - echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 - echo "$help" 1>&2 - exit 1 -else - host_alias=$host -fi - -# Transform linux* to *-*-linux-gnu*, to support old configure scripts. -case "$host_os" in -linux-gnu*) ;; -linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -case "$host_os" in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "${COLLECT_NAMES+set}" != set; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR cru $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -# Set a sane default for `AR'. -test -z "$AR" && AR=ar - -# Set a sane default for `OBJDUMP'. -test -z "$OBJDUMP" && OBJDUMP=objdump - -# If RANLIB is not set, then run the test. -if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then - RANLIB="ranlib" - result="ranlib" - break - fi - done - IFS="$save_ifs" - - echo "$ac_t$result" 1>&6 -fi - -if test -n "$RANLIB"; then - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -fi - -# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$AS" && AS=as - -# Check to see if we are using GCC. -if test "$with_gcc" != yes || test -z "$CC"; then - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then - CC="gcc" - break - fi - done - IFS="$save_ifs" - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - fi - - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/cc || test -f $dir/cc$ac_exeext; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue - fi - CC="cc" - break - fi - done - IFS="$save_ifs" - if test $cc_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same name, so the bogon will be chosen - # first if we set CC to just the name; use the full file name. - shift - set dummy "$dir/cc" "$@" - shift - CC="$@" - fi - fi - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$CC"; then - echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 - exit 1 - fi - fi - - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 - echo "$progname:579: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c - echo "$ac_t$with_gcc" 1>&6 -fi - -# Allow CC to be a program name with arguments. -set dummy $CC -compiler="$2" - -echo $ac_n "checking for object suffix... $ac_c" 1>&6 -$rm conftest* -echo 'int i = 1;' > conftest.c -echo "$progname:601: checking for object suffix" >& 5 -if { (eval echo $progname:602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done -else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 -fi -$rm conftest* -echo "$ac_t$objext" 1>&6 - -echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 -pic_flag= -special_shlib_compile_flags= -wl= -link_static_flag= -no_builtin_flag= - -if test "$with_gcc" = yes; then - wl='-Wl,' - link_static_flag='-static' - - case "$host_os" in - beos* | irix5* | irix6* | osf3* | osf4*) - # PIC is the default for these OSes. - ;; - aix*) - # Below there is a dirty hack to force normal static linking with -ldl - # The problem is because libdl dynamically linked with both libc and - # libC (AIX C++ library), which obviously doesn't included in libraries - # list by gcc. This cause undefined symbols with -static flags. - # This hack allows C programs to be linked with "-static -ldl", but - # we not sure about C++ programs. - link_static_flag="$link_static_flag ${wl}-lC" - ;; - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; - sysv4*MP*) - if test -d /usr/nec; then - pic_flag=-Kconform_pic - fi - ;; - *) - pic_flag='-fPIC' - ;; - esac -else - # PORTME Check for PIC flags for the system compiler. - case "$host_os" in - aix3* | aix4*) - # All AIX code is PIC. - link_static_flag='-bnso -bI:/lib/syscalls.exp' - ;; - - hpux9* | hpux10* | hpux11*) - # Is there a better link_static_flag that works with the bundled CC? - wl='-Wl,' - link_static_flag="${wl}-a ${wl}archive" - pic_flag='+Z' - ;; - - irix5* | irix6*) - wl='-Wl,' - link_static_flag='-non_shared' - # PIC (with -KPIC) is the default. - ;; - - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - - osf3* | osf4*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' - ;; - - sco3.2v5*) - pic_flag='-Kpic' - link_static_flag='-dn' - special_shlib_compile_flags='-belf' - ;; - - solaris*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - sunos4*) - pic_flag='-PIC' - link_static_flag='-Bstatic' - wl='-Qoption ld ' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - uts4*) - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; - sysv4*MP*) - if test -d /usr/nec ;then - pic_flag='-Kconform_pic' - link_static_flag='-Bstatic' - fi - ;; - *) - can_build_shared=no - ;; - esac -fi - -if test -n "$pic_flag"; then - echo "$ac_t$pic_flag" 1>&6 - - # Check to make sure the pic_flag actually works. - echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" - echo "$progname:742: checking if $compiler PIC flag $pic_flag works" >&5 - if { (eval echo $progname:743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - case "$host_os" in - hpux9* | hpux10* | hpux11*) - # On HP-UX, both CC and GCC only warn that PIC is supported... then they - # create non-PIC objects. So, if there were any warnings, we assume that - # PIC is not supported. - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - can_build_shared=no - pic_flag= - else - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - fi - ;; - *) - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - ;; - esac - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - can_build_shared=no - pic_flag= - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - echo "$ac_t"none 1>&6 -fi - -# Check to see if options -o and -c are simultaneously supported by compiler -echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 -$rm -r conftest 2>/dev/null -mkdir conftest -cd conftest -$rm conftest* -echo "int some_variable = 0;" > conftest.c -mkdir out -# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -# that will create temporary files in the current directory regardless of -# the output directory. Thus, making CWD read-only will cause this test -# to fail, enabling locking or at least warning the user not to do parallel -# builds. -chmod -w . -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -o out/conftest2.o" -echo "$progname:795: checking if $compiler supports -c -o file.o" >&5 -if { (eval echo $progname:796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s out/conftest.err; then - echo "$ac_t"no 1>&6 - compiler_c_o=no - else - echo "$ac_t"yes 1>&6 - compiler_c_o=yes - fi -else - # Append any errors to the config.log. - cat out/conftest.err 1>&5 - compiler_c_o=no - echo "$ac_t"no 1>&6 -fi -CFLAGS="$save_CFLAGS" -chmod u+w . -$rm conftest* out/* -rmdir out -cd .. -rmdir conftest -$rm -r conftest 2>/dev/null - -if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo - echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" - echo "$progname:828: checking if $compiler supports -c -o file.lo" >&5 -if { (eval echo $progname:829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_o_lo=no - else - echo "$ac_t"yes 1>&6 - compiler_o_lo=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_o_lo=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - compiler_o_lo=no -fi - -# Check to see if we can do hard links to lock some files if needed -hard_links="nottested" -if test "$compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$ac_t$hard_links" 1>&6 - $rm conftest* - if test "$hard_links" = no; then - echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 - need_locks=warn - fi -else - need_locks=no -fi - -if test "$with_gcc" = yes; then - # Check to see if options -fno-rtti -fno-exceptions are supported by compiler - echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" - echo "$progname:880: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 - if { (eval echo $progname:881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_rtti_exceptions=no - else - echo "$ac_t"yes 1>&6 - compiler_rtti_exceptions=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_rtti_exceptions=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* - - if test "$compiler_rtti_exceptions" = "yes"; then - no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' - else - no_builtin_flag=' -fno-builtin' - fi - -fi - -# Check for any special shared library compilation flags. -if test -n "$special_shlib_compile_flags"; then - echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 - if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : - else - echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 - can_build_shared=no - fi -fi - -echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 -$rm conftest* -echo 'main(){return(0);}' > conftest.c -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS $link_static_flag" -echo "$progname:924: checking if $compiler static flag $link_static_flag works" >&5 -if { (eval echo $progname:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 -else - echo "$ac_t"none 1>&6 - link_static_flag= -fi -LDFLAGS="$save_LDFLAGS" -$rm conftest* - -if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 - $rm conftest.dat - if ln -s X conftest.dat 2>/dev/null; then - $rm conftest.dat - LN_S="ln -s" - else - LN_S=ln - fi - if test "$LN_S" = "ln -s"; then - echo "$ac_t"yes 1>&6 - else - echo "$ac_t"no 1>&6 - fi -fi - -# Make sure LD is an absolute path. -if test -z "$LD"; then - ac_prog=ld - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 - echo "$progname:957: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we are not using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac - elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 - echo "$progname:981: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 - echo "$progname:984: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" - fi - - if test -n "$LD"; then - echo "$ac_t$LD" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$LD"; then - echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 - exit 1 - fi -fi - -# Check to see if it really is or is not GNU ld. -echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 -# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - with_gnu_ld=yes -else - with_gnu_ld=no -fi -echo "$ac_t$with_gnu_ld" 1>&6 - -# See if the linker supports building shared libraries. -echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 - -allow_undefined_flag= -no_undefined_flag= -need_lib_prefix=unknown -need_version=unknown -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -archive_cmds= -archive_expsym_cmds= -old_archive_from_new_cmds= -export_dynamic_flag_spec= -whole_archive_flag_spec= -thread_safe_flag_spec= -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no -hardcode_shlibpath_var=unsupported -runpath_var= -always_export_symbols=no -export_symbols_cmds='$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' -# include_expsyms should be a list of space-separated symbols to be *always* -# included in the symbol list -include_expsyms= -# exclude_expsyms can be an egrep regular expression of symbols to exclude -# it will be wrapped by ` (' and `)$', so one must not match beginning or -# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -# as well as any symbol that contains `d'. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" -# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -# platforms (ab)use it in PIC code, but their linkers get confused if -# the symbol is explicitly referenced. Since portable code cannot -# rely on this symbol name, it's probably fine to never include it in -# preloaded symbol tables. - -case "$host_os" in -cygwin* | mingw*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$with_gcc" != yes; then - with_gnu_ld=no - fi - ;; - -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case "$host_os" in - aix3* | aix4*) - # On AIX, the GNU linker is very broken - ld_shlibs=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can use - # them. - ld_shlibs=no - ;; - - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=yes - - # Extract the symbol export list from an `--export-all' def file, - # then regenerate the def file from the symbol export list, so that - # the compiled dll only exports the symbol export list. - export_symbols_cmds='rm -f $objdir/$soname-ltdll.c~ - sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - (cd $objdir && $CC -c $soname-ltdll.c)~ - $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs~ - sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' - - archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ - _lt_hint=1; - for symbol in `cat $export_symbols`; do - echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; - _lt_hint=`expr 1 + \$_lt_hint`; - done~ - $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' - - old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' - ;; - - netbsd*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' - # can we support soname and/or expsyms with a.out? -oliva - fi - ;; - - solaris*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - case $host_os in - cygwin* | mingw*) - # dlltool doesn't understand --whole-archive et. al. - whole_archive_flag_spec= - ;; - *) - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - ;; - esac - fi -else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$with_gcc" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4*) - hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' - hardcode_libdir_separator=':' - if test "$with_gcc" = yes; then - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - shared_flag='-shared' - else - shared_flag='${wl}-bM:SRE' - hardcode_direct=yes - fi - allow_undefined_flag=' ${wl}-berok' - archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' - archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' - case "$host_os" in aix4.[01]|aix4.[01].*) - # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on - always_export_symbols=yes ;; - esac - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - - cygwin* | mingw*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib /OUT:$oldlib$oldobjs' - fix_srcfile_path='`cygpath -w $srcfile`' - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9* | hpux10* | hpux11*) - case "$host_os" in - hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; - *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; - esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - if test "$with_gcc" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF - fi - hardcode_libdir_flag_spec='${wl}-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - - osf3* | osf4*) - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case "$host_os" in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - # archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs' - archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - *) - ld_shlibs=no - ;; - esac -fi -echo "$ac_t$ld_shlibs" 1>&6 -test "$ld_shlibs" = no && can_build_shared=no - -if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in - [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -B" - break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -p" - break - else - NM=${NM="$ac_dir/nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$NM" && NM=nm - ;; - esac - echo "$ac_t$NM" 1>&6 -fi - -# Check for command to grab the raw symbol name followed by C symbol from nm. -echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - -# Define system-specific variables. -case "$host_os" in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw*) - symcode='[ABCDGISTW]' - ;; -hpux*) # Its linker distinguishes data from code symbols - global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" - ;; -irix*) - symcode='[BCDEGRST]' - ;; -solaris*) - symcode='[BDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then - symcode='[ABCDGISTW]' -fi - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - $rm conftest* - cat > conftest.c <&5 - if { (eval echo $progname:1558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then - # Now try to grab the symbols. - nlist=conftest.nm - if { echo "$progname:1561: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then - - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if egrep ' nm_test_var$' "$nlist" >/dev/null; then - if egrep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.c -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' - - cat <> conftest.c -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{ -EOF - sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c - cat <<\EOF >> conftest.c - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$objext conftstm.$objext - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="conftstm.$objext" - CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo $progname:1613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - pipe_works=yes - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - LIBS="$save_LIBS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - global_symbol_pipe= - fi -done -if test "$pipe_works" = yes; then - echo "${ac_t}ok" 1>&6 -else - echo "${ac_t}failed" 1>&6 -fi - -if test -z "$global_symbol_pipe"; then - global_symbol_to_cdecl= -fi - -# Check hardcoding attributes. -echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$hardcode_shlibpath_var" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -echo "$ac_t$hardcode_action" 1>&6 - - -reload_flag= -reload_cmds='$LD$reload_flag -o $output$reload_objs' -echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 -# PORTME Some linkers may need a different reload flag. -reload_flag='-r' -echo "$ac_t$reload_flag" 1>&6 -test -n "$reload_flag" && reload_flag=" $reload_flag" - -# PORTME Fill in your ld.so characteristics -library_names_spec= -libname_spec='lib$name' -soname_spec= -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -file_magic_cmd= -file_magic_test_file= -deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [regex]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. -echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 -case "$host_os" in -aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}.so$major' - ;; - -aix4*) - version_type=linux - # AIX has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - # We preserve .a as extension for shared libraries though AIX4.2 - # and later linker supports .so - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' - shlibpath_var=LIBPATH - deplibs_check_method=pass_all - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}.so' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - deplibs_check_method=pass_all - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - -bsdi4*) - version_type=linux - library_names_spec='${libname}.so$major ${libname}.so' - soname_spec='${libname}.so' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - deplibs_check_method='file_magic ELF 32-bit LSB shared object' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw*) - version_type=windows - if test "$with_gcc" = yes; then - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' - else - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' - fi - dynamic_linker='Win32 ld.exe' - deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - file_magic_cmd='${OBJDUMP} -f' - need_lib_prefix=no - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case "$version_type" in - freebsd-elf*) - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - deplibs_check_method=unknown - library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' - need_version=yes - ;; - esac - finish_cmds='PATH="\$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -gnu*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos - need_lib_prefix=no - need_version=no - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6*) - version_type=irix - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}.so.$major' - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' - case "$host_os" in - irix5*) - libsuff= shlibsuff= - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case "$LD" in # libtool.m4 will add one of these switches to LD - *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /lib${libsuff}/libc.so*` - deplibs_check_method='pass_all' - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux-gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' - else - # Only the GNU ld.so supports shared libraries on MkLinux. - case "$host_cpu" in - powerpc*) dynamic_linker=no ;; - *) dynamic_linker='Linux ld.so' ;; - esac - fi - ;; - -netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' - soname_spec='${libname}${release}.so$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - ;; - -openbsd*) - version_type=sunos - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - need_version=no - fi - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -os2*) - libname_spec='$name' - need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4*) - version_type=osf - need_version=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method='file_magic COFF format alpha shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - deplibs_check_method='pass_all' - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}.so$major' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" - file_magic_cmd=/usr/bin/file - file_magic_test_file=/lib/libc.so - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - case "$host_vendor" in - ncr) - deplibs_check_method='pass_all' - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$ac_t$dynamic_linker" 1>&6 -test "$dynamic_linker" = no && can_build_shared=no - -# Report the final consequences. -echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in -# configure.in, otherwise build static only libraries. -case "$host_os" in -cygwin* | mingw* | os2*) - if test x$can_build_shared = xyes; then - test x$enable_win32_dll = xno && can_build_shared=no - echo "checking if package supports dlls... $can_build_shared" 1>&6 - fi -;; -esac - -if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then - case "$deplibs_check_method" in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac -fi - -echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4*) - test "$enable_shared" = yes && enable_static=no - ;; -esac - -echo "$ac_t$enable_shared" 1>&6 - -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes - -echo "checking whether to build static libraries... $enable_static" 1>&6 - -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -echo $ac_n "checking for objdir... $ac_c" 1>&6 -rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - objdir=_libs -fi -rmdir .libs 2>/dev/null -echo "$ac_t$objdir" 1>&6 - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else -if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then - lt_cv_dlopen=no lt_cv_dlopen_libs= -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "$progname:2123: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "$progname:2160: checking for dlopen" >&5 -if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -dlopen(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_dlopen=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_dlopen=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "$progname:2204: checking for dld_link in -ldld" >&5 -ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "$progname:2241: checking for shl_load" >&5 -if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -shl_load(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_shl_load=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_shl_load=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "$progname:2286: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - -fi - - -fi - - -fi - -fi - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - fi - - case "$lt_cv_dlopen" in - dlopen) -for ac_hdr in dlfcn.h; do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "$progname:2348: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int fnord = 0; -EOF -ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo $progname:2358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -done - - if test "x$ac_cv_header_dlfcn_h" = xyes; then - CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - fi - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2386: checking whether a program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) exit(0); } exit(1); } - -EOF -if { (eval echo $progname:2440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self" 1>&6 - - if test "$lt_cv_dlopen_self" = yes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2459: checking whether a statically linked program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self_static=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) exit(0); } exit(1); } - -EOF -if { (eval echo $progname:2513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self_static=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self_static=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 -fi - ;; - esac - - case "$lt_cv_dlopen_self" in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case "$lt_cv_dlopen_self_static" in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - -# Copy echo and quote the copy, instead of the original, because it is -# used later. -ltecho="$echo" -if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then - ltecho="$CONFIG_SHELL \$0 --fallback-echo" -fi -LTSHELL="$SHELL" - -LTCONFIG_VERSION="$VERSION" - -# Only quote variables if we're using ltmain.sh. -case "$ltmain" in -*.sh) - # Now quote all the things that may contain metacharacters. - for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ - AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ - thread_safe_flag_spec whole_archive_flag_spec libname_spec \ - library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ - old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ - file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ - finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ - hardcode_libdir_flag_spec hardcode_libdir_separator \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case "$ltecho" in - *'\$0 --fallback-echo"') - ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - - trap "$rm \"$ofile\"; exit 1" 1 2 15 - echo "creating $ofile" - $rm "$ofile" - cat < "$ofile" -#! $SHELL - -# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. -# -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi - -### BEGIN LIBTOOL CONFIG -EOF - cfgfile="$ofile" - ;; - -*) - # Double-quote the variables that need it (for aesthetics). - for var in old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do - eval "$var=\\\"\$var\\\"" - done - - # Just create a config file. - cfgfile="$ofile.cfg" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - echo "creating $cfgfile" - $rm "$cfgfile" - cat < "$cfgfile" -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -EOF - ;; -esac - -cat <> "$cfgfile" -# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ -# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ -# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ -# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ -# $0$ltconfig_args -# -# Compiler and other test output produced by $progname, useful for -# debugging $progname, is in ./config.log if it exists. - -# The version of $progname that generated this script. -LTCONFIG_VERSION=$LTCONFIG_VERSION - -# Shell to use when invoking shell scripts. -SHELL=$LTSHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$ltecho - -# The archiver. -AR=$AR - -# The default C compiler. -CC=$CC - -# The linker used to build libraries. -LD=$LD - -# Whether we need hard or soft links. -LN_S=$LN_S - -# A BSD-compatible nm program. -NM=$NM - -# 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=$objdir - -# How to create reloadable object files. -reload_flag=$reload_flag -reload_cmds=$reload_cmds - -# How to pass a linker flag through the compiler. -wl=$wl - -# Object file suffix (normally "o"). -objext="$objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Additional compiler flags for building library objects. -pic_flag=$pic_flag - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$compiler_c_o - -# Can we write directly to a .lo ? -compiler_o_lo=$compiler_o_lo - -# Must we lock files when doing compilation ? -need_locks=$need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$link_static_flag - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$no_builtin_flag - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$whole_archive_flag_spec - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$thread_safe_flag_spec - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$libname_spec - -# 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=$library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$RANLIB -old_archive_cmds=$old_archive_cmds -old_postinstall_cmds=$old_postinstall_cmds -old_postuninstall_cmds=$old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$old_archive_from_new_cmds - -# Commands used to build and install a shared archive. -archive_cmds=$archive_cmds -archive_expsym_cmds=$archive_expsym_cmds -postinstall_cmds=$postinstall_cmds -postuninstall_cmds=$postuninstall_cmds - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$allow_undefined_flag - -# Flag that forces no undefined symbols. -no_undefined_flag=$no_undefined_flag - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$global_symbol_to_cdecl - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$hardcode_libdir_separator - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$include_expsyms - -EOF - -case "$ltmain" in -*.sh) - echo '### END LIBTOOL CONFIG' >> "$ofile" - echo >> "$ofile" - case "$host_os" in - aix3*) - cat <<\EOF >> "$ofile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "${COLLECT_NAMES+set}" != set; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # Append the ltmain.sh script. - cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) - - chmod +x "$ofile" - ;; - -*) - # Compile the libtool program. - echo "FIXME: would compile $ltmain" - ;; -esac - -test -n "$cache_file" || exit 0 - -# AC_CACHE_SAVE -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/shmem/unix/mm/ltmain.sh b/shmem/unix/mm/ltmain.sh deleted file mode 100644 index ce13c280f..000000000 --- a/shmem/unix/mm/ltmain.sh +++ /dev/null @@ -1,3896 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun ltconfig. -# -# Copyright (C) 1996-1999 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - -# 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 "$0" --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 1 -fi - -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - echo "$modename: not configured to build any kind of library" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -# 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) - eval "$prev=\"\$$prev \$arg\"" - ;; - *) - 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" - exit 0 - ;; - - --config) - sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 - exit 0 - ;; - - --debug) - echo "$progname: enabling shell trace mode" - set -x - ;; - - --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 0 - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --quiet | --silent) - show=: - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 -fi - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - case "$nonopt" in - *cc | *++ | gcc* | *-gcc*) - 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 1 - 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= - lastarg= - srcfile="$nonopt" - suppress_output= - - user_target=no - for arg - do - # Accept any command-line options. - case "$arg" in - -o) - if test "$user_target" != "no"; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit 1 - fi - user_target=next - ;; - - -static) - build_old_libs=yes - continue - ;; - esac - - case "$user_target" in - next) - # The next one is the -o target name - user_target=yes - continue - ;; - yes) - # We got the output file - user_target=set - libobj="$arg" - continue - ;; - esac - - # Accept the current argument as the source file. - lastarg="$srcfile" - srcfile="$arg" - - # Aesthetically quote the previous argument. - - # Backslashify any backslashes, double quotes, and dollar signs. - # These are the only characters that are still specially - # interpreted inside of double-quoted scrings. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly in scan - # sets, so we specify it separately. - case "$lastarg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - lastarg="\"$lastarg\"" - ;; - esac - - # Add the previous argument to base_compile. - if test -z "$base_compile"; then - base_compile="$lastarg" - else - base_compile="$base_compile $lastarg" - fi - done - - case "$user_target" in - set) - ;; - no) - # Get the name of the library object. - libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - *) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit 1 - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSfmso]' - case "$libobj" in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - 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 1 - ;; - esac - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $libobj" - else - removelist="$libobj" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit 1" 1 2 15 - - # 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 1" 1 2 15 - else - 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 ln "$0" "$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 1 - fi - echo $srcfile > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - # All platforms use -DPIC, to notify preprocessed assembler code. - command="$base_compile $pic_flag -DPIC $srcfile" - if test "$build_old_libs" = yes; then - lo_libobj="$libobj" - dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$libobj"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` - - if test -d "$dir"; then - $show "$rm $libobj" - $run $rm $libobj - else - $show "$mkdir $dir" - $run $mkdir $dir - status=$? - if test $status -ne 0 && test ! -d $dir; then - exit $status - fi - fi - fi - if test "$compiler_o_lo" = yes; then - output_obj="$libobj" - command="$command -o $output_obj" - elif test "$compiler_c_o" = yes; then - output_obj="$obj" - command="$command -o $output_obj" - fi - - $run $rm "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - test -n "$output_obj" && $run $rm $removelist - exit 1 - fi - - if test "$need_locks" = warn && - test x"`cat $lockfile 2>/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 1 - fi - - # Just move the object if needed, then go on to compile the next one - if test x"$output_obj" != x"$libobj"; then - $show "$mv $output_obj $libobj" - if $run $mv $output_obj $libobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # If we have no pic_flag, then copy the object into place and finish. - if test -z "$pic_flag" && test "$build_old_libs" = yes; then - # Rename the .lo from within objdir to obj - if test -f $obj; then - $show $rm $obj - $run $rm $obj - fi - - $show "$mv $libobj $obj" - if $run $mv $libobj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - - # Now arrange that obj and lo_libobj become the same file - $show "$LN_S $obj $lo_libobj" - if $run $LN_S $obj $lo_libobj; then - exit 0 - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Allow error messages only from the first compilation. - suppress_output=' >/dev/null 2>&1' - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - command="$base_compile $srcfile" - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - output_obj="$obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - $run $rm "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - $run $rm $removelist - exit 1 - fi - - if test "$need_locks" = warn && - test x"`cat $lockfile 2>/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 1 - fi - - # Just move the object if needed - if 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 - - # Create an invalid libtool object if no PIC, so that we do not - # accidentally link it into a program. - if test "$build_libtool_libs" != yes; then - $show "echo timestamp > $libobj" - $run eval "echo timestamp > \$libobj" || exit $? - else - # Move the .lo from within objdir - $show "$mv $libobj $lo_libobj" - if $run $mv $libobj $lo_libobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - fi - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - $rm "$lockfile" - fi - - exit 0 - ;; - - # libtool link mode - link) - modename="$modename: link" - C_compiler="$CC" # save it, to compile generated C sources - CC="$nonopt" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invokation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - - # This is a source program that is used to create dlls on Windows - # Don't remove nor modify the starting and closing comments -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ - # This is a source program that is used to create import libraries - # on Windows for dlls which lack them. Don't remove nor modify the - # starting and closing comments -# /* impgen.c starts here */ -# /* Copyright (C) 1999 Free Software Foundation, Inc. -# -# This file is part of GNU libtool. -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# */ -# -# #include /* for printf() */ -# #include /* for open(), lseek(), read() */ -# #include /* for O_RDONLY, O_BINARY */ -# #include /* for strdup() */ -# -# static unsigned int -# pe_get16 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[2]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 2); -# return b[0] + (b[1]<<8); -# } -# -# static unsigned int -# pe_get32 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[4]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 4); -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# static unsigned int -# pe_as32 (ptr) -# void *ptr; -# { -# unsigned char *b = ptr; -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# int -# main (argc, argv) -# int argc; -# char *argv[]; -# { -# int dll; -# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; -# unsigned long export_rva, export_size, nsections, secptr, expptr; -# unsigned long name_rvas, nexp; -# unsigned char *expdata, *erva; -# char *filename, *dll_name; -# -# filename = argv[1]; -# -# dll = open(filename, O_RDONLY|O_BINARY); -# if (!dll) -# return 1; -# -# dll_name = filename; -# -# for (i=0; filename[i]; i++) -# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') -# dll_name = filename + i +1; -# -# pe_header_offset = pe_get32 (dll, 0x3c); -# opthdr_ofs = pe_header_offset + 4 + 20; -# num_entries = pe_get32 (dll, opthdr_ofs + 92); -# -# if (num_entries < 1) /* no exports */ -# return 1; -# -# export_rva = pe_get32 (dll, opthdr_ofs + 96); -# export_size = pe_get32 (dll, opthdr_ofs + 100); -# nsections = pe_get16 (dll, pe_header_offset + 4 +2); -# secptr = (pe_header_offset + 4 + 20 + -# pe_get16 (dll, pe_header_offset + 4 + 16)); -# -# expptr = 0; -# for (i = 0; i < nsections; i++) -# { -# char sname[8]; -# unsigned long secptr1 = secptr + 40 * i; -# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); -# unsigned long vsize = pe_get32 (dll, secptr1 + 16); -# unsigned long fptr = pe_get32 (dll, secptr1 + 20); -# lseek(dll, secptr1, SEEK_SET); -# read(dll, sname, 8); -# if (vaddr <= export_rva && vaddr+vsize > export_rva) -# { -# expptr = fptr + (export_rva - vaddr); -# if (export_rva + export_size > vaddr + vsize) -# export_size = vsize - (export_rva - vaddr); -# break; -# } -# } -# -# expdata = (unsigned char*)malloc(export_size); -# lseek (dll, expptr, SEEK_SET); -# read (dll, expdata, export_size); -# erva = expdata - export_rva; -# -# nexp = pe_as32 (expdata+24); -# name_rvas = pe_as32 (expdata+32); -# -# printf ("EXPORTS\n"); -# for (i = 0; i&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_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 - - # 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. - 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= - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit 1 - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - release) - release="-$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 1 - ;; - 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 - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi - - 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: not more than one -exported-symbols argument allowed" - exit 1 - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - 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: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" - fi - dir="$absdir" - ;; - esac - case " $deplibs " in - *" $arg "*) ;; - *) deplibs="$deplibs $arg";; - esac - case " $lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir";; - esac - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - case ":$dllsearchpath:" in - ::) dllsearchpath="$dllsearchdir";; - *":$dllsearchdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dllsearchdir";; - esac - ;; - esac - ;; - - -l*) - if test "$arg" = "-lc"; then - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # These systems don't actually have c library (as such) - continue - ;; - esac - elif test "$arg" = "-lm"; then - case "$host" in - *-*-cygwin* | *-*-beos*) - # These systems don't actually have math library (as such) - continue - ;; - esac - fi - deplibs="$deplibs $arg" - ;; - - -module) - module=yes - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -o) prev=output ;; - - -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 1 - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # If we have no pic_flag, then this is the same as -all-static. - if test -z "$pic_flag" && test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - 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 - ;; - - *.o | *.obj | *.a | *.lib) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A library object. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` - prev= - fi - libobjs="$libobjs $arg" - ;; - - *.la) - # A libtool-controlled library. - - dlname= - libdir= - library_names= - old_library= - - # Check to see that this really is a libtool archive. - if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 - exit 1 - fi - - # If the library was installed with an old release of libtool, - # it will not redefine variable installed. - installed=yes - - # Read the .la file - # If there is no directory component, then add one. - case "$arg" in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - # 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 \`$arg'" 1>&2 - exit 1 - fi - - # Find the relevant object directory and library name. - name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` - - if test "X$installed" = Xyes; then - dir="$libdir" - else - dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$arg"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - fi - - if test -n "$dependency_libs"; then - # Extract -R from dependency_libs - temp_deplibs= - for deplib in $dependency_libs; do - case "$deplib" in - -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - case " $rpath $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - -L*) case "$compile_command $temp_deplibs " in - *" $deplib "*) ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - done - dependency_libs="$temp_deplibs" - fi - - if test -z "$libdir"; then - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$deplibs$dependency_libs" - compile_command="$compile_command $dir/$old_library$dependency_libs" - finalize_command="$finalize_command $dir/$old_library$dependency_libs" - continue - fi - - # This library was specified with -dlopen. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking statically, - # we need to preload. - prev=dlprefiles - else - # We should not create a dependency on this library, but we - # may need any libraries it requires. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - prev= - continue - fi - fi - - # The library was specified with -dlpreopen. - if test "$prev" = dlprefiles; then - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - dlprefiles="$dlprefiles $dir/$old_library" - else - dlprefiles="$dlprefiles $dir/$linklib" - fi - prev= - fi - - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - link_against_libtool_libs="$link_against_libtool_libs $arg" - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # 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 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" - fi - ;; - esac - - # This is the magic to use -rpath. - # Skip directories that are in the system default run-time - # search path, unless they have been requested with -R. - 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 - - lib_linked=yes - case "$hardcode_action" in - immediate | unsupported) - if test "$hardcode_direct" = no; then - compile_command="$compile_command $dir/$linklib" - deplibs="$deplibs $dir/$linklib" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - if test -n "$dllsearchpath"; then - dllsearchpath="$dllsearchpath:$dllsearchdir" - else - dllsearchpath="$dllsearchdir" - fi - ;; - esac - elif test "$hardcode_minus_L" = no; then - case "$host" in - *-*-sunos*) - compile_shlibpath="$compile_shlibpath$dir:" - ;; - esac - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = no; then - case ":$compile_shlibpath:" in - *":$dir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$dir:";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" - else - lib_linked=no - fi - ;; - - relink) - if test "$hardcode_direct" = yes; then - compile_command="$compile_command $absdir/$linklib" - deplibs="$deplibs $absdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$compile_command " in - *" -L$absdir "*) ;; - *) compile_command="$compile_command -L$absdir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$absdir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$compile_shlibpath:" in - *":$absdir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$absdir:";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -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 1 - fi - - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - finalize_command="$finalize_command $libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$finalize_command " in - *" -L$libdir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$finalize_shlibpath:" in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:";; - esac - finalize_command="$finalize_command -l$name" - else - # We cannot seem to hardcode it, guess we'll fake it. - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - fi - else - # Transform directly to old archives if we don't build new libraries. - if test -n "$pic_flag" && test -z "$old_library"; then - $echo "$modename: cannot find static library for \`$arg'" 1>&2 - exit 1 - fi - - # 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_command="$compile_command $dir/$linklib" - finalize_command="$finalize_command $dir/$linklib" - else - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$dir";; - esac - finalize_command="$finalize_command -l$name" - fi - fi - - # Add in any libraries that this one depends upon. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - 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 - - # 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 - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - 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" - - case "$output" in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *.a | *.lib) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - 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' 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" - ;; - - *.la) - # 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 libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit 1 - 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 libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - 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 - - if test -n "$objs"; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 - exit 1 - fi - - # How the heck are we supposed to write a wrapper for a shared library? - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 - exit 1 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' 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. - libext=al - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - dependency_libs="$deplibs" - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' 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. - IFS="${IFS= }"; 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 1 - fi - - current="$2" - revision="$3" - age="$4" - - # Check that each of the things are valid numbers. - case "$current" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$revision" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$age" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - 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 1 - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case "$version_type" in - none) ;; - - irix) - major=`expr $current - $age + 1` - versuffix="$major.$revision" - verstring="sgi$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test $loop != 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="sgi$major.$iface:$verstring" - done - ;; - - 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 != 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" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - windows) - # Like Linux, but with '-' rather than '.', since we only - # want one extension on Windows 95. - major=`expr $current - $age` - versuffix="-$major-$age-$revision" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - verstring="0.0" - 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 - - dependency_libs="$deplibs" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *) - # Add libc to deplibs on all other systems. - deplibs="$deplibs -lc" - ;; - esac - fi - - # Create the output directory, or remove our outputs if we need to. - if test -d $output_objdir; then - $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" - $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* - else - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - 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 - - if test "$build_libtool_libs" = yes; then - # 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 behaviour. - 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 - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - echo "*** Warning: This library needs some functionality provided by $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." - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g' -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 - - 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." - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # 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 - # Get the real and link names of the library. - 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 - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Ensure that we have .o objects for linkers which dislike .lo - # (e.g. aix) incase we are running --disable-static - for obj in $libobjs; do - oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"` - if test ! -f $oldobj; then - $show "${LN_S} $obj $oldobj" - $run ${LN_S} $obj $oldobj || exit $? - fi - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - if test -n "$whole_archive_flag_spec"; then - if test -n "$convenience"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - else - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` - done - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linkopts="$linkopts $flag" - fi - - # 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 - eval cmds=\"$export_symbols_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - 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 - - # Do each of the archive commands. - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # 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 - ;; - - *.lo | *.o | *.obj) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - 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"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Create the old-style object. - reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` - - output="$obj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - test -z "$libobj" && exit 0 - - if test "$build_libtool_libs" != yes; then - # 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 0 - fi - - if test -n "$pic_flag"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs" - output="$libobj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - else - # Just create a symlink. - $show $rm $libobj - $run $rm $libobj - $show "$LN_S $obj $libobj" - $run $LN_S $obj $libobj || exit $? - fi - - exit 0 - ;; - - # Anything else should be a program. - *) - 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" = 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 - - 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 "$compile_rpath " in - *" $libdir "*) ;; - *) compile_rpath="$compile_rpath $libdir" ;; - esac - 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 - 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" - - 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 binary in the object directory, then wrap it. - if test ! -d $output_objdir; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi - fi - - 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" = yes; 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" | $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/$output.exp" - $run $rm $export_symbols - $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - 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" | sort +2 | 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_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{\ -" - - sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ - -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ - < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr_t) 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*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $C_compiler -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. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 - ;; - 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" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - 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 $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 "$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" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - 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 - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case "$0" in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; - *) qecho="$SHELL `pwd`/$0 --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 - $rm $output - trap "$rm $output; exit 1" 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' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - link_against_libtool_libs='$link_against_libtool_libs' -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' - 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 (cd \"\$thisdir\" && eval \$relink_command); then : - else - $rm \"\$progdir/\$file\" - exit 1 - 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 - *-*-cygwin* | *-*-mingw | *-*-os2*) - # win32 systems need to use the prog path for dll - # lookup to work - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; - *) - $echo >> $output "\ - # Export the path to the program. - PATH=\"\$progdir:\$PATH\" - export PATH - - exec \$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 - 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 1 - fi -fi\ -" - chmod +x $output - fi - exit 0 - ;; - 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="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" - else - # Ensure that we have .o objects in place incase we decided - # not to build a shared library, and have fallen back to building - # static libs even though --disable-static was passed! - for oldobj in $oldobjs; do - if test ! -f $oldobj; then - obj=`$echo "X$oldobj" | $Xsed -e "$o2lo"` - $show "${LN_S} $obj $oldobj" - $run ${LN_S} $obj $oldobj || exit $? - fi - done - - eval cmds=\"$old_archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - 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" - - if test -n "$xrpath"; then - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - done - dependency_libs="$temp_xrpath $dependency_libs" - 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 - fi - $rm $output - $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='$dlname' - -# 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 - -# Directory that this library needs to be installed in: -libdir='$install_libdir'\ -" - 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 0 - ;; - - # 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 || test "$nonopt" = ./shtool;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) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -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 1 - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - 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 1 - 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 1 - 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 1 - ;; - 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 - *.a | *.lib) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep "^# 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 1 - fi - - library_names= - old_library= - # 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" - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$realname $destdir/$realname" - $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? - test "X$dlname" = "X$realname" && dlname= - - if test $# -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - test "X$dlname" = "X$linkname" && dlname= - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi - - if test -n "$dlname"; then - # Install the dynamically-loadable library. - $show "$install_prog $dir/$dlname $destdir/$dlname" - $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || 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"` - ;; - *.o | *.obj) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - 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 0 - ;; - - *) - # 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 - - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - link_against_libtool_libs= - relink_command= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Check the variables that should have been set. - if test -z "$link_against_libtool_libs"; then - $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $link_against_libtool_libs; 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'`" - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : - else - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $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" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - $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 $? - - # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $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" - exit 0 #$current_libdirs - exit 1 - fi - - exit 0 - ;; - - # 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. - eval cmds=\"$finish_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $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 0 - - echo "----------------------------------------------------------------------" - 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 \`-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 "----------------------------------------------------------------------" - exit 0 - ;; - - # 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 1 - 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 1 - fi - - dir= - case "$file" in - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep "^# 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 1 - 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 - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 - 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 | egrep "^# 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 - # Export the shlibpath_var. - eval "export $shlibpath_var" - - # Restore saved enviroment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now actually exec the command. - eval "exec \$cmd$args" - - $echo "$modename: cannot exec \$cmd$args" - exit 1 - else - # Display what would be done. - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - $echo "$cmd$args" - exit 0 - fi - ;; - - # libtool uninstall mode - uninstall) - modename="$modename: uninstall" - rm="$nonopt" - files= - - for arg - do - case "$arg" in - -*) 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 1 - fi - - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - rmfiles="$file" - - case "$name" in - *.la) - # Possibly a libtool archive, so verify it. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $dir/$n" - test "X$n" = "X$dlname" && dlname= - done - test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" - test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" - - $show "$rm $rmfiles" - $run $rm $rmfiles - - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - # FIXME: should reinstall the best remaining shared library. - fi - ;; - - *.lo) - if test "$build_old_libs" = yes; then - oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` - rmfiles="$rmfiles $dir/$oldobj" - fi - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - - *) - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - esac - done - exit 0 - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - ;; - esac - - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 -fi # test -z "$show_help" - -# 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 - --version print version information - -MODE must be one of the following: - - 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." - exit 0 - ;; - -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 - -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-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -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 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 1 - ;; -esac - -echo -$echo "Try \`$modename --help' for more information about other modes." - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/shmem/unix/mm/mm-config.1 b/shmem/unix/mm/mm-config.1 deleted file mode 100644 index 2e0fb8345..000000000 --- a/shmem/unix/mm/mm-config.1 +++ /dev/null @@ -1,283 +0,0 @@ -.rn '' }` -''' $RCSfile: mm-config.1,v $$Revision: 1.1 $$Date: 1999/08/17 15:59:45 $ -''' -''' $Log: mm-config.1,v $ -''' Revision 1.1 1999/08/17 15:59:45 rbb -''' Initial revision -''' -''' Revision 1.2 1999/03/28 11:45:32 rse -''' *** empty log message *** -''' -''' -.de Sh -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.de Vb -.ft CW -.nf -.ne \\$1 -.. -.de Ve -.ft R - -.fi -.. -''' -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.ds PI pi -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of -''' \*(L" and \*(R", except that they are used on ".xx" lines, -''' such as .IP and .SH, which do another additional levels of -''' double-quote interpretation -.ds M" """ -.ds S" """ -.ds N" """"" -.ds T" """"" -.ds L' ' -.ds R' ' -.ds M' ' -.ds S' ' -.ds N' ' -.ds T' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds M" `` -.ds S" '' -.ds N" `` -.ds T" '' -.ds L' ` -.ds R' ' -.ds M' ` -.ds S' ' -.ds N' ` -.ds T' ' -.ds PI \(*p -'br\} -.\" If the F register is turned on, we'll generate -.\" index entries out stderr for the following things: -.\" TH Title -.\" SH Header -.\" Sh Subsection -.\" Ip Item -.\" X<> Xref (embedded -.\" Of course, you have to process the output yourself -.\" in some meaninful fashion. -.if \nF \{ -.de IX -.tm Index:\\$1\t\\n%\t"\\$2" -.. -.nr % 0 -.rr F -.\} -.TH mm-config 3 "28-Mar-1999" "MM 1.0.0" "Shared Memory Library" -.UC -.if n .hy 0 -.if n .na -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.de CQ \" put $1 in typewriter font -.ft CW -'if n "\c -'if t \\&\\$1\c -'if n \\&\\$1\c -'if n \&" -\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 -'.ft R -.. -.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 -. \" AM - accent mark definitions -.bd B 3 -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds ? ? -. ds ! ! -. ds / -. ds q -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' -. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] -.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' -.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' -.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -.ds oe o\h'-(\w'o'u*4/10)'e -.ds Oe O\h'-(\w'O'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds v \h'-1'\o'\(aa\(ga' -. ds _ \h'-1'^ -. ds . \h'-1'. -. ds 3 3 -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -. ds oe oe -. ds Oe OE -.\} -.rm #[ #] #H #V #F C -.SH "NAME" -\fBmm-config\fR \- MM library configuration/build utility -.SH "VERSION" -MM 1.0.0 (28-Mar-1999) -.SH "SYNOPSIS" -\fBmm-config\fR -[\fB--help\fR] -[\fB--version\fR] -[\fB--cflags\fR] -[\fB--ldflags\fR] -[\fB--libs\fR] -.SH "DESCRIPTION" -The \fBmm-config\fR program is a little helper utility for easy configuring and -building applications based on the \fImm\fR\|(3) library. It can be used to query the -C compiler and linker flags which are required to correctly compile and link -the application against the \fImm\fR\|(3) library. -.SH "OPTIONS" -\fBmm-config\fR accepts the following options: -.Ip "\fB--help\fR" 4 -Prints the short usage information. -.Ip "\fB--version\fR" 4 -Prints the version number and date of the installed \fImm\fR\|(3) library. -.Ip "\fB--cflags\fR" 4 -Prints the C compiler flags which are needed to compile the \fImm\fR\|(3)\-based -application. The output is usually added to the \f(CWCFLAGS\fR variable of the -applications \f(CWMakefile\fR. -.Ip "\fB--ldflags\fR" 4 -Prints the linker flags (\f(CW-L\fR) which are needed to link the application with -the \fImm\fR\|(3) library. The output is usually added to the \f(CWLDFLAGS\fR variable of -the applications \f(CWMakefile\fR. -.Ip "\fB--libs\fR" 4 -Prints the library flags (\f(CW-l\fR) which are needed to link the application with -the \fImm\fR\|(3) library. The output is usually added to the \f(CWLIBS\fR variable of the -applications \f(CWMakefile\fR. -.SH "EXAMPLE" -.PP -.Vb 10 -\& CC=cc -\& CFLAGS=-O `mm-config --cflags` -\& LDFLAGS=`mm-config --ldflags` -\& LIBS=-lm `mm-config --libs` -\& -\& all: foo -\& foo: foo.o -\& $(CC) $(LDFLAGS) -o foo foo.o $(LIBS) -\& foo.o: foo.c -\& $(CC) $(CFLAGS) -c foo.c -.Ve -.SH "SEE ALSO" -\fImm\fR\|(3). -.SH "AUTHOR" -.PP -.Vb 3 -\& Ralf S. Engelschall -\& rse@engelschall.com -\& www.engelschall.com -.Ve - -.rn }` '' -.IX Title "mm-config 3" -.IX Name "B - MM library configuration/build utility" - -.IX Header "NAME" - -.IX Header "VERSION" - -.IX Header "SYNOPSIS" - -.IX Header "DESCRIPTION" - -.IX Header "OPTIONS" - -.IX Item "\fB--help\fR" - -.IX Item "\fB--version\fR" - -.IX Item "\fB--cflags\fR" - -.IX Item "\fB--ldflags\fR" - -.IX Item "\fB--libs\fR" - -.IX Header "EXAMPLE" - -.IX Header "SEE ALSO" - -.IX Header "AUTHOR" - diff --git a/shmem/unix/mm/mm-config.in b/shmem/unix/mm/mm-config.in deleted file mode 100644 index dd06dfc53..000000000 --- a/shmem/unix/mm/mm-config.in +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -## -## mm-config -- MM library build configuration utility -## Copyright (c) 1999 Ralf S. Engelschall, All Rights Reserved. -## -DIFS=' -' - -prefix="@prefix@" -exec_prefix="@exec_prefix@" - -mm_prefix="$prefix" -mm_libdir="@libdir@" -mm_includedir="@includedir@" -mm_mandir="@mandir@" -mm_cflags="@CFLAGS@" -mm_ldflags="@LDFLAGS@" -mm_libs="@LIBS@" -mm_version="@MM_VERSION_STR@" - -help=no -version=no - -usage="$0 [--help] [--version] [--cflags] [--ldflags] [--libs]" -if [ $# -eq 0 ]; then - echo "$0:Error: Invalid option" 1>&2 - echo "$0:Usage: $usage" 1>&2 - exit 1 -fi -prev='' -OIFS="$IFS" IFS="$DIFS" -for option -do - if [ ".$prev" != . ]; then - eval "$prev=\$option" - prev="" - continue - fi - case "$option" in - -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg='' ;; - esac - case "$option" in - --help|-h) - echo "$0:Usage: $usage" - exit 1 - ;; - --version|-v) - echo "MM $mm_version" - exit 0 - ;; - --cflags) - echo "-I$mm_includedir" - ;; - --ldflags) - echo "-L$mm_libdir" - ;; - --libs) - echo "-lmm" - ;; - * ) - echo "$0:Error: Invalid option" 1>&2 - echo "$0:Usage: $usage" 1>&2 - exit 1; - ;; - esac -done -IFS="$OIFS" -if [ ".$prev" != . ]; then - echo "$0:Error: missing argument to --`echo $prev | sed 's/_/-/g'`" 1>&2 - exit 1 -fi - diff --git a/shmem/unix/mm/mm-config.pod b/shmem/unix/mm/mm-config.pod deleted file mode 100644 index 1891a62e8..000000000 --- a/shmem/unix/mm/mm-config.pod +++ /dev/null @@ -1,128 +0,0 @@ -## ==================================================================== -## Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: -## "This product includes software developed by -## Ralf S. Engelschall ." -## -## 4. Redistributions of any form whatsoever must retain the following -## acknowledgment: -## "This product includes software developed by -## Ralf S. Engelschall ." -## -## THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY -## EXPRESSED 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 RALF S. ENGELSCHALL OR -## ITS 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. -## ==================================================================== - -## -## mm-config.pod -- Manpage -## - -=pod - -=head1 NAME - -B - MM library configuration/build utility - -=head1 VERSION - -MM MM_VERSION_STR - -=head1 SYNOPSIS - -B -[B<--help>] -[B<--version>] -[B<--cflags>] -[B<--ldflags>] -[B<--libs>] - -=head1 DESCRIPTION - -The B program is a little helper utility for easy configuring and -building applications based on the mm(3) library. It can be used to query the -C compiler and linker flags which are required to correctly compile and link -the application against the mm(3) library. - -=head1 OPTIONS - -B accepts the following options: - -=over 4 - -=item B<--help> - -Prints the short usage information. - -=item B<--version> - -Prints the version number and date of the installed mm(3) library. - -=item B<--cflags> - -Prints the C compiler flags which are needed to compile the mm(3)-based -application. The output is usually added to the C variable of the -applications C. - -=item B<--ldflags> - -Prints the linker flags (C<-L>) which are needed to link the application with -the mm(3) library. The output is usually added to the C variable of -the applications C. - -=item B<--libs> - -Prints the library flags (C<-l>) which are needed to link the application with -the mm(3) library. The output is usually added to the C variable of the -applications C. - -=back - -=head1 EXAMPLE - - CC=cc - CFLAGS=-O `mm-config --cflags` - LDFLAGS=`mm-config --ldflags` - LIBS=-lm `mm-config --libs` - - all: foo - foo: foo.o - $(CC) $(LDFLAGS) -o foo foo.o $(LIBS) - foo.o: foo.c - $(CC) $(CFLAGS) -c foo.c - -=head1 SEE ALSO - -mm(3). - -=head1 AUTHOR - - Ralf S. Engelschall - rse@engelschall.com - www.engelschall.com - -=cut - diff --git a/shmem/unix/mm/mm.3 b/shmem/unix/mm/mm.3 deleted file mode 100644 index e37b28933..000000000 --- a/shmem/unix/mm/mm.3 +++ /dev/null @@ -1,759 +0,0 @@ -.rn '' }` -''' $RCSfile: mm.3,v $$Revision: 1.1 $$Date: 1999/08/17 15:59:45 $ -''' -''' $Log: mm.3,v $ -''' Revision 1.1 1999/08/17 15:59:45 rbb -''' Initial revision -''' -''' -.de Sh -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.de Vb -.ft CW -.nf -.ne \\$1 -.. -.de Ve -.ft R - -.fi -.. -''' -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.ds PI pi -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of -''' \*(L" and \*(R", except that they are used on ".xx" lines, -''' such as .IP and .SH, which do another additional levels of -''' double-quote interpretation -.ds M" """ -.ds S" """ -.ds N" """"" -.ds T" """"" -.ds L' ' -.ds R' ' -.ds M' ' -.ds S' ' -.ds N' ' -.ds T' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds M" `` -.ds S" '' -.ds N" `` -.ds T" '' -.ds L' ` -.ds R' ' -.ds M' ` -.ds S' ' -.ds N' ` -.ds T' ' -.ds PI \(*p -'br\} -.\" If the F register is turned on, we'll generate -.\" index entries out stderr for the following things: -.\" TH Title -.\" SH Header -.\" Sh Subsection -.\" Ip Item -.\" X<> Xref (embedded -.\" Of course, you have to process the output yourself -.\" in some meaninful fashion. -.if \nF \{ -.de IX -.tm Index:\\$1\t\\n%\t"\\$2" -.. -.nr % 0 -.rr F -.\} -.TH mm 3 "24-Jun-1999" "MM 1.0.8" "Shared Memory Library" -.UC -.if n .hy 0 -.if n .na -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.de CQ \" put $1 in typewriter font -.ft CW -'if n "\c -'if t \\&\\$1\c -'if n \\&\\$1\c -'if n \&" -\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 -'.ft R -.. -.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 -. \" AM - accent mark definitions -.bd B 3 -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds ? ? -. ds ! ! -. ds / -. ds q -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' -. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] -.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' -.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' -.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -.ds oe o\h'-(\w'o'u*4/10)'e -.ds Oe O\h'-(\w'O'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds v \h'-1'\o'\(aa\(ga' -. ds _ \h'-1'^ -. ds . \h'-1'. -. ds 3 3 -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -. ds oe oe -. ds Oe OE -.\} -.rm #[ #] #H #V #F C -.SH "NAME" -\fBMM \- Shared Memory Library\fR -.SH "VERSION" -MM 1.0.8 (24-Jun-1999) -.SH "SYNOPSIS" -.PP -.Vb 1 -\& #include "mm.h" -.Ve -\fB Global Malloc-Replacement API\fR -.PP -.Vb 14 -\& int \fBMM_create\fR(size_t size, const char *file); -\& int \fBMM_permission\fR(mode_t mode, uid_t owner, gid_t group); -\& void \fBMM_destroy\fR(void); -\& int \fBMM_lock\fR(mm_lock_mode mode); -\& int \fBMM_unlock\fR(void); -\& void *\fBMM_malloc\fR(size_t size); -\& void *\fBMM_realloc\fR(void *ptr, size_t size); -\& void \fBMM_free\fR(void *ptr); -\& void *\fBMM_calloc\fR(size_t number, size_t size); -\& char *\fBMM_strdup\fR(const char *str); -\& size_t \fBMM_sizeof\fR(void *ptr); -\& size_t \fBMM_maxsize\fR(void); -\& size_t \fBMM_available\fR(void); -\& char *\fBMM_error\fR(void); -.Ve -\fB Standard Malloc-Style API\fR -.PP -.Vb 15 -\& MM *\fBmm_create\fR(size_t size, char *file); -\& int \fBmm_permission\fR(MM *mm, mode_t mode, uid_t owner, gid_t group); -\& void \fBmm_destroy\fR(MM *mm); -\& int \fBmm_lock\fR(MM *mm, mm_lock_mode mode); -\& int \fBmm_unlock\fR(MM *mm); -\& void *\fBmm_malloc\fR(MM *mm, size_t size); -\& void *\fBmm_realloc\fR(MM *mm, void *ptr, size_t size); -\& void \fBmm_free\fR(MM *mm, void *ptr); -\& void *\fBmm_calloc\fR(MM *mm, size_t number, size_t size); -\& char *\fBmm_strdup\fR(MM *mm, const char *str); -\& size_t \fBmm_sizeof\fR(void *ptr); -\& size_t \fBmm_maxsize\fR(void); -\& size_t \fBmm_available\fR(MM *mm); -\& char *\fBmm_error\fR(void); -\& void \fBmm_display_info\fR(MM *mm); -.Ve -\fB Low-level Shared Memory API\fR -.PP -.Vb 9 -\& void *\fBmm_core_create\fR(size_t size, char *file); -\& int \fBmm_core_permission\fR(void *core, mode_t mode, uid_t owner, gid_t group); -\& void \fBmm_core_delete\fR(void *core); -\& int \fBmm_core_lock\fR(void *core, mm_lock_mode mode); -\& int \fBmm_core_unlock\fR(void *core); -\& size_t \fBmm_core_size\fR(void *core); -\& size_t \fBmm_core_maxsegsize\fR(void); -\& size_t \fBmm_core_align2page\fR(size_t size); -\& size_t \fBmm_core_align2click\fR(size_t size); -.Ve -\fB Internal Library API\fR -.PP -.Vb 3 -\& void \fBmm_lib_error_set\fR(unsigned int, const char *str); -\& char *\fBmm_lib_error_get\fR(void); -\& int \fBmm_lib_version\fR(void); -.Ve -.SH "DESCRIPTION" -The \fBMM\fR library is a 2-layer abstraction library which simplifies the usage -of shared memory between forked (and this way strongly related) processes -under Unix platforms. On the first (lower) layer it hides all platform -dependent implementation details (allocation and locking) when dealing with -shared memory segments and on the second (higher) layer it provides a -high-level \fImalloc\fR\|(3)\-style API for a convenient and well known way to work -with data-structures inside those shared memory segments. -.PP -The abbreviation \fBMM\fR is historically and originally comes from the phrase -``\fImemory mapped\fR'\*(R' as used by the POSIX.1 \fImmap\fR\|(2) function. Because this -facility is internally used by this library on most platforms to create the -shared memory segments. -.Sh "\s-1LIBRARY\s0 \s-1STRUCTURE\s0" -This library is structured into three main APIs which are internally based on -each other: -.Ip "\fBGlobal Malloc-Replacement \s-1API\s0\fR" 4 -This is the most high-level \s-1API\s0 which directly can be used as replacement \s-1API\s0 -for the \s-1POSIX\s0.1 memory allocation \s-1API\s0 (\fImalloc\fR\|(2) and friends). This is -useful when converting \fIheap\fR based data structures to \fIshared memory\fR -based data structures without the need to change the code dramatically. All -which is needed is to prefix the \s-1POSIX\s0.1 memory allocation functions with -\f(CWMM_\fR, i.e. \f(CWmalloc\fR becomes \f(CWMM_malloc\fR, \f(CWstrdup\fR becomes \f(CWMM_strdup\fR, -etc. This \s-1API\s0 internally uses just a global \f(CWMM*\fR pool for calling the -corresponding functions (with prefix \f(CWmm_\fR) of the \fIStandard Malloc-Style -\s-1API\s0\fR. -.Ip "\fBStandard Malloc-Style \s-1API\s0\fR" 4 -This is the standard high-level memory allocation \s-1API\s0. It's interface is -similar to the \fIGlobal Malloc-Replacement \s-1API\s0\fR but it uses an explicit \f(CWMM*\fR -pool to operate on. That's why every function of this \s-1API\s0 has an argument of -type \f(CWMM*\fR as the first argument. This \s-1API\s0 provides a comfortable way to -work with small dynamically allocated shared memory chunks inside large -statically allocated shared memory segments. It's internally based on the -\fILow-Level Shared Memory \s-1API\s0\fR for creating the underlaying shared memory -segment. -.Ip "\fBLow-Level Shared Memory \s-1API\s0\fR" 4 -This is the basis of the whole \fB\s-1MM\s0\fR library. It provides low-level functions -for creating shared memory segments with mutual exclusion (in short: \fImutex\fR) -capabilities in a portable way. Internally the shared memory and mutex -facility is implemented in various platform-dependent ways. A list of -implementation variants follows under the next topic. -.Sh "\s-1SHARED\s0 \s-1MEMORY\s0 \s-1IMPLEMENTATION\s0" -Internally the shared memory facility is implemented in various -platform-dependent variants. Each has it's own advantages and disadvantages -(in addition to the fact that some variants aren't available at all on some -platforms). The \s-1MM\s0 libraries configuration procedure tried hard to make a good -decision. The implemented variants are now given for overview and background -reasons with their advantages and disadvantages and in an ascending order, -i.e. the \s-1MM\s0 configuration mechanism chooses the last available one in the list -as the preferred variant. -.Ip "Classical mmap(2) on temporary file (\s-1MMFILE\s0)" 4 -\fIAdvantage:\fR maximum portable. -\fIDisadvantage:\fR needs a temporary file on the filesystem -.Ip "mmap(2) via \s-1POSIX\s0.1 shm_open(3) on temporary file (\s-1MMPOSX\s0)" 4 -\fIAdvantage:\fR standardized by \s-1POSIX\s0.1 and theoretically portable. -\fIDisadvantage:\fR needs a temporary file on the filesystem and is -is usually not available on existing Unix platform. -.Ip "\s-1SVR4-\s0style mmap(2) on \f(CW/dev/zero\fR device (\s-1MMZERO\s0)" 4 -\fIAdvantage:\fR widely available on mostly portable on \s-1SVR4\s0 platforms. -\fIDisadvantage:\fR needs the \f(CW/dev/zero/\fR device and an \fImmap\fR\|(2) -which supports memory mapping through it. -.Ip "4.4BSD\-style mmap(2) via \f(CWMAP_ANON\fR facility (\s-1MMANON\s0)" 4 -\fIAdvantage:\fR doesn't need a temporary file or external device -\fIDisadvantage:\fR usually only available on \s-1BSD\s0 platforms and derivatives. -.Ip "SysV \s-1IPC\s0 shmget(2) (\s-1IPCSHM\s0)" 4 -\fIAdvantage:\fR doesn't need a temporary file or external device -\fIDisadvantage:\fR although available on mostly all modern Unix platforms it has -hard restrictions like the maximum size of a single shared memory segment (can -be as small as 100KB, but depends on the platform). -.Sh "\s-1LOCKING\s0 \s-1IMPLEMENTATION\s0" -As for the shared memory facility, internally the locking facility is -implemented in various platform-dependent variants. A short overview of -implemented variants is given: -.Ip "4.2BSD\-style flock(2) on temporary file (\s-1FLOCK\s0)" 4 -\fIAdvantage:\fR exists on a lot of platforms, especially on older Unix -derivates. \fIDisadvantage:\fR needs a temporary file on the filesystem and has -to reopen filedescriptors to it in \fIeach\fR\|(!) \fIfork\fR\|(2)ed child process. -.Ip "SysV \s-1IPC\s0 semget(2) (\s-1IPCSEM\s0)" 4 -\fIAdvantage:\fR exists on a lot of platforms and doesn't need a temporary file. -\fIDisadvantage:\fR an unmeant termination of the application leads to a -semaphore leak because the facility doesn't allow an \*(L"remove in advance\*(R" trick -(as the \s-1IPC\s0 shared memory facility does!) for safe cleanups. -.Ip "\s-1SVR4-\s0style fcntl(2) on temporary file (\s-1FCNTL\s0)" 4 -\fIAdvantage:\fR exists on a lot of platforms and is also the most powerful -variant (although not always the fastest one). \fIDisadvantage:\fR needs a -temporary file. -.Sh "\s-1MEMORY\s0 \s-1ALLOCATION\s0 \s-1STRATEGY\s0" -The memory allocation strategy the \fIStandard Malloc-Style \s-1API\s0\fR functions use -internally is the following: -.Ip "\fBAllocation\fR" 4 -When a chunk of memory has to be allocated, the internal list of free chunks -is searched for a minimal-sized chunk which is larger or equal than the size -of the to be allocated chunk (some sort of a \fIbest fit algorithm\fR). -.Sp -When a chunk is found which matches this best-fit criteria, but is still a lot -larger than the requested size, it is split into two chunks: One with exactly -the requested size (which is the resulting chunk) and one with the remaining -size (which is immediately re-inserted into the list of free chunks). -.Sp -When no fitting chunk is found at all in the list of free chunks, a new one is -created from the spare area of the shared memory segment until the segment is -full (in which case an \fIout of memory\fR error occurs). -.Ip "\fBDeallocation\fR" 4 -When a chunk of memory has to be deallocated, it is inserted in sorted manner -into the internal list of free chunks. The insertion operation automatically -merges the chunk with a previous and/or next free chunk when possible, i.e. -the free chunks stay physically seamless (one after another) in memory, to -automatically form larger free chunks out of smaller ones. -.Sp -This way the shared memory segment is automatically defragmented when memory -is deallocated. -.PP -This strategy reduces memory waste and fragmentation caused by small and -frequent allocations and deallocations to a minimum. -.PP -The internal implementation of the list of free chunks is not specially -optimized (for instance by using binary search trees or even splay trees, -etc.), because it's assumed that the total amount of entries in the list of -free chunks is always small (caused both by the fact that shared memory -segments are usually a lot smaller than heaps and the fact that we always -defragment by merging the free chunks when possible). -.SH "API FUNCTIONS" -In the following all API functions are described in detail. -The order directly follows the one in the SYNOPSIS. -.Sh "Global Malloc-Replacement \s-1API\s0" -.Ip "int \fBMM_create\fR(size_t \fIsize\fR, const char *\fIfile\fR);" 4 -This initialized the global shared memory pool with \fIsize\fR and \fIfile\fR and -has be called \fIbefore\fR any \fIfork\fR\|(2) operations are performed by the -application. -.Ip "int \fBMM_permission\fR(mode_t \fImode\fR, uid_t \fIowner\fR, gid_t \fIgroup\fR);" 4 -This sets the filesystem \fImode\fR, \fIowner\fR and \fIgroup\fR for the global shared -memory pool (has effects only when the underlaying shared memory segment -implementation is actually based on external auxiliary files). The arguments -are directly passed through to \fIchmod\fR\|(2) and \fIchown\fR\|(2). -.Ip "void \fBMM_destroy\fR(void);" 4 -This destroys the global shared memory pool and should be called \fIafter\fR all -child processes were killed. -.Ip "int \fBMM_lock\fR(mm_lock_mode \fImode\fR);" 4 -This locks the global shared memory pool for the current process in order to -perform either shared/read-only (\fImode\fR is \f(CWMM_LOCK_RD\fR) or -exclusive/read-write (\fImode\fR is \f(CWMM_LOCK_RW\fR) operations inside the global -shared memory pool. -.Ip "int \fBMM_unlock\fR(void);" 4 -This unlocks the global shared memory pool for the current process after -mutual exclusion operations were performed inside the global shared memory -pool. -.Ip "void *\fBMM_malloc\fR(size_t \fIsize\fR);" 4 -Identical to the \s-1POSIX\s0.1 \fImalloc\fR\|(3) function but instead of allocating -memory from the \fIheap\fR it allocates it from the global shared memory pool. -.Ip "void \fBMM_free\fR(void *\fIptr\fR);" 4 -Identical to the \s-1POSIX\s0.1 \fIfree\fR\|(3) function but instead of deallocating -memory in the \fIheap\fR it deallocates it in the global shared memory pool. -.Ip "void *\fBMM_realloc\fR(void *\fIptr\fR, size_t \fIsize\fR);" 4 -Identical to the \s-1POSIX\s0.1 \fIrealloc\fR\|(3) function but instead of reallocating -memory in the \fIheap\fR it reallocates it inside the global shared memory pool. -.Ip "void *\fBMM_calloc\fR(size_t \fInumber\fR, size_t \fIsize\fR);" 4 -Identical to the \s-1POSIX\s0.1 \fIcalloc\fR\|(3) function but instead of allocating and -initializing memory from the \fIheap\fR it allocates and initializes it from the -global shared memory pool. -.Ip "char *\fBMM_strdup\fR(const char *\fIstr\fR);" 4 -Identical to the \s-1POSIX\s0.1 \fIstrdup\fR\|(3) function but instead of creating the -string copy in the \fIheap\fR it creates it in the global shared memory pool. -.Ip "size_t \fBMM_sizeof\fR(const void *\fIptr\fR);" 4 -This function returns the size in bytes of the chunk starting at \fIptr\fR when -\fIptr\fR was previously allocated with \fIMM_malloc\fR\|(3). The result is undefined -when \fIptr\fR was not previously allocated with \fIMM_malloc\fR\|(3). -.Ip "size_t \fBMM_maxsize\fR(void);" 4 -This function returns the maximum size which is allowed -as the first argument to the \fIMM_create\fR\|(3) function. -.Ip "size_t \fBMM_available\fR(void);" 4 -Returns the amount in bytes of still available (free) memory in the global -shared memory pool. -.Ip "char *\fBMM_error\fR(void);" 4 -Returns the last error message which occurred inside the \fB\s-1MM\s0\fR library. -.Sh "Standard Malloc-Style \s-1API\s0" -.Ip "\s-1MM\s0 *\fBmm_create\fR(size_t \fIsize\fR, const char *\fIfile\fR);" 4 -This creates a shared memory pool which has space for approximately a total of -\fIsize\fR bytes with the help of \fIfile\fR. Here \fIfile\fR is a filesystem path to a -file which need not to exist (and perhaps is never created because this -depends on the platform and chosen shared memory and mutex implementation). -The return value is a pointer to an \f(CWMM\fR structure which should be treated as -opaque by the application. It describes the internals of the created shared -memory pool. In case of an error \f(CWNULL\fR is returned. A \fIsize\fR of 0 means to -allocate the maximum allowed size which is platform dependent and between a -few \s-1KB\s0 and the soft limit of 64MB. -.Ip "int \fBmm_permission\fR(\s-1MM\s0 *\fImm\fR, mode_t \fImode\fR, uid_t \fIowner\fR, gid_t \fIgroup\fR);" 4 -This sets the filesystem \fImode\fR, \fIowner\fR and \fIgroup\fR for the shared memory -pool \fImm\fR (has effects only when the underlaying shared memory segment -implementation is actually based on external auxiliary files). The arguments -are directly passed through to \fIchmod\fR\|(2) and \fIchown\fR\|(2). -.Ip "void \fBmm_destroy\fR(\s-1MM\s0 *\fImm\fR);" 4 -This destroys the complete shared memory pool \fImm\fR and with it all chunks -which were allocated in this pool. Additionally any created files on the -filesystem corresponding the to shared memory pool are unlinked. -.Ip "int \fBmm_lock\fR(\s-1MM\s0 *\fImm\fR, mm_lock_mode \fImode\fR);" 4 -This locks the shared memory pool \fImm\fR for the current process in order to -perform either shared/read-only (\fImode\fR is \f(CWMM_LOCK_RD\fR) or -exclusive/read-write (\fImode\fR is \f(CWMM_LOCK_RW\fR) operations inside the global -shared memory pool. -.Ip "int \fBMM_unlock\fR(\s-1MM\s0 *\fImm\fR);" 4 -This unlocks the shared memory pool \fImm\fR for the current process after mutual -exclusion operations were performed inside the global shared memory pool. -.Ip "void *\fBmm_malloc\fR(\s-1MM\s0 *\fImm\fR, size_t \fIsize\fR);" 4 -This function allocates \fIsize\fR bytes from the shared memory pool \fImm\fR and -returns either a (virtual memory word aligned) pointer to it or \f(CWNULL\fR in -case of an error (out of memory). It behaves like the \s-1POSIX\s0.1 \fImalloc\fR\|(3) -function but instead of allocating memory from the \fIheap\fR it allocates it -from the shared memory segment underlaying \fImm\fR. -.Ip "void \fBmm_free\fR(\s-1MM\s0 *\fImm\fR, void *\fIptr\fR);" 4 -This deallocates the chunk starting at \fIptr\fR in the shared memory pool \fImm\fR. -It behaves like the \s-1POSIX\s0.1 \fIfree\fR\|(3) function but instead of deallocating -memory from the \fIheap\fR it deallocates it from the shared memory segment -underlaying \fImm\fR. -.Ip "void *\fBmm_realloc\fR(\s-1MM\s0 *\fImm\fR, void *\fIptr\fR, size_t \fIsize\fR);" 4 -This function reallocates the chunk starting at \fIptr\fR inside the shared -memory pool \fImm\fR with the new size of \fIsize\fR bytes. It behaves like the -\s-1POSIX\s0.1 \fIrealloc\fR\|(3) function but instead of reallocating memory in the -\fIheap\fR it reallocates it in the shared memory segment underlaying \fImm\fR. -.Ip "void *\fBmm_calloc\fR(\s-1MM\s0 *\fImm\fR, size_t \fInumber\fR, size_t \fIsize\fR);" 4 -This is similar to \fImm_malloc\fR\|(3), but additionally clears the chunk. It behaves -like the \s-1POSIX\s0.1 \fIcalloc\fR\|(3) function. It allocates space for \fInumber\fR -objects, each \fIsize\fR bytes in length from the shared memory pool \fImm\fR. The -result is identical to calling \fImm_malloc\fR\|(3) with an argument of ``\fInumber\fR * -\fIsize\fR'\*(R', with the exception that the allocated memory is initialized to nul -bytes. -.Ip "char *\fBmm_strdup\fR(\s-1MM\s0 *\fImm\fR, const char *\fIstr\fR);" 4 -This function behaves like the \s-1POSIX\s0.1 \fIstrdup\fR\|(3) function. It allocates -sufficient memory inside the shared memory pool \fImm\fR for a copy of the string -\fIstr\fR, does the copy, and returns a pointer to it. The pointer may -subsequently be used as an argument to the function \fImm_free\fR\|(3). If -insufficient shared memory is available, \f(CWNULL\fR is returned. -.Ip "size_t \fBmm_sizeof\fR(const void *\fIptr\fR);" 4 -This function returns the size in bytes of the chunk starting at \fIptr\fR when -\fIptr\fR was previously allocated with \fImm_malloc\fR\|(3). The result is undefined -when \fIptr\fR was not previously allocated with \fImm_malloc\fR\|(3). -.Ip "size_t \fBmm_maxsize\fR(void);" 4 -This function returns the maximum size which is allowed as the first argument -to the \fImm_create\fR\|(3) function. -.Ip "size_t \fBmm_available\fR(\s-1MM\s0 *\fImm\fR);" 4 -Returns the amount in bytes of still available (free) memory in the -shared memory pool \fImm\fR. -.Ip "char *\fBmm_error\fR(void);" 4 -Returns the last error message which occurred inside the \fB\s-1MM\s0\fR library. -.Ip "void \fBmm_display_info\fR(\s-1MM\s0 *\fImm\fR);" 4 -This is debugging function which displays a summary page for the shared memory -pool \fImm\fR describing various internal sizes and counters. -.Sh "Low-Level Shared Memory \s-1API\s0" -.Ip "void *\fBmm_core_create\fR(size_t \fIsize\fR, const char *\fIfile\fR);" 4 -This creates a shared memory area which is at least \fIsize\fR bytes in size with -the help of \fIfile\fR. The value \fIsize\fR has to be greater than 0 and less or -equal the value returned by \fImm_core_maxsegsize\fR\|(3). Here \fIfile\fR is a -filesystem path to a file which need not to exist (and perhaps is never -created because this depends on the platform and chosen shared memory and -mutex implementation). The return value is either a (virtual memory word -aligned) pointer to the shared memory segment or \f(CWNULL\fR in case of an error. -The application is guaranteed to be able to access the shared memory segment -from byte 0 to byte \fIsize\fR\-1 starting at the returned address. -.Ip "int \fBmm_core_permission\fR(void *\fIcore\fR, mode_t \fImode\fR, uid_t \fIowner\fR, gid_t \fIgroup\fR);" 4 -This sets the filesystem \fImode\fR, \fIowner\fR and \fIgroup\fR for the shared memory -segment \fIcode\fR (has effects only when the underlaying shared memory segment -implementation is actually based on external auxiliary files). The arguments -are directly passed through to \fIchmod\fR\|(2) and \fIchown\fR\|(2). -.Ip "void \fBmm_core_delete\fR(void *\fIcore\fR);" 4 -This deletes a shared memory segment \fIcore\fR (as previously returned by a -\fImm_core_create\fR\|(3) call). After this operation, accessing the segment starting -at \fIcore\fR is no longer allowed and will usually lead to a segmentation fault. -.Ip "int \fBmm_core_lock\fR(const void *\fIcore\fR, mm_lock_mode \fImode\fR);" 4 -This function acquires an advisory lock for the current process on the shared -memory segment \fIcore\fR for either shared/read-only (\fImode\fR is \f(CWMM_LOCK_RD\fR) -or exclusive/read-write (\fImode\fR is \f(CWMM_LOCK_RW\fR) operations between -\fIfork\fR\|(2)'ed child processes. -.Ip "int \fBmm_core_unlock\fR(const void *\fIcore\fR);" 4 -This function releases a previously acquired advisory lock for the current -process on the shared memory segment \fIcore\fR. -.Ip "size_t \fBmm_core_size\fR(const void *\fIcore\fR);" 4 -This returns the size in bytes of \fIcore\fR. This size is exactly the size which -was used for creating the shared memory area via \fImm_core_create\fR\|(3). The -function is provided just for convenience reasons to not require the -application to remember the memory size behind \fIcore\fR itself. -.Ip "size_t \fBmm_core_maxsegsize\fR(void);" 4 -This returns the number of bytes of a maximum-size shared memory segment which -is allowed to allocate via the \s-1MM\s0 library. It is between a few \s-1KB\s0 and the soft -limit of 64MB. -.Ip "size_t \fBmm_core_align2page\fR(size_t \fIsize\fR);" 4 -This is just a utility function which can be used to align the number \fIsize\fR -to the next virtual memory \fIpage\fR boundary used by the underlaying platform. -The memory page boundary under Unix platforms is usually somewhere between -2048 and 16384 bytes. You don't have to align the \fIsize\fR arguments of other -\fB\s-1MM\s0\fR library functions yourself, because this is already done internally. -This function is exported by the \fB\s-1MM\s0\fR library just for convenience reasons in -case an application wants to perform simular calculations for other purposes. -.Ip "size_t \fBmm_core_align2word\fR(size_t \fIsize\fR);" 4 -This is another utility function which can be used to align the number \fIsize\fR -to the next virtual memory \fIword\fR boundary used by the underlaying platform. -The memory word boundary under Unix platforms is usually somewhere between 4 -and 16 bytes. You don't have to align the \fIsize\fR arguments of other \fB\s-1MM\s0\fR -library functions yourself, because this is already done internally. This -function is exported by the \fB\s-1MM\s0\fR library just for convenience reasons in case -an application wants to perform simular calculations for other purposes. -.Sh "Low-Level Shared Memory \s-1API\s0" -.Ip "void \fBmm_lib_error_set\fR(unsigned int, const char *str);" 4 -This is a function which is used internally by the various \s-1MM\s0 function to set -an error string. It's usually not called directly from applications. -.Ip "char *\fBmm_lib_error_get\fR(void);" 4 -This is a function which is used internally by \fIMM_error\fR\|(3) and \fImm_error\fR\|(3) -functions to get the current error string. It's usually not called directly -from applications. -.Ip "int \fBmm_lib_version\fR(void);" 4 -This function returns a hex-value ``0x\fIV\fR\fI\s-1RR\s0\fR\fIT\fR\fI\s-1LL\s0\fR'\*(R' which describes the -current \s-1MM\s0 library version. \fIV\fR is the version, \fI\s-1RR\s0\fR the revisions, \fI\s-1LL\s0\fR -the level and \fIT\fR the type of the level (alphalevel=0, betalevel=1, -patchlevel=2, etc). For instance \s-1MM\s0 version 1.0.4 is encoded as 0x100204. The -reason for this unusual mapping is that this way the version number is -steadily \fIincreasing\fR. -.SH "RESTRICTIONS" -The maximum size of a continuous shared memory segment one can allocate -depends on the underlaying platform. This cannot be changed, of course. But -currently the high-level \fImalloc\fR\|(3)\-style API just uses a single shared memory -segment as the underlaying data structure for an \f(CWMM\fR object which means that -the maximum amount of memory a \f(CWMM\fR object represents also depends on the -platform. -.PP -This should be changed in later versions by allowing the high-level -\fImalloc\fR\|(3)\-style API to internally use multiple shared memory segments to form -the \f(CWMM\fR object. This way \f(CWMM\fR objects could have arbitrary sizes, although -the maximum size of an allocatable chunk still is bounded by the maximum size -of a shared memory segment. -.SH "SEE ALSO" -mm-\fIconfig\fR\|(1). -.PP -\fImalloc\fR\|(3), \fIcalloc\fR\|(3), \fIrealloc\fR\|(3), \fIstrdup\fR\|(3), \fIfree\fR\|(3), \fImmap\fR\|(2), \fIshmget\fR\|(2), -\fIshmctl\fR\|(2), \fIflock\fR\|(2), \fIfcntl\fR\|(2), \fIsemget\fR\|(2), \fIsemctl\fR\|(2), \fIsemop\fR\|(2). -.SH "HOME" -http://www.engelschall.com/sw/mm/ - -.SH "HISTORY" -This library was originally written in January 1999 by \fIRalf S. Engelschall\fR - for use in the \fBExtended API\fR (EAPI) of the \fBApache\fR -HTTP server project (see www.apache.org), which was originally invented for -\fBmod_ssl\fR (see http://www.modssl.org/). -.PP -It's base idea (a malloc-style API for handling shared memory) was originally -derived from the non-publically available \fImm_malloc\fR library written in -October 1997 by \fICharles Randall\fR for MatchLogic, -Inc. -.SH "AUTHOR" -.PP -.Vb 3 -\& Ralf S. Engelschall -\& rse@engelschall.com -\& www.engelschall.com -.Ve - -.rn }` '' -.IX Title "mm 3" -.IX Name "B" - -.IX Header "NAME" - -.IX Header "VERSION" - -.IX Header "SYNOPSIS" - -.IX Header "DESCRIPTION" - -.IX Subsection "\s-1LIBRARY\s0 \s-1STRUCTURE\s0" - -.IX Item "\fBGlobal Malloc-Replacement \s-1API\s0\fR" - -.IX Item "\fBStandard Malloc-Style \s-1API\s0\fR" - -.IX Item "\fBLow-Level Shared Memory \s-1API\s0\fR" - -.IX Subsection "\s-1SHARED\s0 \s-1MEMORY\s0 \s-1IMPLEMENTATION\s0" - -.IX Item "Classical mmap(2) on temporary file (\s-1MMFILE\s0)" - -.IX Item "mmap(2) via \s-1POSIX\s0.1 shm_open(3) on temporary file (\s-1MMPOSX\s0)" - -.IX Item "\s-1SVR4-\s0style mmap(2) on \f(CW/dev/zero\fR device (\s-1MMZERO\s0)" - -.IX Item "4.4BSD\-style mmap(2) via \f(CWMAP_ANON\fR facility (\s-1MMANON\s0)" - -.IX Item "SysV \s-1IPC\s0 shmget(2) (\s-1IPCSHM\s0)" - -.IX Subsection "\s-1LOCKING\s0 \s-1IMPLEMENTATION\s0" - -.IX Item "4.2BSD\-style flock(2) on temporary file (\s-1FLOCK\s0)" - -.IX Item "SysV \s-1IPC\s0 semget(2) (\s-1IPCSEM\s0)" - -.IX Item "\s-1SVR4-\s0style fcntl(2) on temporary file (\s-1FCNTL\s0)" - -.IX Subsection "\s-1MEMORY\s0 \s-1ALLOCATION\s0 \s-1STRATEGY\s0" - -.IX Item "\fBAllocation\fR" - -.IX Item "\fBDeallocation\fR" - -.IX Header "API FUNCTIONS" - -.IX Subsection "Global Malloc-Replacement \s-1API\s0" - -.IX Item "int \fBMM_create\fR(size_t \fIsize\fR, const char *\fIfile\fR);" - -.IX Item "int \fBMM_permission\fR(mode_t \fImode\fR, uid_t \fIowner\fR, gid_t \fIgroup\fR);" - -.IX Item "void \fBMM_destroy\fR(void);" - -.IX Item "int \fBMM_lock\fR(mm_lock_mode \fImode\fR);" - -.IX Item "int \fBMM_unlock\fR(void);" - -.IX Item "void *\fBMM_malloc\fR(size_t \fIsize\fR);" - -.IX Item "void \fBMM_free\fR(void *\fIptr\fR);" - -.IX Item "void *\fBMM_realloc\fR(void *\fIptr\fR, size_t \fIsize\fR);" - -.IX Item "void *\fBMM_calloc\fR(size_t \fInumber\fR, size_t \fIsize\fR);" - -.IX Item "char *\fBMM_strdup\fR(const char *\fIstr\fR);" - -.IX Item "size_t \fBMM_sizeof\fR(const void *\fIptr\fR);" - -.IX Item "size_t \fBMM_maxsize\fR(void);" - -.IX Item "size_t \fBMM_available\fR(void);" - -.IX Item "char *\fBMM_error\fR(void);" - -.IX Subsection "Standard Malloc-Style \s-1API\s0" - -.IX Item "\s-1MM\s0 *\fBmm_create\fR(size_t \fIsize\fR, const char *\fIfile\fR);" - -.IX Item "int \fBmm_permission\fR(\s-1MM\s0 *\fImm\fR, mode_t \fImode\fR, uid_t \fIowner\fR, gid_t \fIgroup\fR);" - -.IX Item "void \fBmm_destroy\fR(\s-1MM\s0 *\fImm\fR);" - -.IX Item "int \fBmm_lock\fR(\s-1MM\s0 *\fImm\fR, mm_lock_mode \fImode\fR);" - -.IX Item "int \fBMM_unlock\fR(\s-1MM\s0 *\fImm\fR);" - -.IX Item "void *\fBmm_malloc\fR(\s-1MM\s0 *\fImm\fR, size_t \fIsize\fR);" - -.IX Item "void \fBmm_free\fR(\s-1MM\s0 *\fImm\fR, void *\fIptr\fR);" - -.IX Item "void *\fBmm_realloc\fR(\s-1MM\s0 *\fImm\fR, void *\fIptr\fR, size_t \fIsize\fR);" - -.IX Item "void *\fBmm_calloc\fR(\s-1MM\s0 *\fImm\fR, size_t \fInumber\fR, size_t \fIsize\fR);" - -.IX Item "char *\fBmm_strdup\fR(\s-1MM\s0 *\fImm\fR, const char *\fIstr\fR);" - -.IX Item "size_t \fBmm_sizeof\fR(const void *\fIptr\fR);" - -.IX Item "size_t \fBmm_maxsize\fR(void);" - -.IX Item "size_t \fBmm_available\fR(\s-1MM\s0 *\fImm\fR);" - -.IX Item "char *\fBmm_error\fR(void);" - -.IX Item "void \fBmm_display_info\fR(\s-1MM\s0 *\fImm\fR);" - -.IX Subsection "Low-Level Shared Memory \s-1API\s0" - -.IX Item "void *\fBmm_core_create\fR(size_t \fIsize\fR, const char *\fIfile\fR);" - -.IX Item "int \fBmm_core_permission\fR(void *\fIcore\fR, mode_t \fImode\fR, uid_t \fIowner\fR, gid_t \fIgroup\fR);" - -.IX Item "void \fBmm_core_delete\fR(void *\fIcore\fR);" - -.IX Item "int \fBmm_core_lock\fR(const void *\fIcore\fR, mm_lock_mode \fImode\fR);" - -.IX Item "int \fBmm_core_unlock\fR(const void *\fIcore\fR);" - -.IX Item "size_t \fBmm_core_size\fR(const void *\fIcore\fR);" - -.IX Item "size_t \fBmm_core_maxsegsize\fR(void);" - -.IX Item "size_t \fBmm_core_align2page\fR(size_t \fIsize\fR);" - -.IX Item "size_t \fBmm_core_align2word\fR(size_t \fIsize\fR);" - -.IX Subsection "Low-Level Shared Memory \s-1API\s0" - -.IX Item "void \fBmm_lib_error_set\fR(unsigned int, const char *str);" - -.IX Item "char *\fBmm_lib_error_get\fR(void);" - -.IX Item "int \fBmm_lib_version\fR(void);" - -.IX Header "RESTRICTIONS" - -.IX Header "SEE ALSO" - -.IX Header "HOME" - -.IX Header "HISTORY" - -.IX Header "AUTHOR" - diff --git a/shmem/unix/mm/mm.h b/shmem/unix/mm/mm.h deleted file mode 100644 index f97ab6607..000000000 --- a/shmem/unix/mm/mm.h +++ /dev/null @@ -1,349 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * 4. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY - * EXPRESSED 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 RALF S. ENGELSCHALL OR - * ITS 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. - * ==================================================================== - */ - -/* -** -** mm.h -- Shared Memory library API header -** -*/ - -#ifndef MM_H -#define MM_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** ____ Public Part (I) of the API ________________________ -*/ - -#include -#include -#include -#include -#include -#include - -/* -** ____ Private Part of the API ___________________________ -*/ - -#if defined(MM_PRIVATE) - -#include "mm_conf.h" - -#include -#include -#include -#include -#include -#include - -#ifdef MM_OS_SUNOS -#include -/* SunOS lacks prototypes */ -extern int getpagesize(void); -extern int munmap(caddr_t addr, int len); -extern int ftruncate(int fd, off_t length); -extern int flock(int fd, int operation); -extern char *strerror (int err); -#endif - -#if !defined(FALSE) -#define FALSE 0 -#endif -#if !defined(TRUE) -#define TRUE !FALSE -#endif -#if !defined(NULL) -#define NULL (void *)0 -#endif -#if !defined(NUL) -#define NUL '\0' -#endif -#if !defined(min_of) -#define min_of(a,b) ((a) < (b) ? (a) : (b)) -#endif -#if !defined(max_of) -#define max_of(a,b) ((a) > (b) ? (a) : (b)) -#endif -#if !defined(absof) -#define abs_of(a) ((a) < 0 ? -(a) : (a)) -#endif -#if !defined(offset_of) -#define offset_of(type,member) ((size_t)(&((type *)0)->member)) -#endif - -#if !defined(HAVE_MEMCPY) -#if defined(HAVE_BCOPY) -#define memcpy(to,from,len) bcopy(from,to,len) -#else -#define memcpy(to,from,len) \ - { int i; for (i = 0; i < (len); i++) *((to)+i) = *((from)+i); } -#endif -#endif -#if !defined(HAVE_MEMSET) -#define memset(to,ch,len) \ - { int i; for (i = 0; i < (len); i++) *((to)+i) = (ch); } -#endif - -#define ERR(type,str) mm_lib_error_set(type,str) -#define FAIL(type,str) { ERR(type,str); goto cus; } -#define BEGIN_FAILURE cus: -#define END_FAILURE - -#if defined(HAVE_PATH_MAX) -#define MM_MAXPATH PATH_MAX -#elif defined(HAVE__POSIX_PATH_MAX) -#define MM_MAXPATH _POSIX_PATH_MAX -#elif defined(HAVE_MAXPATHLEN) -#define MM_MAXPATH MAXPATHLEN -#else -#define MM_MAXPATH 2048 -#endif - -#if defined(HAVE_CHILD_MAX) -#define MM_MAXCHILD CHILD_MAX -#elif defined(HAVE__POSIX_CHILD_MAX) -#define MM_MAXCHILD _POSIX_CHILD_MAX -#else -#define MM_MAXCHILD 512 -#endif - -#if defined(MM_SHMT_MMANON) || defined(MM_SHMT_MMPOSX) ||\ - defined(MM_SHMT_MMZERO) || defined(MM_SHMT_MMFILE) -#include -#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) -#define MAP_ANON MAP_ANONYMOUS -#endif -#if !defined(MAP_FAILED) -#define MAP_FAILED ((void *)-1) -#endif -#endif - -#if defined(MM_SHMT_IPCSHM) || defined(MM_SEMT_IPCSEM) -#include -#endif - -#if defined(MM_SHMT_IPCSHM) -#include -#endif - -#if defined(MM_SEMT_IPCSEM) -#include -#ifndef HAVE_UNION_SEMUN -union semun { - int val; - struct semid_ds *buf; - u_short *array; -}; -#endif -#endif - -#ifdef MM_SEMT_FLOCK -#include -#endif - -#define MM_ALLOC_MINSIZE (1024*8) -#define MM_CORE_FILEMODE (S_IRUSR|S_IWUSR) -#define MM_CORE_DEFAULT_PAGESIZE (1024*8) -#define MM_CORE_DEFAULT_FILE "/tmp/mm.core.%d" /* %d is PID */ - -#define MM_ERR_ALLOC 1 -#define MM_ERR_CORE 2 -#define MM_ERR_SYSTEM 4 - -/* - * Define a union with types which are likely to have the longest - * *relevant* CPU-specific memory word alignment restrictions... - */ -union mem_word { - void *mw_vp; - void (*mw_fp)(void); - char *mw_cp; - long mw_l; - double mw_d; -}; -typedef union mem_word mem_word; -#define SIZEOF_mem_word (sizeof(mem_word)) - -/* - * Define the structure used for memory chunks - */ -union mem_chunk_mc_u { - struct mem_chunk *mc_next; /* really used when it's free */ - mem_word mc_base; /* virtually used when it's allocated */ -}; -struct mem_chunk { - size_t mc_size; /* physical size */ - size_t mc_usize; /* user known size */ - union mem_chunk_mc_u mc_u; -}; -typedef struct mem_chunk mem_chunk; -#define SIZEOF_mem_chunk (sizeof(mem_chunk)-sizeof(union mem_chunk_mc_u)) - -/* - * Define the structure describing a memory pool - */ -struct mem_pool { - size_t mp_size; - size_t mp_offset; - mem_chunk mp_freechunks; - mem_word mp_base; -}; -typedef struct mem_pool mem_pool; -#define SIZEOF_mem_pool (sizeof(mem_pool)-SIZEOF_mem_word) - -/* - * Define the structure holding per-process filedescriptors - */ -#if defined(MM_SEMT_FLOCK) -struct mem_core_fd { - pid_t pid; - int fd; -}; -typedef struct mem_core_fd mem_core_fd; -#define SIZEOF_mem_core_fd (sizeof(mem_core_fd) -#endif - -/* - * Define the structure describing a shared memory core area - * (the actual contents depends on the shared memory and - * semaphore/mutex type and is stripped down to a minimum - * required) - */ -struct mem_core { - size_t mc_size; - size_t mc_usize; - pid_t mc_pid; - int mc_fdmem; -#if defined(MM_SHMT_MMFILE) - char mc_fnmem[MM_MAXPATH]; -#endif -#if !defined(MM_SEMT_FLOCK) - int mc_fdsem; -#endif -#if defined(MM_SEMT_FLOCK) - mem_core_fd mc_fdsem[MM_MAXCHILD]; -#endif -#if defined(MM_SEMT_IPCSEM) - int mc_fdsem_rd; - int mc_readers; - mm_lock_mode mc_lockmode; -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - char mc_fnsem[MM_MAXPATH]; -#endif - mem_word mc_base; -}; -typedef struct mem_core mem_core; -#define SIZEOF_mem_core (sizeof(mem_core)-SIZEOF_mem_word) - -#endif /* MM_PRIVATE */ - -/* -** ____ Public Part (II) of the API _______________________ -*/ - -#if defined(MM_PRIVATE) -typedef mem_pool MM; -#else -typedef void MM; -#endif - -typedef enum { - MM_LOCK_RD, MM_LOCK_RW -} mm_lock_mode; - -/* Global Malloc-Replacement API */ -int MM_create(size_t size, const char *file); -int MM_permission(mode_t mode, uid_t owner, gid_t group); -void MM_destroy(void); -int MM_lock(mm_lock_mode mode); -int MM_unlock(void); -void *MM_malloc(size_t size); -void *MM_realloc(void *ptr, size_t size); -void MM_free(void *ptr); -void *MM_calloc(size_t number, size_t size); -char *MM_strdup(const char *str); -size_t MM_sizeof(const void *ptr); -size_t MM_maxsize(void); -size_t MM_available(void); -char *MM_error(void); - -/* Standard Malloc-Style API */ -MM *mm_create(size_t size, const char *file); -int mm_permission(MM *mm, mode_t mode, uid_t owner, gid_t group); -void mm_destroy(MM *mm); -int mm_lock(MM *mm, mm_lock_mode mode); -int mm_unlock(MM *mm); -void *mm_malloc(MM *mm, size_t size); -void *mm_realloc(MM *mm, void *ptr, size_t size); -void mm_free(MM *mm, void *ptr); -void *mm_calloc(MM *mm, size_t number, size_t size); -char *mm_strdup(MM *mm, const char *str); -size_t mm_sizeof(MM *mm, const void *ptr); -size_t mm_maxsize(void); -size_t mm_available(MM *mm); -char *mm_error(void); -void mm_display_info(MM *mm); - -/* Low-Level Shared Memory API */ -void *mm_core_create(size_t size, const char *file); -int mm_core_permission(void *core, mode_t mode, uid_t owner, gid_t group); -void mm_core_delete(void *core); -size_t mm_core_size(const void *core); -int mm_core_lock(const void *core, mm_lock_mode mode); -int mm_core_unlock(const void *core); -size_t mm_core_maxsegsize(void); -size_t mm_core_align2page(size_t size); -size_t mm_core_align2word(size_t size); - -/* Internal Library API */ -void mm_lib_error_set(unsigned int, const char *str); -char *mm_lib_error_get(void); -int mm_lib_version(void); - -#ifdef __cplusplus -} -#endif - -#endif /* MM_H */ diff --git a/shmem/unix/mm/mm.pod b/shmem/unix/mm/mm.pod deleted file mode 100644 index b98fcfa04..000000000 --- a/shmem/unix/mm/mm.pod +++ /dev/null @@ -1,633 +0,0 @@ -## ==================================================================== -## Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: -## "This product includes software developed by -## Ralf S. Engelschall ." -## -## 4. Redistributions of any form whatsoever must retain the following -## acknowledgment: -## "This product includes software developed by -## Ralf S. Engelschall ." -## -## THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY -## EXPRESSED 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 RALF S. ENGELSCHALL OR -## ITS 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. -## ==================================================================== - -## -## mm.pod -- Manpage -## - -=pod - -=head1 NAME - -B - -=head1 VERSION - -MM MM_VERSION_STR - -=head1 SYNOPSIS - - #include "mm.h" - -B< Global Malloc-Replacement API> - - int MM_create(size_t size, const char *file); - int MM_permission(mode_t mode, uid_t owner, gid_t group); - void MM_destroy(void); - int MM_lock(mm_lock_mode mode); - int MM_unlock(void); - void *MM_malloc(size_t size); - void *MM_realloc(void *ptr, size_t size); - void MM_free(void *ptr); - void *MM_calloc(size_t number, size_t size); - char *MM_strdup(const char *str); - size_t MM_sizeof(void *ptr); - size_t MM_maxsize(void); - size_t MM_available(void); - char *MM_error(void); - -B< Standard Malloc-Style API> - - MM *mm_create(size_t size, char *file); - int mm_permission(MM *mm, mode_t mode, uid_t owner, gid_t group); - void mm_destroy(MM *mm); - int mm_lock(MM *mm, mm_lock_mode mode); - int mm_unlock(MM *mm); - void *mm_malloc(MM *mm, size_t size); - void *mm_realloc(MM *mm, void *ptr, size_t size); - void mm_free(MM *mm, void *ptr); - void *mm_calloc(MM *mm, size_t number, size_t size); - char *mm_strdup(MM *mm, const char *str); - size_t mm_sizeof(void *ptr); - size_t mm_maxsize(void); - size_t mm_available(MM *mm); - char *mm_error(void); - void mm_display_info(MM *mm); - -B< Low-level Shared Memory API> - - void *mm_core_create(size_t size, char *file); - int mm_core_permission(void *core, mode_t mode, uid_t owner, gid_t group); - void mm_core_delete(void *core); - int mm_core_lock(void *core, mm_lock_mode mode); - int mm_core_unlock(void *core); - size_t mm_core_size(void *core); - size_t mm_core_maxsegsize(void); - size_t mm_core_align2page(size_t size); - size_t mm_core_align2click(size_t size); - -B< Internal Library API> - - void mm_lib_error_set(unsigned int, const char *str); - char *mm_lib_error_get(void); - int mm_lib_version(void); - -=head1 DESCRIPTION - -The B library is a 2-layer abstraction library which simplifies the usage -of shared memory between forked (and this way strongly related) processes -under Unix platforms. On the first (lower) layer it hides all platform -dependent implementation details (allocation and locking) when dealing with -shared memory segments and on the second (higher) layer it provides a -high-level malloc(3)-style API for a convenient and well known way to work -with data-structures inside those shared memory segments. - -The abbreviation B is historically and originally comes from the phrase -``I'' as used by the POSIX.1 mmap(2) function. Because this -facility is internally used by this library on most platforms to create the -shared memory segments. - -=head2 LIBRARY STRUCTURE - -This library is structured into three main APIs which are internally based on -each other: - -=over 4 - -=item B - -This is the most high-level API which directly can be used as replacement API -for the POSIX.1 memory allocation API (malloc(2) and friends). This is -useful when converting I based data structures to I -based data structures without the need to change the code dramatically. All -which is needed is to prefix the POSIX.1 memory allocation functions with -C, i.e. C becomes C, C becomes C, -etc. This API internally uses just a global C pool for calling the -corresponding functions (with prefix C) of the I. - -=item B - -This is the standard high-level memory allocation API. It's interface is -similar to the I but it uses an explicit C -pool to operate on. That's why every function of this API has an argument of -type C as the first argument. This API provides a comfortable way to -work with small dynamically allocated shared memory chunks inside large -statically allocated shared memory segments. It's internally based on the -I for creating the underlaying shared memory -segment. - -=item B - -This is the basis of the whole B library. It provides low-level functions -for creating shared memory segments with mutual exclusion (in short: I) -capabilities in a portable way. Internally the shared memory and mutex -facility is implemented in various platform-dependent ways. A list of -implementation variants follows under the next topic. - -=back - -=head2 SHARED MEMORY IMPLEMENTATION - -Internally the shared memory facility is implemented in various -platform-dependent variants. Each has it's own advantages and disadvantages -(in addition to the fact that some variants aren't available at all on some -platforms). The MM libraries configuration procedure tried hard to make a good -decision. The implemented variants are now given for overview and background -reasons with their advantages and disadvantages and in an ascending order, -i.e. the MM configuration mechanism chooses the last available one in the list -as the preferred variant. - -=over 4 - -=item Classical mmap(2) on temporary file (MMFILE) - -I maximum portable. -I needs a temporary file on the filesystem - -=item mmap(2) via POSIX.1 shm_open(3) on temporary file (MMPOSX) - -I standardized by POSIX.1 and theoretically portable. -I needs a temporary file on the filesystem and is -is usually not available on existing Unix platform. - -=item SVR4-style mmap(2) on C device (MMZERO) - -I widely available on mostly portable on SVR4 platforms. -I needs the C device and an mmap(2) -which supports memory mapping through it. - -=item 4.4BSD-style mmap(2) via C facility (MMANON) - -I doesn't need a temporary file or external device -I usually only available on BSD platforms and derivatives. - -=item SysV IPC shmget(2) (IPCSHM) - -I doesn't need a temporary file or external device -I although available on mostly all modern Unix platforms it has -hard restrictions like the maximum size of a single shared memory segment (can -be as small as 100KB, but depends on the platform). - -=back - -=head2 LOCKING IMPLEMENTATION - -As for the shared memory facility, internally the locking facility is -implemented in various platform-dependent variants. A short overview of -implemented variants is given: - -=over 4 - -=item 4.2BSD-style flock(2) on temporary file (FLOCK) - -I exists on a lot of platforms, especially on older Unix -derivates. I needs a temporary file on the filesystem and has -to reopen filedescriptors to it in each(!) fork(2)ed child process. - -=item SysV IPC semget(2) (IPCSEM) - -I exists on a lot of platforms and doesn't need a temporary file. -I an unmeant termination of the application leads to a -semaphore leak because the facility doesn't allow an "remove in advance" trick -(as the IPC shared memory facility does!) for safe cleanups. - -=item SVR4-style fcntl(2) on temporary file (FCNTL) - -I exists on a lot of platforms and is also the most powerful -variant (although not always the fastest one). I needs a -temporary file. - -=back - -=head2 MEMORY ALLOCATION STRATEGY - -The memory allocation strategy the I functions use -internally is the following: - -=over 4 - -=item B - -When a chunk of memory has to be allocated, the internal list of free chunks -is searched for a minimal-sized chunk which is larger or equal than the size -of the to be allocated chunk (some sort of a I). - -When a chunk is found which matches this best-fit criteria, but is still a lot -larger than the requested size, it is split into two chunks: One with exactly -the requested size (which is the resulting chunk) and one with the remaining -size (which is immediately re-inserted into the list of free chunks). - -When no fitting chunk is found at all in the list of free chunks, a new one is -created from the spare area of the shared memory segment until the segment is -full (in which case an I error occurs). - -=item B - -When a chunk of memory has to be deallocated, it is inserted in sorted manner -into the internal list of free chunks. The insertion operation automatically -merges the chunk with a previous and/or next free chunk when possible, i.e. -the free chunks stay physically seamless (one after another) in memory, to -automatically form larger free chunks out of smaller ones. - -This way the shared memory segment is automatically defragmented when memory -is deallocated. - -=back - -This strategy reduces memory waste and fragmentation caused by small and -frequent allocations and deallocations to a minimum. - -The internal implementation of the list of free chunks is not specially -optimized (for instance by using binary search trees or even splay trees, -etc.), because it's assumed that the total amount of entries in the list of -free chunks is always small (caused both by the fact that shared memory -segments are usually a lot smaller than heaps and the fact that we always -defragment by merging the free chunks when possible). - -=head1 API FUNCTIONS - -In the following all API functions are described in detail. -The order directly follows the one in the SYNOPSIS. - -=head2 Global Malloc-Replacement API - -=over 4 - -=item int B(size_t I, const char *I); - -This initialized the global shared memory pool with I and I and -has be called I any fork(2) operations are performed by the -application. - -=item int B(mode_t I, uid_t I, gid_t I); - -This sets the filesystem I, I and I for the global shared -memory pool (has effects only when the underlaying shared memory segment -implementation is actually based on external auxiliary files). The arguments -are directly passed through to chmod(2) and chown(2). - -=item void B(void); - -This destroys the global shared memory pool and should be called I all -child processes were killed. - -=item int B(mm_lock_mode I); - -This locks the global shared memory pool for the current process in order to -perform either shared/read-only (I is C) or -exclusive/read-write (I is C) operations inside the global -shared memory pool. - -=item int B(void); - -This unlocks the global shared memory pool for the current process after -mutual exclusion operations were performed inside the global shared memory -pool. - -=item void *B(size_t I); - -Identical to the POSIX.1 malloc(3) function but instead of allocating -memory from the I it allocates it from the global shared memory pool. - -=item void B(void *I); - -Identical to the POSIX.1 free(3) function but instead of deallocating -memory in the I it deallocates it in the global shared memory pool. - -=item void *B(void *I, size_t I); - -Identical to the POSIX.1 realloc(3) function but instead of reallocating -memory in the I it reallocates it inside the global shared memory pool. - -=item void *B(size_t I, size_t I); - -Identical to the POSIX.1 calloc(3) function but instead of allocating and -initializing memory from the I it allocates and initializes it from the -global shared memory pool. - -=item char *B(const char *I); - -Identical to the POSIX.1 strdup(3) function but instead of creating the -string copy in the I it creates it in the global shared memory pool. - -=item size_t B(const void *I); - -This function returns the size in bytes of the chunk starting at I when -I was previously allocated with MM_malloc(3). The result is undefined -when I was not previously allocated with MM_malloc(3). - -=item size_t B(void); - -This function returns the maximum size which is allowed -as the first argument to the MM_create(3) function. - -=item size_t B(void); - -Returns the amount in bytes of still available (free) memory in the global -shared memory pool. - -=item char *B(void); - -Returns the last error message which occurred inside the B library. - -=back - -=head2 Standard Malloc-Style API - -=over 4 - -=item MM *B(size_t I, const char *I); - -This creates a shared memory pool which has space for approximately a total of -I bytes with the help of I. Here I is a filesystem path to a -file which need not to exist (and perhaps is never created because this -depends on the platform and chosen shared memory and mutex implementation). -The return value is a pointer to an C structure which should be treated as -opaque by the application. It describes the internals of the created shared -memory pool. In case of an error C is returned. A I of 0 means to -allocate the maximum allowed size which is platform dependent and between a -few KB and the soft limit of 64MB. - -=item int B(MM *I, mode_t I, uid_t I, gid_t I); - -This sets the filesystem I, I and I for the shared memory -pool I (has effects only when the underlaying shared memory segment -implementation is actually based on external auxiliary files). The arguments -are directly passed through to chmod(2) and chown(2). - -=item void B(MM *I); - -This destroys the complete shared memory pool I and with it all chunks -which were allocated in this pool. Additionally any created files on the -filesystem corresponding the to shared memory pool are unlinked. - -=item int B(MM *I, mm_lock_mode I); - -This locks the shared memory pool I for the current process in order to -perform either shared/read-only (I is C) or -exclusive/read-write (I is C) operations inside the global -shared memory pool. - -=item int B(MM *I); - -This unlocks the shared memory pool I for the current process after mutual -exclusion operations were performed inside the global shared memory pool. - -=item void *B(MM *I, size_t I); - -This function allocates I bytes from the shared memory pool I and -returns either a (virtual memory word aligned) pointer to it or C in -case of an error (out of memory). It behaves like the POSIX.1 malloc(3) -function but instead of allocating memory from the I it allocates it -from the shared memory segment underlaying I. - -=item void B(MM *I, void *I); - -This deallocates the chunk starting at I in the shared memory pool I. -It behaves like the POSIX.1 free(3) function but instead of deallocating -memory from the I it deallocates it from the shared memory segment -underlaying I. - -=item void *B(MM *I, void *I, size_t I); - -This function reallocates the chunk starting at I inside the shared -memory pool I with the new size of I bytes. It behaves like the -POSIX.1 realloc(3) function but instead of reallocating memory in the -I it reallocates it in the shared memory segment underlaying I. - -=item void *B(MM *I, size_t I, size_t I); - -This is similar to mm_malloc(3), but additionally clears the chunk. It behaves -like the POSIX.1 calloc(3) function. It allocates space for I -objects, each I bytes in length from the shared memory pool I. The -result is identical to calling mm_malloc(3) with an argument of ``I * -I'', with the exception that the allocated memory is initialized to nul -bytes. - -=item char *B(MM *I, const char *I); - -This function behaves like the POSIX.1 strdup(3) function. It allocates -sufficient memory inside the shared memory pool I for a copy of the string -I, does the copy, and returns a pointer to it. The pointer may -subsequently be used as an argument to the function mm_free(3). If -insufficient shared memory is available, C is returned. - -=item size_t B(const void *I); - -This function returns the size in bytes of the chunk starting at I when -I was previously allocated with mm_malloc(3). The result is undefined -when I was not previously allocated with mm_malloc(3). - -=item size_t B(void); - -This function returns the maximum size which is allowed as the first argument -to the mm_create(3) function. - -=item size_t B(MM *I); - -Returns the amount in bytes of still available (free) memory in the -shared memory pool I. - -=item char *B(void); - -Returns the last error message which occurred inside the B library. - -=item void B(MM *I); - -This is debugging function which displays a summary page for the shared memory -pool I describing various internal sizes and counters. - -=back - -=head2 Low-Level Shared Memory API - -=over 4 - -=item void *B(size_t I, const char *I); - -This creates a shared memory area which is at least I bytes in size with -the help of I. The value I has to be greater than 0 and less or -equal the value returned by mm_core_maxsegsize(3). Here I is a -filesystem path to a file which need not to exist (and perhaps is never -created because this depends on the platform and chosen shared memory and -mutex implementation). The return value is either a (virtual memory word -aligned) pointer to the shared memory segment or C in case of an error. -The application is guaranteed to be able to access the shared memory segment -from byte 0 to byte I-1 starting at the returned address. - -=item int B(void *I, mode_t I, uid_t I, gid_t I); - -This sets the filesystem I, I and I for the shared memory -segment I (has effects only when the underlaying shared memory segment -implementation is actually based on external auxiliary files). The arguments -are directly passed through to chmod(2) and chown(2). - -=item void B(void *I); - -This deletes a shared memory segment I (as previously returned by a -mm_core_create(3) call). After this operation, accessing the segment starting -at I is no longer allowed and will usually lead to a segmentation fault. - -=item int B(const void *I, mm_lock_mode I); - -This function acquires an advisory lock for the current process on the shared -memory segment I for either shared/read-only (I is C) -or exclusive/read-write (I is C) operations between -fork(2)'ed child processes. - -=item int B(const void *I); - -This function releases a previously acquired advisory lock for the current -process on the shared memory segment I. - -=item size_t B(const void *I); - -This returns the size in bytes of I. This size is exactly the size which -was used for creating the shared memory area via mm_core_create(3). The -function is provided just for convenience reasons to not require the -application to remember the memory size behind I itself. - -=item size_t B(void); - -This returns the number of bytes of a maximum-size shared memory segment which -is allowed to allocate via the MM library. It is between a few KB and the soft -limit of 64MB. - -=item size_t B(size_t I); - -This is just a utility function which can be used to align the number I -to the next virtual memory I boundary used by the underlaying platform. -The memory page boundary under Unix platforms is usually somewhere between -2048 and 16384 bytes. You don't have to align the I arguments of other -B library functions yourself, because this is already done internally. -This function is exported by the B library just for convenience reasons in -case an application wants to perform simular calculations for other purposes. - -=item size_t B(size_t I); - -This is another utility function which can be used to align the number I -to the next virtual memory I boundary used by the underlaying platform. -The memory word boundary under Unix platforms is usually somewhere between 4 -and 16 bytes. You don't have to align the I arguments of other B -library functions yourself, because this is already done internally. This -function is exported by the B library just for convenience reasons in case -an application wants to perform simular calculations for other purposes. - -=back - -=head2 Low-Level Shared Memory API - -=over 4 - -=item void B(unsigned int, const char *str); - -This is a function which is used internally by the various MM function to set -an error string. It's usually not called directly from applications. - -=item char *B(void); - -This is a function which is used internally by MM_error(3) and mm_error(3) -functions to get the current error string. It's usually not called directly -from applications. - -=item int B(void); - -This function returns a hex-value ``0xIIII'' which describes the -current MM library version. I is the version, I the revisions, I -the level and I the type of the level (alphalevel=0, betalevel=1, -patchlevel=2, etc). For instance MM version 1.0.4 is encoded as 0x100204. The -reason for this unusual mapping is that this way the version number is -steadily I. - -=back - -=head1 RESTRICTIONS - -The maximum size of a continuous shared memory segment one can allocate -depends on the underlaying platform. This cannot be changed, of course. But -currently the high-level malloc(3)-style API just uses a single shared memory -segment as the underlaying data structure for an C object which means that -the maximum amount of memory a C object represents also depends on the -platform. - -This should be changed in later versions by allowing the high-level -malloc(3)-style API to internally use multiple shared memory segments to form -the C object. This way C objects could have arbitrary sizes, although -the maximum size of an allocatable chunk still is bounded by the maximum size -of a shared memory segment. - -=head1 SEE ALSO - -mm-config(1). - -malloc(3), calloc(3), realloc(3), strdup(3), free(3), mmap(2), shmget(2), -shmctl(2), flock(2), fcntl(2), semget(2), semctl(2), semop(2). - -=head1 HOME - -=for html -http://www.engelschall.com/sw/mm/ - -=for text -http://www.engelschall.com/sw/mm/ - -=for man -http://www.engelschall.com/sw/mm/ - -=head1 HISTORY - -This library was originally written in January 1999 by I - for use in the B (EAPI) of the B -HTTP server project (see www.apache.org), which was originally invented for -B (see http://www.modssl.org/). - -It's base idea (a malloc-style API for handling shared memory) was originally -derived from the non-publically available I library written in -October 1997 by I for MatchLogic, -Inc. - -=head1 AUTHOR - - Ralf S. Engelschall - rse@engelschall.com - www.engelschall.com - -=cut - diff --git a/shmem/unix/mm/mm_alloc.c b/shmem/unix/mm/mm_alloc.c deleted file mode 100644 index 812a4d17b..000000000 --- a/shmem/unix/mm/mm_alloc.c +++ /dev/null @@ -1,446 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * 4. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY - * EXPRESSED 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 RALF S. ENGELSCHALL OR - * ITS 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. - * ==================================================================== - */ - -/* -** -** mm_alloc.c -- Standard Malloc-Style API -** -*/ - -#define MM_PRIVATE -#include "mm.h" - -/* - * Create a memory pool - */ -MM *mm_create(size_t usize, const char *file) -{ - MM *mm = NULL; - void *core; - size_t size; - size_t maxsize; - - /* defaults */ - maxsize = mm_maxsize(); - if (usize < 0) { - errno = EINVAL; - return NULL; - } - if (usize == 0) - usize = maxsize; - if (usize > maxsize) - usize = maxsize; - if (usize < MM_ALLOC_MINSIZE) - usize = MM_ALLOC_MINSIZE; - - /* determine size */ - size = usize+SIZEOF_mem_pool; - - /* get a shared memory area */ - if ((core = mm_core_create(size, file)) == NULL) - return NULL; - - /* fill in the memory pool structure */ - mm = (MM *)core; - mm->mp_size = size; - mm->mp_offset = SIZEOF_mem_pool; - - /* first element of list of free chunks counts existing chunks */ - mm->mp_freechunks.mc_size = 0; - mm->mp_freechunks.mc_usize = 0; - mm->mp_freechunks.mc_u.mc_next = NULL; - - return mm; -} - -/* - * Set permissions on memory pools underlaying disk files - */ -int mm_permission(MM *mm, mode_t mode, uid_t owner, gid_t group) -{ - if (mm == NULL) - return -1; - return mm_core_permission((void *)mm, mode, owner, group); -} - -/* - * Destroy a memory pool - */ -void mm_destroy(MM *mm) -{ - if (mm == NULL) - return; - /* wipe out the whole area to be safe */ - memset(mm, 0, mm->mp_size); - /* and delete the core area */ - (void)mm_core_delete((void *)mm); - return; -} - -/* - * Lock a memory pool - */ -int mm_lock(MM *mm, mm_lock_mode mode) -{ - if (mm == NULL); - return FALSE; - return mm_core_lock((void *)mm, mode); -} - -/* - * Unlock a memory pool - */ -int mm_unlock(MM *mm) -{ - if (mm == NULL); - return FALSE; - return mm_core_unlock((void *)mm); -} - -/* - * Display debugging information - */ -void mm_display_info(MM *mm) -{ - mem_chunk *mc; - int nFree; - int nAlloc; - int i; - - if (!mm_core_lock((void *)mm, MM_LOCK_RD)) - return; - mc = &(mm->mp_freechunks); - nFree = 0; - while (mc->mc_u.mc_next != NULL) { - mc = mc->mc_u.mc_next; - nFree += mc->mc_size; - } - nAlloc = mm->mp_offset-SIZEOF_mem_pool-nFree; - - fprintf(stderr, "Information for MM\n"); - fprintf(stderr, " memory area = 0x%lx - 0x%lx\n", (unsigned long)mm, (unsigned long)(mm+mm->mp_size)); - fprintf(stderr, " memory size = %d\n", mm->mp_size); - fprintf(stderr, " memory offset = %d\n", mm->mp_offset); - fprintf(stderr, " bytes spare = %d\n", mm->mp_size-mm->mp_offset); - fprintf(stderr, " bytes free = %d (%d chunk%s)\n", - nFree, mm->mp_freechunks.mc_usize, - mm->mp_freechunks.mc_usize == 1 ? "" : "s"); - fprintf(stderr, " bytes allocated = %d\n", nAlloc); - - fprintf(stderr, " List of free chunks:\n"); - if (mm->mp_freechunks.mc_usize > 0) { - mc = &(mm->mp_freechunks); - i = 1; - while (mc->mc_u.mc_next != NULL) { - mc = mc->mc_u.mc_next; - fprintf(stderr, " chunk #%03d: 0x%lx-0x%lx (%d bytes)\n", - i++, (unsigned long)mc, (unsigned long)(mc+mc->mc_size), mc->mc_size); - } - } - else { - fprintf(stderr, " \n"); - } - mm_core_unlock((void *)mm); - return; -} - -/* - * Insert a chunk to the list of free chunks. Algorithm used is: - * Insert in sorted manner to the list and merge with previous - * and/or next chunk when possible to form larger chunks out of - * smaller ones. - */ -static void mm_insert_chunk(MM *mm, mem_chunk *mcInsert) -{ - mem_chunk *mc; - mem_chunk *mcPrev; - mem_chunk *mcNext; - - if (!mm_core_lock((void *)mm, MM_LOCK_RW)) - return; - mc = &(mm->mp_freechunks); - while (mc->mc_u.mc_next != NULL && (char *)(mc->mc_u.mc_next) < (char *)mcInsert) - mc = mc->mc_u.mc_next; - mcPrev = mc; - mcNext = mc->mc_u.mc_next; - if ((char *)mcPrev+mcPrev->mc_size == (char *)mcInsert && - (mcNext != NULL && (char *)mcInsert+mcInsert->mc_size == (char *)mcNext)) { - /* merge with previous and next chunk */ - mcPrev->mc_size += mcInsert->mc_size + mcNext->mc_size; - mcPrev->mc_u.mc_next = mcNext->mc_u.mc_next; - mm->mp_freechunks.mc_usize -= 1; - } - else if ((char *)mcPrev+mcPrev->mc_size == (char *)mcInsert) { - /* merge with previous chunk */ - mcPrev->mc_size += mcInsert->mc_size; - } - else if (mcNext != NULL && (char *)mcInsert+mcInsert->mc_size == (char *)mcNext) { - /* merge with next chunk */ - mcInsert->mc_size += mcNext->mc_size; - mcInsert->mc_u.mc_next = mcNext->mc_u.mc_next; - mcPrev->mc_u.mc_next = mcInsert; - } - else { - /* no merging possible, so insert as new chunk */ - mcInsert->mc_u.mc_next = mcNext; - mcPrev->mc_u.mc_next = mcInsert; - mm->mp_freechunks.mc_usize += 1; - } - mm_core_unlock((void *)mm); - return; -} - -/* - * Retrieve a chunk from the list of free chunks. Algorithm used - * is: Search for minimal-sized chunk which is larger or equal - * than the request size. But when the retrieved chunk is still a - * lot larger than the requested size, split out the requested - * size to not waste memory. - */ -static mem_chunk *mm_retrieve_chunk(MM *mm, size_t size) -{ - mem_chunk *mc; - mem_chunk **pmcMin; - mem_chunk *mcRes; - size_t sMin; - size_t s; - - if (mm->mp_freechunks.mc_usize == 0) - return NULL; - if (!mm_core_lock((void *)mm, MM_LOCK_RW)) - return NULL; - /* find best-fitting chunk */ - pmcMin = NULL; - sMin = mm->mp_size; /* maximum possible */ - mc = &(mm->mp_freechunks); - while (mc->mc_u.mc_next != NULL) { - s = mc->mc_u.mc_next->mc_size; - if (s >= size && s < sMin) { - pmcMin = &(mc->mc_u.mc_next); - sMin = s; - if (s == size) - break; - } - mc = mc->mc_u.mc_next; - } - /* create result chunk */ - if (pmcMin == NULL) - mcRes = NULL; - else { - mcRes = *pmcMin; - if (mcRes->mc_size >= (size + min_of(2*size,128))) { - /* split out in part */ - s = mcRes->mc_size - size; - mcRes->mc_size = size; - /* add back remaining chunk part as new chunk */ - mc = (mem_chunk *)((char *)mcRes + size); - mc->mc_size = s; - mc->mc_u.mc_next = mcRes->mc_u.mc_next; - *pmcMin = mc; - } - else { - /* split out as a whole */ - *pmcMin = mcRes->mc_u.mc_next; - mm->mp_freechunks.mc_usize--; - } - } - mm_core_unlock((void *)mm); - return mcRes; -} - -/* - * Allocate a chunk of memory - */ -void *mm_malloc(MM *mm, size_t usize) -{ - mem_chunk *mc; - size_t size; - void *vp; - - if (mm == NULL || usize == 0) - return NULL; - size = mm_core_align2word(SIZEOF_mem_chunk+usize); - if ((mc = mm_retrieve_chunk(mm, size)) != NULL) { - mc->mc_usize = usize; - return &(mc->mc_u.mc_base.mw_cp); - } - if (!mm_core_lock((void *)mm, MM_LOCK_RW)) - return NULL; - if ((mm->mp_size - mm->mp_offset) < size) { - mm_core_unlock((void *)mm); - ERR(MM_ERR_ALLOC, "Out of memory"); - errno = ENOMEM; - return NULL; - } - mc = (mem_chunk *)((char *)mm + mm->mp_offset); - mc->mc_size = size; - mc->mc_usize = usize; - vp = (void *)&(mc->mc_u.mc_base.mw_cp); - mm->mp_offset += size; - mm_core_unlock((void *)mm); - return vp; -} - -/* - * Reallocate a chunk of memory - */ -void *mm_realloc(MM *mm, void *ptr, size_t usize) -{ - size_t size; - mem_chunk *mc; - void *vp; - - if (mm == NULL || usize == 0) - return NULL; - if (ptr == NULL) - return mm_malloc(mm, usize); /* POSIX.1 semantics */ - mc = (mem_chunk *)((char *)ptr - SIZEOF_mem_chunk); - if (usize <= mc->mc_usize) { - mc->mc_usize = usize; - return ptr; - } - size = mm_core_align2word(SIZEOF_mem_chunk+usize); - if (size <= mc->mc_size) { - mc->mc_usize = usize; - return ptr; - } - if ((vp = mm_malloc(mm, usize)) == NULL) - return NULL; - memcpy(vp, ptr, usize); - mm_free(mm, ptr); - return vp; -} - -/* - * Free a chunk of memory - */ -void mm_free(MM *mm, void *ptr) -{ - mem_chunk *mc; - - if (mm == NULL || ptr == NULL) - return; - mc = (mem_chunk *)((char *)ptr - SIZEOF_mem_chunk); - mm_insert_chunk(mm, mc); - return; -} - -/* - * Allocate and initialize a chunk of memory - */ -void *mm_calloc(MM *mm, size_t number, size_t usize) -{ - void *vp; - - if (mm == NULL || number*usize == 0) - return NULL; - if ((vp = mm_malloc(mm, number*usize)) == NULL) - return NULL; - memset(vp, 0, number*usize); - return vp; -} - -/* - * Duplicate a string - */ -char *mm_strdup(MM *mm, const char *str) -{ - int n; - void *vp; - - if (mm == NULL || str == NULL) - return NULL; - n = strlen(str); - if ((vp = mm_malloc(mm, n+1)) == NULL) - return NULL; - memcpy(vp, str, n+1); - return vp; -} - -/* - * Determine user size of a memory chunk - */ -size_t mm_sizeof(MM *mm, const void *ptr) -{ - mem_chunk *mc; - - if (mm == NULL || ptr == NULL) - return -1; - mc = (mem_chunk *)((char *)ptr - SIZEOF_mem_chunk); - return mc->mc_usize; -} - -/* - * Determine maximum size of an allocateable memory pool - */ -size_t mm_maxsize(void) -{ - return (mm_core_maxsegsize()-SIZEOF_mem_pool); -} - -/* - * Determine available memory - */ -size_t mm_available(MM *mm) -{ - mem_chunk *mc; - int nFree; - - if (!mm_core_lock((void *)mm, MM_LOCK_RD)) - return 0; - nFree = mm->mp_size-mm->mp_offset; - mc = &(mm->mp_freechunks); - while (mc->mc_u.mc_next != NULL) { - mc = mc->mc_u.mc_next; - nFree += mc->mc_size; - } - mm_core_unlock((void *)mm); - return nFree; -} - -/* - * Return last error string - */ -char *mm_error(void) -{ - return mm_lib_error_get(); -} - -/*EOF*/ diff --git a/shmem/unix/mm/mm_conf.h.in b/shmem/unix/mm/mm_conf.h.in deleted file mode 100644 index f30bd775e..000000000 --- a/shmem/unix/mm/mm_conf.h.in +++ /dev/null @@ -1,41 +0,0 @@ -/* -** mm_conf.h -*/ - -#ifndef MM_CONF_HH -#define MM_CONF_HH - -/* VM Page Size Determination */ -#undef MM_VMPS_GETPAGESIZE -#undef MM_VMPS_SYSCONF - -/* Shared Memory Type */ -#undef MM_SHMT_MMANON -#undef MM_SHMT_MMPOSX -#undef MM_SHMT_MMZERO -#undef MM_SHMT_MMFILE -#undef MM_SHMT_IPCSHM - -/* Shared Memory Maximum Segment Size */ -#define MM_SHM_MAXSEGSIZE @MM_SHM_MAXSEGSIZE@ - -/* Semaphore Type */ -#undef MM_SEMT_FLOCK -#undef MM_SEMT_FCNTL -#undef MM_SEMT_IPCSEM - -/* Debugging */ -#undef MM_DEBUG - -/* Standard Autoconf stuff */ -#undef HAVE_MEMCPY -#undef HAVE_MEMSET -#undef HAVE_BCOPY -#undef HAVE_MEMORY_H -#undef MM_OS_SUNOS -#undef HAVE_PATH_MAX -#undef HAVE__POSIX_PATH_MAX -#undef HAVE_MAXPATHLEN -#undef HAVE_UNION_SEMUN - -#endif /* MM_CONF_HH */ diff --git a/shmem/unix/mm/mm_core.c b/shmem/unix/mm/mm_core.c deleted file mode 100644 index e8e7565d1..000000000 --- a/shmem/unix/mm/mm_core.c +++ /dev/null @@ -1,584 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * 4. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY - * EXPRESSED 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 RALF S. ENGELSCHALL OR - * ITS 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. - * ==================================================================== - */ - -/* -** -** mm_core.c -- Low-level Shared Memory API -** -*/ - -#define MM_PRIVATE -#include "mm.h" - -/* - * Some global variables - */ - -#if defined(MM_SEMT_FCNTL) -/* lock/unlock structures for fcntl() */ -static struct flock mm_core_dolock_rd; -static struct flock mm_core_dolock_rw; -static struct flock mm_core_dounlock; -#endif - -#if defined(MM_SEMT_IPCSEM) -/* lock/unlock structures for semop() */ -static union semun mm_core_semctlarg; -static struct sembuf mm_core_dolock[2]; -static struct sembuf mm_core_dounlock[1]; -#endif - -#if defined(MM_SHMT_MMFILE) || defined(MM_SHMT_MMPOSX) -static size_t mm_core_mapoffset = 0; /* we use own file */ -#elif defined(MM_SHMT_MMZERO) -static size_t mm_core_mapoffset = 1024*1024*1; /* we share with other apps */ -#endif - -static void mm_core_init(void) -{ - static int initialized = FALSE; - if (!initialized) { -#if defined(MM_SEMT_FCNTL) - mm_core_dolock_rd.l_whence = SEEK_SET; /* from current point */ - mm_core_dolock_rd.l_start = 0; /* -"- */ - mm_core_dolock_rd.l_len = 0; /* until end of file */ - mm_core_dolock_rd.l_type = F_RDLCK; /* set shard/read lock */ - mm_core_dolock_rd.l_pid = 0; /* pid not actually interesting */ - mm_core_dolock_rw.l_whence = SEEK_SET; /* from current point */ - mm_core_dolock_rw.l_start = 0; /* -"- */ - mm_core_dolock_rw.l_len = 0; /* until end of file */ - mm_core_dolock_rw.l_type = F_WRLCK; /* set exclusive/read-write lock */ - mm_core_dolock_rw.l_pid = 0; /* pid not actually interesting */ - mm_core_dounlock.l_whence = SEEK_SET; /* from current point */ - mm_core_dounlock.l_start = 0; /* -"- */ - mm_core_dounlock.l_len = 0; /* until end of file */ - mm_core_dounlock.l_type = F_UNLCK; /* unlock */ - mm_core_dounlock.l_pid = 0; /* pid not actually interesting */ -#endif -#if defined(MM_SEMT_IPCSEM) - mm_core_dolock[0].sem_num = 0; - mm_core_dolock[0].sem_op = 0; - mm_core_dolock[0].sem_flg = 0; - mm_core_dolock[1].sem_num = 0; - mm_core_dolock[1].sem_op = 1; - mm_core_dolock[1].sem_flg = SEM_UNDO; - mm_core_dounlock[0].sem_num = 0; - mm_core_dounlock[0].sem_op = -1; - mm_core_dounlock[0].sem_flg = SEM_UNDO; -#endif - initialized = TRUE; - } - return; -} - -#if defined(MM_SEMT_FLOCK) -/* - * Determine per-process fd for semaphore - * (needed only for flock() based semaphore) - */ -static int mm_core_getfdsem(mem_core *mc) -{ - int fd = -1; - pid_t pid; - int i; - - pid = getpid(); - for (i = 0; i < MM_MAXCHILD && - mc->mc_fdsem[i].pid != 0 && - mc->mc_fdsem[i].fd != -1; i++) { - if (mc->mc_fdsem[i].pid == pid) { - fd = mc->mc_fdsem[i].fd; - break; - } - } - if (fd == -1 && i < MM_MAXCHILD) { - fd = open(mc->mc_fnsem, O_WRONLY, MM_CORE_FILEMODE); - mc->mc_fdsem[i].pid = getpid(); - mc->mc_fdsem[i].fd = fd; - } - return fd; -} -#endif /* MM_SEMT_FLOCK */ - -/* - * Determine memory page size of OS - */ - -static size_t mm_core_pagesize(void) -{ - static int pagesize = 0; - if (pagesize == 0) -#if defined(MM_VMPS_GETPAGESIZE) - pagesize = getpagesize(); -#elif defined(MM_VMPS_SYSCONF) - pagesize = sysconf(_SC_PAGESIZE); -#else - pagesize = MM_CORE_DEFAULT_PAGESIZE; -#endif - return pagesize; -} - -/* - * Align a size to the next page or word boundary - */ - -size_t mm_core_align2page(size_t size) -{ - int psize = mm_core_pagesize(); - return ((size)%(psize) > 0 ? ((size)/(psize)+1)*(psize) : (size)); -} - -size_t mm_core_align2word(size_t size) -{ - return ((1+((size-1) / SIZEOF_mem_word)) * SIZEOF_mem_word); -} - -size_t mm_core_maxsegsize(void) -{ - return mm_core_align2page((MM_SHM_MAXSEGSIZE-SIZEOF_mem_core)-mm_core_pagesize()); -} - -/* - * Create a shared memory area - */ - -void *mm_core_create(size_t usersize, const char *file) -{ - mem_core *mc; - void *area = ((void *)-1); - int fdmem = 0; - int fdsem = 0; -#if defined(MM_SEMT_IPCSEM) - int fdsem_rd = 0; -#endif -#if defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMFILE) - char *fnmem; -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - char *fnsem; -#endif - size_t size; -#if defined(MM_SHMT_MMZERO) || defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMFILE) - int zero = 0; -#endif -#if defined(MM_SHMT_IPCSHM) - struct shmid_ds shmbuf; -#endif -#if defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMFILE) - char shmfilename[MM_MAXPATH]; -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - char semfilename[MM_MAXPATH]; -#endif - char filename[MM_MAXPATH]; - - if (usersize <= 0 || usersize > mm_core_maxsegsize()) { - errno = EINVAL; - return NULL; - } - if (file == NULL) { - sprintf(filename, MM_CORE_DEFAULT_FILE, (int)getpid()); - file = filename; - } - - mm_core_init(); - size = mm_core_align2page(usersize+SIZEOF_mem_core); - -#if defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMFILE) - sprintf(shmfilename, "%s.mem", file); - fnmem = shmfilename; -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - sprintf(semfilename, "%s.sem", file); - fnsem = semfilename; -#endif - -#if defined(MM_SHMT_MMANON) - if ((area = (void *)mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_ANON|MAP_SHARED, -1, 0)) == MAP_FAILED) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to memory map anonymous area"); -#endif /* MM_SHMT_MMANON */ - -#if defined(MM_SHMT_MMPOSX) - shm_unlink(fnmem); /* Ok when it fails */ - if ((fdmem = shm_open(fnmem, O_RDWR|O_CREAT, MM_CORE_FILEMODE)) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to open tempfile"); - if (ftruncate(fdmem, mm_core_mapoffset+size) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to truncate tempfile"); - write(fdmem, &zero, sizeof(zero)); - if ((area = (void *)mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_SHARED, fdmem, mm_core_mapoffset)) == MAP_FAILED) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to memory map tempfile"); - shm_unlink(fnmem); - mm_core_mapoffset += size; -#endif /* MM_SHMT_MMPOSX */ - -#if defined(MM_SHMT_MMZERO) - if ((fdmem = open("/dev/zero", O_RDWR, MM_CORE_FILEMODE)) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to open /dev/zero"); - if (lseek(fdmem, mm_core_mapoffset+size, SEEK_SET) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to seek in /dev/zero"); - write(fdmem, &zero, sizeof(zero)); - if ((area = (void *)mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_SHARED, fdmem, mm_core_mapoffset)) == MAP_FAILED) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to memory map /dev/zero"); - mm_core_mapoffset += size; -#endif /* MM_SHMT_MMZERO */ - -#if defined(MM_SHMT_MMFILE) - unlink(fnmem); - if ((fdmem = open(fnmem, O_RDWR|O_CREAT, MM_CORE_FILEMODE)) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to open memory file"); - if (ftruncate(fdmem, mm_core_mapoffset+size) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to truncate memory file"); - write(fdmem, &zero, sizeof(zero)); - if ((area = (void *)mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_SHARED, fdmem, mm_core_mapoffset)) == MAP_FAILED) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to memory map memory file"); - mm_core_mapoffset += size; -#endif /* MM_SHMT_MMFILE */ - -#if defined(MM_SHMT_IPCSHM) - if ((fdmem = shmget(IPC_PRIVATE, size, (SHM_R|SHM_W|IPC_CREAT))) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to acquire shared memory segment"); - if ((area = (void *)shmat(fdmem, NULL, 0)) == ((void *)-1)) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to attach shared memory"); - if (shmctl(fdmem, IPC_STAT, &shmbuf) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to get status of shared memory"); - shmbuf.shm_perm.uid = getuid(); - shmbuf.shm_perm.gid = getgid(); - if (shmctl(fdmem, IPC_SET, &shmbuf) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to set status of shared memory"); - if (shmctl(fdmem, IPC_RMID, NULL) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to remove shared memory in advance"); -#endif /* MM_SHMT_IPCSHM */ - -#if defined(MM_SEMT_FLOCK) - unlink(fnsem); - if ((fdsem = open(fnsem, O_RDWR|O_CREAT, MM_CORE_FILEMODE)) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to open semaphore file"); -#endif /* MM_SEMT_FLOCK */ - -#if defined(MM_SEMT_FCNTL) - unlink(fnsem); - if ((fdsem = open(fnsem, O_RDWR|O_CREAT, MM_CORE_FILEMODE)) == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to open semaphore file"); -#endif /* MM_SEMT_FCNTL */ - -#if defined(MM_SEMT_IPCSEM) - fdsem = semget(IPC_PRIVATE, 1, IPC_CREAT|IPC_EXCL|S_IRUSR|S_IWUSR); - if (fdsem == -1 && errno == EEXIST) - fdsem = semget(IPC_PRIVATE, 1, IPC_EXCL|S_IRUSR|S_IWUSR); - if (fdsem == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to acquire semaphore"); - mm_core_semctlarg.val = 0; - semctl(fdsem, 0, SETVAL, mm_core_semctlarg); - fdsem_rd = semget(IPC_PRIVATE, 1, IPC_CREAT|IPC_EXCL|S_IRUSR|S_IWUSR); - if (fdsem_rd == -1 && errno == EEXIST) - fdsem_rd = semget(IPC_PRIVATE, 1, IPC_EXCL|S_IRUSR|S_IWUSR); - if (fdsem_rd == -1) - FAIL(MM_ERR_CORE|MM_ERR_SYSTEM, "failed to acquire semaphore"); - mm_core_semctlarg.val = 0; - semctl(fdsem_rd, 0, SETVAL, mm_core_semctlarg); -#endif /* MM_SEMT_IPCSEM */ - - /* - * Configure the memory core parameters - */ - mc = (mem_core *)area; - mc->mc_size = size; - mc->mc_usize = usersize; - mc->mc_pid = getpid(); - mc->mc_fdmem = fdmem; -#if defined(MM_SEMT_FLOCK) - mc->mc_fdsem[0].pid = getpid(); - mc->mc_fdsem[0].fd = fdsem; - mc->mc_fdsem[1].pid = 0; - mc->mc_fdsem[1].fd = -1; -#else - mc->mc_fdsem = fdsem; -#endif -#if defined(MM_SEMT_IPCSEM) - mc->mc_fdsem_rd = fdsem_rd; - mc->mc_readers = 0; -#endif -#if defined(MM_SHMT_MMFILE) - memcpy(mc->mc_fnmem, fnmem, MM_MAXPATH); -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - memcpy(mc->mc_fnsem, fnsem, MM_MAXPATH); -#endif - - /* - * Return successfully established core - */ - return ((void *)&(mc->mc_base.mw_cp)); - - /* - * clean-up sequence (CUS) for error situation - */ - BEGIN_FAILURE -#if defined(MM_SHMT_MMANON) || defined(MM_SHMT_MMZERO) || defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMFILE) - if (area != ((void *)-1)) - munmap((caddr_t)area, size); -#endif -#if defined(MM_SHMT_IPCSHM) - if (area != ((void *)-1)) - shmdt(area); -#endif -#if defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMFILE) - if (fdmem != -1) - close(fdmem); -#endif -#if defined(MM_SHMT_IPCSHM) - if (fdmem != -1) - shmctl(fdmem, IPC_RMID, NULL); -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - if (fdsem != -1) - close(fdsem); -#endif -#if defined(MM_SEMT_IPCSEM) - if (fdsem != -1) - semctl(fdsem, 0, IPC_RMID, 0); - if (fdsem_rd != -1) - semctl(fdsem_rd, 0, IPC_RMID, 0); -#endif -#if defined(MM_SHMT_MMFILE) - unlink(fnmem); -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - unlink(fnsem); -#endif - return NULL; - END_FAILURE -} - -int mm_core_permission(void *core, mode_t mode, uid_t owner, gid_t group) -{ - int rc; - mem_core *mc; - - if (core == NULL) - return -1; - mc = (mem_core *)((char *)core-SIZEOF_mem_core); - rc = 0; -#if defined(MM_SHMT_MMFILE) - if (rc == 0 && chmod(mc->mc_fnmem, mode) < 0) - rc = -1; - if (rc == 0 && chown(mc->mc_fnmem, owner, group) < 0) - rc = -1; -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - if (rc == 0 && chmod(mc->mc_fnsem, mode) < 0) - rc = -1; - if (rc == 0 && chown(mc->mc_fnsem, owner, group) < 0) - rc = -1; -#endif - return rc; -} - -void mm_core_delete(void *core) -{ - mem_core *mc; - int fdmem; - int fdsem; -#if defined(MM_SEMT_IPCSEM) - int fdsem_rd; -#endif - size_t size; -#if defined(MM_SHMT_MMFILE) - char fnmem[MM_MAXPATH]; -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - char fnsem[MM_MAXPATH]; -#endif - - if (core == NULL) - return; - mc = (mem_core *)((char *)core-SIZEOF_mem_core); - size = mc->mc_size; - fdmem = mc->mc_fdmem; -#if !defined(MM_SEMT_FLOCK) - fdsem = mc->mc_fdsem; -#endif -#if defined(MM_SEMT_IPCSEM) - fdsem_rd = mc->mc_fdsem_rd; -#endif -#if defined(MM_SEMT_FLOCK) - fdsem = mm_core_getfdsem(mc); -#endif -#if defined(MM_SHMT_MMFILE) - memcpy(fnmem, mc->mc_fnmem, MM_MAXPATH); -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - memcpy(fnsem, mc->mc_fnsem, MM_MAXPATH); -#endif - -#if defined(MM_SHMT_MMANON) || defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMZERO) || defined(MM_SHMT_MMFILE) - munmap((caddr_t)mc, size); -#endif -#if defined(MM_SHMT_IPCSHM) - shmdt((void *)mc); - shmctl(fdmem, IPC_RMID, NULL); -#endif -#if defined(MM_SHMT_MMPOSX) || defined(MM_SHMT_MMZERO) || defined(MM_SHMT_MMFILE) - close(fdmem); -#endif -#if defined(MM_SHMT_MMFILE) - unlink(fnmem); -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - close(fdsem); -#endif -#if defined(MM_SEMT_FLOCK) || defined(MM_SEMT_FCNTL) - unlink(fnsem); -#endif -#if defined(MM_SEMT_IPCSEM) - semctl(fdsem, 0, IPC_RMID, 0); - semctl(fdsem_rd, 0, IPC_RMID, 0); -#endif - return; -} - -size_t mm_core_size(const void *core) -{ - mem_core *mc; - - if (core == NULL) - return 0; - mc = (mem_core *)((char *)core-SIZEOF_mem_core); - return (mc->mc_usize); -} - -int mm_core_lock(const void *core, mm_lock_mode mode) -{ - mem_core *mc; - int rc; - int fdsem; - - if (core == NULL) - return FALSE; - mc = (mem_core *)((char *)core-SIZEOF_mem_core); -#if !defined(MM_SEMT_FLOCK) - fdsem = mc->mc_fdsem; -#endif -#if defined(MM_SEMT_FLOCK) - fdsem = mm_core_getfdsem(mc); -#endif - -#if defined(MM_SEMT_FCNTL) - if (mode == MM_LOCK_RD) - while (((rc = fcntl(fdsem, F_SETLKW, &mm_core_dolock_rd)) < 0) && (errno == EINTR)) ; - else - while (((rc = fcntl(fdsem, F_SETLKW, &mm_core_dolock_rw)) < 0) && (errno == EINTR)) ; -#endif -#if defined(MM_SEMT_FLOCK) - if (mode == MM_LOCK_RD) - while (((rc = flock(fdsem, LOCK_SH)) < 0) && (errno == EINTR)) ; - else - while (((rc = flock(fdsem, LOCK_EX)) < 0) && (errno == EINTR)) ; -#endif -#if defined(MM_SEMT_IPCSEM) - if (mode == MM_LOCK_RD) { - while (((rc = semop(mc->mc_fdsem_rd, mm_core_dolock, 2)) < 0) && (errno == EINTR)) ; - mc->mc_readers++; - if (mc->mc_readers == 1) - while (((rc = semop(fdsem, mm_core_dolock, 2)) < 0) && (errno == EINTR)) ; - while (((rc = semop(mc->mc_fdsem_rd, mm_core_dounlock, 1)) < 0) && (errno == EINTR)) ; - } - else { - while (((rc = semop(fdsem, mm_core_dolock, 2)) < 0) && (errno == EINTR)) ; - } - mc->mc_lockmode = mode; -#endif - if (rc < 0) { - ERR(MM_ERR_CORE|MM_ERR_SYSTEM, "Failed to lock"); - rc = FALSE; - } - else - rc = TRUE; - return rc; -} - -int mm_core_unlock(const void *core) -{ - mem_core *mc; - int rc; - int fdsem; - - if (core == NULL) - return FALSE; - mc = (mem_core *)((char *)core-SIZEOF_mem_core); -#if !defined(MM_SEMT_FLOCK) - fdsem = mc->mc_fdsem; -#endif -#if defined(MM_SEMT_FLOCK) - fdsem = mm_core_getfdsem(mc); -#endif - -#if defined(MM_SEMT_FCNTL) - while (((rc = fcntl(fdsem, F_SETLKW, &mm_core_dounlock)) < 0) && (errno == EINTR)) ; -#endif -#if defined(MM_SEMT_FLOCK) - while (((rc = flock(fdsem, LOCK_UN)) < 0) && (errno == EINTR)) ; -#endif -#if defined(MM_SEMT_IPCSEM) - if (mc->mc_lockmode == MM_LOCK_RD) { - while (((rc = semop(mc->mc_fdsem_rd, mm_core_dolock, 2)) < 0) && (errno == EINTR)) ; - mc->mc_readers--; - if (mc->mc_readers == 0) - while (((rc = semop(fdsem, mm_core_dounlock, 1)) < 0) && (errno == EINTR)) ; - while (((rc = semop(mc->mc_fdsem_rd, mm_core_dounlock, 1)) < 0) && (errno == EINTR)) ; - } - else { - while (((rc = semop(fdsem, mm_core_dounlock, 1)) < 0) && (errno == EINTR)) ; - } -#endif - if (rc < 0) { - ERR(MM_ERR_CORE|MM_ERR_SYSTEM, "Failed to unlock"); - rc = FALSE; - } - else - rc = TRUE; - return rc; -} - -/*EOF*/ diff --git a/shmem/unix/mm/mm_global.c b/shmem/unix/mm/mm_global.c deleted file mode 100644 index 53efcca58..000000000 --- a/shmem/unix/mm/mm_global.c +++ /dev/null @@ -1,151 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * 4. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY - * EXPRESSED 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 RALF S. ENGELSCHALL OR - * ITS 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. - * ==================================================================== - */ - -/* -** -** mm_global.c -- Global Malloc-Replacement API -** -*/ - -#define MM_PRIVATE -#include "mm.h" - -static MM *mm_global = NULL; - -int MM_create(size_t size, const char *file) -{ - if (mm_global != NULL) - return FALSE; - if ((mm_global = mm_create(size, file)) == NULL) - return FALSE; - return TRUE; -} - -int MM_permission(mode_t mode, uid_t owner, gid_t group) -{ - if (mm_global != NULL) - return -1; - return mm_permission(mm_global, mode, owner, group); -} - -void MM_destroy(void) -{ - if (mm_global == NULL) - return; - mm_destroy(mm_global); - mm_global = NULL; - return; -} - -int MM_lock(mm_lock_mode mode) -{ - if (mm_global == NULL) - return FALSE; - return mm_lock(mm_global, mode); -} - -int MM_unlock(void) -{ - if (mm_global == NULL) - return FALSE; - return mm_unlock(mm_global); -} - -void *MM_malloc(size_t size) -{ - if (mm_global == NULL) - return NULL; - return mm_malloc(mm_global, size); -} - -void *MM_realloc(void *ptr, size_t size) -{ - if (mm_global == NULL) - return NULL; - return mm_realloc(mm_global, ptr, size); -} - -void MM_free(void *ptr) -{ - if (mm_global == NULL) - return; - mm_free(mm_global, ptr); - return; -} - -void *MM_calloc(size_t number, size_t size) -{ - if (mm_global == NULL) - return NULL; - return mm_calloc(mm_global, number, size); -} - -char *MM_strdup(const char *str) -{ - if (mm_global == NULL) - return NULL; - return mm_strdup(mm_global, str); -} - -size_t MM_sizeof(const void *ptr) -{ - if (mm_global == NULL) - return -1; - return mm_sizeof(mm_global, ptr); -} - -size_t MM_maxsize(void) -{ - return mm_maxsize(); -} - -size_t MM_available(void) -{ - if (mm_global == NULL) - return -1; - return mm_available(mm_global); -} - -char *MM_error(void) -{ - return mm_lib_error_get(); -} - -/*EOF*/ diff --git a/shmem/unix/mm/mm_lib.c b/shmem/unix/mm/mm_lib.c deleted file mode 100644 index 0e7c34e86..000000000 --- a/shmem/unix/mm/mm_lib.c +++ /dev/null @@ -1,114 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 Ralf S. Engelschall. 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 acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * 4. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by - * Ralf S. Engelschall ." - * - * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY - * EXPRESSED 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 RALF S. ENGELSCHALL OR - * ITS 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. - * ==================================================================== - */ - -/* -** -** mm_lib.c -- Internal Library API -** -*/ - -#define MM_PRIVATE -#include "mm.h" - -/* - * Error Handling - */ - -#define MM_LIB_ERROR_MAXLEN 1024 -static char mm_lib_error[MM_LIB_ERROR_MAXLEN+1] = { NUL }; - -void mm_lib_error_set(unsigned int type, const char *str) -{ - int l, n; - char *cp; - - if (str == NULL) { - mm_lib_error[0] = NUL; - return; - } - if (type & MM_ERR_ALLOC) - strcpy(mm_lib_error, "mm:alloc: "); - else if (type & MM_ERR_CORE) - strcpy(mm_lib_error, "mm:core: "); - l = strlen(mm_lib_error); - n = strlen(str); - if (n > MM_LIB_ERROR_MAXLEN-l) - n = MM_LIB_ERROR_MAXLEN-l; - memcpy(mm_lib_error+l, str, n+1); - l += n; - if (type & MM_ERR_SYSTEM && errno != 0) { - if (MM_LIB_ERROR_MAXLEN-l > 2) { - strcpy(mm_lib_error+l, " ("); - l += 2; - } - cp = strerror(errno); - n = strlen(cp); - if (n > MM_LIB_ERROR_MAXLEN-l) - n = MM_LIB_ERROR_MAXLEN-l; - memcpy(mm_lib_error+l, cp, n+1); - l += n; - if (MM_LIB_ERROR_MAXLEN-l > 1) { - strcpy(mm_lib_error+l, ")"); - l += 1; - } - } - *(mm_lib_error+l) = NUL; - return; -} - -char *mm_lib_error_get(void) -{ - if (mm_lib_error[0] == NUL) - return NULL; - return mm_lib_error; -} - -/* - * Version Information - */ - -#define _AS_HEADER -#include "mm_vers.c" - -int mm_lib_version(void) -{ - return MM_Version; -} - diff --git a/shmem/unix/mm/mm_test.c b/shmem/unix/mm/mm_test.c deleted file mode 100644 index 8c11a0713..000000000 --- a/shmem/unix/mm/mm_test.c +++ /dev/null @@ -1,223 +0,0 @@ -/* -** mm_test.c -- Test Suite for MM Library -*/ - -#include -#include -#include -#include -#include - -#define MM_PRIVATE -#include "mm.h" - -#define FAILED_IF(expr) \ - if (expr) { \ - char *e; \ - e = mm_error(); \ - fprintf(stderr, "%s\n", e != NULL ? e : "Unknown Error"); \ - exit(1); \ - } - -int main(int argc, char *argv[]) -{ - char *core; - int i; - size_t s, s2; - pid_t pid; - int size; - MM *mm; - int n; - char *cp[1025]; - int version; - struct count_test { int count; int prev; } *ct; - - setbuf(stderr, NULL); - - /* - ** - ** Test Global Library API - ** - */ - - fprintf(stderr, "\n*** TESTING GLOBAL LIBRARY API ***\n\n"); - - fprintf(stderr, "Fetching library version\n"); - version = mm_lib_version(); - FAILED_IF(version == 0x0); - fprintf(stderr, "version = 0x%X\n", version); - - /* - ** - ** Test Low-Level Shared Memory API - ** - */ - - fprintf(stderr, "\n*** TESTING LOW-LEVEL SHARED MEMORY API ***\n"); - - fprintf(stderr, "\n=== Testing Memory Segment Access ===\n"); - - fprintf(stderr, "Creating 16KB shared memory core area\n"); - core = mm_core_create(1024*16, NULL); - FAILED_IF(core == NULL); - s = mm_core_size(core); - FAILED_IF(s == 0); - fprintf(stderr, "actually allocated core size = %d\n", s); - - fprintf(stderr, "Writing 0xF5 bytes to shared memory core area\n"); - for (i = 0; i < s; i++) { - fprintf(stderr, "write to core[%06d]\r", i); - core[i] = 0xF5; - } - fprintf(stderr, "\n"); - - fprintf(stderr, "Reading back 0xF5 bytes from shared memory core area\n"); - for (i = 0; i < s; i++) { - fprintf(stderr, "read from core[%06d]\r", i); - if (core[i] != (char)0xF5) { - fprintf(stderr, "Offset %d: 0xF5 not found (found 0x%X\n", i, core[i]); - exit(0); - } - } - fprintf(stderr, "\n"); - - fprintf(stderr, "Destroying shared memory core area\n"); - mm_core_delete(core); - - fprintf(stderr, "\n=== Testing Memory Locking ===\n"); - - fprintf(stderr, "Creating small shared memory core area\n"); - ct = mm_core_create(sizeof(struct count_test), NULL); - FAILED_IF(ct == NULL); - s = mm_core_size(ct); - FAILED_IF(s == 0); - fprintf(stderr, "actually allocated core size = %d\n", s); - - ct->prev = 0; - ct->count = 1; - if ((pid = fork()) == 0) { - /* child */ - while (ct->count < 32768) { - if (!mm_core_lock(ct, MM_LOCK_RW)) { - fprintf(stderr, "locking failed (child)\n"); - FAILED_IF(1); - } - if (ct->prev != (ct->count-1)) { - fprintf(stderr, "Failed, prev=%d != count=%d\n", ct->prev, ct->count); - exit(1); - } - ct->count += 1; - fprintf(stderr, "count=%06d (child )\r", ct->count); - ct->prev += 1; - if (!mm_core_unlock(ct)) { - fprintf(stderr, "locking failed (child)\n"); - FAILED_IF(1); - } - } - exit(0); - } - /* parent ... */ - while (ct->count < 32768) { - if (!mm_core_lock(ct, MM_LOCK_RW)) { - fprintf(stderr, "locking failed (parent)\n"); - FAILED_IF(1); - } - if (ct->prev != (ct->count-1)) { - fprintf(stderr, "Failed, prev=%d != count=%d\n", ct->prev, ct->count); - exit(1); - } - ct->count += 1; - fprintf(stderr, "count=%06d (parent)\r", ct->count); - ct->prev += 1; - if (!mm_core_unlock(ct)) { - fprintf(stderr, "locking failed (parent)\n"); - kill(pid, SIGTERM); - FAILED_IF(1); - } - } - waitpid(pid, NULL, 0); - fprintf(stderr, "\n"); - - fprintf(stderr, "Destroying shared memory core area\n"); - mm_core_delete(ct); - - /* - ** - ** Test Standard Malloc-style API - ** - */ - - fprintf(stderr, "\n*** TESTING STANDARD MALLOC-STYLE API ***\n"); - - fprintf(stderr, "\n=== Testing Allocation ===\n"); - - fprintf(stderr, "Creating MM object\n"); - size = mm_maxsize(); - if (size > 1024*1024*1) - size = 1024*1024*1; - mm = mm_create(size, NULL); - FAILED_IF(mm == NULL) - mm_display_info(mm); - s = mm_available(mm); - FAILED_IF(s == 0); - fprintf(stderr, "actually available bytes = %d\n", s); - - fprintf(stderr, "Allocating areas inside MM\n"); - n = 0; - for (i = 0; i < 1024; i++) - cp[i] = NULL; - for (i = 0; i < 1024; i++) { - fprintf(stderr, "total=%09d allocated=%09d add=%06d\r", s, n, (i+1)*(i+1)); - s2 = mm_available(mm); - if ((i+1)*(i+1) > s2) { - cp[i] = mm_malloc(mm, (i+1)*(i+1)); - if (cp[i] != NULL) { - fprintf(stderr, "\nExpected an out of memory situation. Hmmmmm\n"); - FAILED_IF(1); - } - break; - } - cp[i] = mm_malloc(mm, (i+1)*(i+1)); - n += (i+1)*(i+1); - FAILED_IF(cp[i] == NULL) - memset(cp[i], 0xF5, (i+1)*(i+1)); - } - mm_display_info(mm); - - fprintf(stderr, "\n=== Testing Defragmentation ===\n"); - - fprintf(stderr, "Fragmenting memory area by freeing some selected areas\n"); - for (i = 0; i < 1024; i++) { - if (i % 2 == 0) - continue; - if (cp[i] != NULL) - mm_free(mm, cp[i]); - cp[i] = NULL; - } - mm_display_info(mm); - - fprintf(stderr, "Freeing all areas\n"); - for (i = 0; i < 1024; i++) { - mm_free(mm, cp[i]); - } - mm_display_info(mm); - - fprintf(stderr, "Checking for memory leaks\n"); - s2 = mm_available(mm); - if (s != s2) { - fprintf(stderr, "Something is leaking, we've lost %d bytes\n", s - s2); - FAILED_IF(1); - } - else { - fprintf(stderr, "Fine, we've again %d bytes available\n", s2); - } - - fprintf(stderr, "Destroying MM object\n"); - mm_destroy(mm); - - /******/ - - fprintf(stderr, "\nOK - ALL TESTS SUCCESSFULLY PASSED.\n\n"); - exit(0); -} - diff --git a/shmem/unix/mm/mm_vers.c b/shmem/unix/mm/mm_vers.c deleted file mode 100644 index 3fd85f609..000000000 --- a/shmem/unix/mm/mm_vers.c +++ /dev/null @@ -1,32 +0,0 @@ -/* -** mm_vers.c -- Version Information -** [automatically generated and maintained by shtool] -*/ - -#ifdef _AS_HEADER - -#ifndef _MM_VERS_C -#define _MM_VERS_C -#define MM_VERSION 0x100208 -extern const int MM_Version; -extern const char MM_VersionStr[]; -extern const char MM_Hello[]; -extern const char MM_GNUVersion[]; -extern const char MM_WhatID[]; -extern const char MM_RCSIdentID[]; -extern const char MM_WebID[]; -extern const char MM_PlainID[]; -#endif /* _MM_VERS_C */ - -#else - -const int MM_Version = 0x100208; -const char MM_VersionStr[] = "1.0.8 (24-Jun-1999)"; -const char MM_Hello[] = "This is MM, Version 1.0.8 (24-Jun-1999)"; -const char MM_GNUVersion[] = "MM Version 1.0.8"; -const char MM_WhatID[] = "@(#)MM Version 1.0.8 (24-Jun-1999)"; -const char MM_RCSIdentID[] = "$Id: mm_vers.c,v 1.1 1999/08/17 15:59:45 rbb Exp $"; -const char MM_WebID[] = "MM/1.0.8"; -const char MM_PlainID[] = "1.0.8"; - -#endif diff --git a/shmem/unix/mm/shtool b/shmem/unix/mm/shtool deleted file mode 100755 index c008e0723..000000000 --- a/shmem/unix/mm/shtool +++ /dev/null @@ -1,2391 +0,0 @@ -#!/bin/sh -## -## GNU shtool -- The GNU Portable Shell Tool -## Copyright (c) 1994-1999 Ralf S. Engelschall -## -## See http://www.gnu.org/software/shtool/ for more information. -## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. -## -## Version 1.3.0-dev (23-Jun-1999) -## - -## -## 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -## USA, or contact Ralf S. Engelschall . -## -## Notice: Given that you include this file verbatim into your own -## source tree, you are justified in saying that it remains separate -## from your package, and that this way you are simply just using GNU -## shtool. So, in this situation, there is no requirement that your -## package itself is licensed under the GNU General Public License in -## order to take advantage of GNU shtool. -## - -## -## Usage: shtool [] [ [] []] -## -## Available commands: -## echo Print string with optional construct expansion -## mdate Pretty-print modification time of a file or dir -## table Pretty print a field-sperarated list as a table -## prop Display progress with a running propeller -## move Move files with simultan substitution -## install Install a program, script or datafile -## mkdir Make one or more directories -## mkln Make link with calculation of relative paths -## mkshadow Make a shadow tree -## fixperm Fix file permissions inside a source tree -## guessos Simple OS/platform guesser -## arx Extended archive command -## slo Separate linker options by library class -## scpp Sharing C Pre-Processor -## version Generate and maintain a version information file -## path Deal with program paths -## - -if [ $# -eq 0 ]; then - echo "$0:ERROR: invalid command line" 1>&2 - echo "$0:HINT: run \`$0 -h' for usage" 1>&2 - exit 1 -fi -if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then - echo "This is shtool, version 1.3.0 (23-Jun-1999)" - echo "Copyright (c) 1994-1999 Ralf S. Engelschall " - echo '' - echo "Usage: shtool [] [ [] []]" - echo '' - echo 'Available global :' - echo ' -v, --version display shtool version information' - echo ' -h, --help display shtool usage help page (this one)' - echo '' - echo 'Available [] []:' - echo ' echo [-n] [-e] [ ...]' - echo ' mdate [-n] [-z] [-s] [-d] [-f] [-o] ' - echo ' table [-F] [-w] [-c] [-s] ...' - echo ' prop [-p]' - echo ' move [-e] [-p] ' - echo ' install [-c] [-C] [-s] [-m] [-o] [-g] [-e]' - echo ' ' - echo ' mkdir [-f] [-p] [-m] [ ...]' - echo ' mkln [-v] [-f] [-s] [ ...] ' - echo ' mkshadow [-v] ' - echo ' fixperm [-v] [ ...]' - echo ' guessos ' - echo ' arx [-v] [-C] [ ...]' - echo ' slo -- -L -l [ -L -l ... ]' - echo ' scpp [-v] [-p] [-o] [-t] [-M] [-D]' - echo ' [-C] [ ...]' - echo ' version [-l] [-n] [-p] [-s] [-i]' - echo ' [-d] ' - echo ' path [-s] [-r] [-d] [-b] [-m] [-p] [ ...]' - echo '' - exit 0 -fi -if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then - echo "shtool 1.3.0 (23-Jun-1999)" - exit 0 -fi -tool="$1" -shift -arg_spec="" -opt_spec="" -gen_tmpfile=no - -## -## DISPATCH INTO SCRIPT PROLOG -## - -case $tool in - echo ) - str_tool="echo" - str_usage="[-n] [-e] [ ...]" - arg_spec="0+" - opt_spec="ne" - ;; - mdate ) - str_tool="mdate" - str_usage="[-n] [-z] [-s] [-d] [-f] [-o] " - arg_spec="1" - opt_spec="nzsdf:!o:!" - opt_f=" " - opt_o="dmy" - ;; - table ) - str_tool="table" - str_usage="[-F] [-w] [-c] [-s] ..." - arg_spec="1+" - opt_spec="F:!w:!c:!s:!" - opt_F=":" - opt_w=15 - opt_c=3 - opt_s=79 - ;; - prop ) - str_tool="prop" - str_usage="[-p]" - arg_spec="0" - opt_spec="p:" - ;; - move ) - str_tool="move" - str_usage="[-e] [-p] " - arg_spec="2" - opt_spec="ep" - ;; - install ) - str_tool="install" - str_usage="[-c] [-C] [-s] [-m] [-o] [-g] [-e] " - arg_spec="2" - opt_spec="cCsm:o:g:e:" - ;; - mkdir ) - str_tool="mkdir" - str_usage="[-f] [-p] [-m] [ ...]" - arg_spec="1+" - opt_spec="fpm:" - ;; - mkln ) - str_tool="mkln" - str_usage="[-v] [-f] [-s] [ ...] " - arg_spec="2+" - opt_spec="vfs" - ;; - mkshadow ) - str_tool="mkshadow" - str_usage="[-v] " - arg_spec="2" - opt_spec="v" - ;; - fixperm ) - str_tool="fixperm" - str_usage="[-v] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="v" - ;; - guessos ) - str_tool="guessos" - str_usage="" - arg_spec="0" - opt_spec="" - ;; - arx ) - str_tool="arx" - str_usage="[-v] [-C] [ ...]" - arg_spec="3+" - opt_spec="vC:!" - opt_C="ar" - ;; - slo ) - str_tool="slo" - str_usage="-- -L -l [ -L -l ... ]" - arg_spec="1+" - opt_spec="" - ;; - scpp ) - str_tool="scpp" - str_usage="[-v] [-p] [-o] [-t] [-M] [-D] [-C] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="vpo:!t:!M:!D:!C:!" - opt_o="lib.h" - opt_t="lib.h.in" - opt_M="%%MARK%%" - opt_D="cpp" - opt_C="intern" - ;; - version ) - str_tool="version" - str_usage="[-l] [-n] [-p] [-s] [-i] [-d] " - arg_spec="1+" - opt_spec="l:!n:!p:!s:!i:!d:!" - opt_l="txt" - opt_n="unknown" - opt_p="unknown" - opt_s="unknown" - opt_i="P" - opt_d="NO" - gen_tmpfile=yes - ;; - path ) - str_tool="path" - str_usage="[-s] [-r] [-d] [-b] [-m] [-p] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="srdbmp:!" - opt_p="$PATH" - ;; - * ) - echo "$0:ERROR: unknown command \`$tool'" 2>&1 - echo "$0:HINT: run \`$0 -h' for usage" 2>&1 - exit 1 - ;; -esac - -## -## COMMON UTILITY CODE -## - -# determine name of tool -if [ ".$tool" != . ]; then - # inside shtool - toolcmd="$0 $tool" - msgprefix="shtool:$tool" -else - # standalone - toolcmd="$0" - msgprefix="$str_tool" -fi - -# parse argument specification string -eval `echo $arg_spec | sed -e 's/^\([0-9]*\)\(.*\)/arg_NUMS="\1"; arg_MODE="\2"/'` -test ".$arg_MODE" = . && arg_MODE="=" - -# parse option specification string -for opt in `echo "h$opt_spec" | sed -e 's/\([a-zA-Z0-9][!:+]*\)/\1 /g'`; do - opt_MODE="."; opt_INIT="." - eval `echo $opt |\ - sed -e 's/^\([a-zA-Z0-9]\)/opt_THIS="\1";/' \ - -e 's/";\([:+]\)/"; opt_MODE="\1";/' \ - -e 's/";\(!\)/"; opt_INIT="\1"/'` - eval "opt_MODE_${opt_THIS}=${opt_MODE}" - if [ ".$opt_INIT" != ".!" ]; then - case "$opt_MODE" in - "." ) eval "opt_${opt_THIS}=no" ;; - ":"|"+" ) eval "opt_${opt_THIS}=\"\"" ;; - esac - fi -done - -# interate over argument line -opt_PREV='' -while [ $# -gt 0 ]; do - # special option stops processing - if [ ".$1" = ".--" ]; then - shift - break - fi - - # determine option and argument - opt_ARG_OK=no - if [ ".$opt_PREV" != . ]; then - # merge previous seen option with argument - opt_OPT="$opt_PREV" - opt_ARG="$1" - opt_ARG_OK=yes - opt_PREV="" - else - # split argument into option and argument - case "$1" in - -[a-zA-Z0-9]*) - eval `echo "x$1" |\ - sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ - -e 's/";\(.*\)$/"; opt_ARG="\1"/'` - ;; - -[a-zA-Z0-9]) - opt_OPT=`awk 'BEGIN { printf("%s", substr(OPT, 2)); }' \ - "OPT=$1" &2 - echo "$msgprefix:HINT: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - ;; - esac -done -if [ ".$opt_PREV" != . ]; then - echo "$msgprefix:ERROR: missing argument to option \`-$opt_PREV'" 1>&2 - echo "$msgprefix:HINT: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 -fi - -# process help option -if [ .$opt_h = .yes ]; then - echo "Usage: $toolcmd $str_usage" - exit 0 -fi - -# complain about incorrect number of arguments -case $arg_MODE in - "=" ) - if [ $# -ne $arg_NUMS ]; then - echo "$msgprefix:ERROR: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 - echo "$msgprefix:HINT: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - fi - ;; - "+" ) - if [ $# -lt $arg_NUMS ]; then - echo "$msgprefix:ERROR: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 - echo "$msgprefix:HINT: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - fi - ;; -esac - -# establish a temporary file on request -if [ ".$gen_tmpfile" = .yes ]; then - tmpdir="/tmp" - if [ ".$TMPDIR" != . ]; then - tmpdir="$TMPDIR" - else - if [ ".$TEMPDIR" != . ]; then - tmpdir="$TEMPDIR" - fi - fi - tmpfile="$tmpdir/.shtool.$$" - rm -f $tmpfile >/dev/null 2>&1 - touch $tmpfile -fi - -## -## DISPATCH INTO SCRIPT BODY -## - -case $tool in - -echo ) - ## - ## echo -- Print string with optional construct expansion - ## Copyright (c) 1998-1999 Ralf S. Engelschall - ## Originally written for WML as buildinfo - ## - - text="$*" - - # check for broken escape sequence expansion - seo='' - bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" != .3 ]; then - bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" = .3 ]; then - seo='-E' - fi - fi - - # determine terminal bold sequence - term_bold='' - term_norm='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then - # the most important terminals we directly know - case $TERM in - xterm|xterm*|vt220|vt220*) - term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` - term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` - ;; - vt100|vt100*) - term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` - term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` - ;; - esac - # then try a possibly existing "tput" or "tcout" utility - paths=`echo $PATH | sed -e 's/:/ /g'` - for tool in tput tcout; do - for dir in $paths; do - if [ -r "$dir/$tool" ]; then - for seq in bold md smso; do # smso is last - bold="`$dir/$tool $seq 2>/dev/null`" - if [ ".$bold" != . ]; then - term_bold="$bold" - break - fi - done - if [ ".$term_bold" != . ]; then - for seq in me rmso reset; do # reset is last - norm="`$dir/$tool $seq 2>/dev/null`" - if [ ".$norm" != . ]; then - term_norm="$norm" - break - fi - done - fi - break - fi - done - if [ ".$term_bold" != . -a ".$term_norm" != . ]; then - break; - fi - done - if [ ".$term_bold" = . -o ".$term_norm" = . ]; then - echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 - fi - fi - - # determine user name - username='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uU]'`" != . ]; then - username="$LOGNAME" - if [ ".$username" = . ]; then - username="$USER" - if [ ".$username" = . ]; then - username="`(whoami) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$username" = . ]; then - username="`(who am i) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$username" = . ]; then - username='unknown' - fi - fi - fi - fi - fi - - # determine user id - userid='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%U'`" != . ]; then - userid="`(id -u) 2>/dev/null`" - if [ ".$userid" = . ]; then - str="`(id) 2>/dev/null`" - if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then - userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*//'` - fi - if [ ".$userid" = . ]; then - userid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid=`(ypcat passwd) 2>/dev/null | - egrep "^${username}:" | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid='?' - fi - fi - fi - fi - fi - - # determine host name - hostname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then - hostname="`(uname -n) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$hostname" = . ]; then - hostname="`(hostname) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$hostname" = . ]; then - hostname='unknown' - fi - fi - case $hostname in - *.* ) - domainname=".`echo $hostname | cut -d. -f2-`" - hostname="`echo $hostname | cut -d. -f1`" - ;; - esac - fi - - # determine domain name - domainname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then - if [ ".$domainname" = . ]; then - if [ -f /etc/resolv.conf ]; then - domainname="`egrep '^[ ]*domain' /etc/resolv.conf | head -1 |\ - sed -e 's/.*domain//' \ - -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ - -e 's/^\.//' -e 's/^/./' |\ - awk '{ printf("%s", $1); }'`" - if [ ".$domainname" = . ]; then - domainname="`egrep '^[ ]*search' /etc/resolv.conf | head -1 |\ - sed -e 's/.*search//' \ - -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ - -e 's/ .*//' -e 's/ .*//' \ - -e 's/^\.//' -e 's/^/./' |\ - awk '{ printf("%s", $1); }'`" - fi - fi - fi - fi - - # determine current time - time_day='' - time_month='' - time_year='' - time_monthname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[DMYm]'`" != . ]; then - time_day=`date '+%d'` - time_month=`date '+%m'` - time_year=`date '+%Y' 2>/dev/null` - if [ ".$time_year" = . ]; then - time_year=`date '+%y'` - case $time_year in - [5-9][0-9]) time_year="19$time_year" ;; - [0-4][0-9]) time_year="20$time_year" ;; - esac - fi - case $time_month in - 1|01) time_monthname='Jan' ;; - 2|02) time_monthname='Feb' ;; - 3|03) time_monthname='Mar' ;; - 4|04) time_monthname='Apr' ;; - 5|05) time_monthname='May' ;; - 6|06) time_monthname='Jun' ;; - 7|07) time_monthname='Jul' ;; - 8|08) time_monthname='Aug' ;; - 9|09) time_monthname='Sep' ;; - 10) time_monthname='Oct' ;; - 11) time_monthname='Nov' ;; - 12) time_monthname='Dec' ;; - esac - fi - - # expand special ``%x'' constructs - if [ ".$opt_e" = .yes ]; then - text=`echo $seo "$text" |\ - sed -e "s;%B;${term_bold};g" \ - -e "s;%b;${term_norm};g" \ - -e "s;%u;${username};g" \ - -e "s;%U;${userid};g" \ - -e "s;%h;${hostname};g" \ - -e "s;%d;${domainname};g" \ - -e "s;%D;${time_day};g" \ - -e "s;%M;${time_month};g" \ - -e "s;%Y;${time_year};g" \ - -e "s;%m;${time_monthname};g"` - fi - - # create output - echo dummy |\ - awk '{ - if (OPT_N == "yes") - NL = ""; - else - NL = "\n"; - printf("%s%s", TEXT, NL); - }' TEXT="$text" OPT_N="$opt_n" - ;; - -mdate ) - ## - ## mdate -- Pretty-print modification time of a file or dir - ## Copyright (c) 1995-1997 Free Software Foundation, Inc. - ## Originally idea and basis code by Ulrich Drepper - ## Enhanced by Ralf S. Engelschall for shtool - ## - - fod="$1" - case "$opt_o" in - [dmy][dmy][dmy] ) - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-o': $opt_o" 1>&2 - exit 1 - ;; - esac - if [ ! -r "$fod" ]; then - echo "$msgprefix:Error: file or directory not found: $fod" 1>&2 - exit 1 - fi - - # prevent "date" giving response in another language - LANG=C; export LANG - LC_ALL=C; export LC_ALL - LC_TIME=C; export LC_TIME - - # get the extended ls output of the file or directory. - if ls -L /dev/null >/dev/null 2>&1; then - set - x`ls -L -l -d $fod` - else - set - x`ls -l -d $fod` - fi - - # The month is at least the fourth argument - # (3 shifts here, the next inside the loop). - shift; shift; shift - - # Find the month. Next argument is day, followed by the year or time. - month="" - while [ ".$month" = . ]; do - shift - case $1 in - Jan) month=January; nummonth=1 ;; - Feb) month=February; nummonth=2 ;; - Mar) month=March; nummonth=3 ;; - Apr) month=April; nummonth=4 ;; - May) month=May; nummonth=5 ;; - Jun) month=June; nummonth=6 ;; - Jul) month=July; nummonth=7 ;; - Aug) month=August; nummonth=8 ;; - Sep) month=September; nummonth=9 ;; - Oct) month=October; nummonth=10 ;; - Nov) month=November; nummonth=11 ;; - Dec) month=December; nummonth=12 ;; - esac - done - day="$2" - year="$3" - - # We finally have to deal with the problem that the "ls" output - # gives either the time of the day or the year. - case $year in - *:*) - this_year=`date '+%Y' 2>/dev/null` - if [ ".$this_year" = . ]; then - this_year=`date '+%y'` - case $this_year in - [5-9][0-9]) this_year="19$this_year" ;; - [0-4][0-9]) this_year="20$this_year" ;; - esac - fi - # for the following months of the last year the time notation - # is usually also used for files modified in the last year. - this_month=`date '+%m'` - if (expr $nummonth \> $this_month) >/dev/null; then - this_year=`expr $this_year - 1` - fi - year="$this_year" - ;; - esac - - # Optionally fill day and month with leeding zeros - if [ ".$opt_z" = .yes ]; then - case $day in - [0-9][0-9] ) ;; - [0-9] ) day="0$day" ;; - esac - case $nummonth in - [0-9][0-9] ) ;; - [0-9] ) nummonth="0$nummonth" ;; - esac - fi - - # Optionally use digits for month - if [ ".$opt_d" = .yes ]; then - month="$nummonth" - fi - - # Optionally shorten the month name to three characters - if [ ".$opt_s" = .yes ]; then - month=`echo $month | cut -c1-3` - fi - - # Output the resulting date string - echo dummy | awk '{ - for (i = 0; i < 3; i++) { - now = substr(order, 1, 1); - order = substr(order, 2); - if (now == "d") - out = day; - else if (now == "m") - out = month; - else if (now == "y") - out = year; - if (i < 2) - printf("%s%s", out, field); - else - printf("%s", out); - } - if (newline != "yes") - printf("\n"); - }' "day=$day" "month=$month" "year=$year" \ - "field=$opt_f" "order=$opt_o" "newline=$opt_n" - ;; - -table ) - ## - ## table -- Pretty print a field-sperarated list as a table - ## Copyright (c) 1998-1999 Ralf S. Engelschall - ## Originally written for Apache - ## - - if [ $opt_c -gt 4 ]; then - echo "$msgprefix:Error: Invalid number of colums (1..4 allowed only)" 1>&2 - exit 1 - fi - case "x$opt_F" in - x? ) ;; - * ) echo "$msgprefix:Error: Invalid seperator (one char allowed only)" 1>&2; exit 1 ;; - esac - - # split the list into a table - list=` - IFS="$opt_F" - for entry in $*; do - if [ ".$entry" != . ]; then - echo "$entry" - fi - done |\ - awk " - BEGIN { list = \"\"; n = 0; } - { - list = list \\$1; - n = n + 1; - if (n < $opt_c) { - list = list \":\"; - } - if (n == $opt_c) { - list = list \"\\n\"; - n = 0; - } - } - END { print list; } - " - ` - - # format table cells and make sure table - # doesn't exceed maximum width - IFS=' - ' - for entry in $list; do - case $opt_c in - 1 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s\\n\", \$1); }'" ;; - 2 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s\\n\", \$1, \$2); }'" ;; - 3 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3); }'" ;; - 4 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3, \$4); }'" ;; - esac - done |\ - awk "{ - if (length(\$0) > $opt_s) { - printf(\"%s\\n\", substr(\$0, 0, $opt_s-1)); - } else { - print \$0; - } - }" - ;; - -prop ) - ## - ## prop -- Display progress with a running propeller - ## Copyright (c) 1998-1999 Ralf S. Engelschall - ## Originally written for mod_ssl - ## - - perl='' - for dir in `echo $PATH | sed -e 's/:/ /g'` .; do - if [ -f "$dir/perl" ]; then - perl="$dir/perl" - break - fi - done - if [ ".$perl" != . ]; then - # Perl is preferred because writing to STDERR in - # Perl really writes immediately as one would expect - $perl -e ' - @p = ("|","/","-","\\"); - $i = 0; - while () { - printf(STDERR "\r%s...%s\b", $ARGV[0], $p[$i++]); - $i = 0 if ($i > 3); - } - printf(STDERR "\r%s \n", $ARGV[0]); - ' "$opt_p" - else - # But when Perl doesn't exists we use Awk even - # some Awk's buffer even the /dev/stderr writing :-( - awk ' - BEGIN { - split("|#/#-#\\", p, "#"); - i = 1; - } - { - printf("\r%s%c\b", prefix, p[i++]) > "/dev/stderr"; - if (i > 4) { i = 1; } - } - END { - printf("\r%s \n", prefix) > "/dev/stderr"; - } - ' "prefix=$opt_p" - fi - ;; - -move ) - ## - ## move -- Move files with simultan substitution - ## Copyright (c) 1999 Ralf S. Engelschall - ## Originally written for shtool - ## - - src="$1" - dst="$2" - - # consistency checks - if [ ".$src" = . -o ".$dst" = . ]; then - echo "$msgprefix:Error: Invalid arguments" 1>&2 - exit 1 - fi - if [ ".$src" = ".$dst" ]; then - echo "$msgprefix:Error: Source and destination files are the same" 1>&2 - exit 1 - fi - expsrc="$src" - if [ ".$opt_e" = .yes ]; then - expsrc="`echo $expsrc`" - fi - if [ ".$opt_e" = .yes ]; then - if [ ".`echo "$src" | sed -e 's;^.*\\*.*$;;'`" = ".$src" ]; then - echo "$msgprefix:Error: Source doesn't contain wildcard ('*'): $dst" 1>&2 - exit 1 - fi - if [ ".`echo "$dst" | sed -e 's;^.*%[1-9].*$;;'`" = ".$dst" ]; then - echo "$msgprefix:Error: Destination doesn't contain substitution ('%N'): $dst" 1>&2 - exit 1 - fi - if [ ".$expsrc" = ".$src" ]; then - echo "$msgprefix:Error: Sources not found or no asterisk : $src" 1>&2 - exit 1 - fi - else - if [ ! -r "$src" ]; then - echo "$msgprefix:Error: Source not found: $src" 1>&2 - exit 1 - fi - fi - - # determine substitution patterns - if [ ".$opt_e" = .yes ]; then - srcpat=`echo "$src" | sed -e 's/\\./\\\\./g' -e 's/;/\\;/g' -e 's;\\*;\\\\(.*\\\\);g'` - dstpat=`echo "$dst" | sed -e 's;%\([1-9]\);\\\\\1;g'` - fi - - # iterate over source(s) - for onesrc in $expsrc; do - if [ .$opt_e = .yes ]; then - onedst=`echo $onesrc | sed -e "s;$srcpat;$dstpat;"` - else - onedst="$dst" - fi - errorstatus=0 - if [ ".$opt_p" = .yes ]; then - if [ -r $onedst ]; then - if cmp -s $onesrc $onedst; then - rm -f $onesrc || errstatus=$? - else - mv -f $onesrc $onedst || errstatus=$? - fi - else - mv -f $onesrc $onedst || errstatus=$? - fi - else - mv -f $onesrc $onedst || errstatus=$? - fi - if [ $errorstatus -ne 0 ]; then - break; - fi - done - exit $errorstatus - ;; - -install ) - ## - ## install -- Install a program, script or datafile - ## Copyright (c) 1997-1999 Ralf S. Engelschall - ## Originally written for shtool - ## - - src="$1" - dst="$2" - - # If destination is a directory, append the input filename - if [ -d $dst ]; then - dst="$dst/`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'`" - fi - - # Add a possible extension to src and dst - if [ ".$opt_e" != . ]; then - src="$src$opt_e" - dst="$dst$opt_e" - fi - - # Make a temp file name in the destination directory - dstdir=`echo $dst | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;'` - dsttmp="$dstdir/#inst.$$#" - - # Copy or move the file name to the temp name - if [ ".$opt_c" = .yes ]; then - cp $src $dsttmp - else - mv $src $dsttmp - fi - - # Set options; do chmod last to preserve setuid bits - if [ ".$opt_s" = .yes ]; then - strip $dsttmp - fi - if [ ".$opt_o" != . ]; then - chown $opt_o $dsttmp - fi - if [ ".$opt_g" != . ]; then - chgrp $opt_g $dsttmp - fi - if [ ".$opt_m" != . ]; then - chmod $opt_m $dsttmp - fi - - # Determine whether to do a quick install - quick=no - if [ ".$opt_C" = .yes ]; then - if [ -r $dst ]; then - if cmp -s $src $dst; then - quick=yes - fi - fi - fi - - # Finally install the file to the real destination - if [ $quick = yes ]; then - rm -f $dsttmp - else - rm -f $dst - mv $dsttmp $dst - fi - ;; - -mkdir ) - ## - ## mkdir -- Make one or more directories - ## Copyright (c) 1996-1999 Ralf S. Engelschall - ## Originally written for public domain by Noah Friedman - ## Cleaned up and enhanced for shtool - ## - - errstatus=0 - for p in ${1+"$@"}; do - # when the directory already exists... - if [ -d "$p" ]; then - if [ ".$opt_f" = .no ]; then - echo "$msgprefix:Error: file exists: $p" 1>&2 - errstatus=1 - break - else - continue - fi - fi - # when the directory has to be created - if [ ".$opt_p" = .no ]; then - mkdir $p || errstatus=$? - else - # the smart situation - set fnord `echo ":$p" |\ - 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" ;; - esac - if [ ! -d "$pathcomp" ]; then - mkdir $pathcomp || errstatus=$? - if [ ".$opt_m" != . ]; then - chmod $opt_m $pathcomp || errstatus=$? - fi - fi - pathcomp="$pathcomp/" - done - fi - done - exit $errstatus - ;; - -mkln ) - ## - ## mkln -- Make link with calculation of relative paths - ## Copyright (c) 1999 Ralf S. Engelschall - ## Originally written for shtool - ## - - args=$? - srcs="" - while [ $# -gt 1 ]; do - srcs="$srcs $1" - shift - done - dst="$1" - if [ ! -d $dst ]; then - if [ $args -gt 2 ]; then - echo "$msgprefix:Error: multiple sources not allowed when target isn't a directory" 1>&2 - exit 1 - fi - fi - - # determine link options - lnopt="" - if [ ".$opt_f" = .yes ]; then - lnopt="$lnopt -f" - fi - if [ ".$opt_s" = .yes ]; then - lnopt="$lnopt -s" - fi - - # iterate over sources - for src in $srcs; do - # determine if one of the paths is an absolute path, - # because then we _have_ to use an absolute symlink - oneisabs=0 - srcisabs=0 - dstisabs=0 - case $src in - /* ) oneisabs=1; srcisabs=1 ;; - esac - case $dst in - /* ) oneisabs=1; dstisabs=1 ;; - esac - - # split source and destination into dir and base name - if [ -d $src ]; then - srcdir=`echo $src | sed -e 's;/*$;;'` - srcbase="" - else - srcdir=`echo $src | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'` - srcbase=`echo $src | sed -e 's;.*/\([^/]*\)$;\1;'` - fi - if [ -d $dst ]; then - dstdir=`echo $dst | sed -e 's;/*$;;'` - dstbase="" - else - dstdir=`echo $dst | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'` - dstbase=`echo $dst | sed -e 's;.*/\([^/]*\)$;\1;'` - fi - - # consistency check - if [ ".$dstdir" != . ]; then - if [ ! -d $dstdir ]; then - echo "$msgprefix:Error: destination directory not found: $dstdir" 1>&2 - exit 1 - fi - fi - - # make sure the source is reachable from the destination - if [ $dstisabs = 1 ]; then - if [ $srcisabs = 0 ]; then - if [ -d $srcdir ]; then - srcdir="`cd $srcdir; pwd | sed -e 's;/*$;;'`" - srcisabs=1 - oneisabs=1 - fi - fi - fi - - # split away a common prefix - prefix="" - if [ ".$srcdir" = ".$dstdir" ] && [ ".$srcdir" != . ]; then - prefix="$srcdir/" - srcdir="" - dstdir="" - else - while [ ".$srcdir" != . ] && [ ".$dstdir" != . ]; do - presrc=`echo $srcdir | sed -e 's;^\([^/]*\)/.*;\1;'` - predst=`echo $dstdir | sed -e 's;^\([^/]*\)/.*;\1;'` - if [ ".$presrc" != ".$predst" ]; then - break - fi - prefix="$prefix$presrc/" - srcdir=`echo $srcdir | sed -e 's;^[^/]*/*;;'` - dstdir=`echo $dstdir | sed -e 's;^[^/]*/*;;'` - done - fi - - # destination prefix is just the common prefix - dstpre="$prefix" - - # determine source prefix which is the reverse directory - # step-up corresponding to the destination directory - srcpre="" - if [ $oneisabs = 0 ] || [ ".$prefix" != . -a ".$prefix" != ./ ]; then - pl="$dstdir/" - OIFS="$IFS"; IFS='/' - for pe in $pl; do - [ ".$pe" = . ] && continue - srcpre="../$srcpre" - done - IFS="$OIFS" - else - if [ $srcisabs = 1 ]; then - srcpre="$prefix" - fi - fi - - # determine destination symlink name - if [ ".$dstbase" = . ]; then - if [ ".$srcbase" != . ]; then - dstbase="$srcbase" - else - dstbase=`echo "$prefix$srcdir" | sed -e 's;/*$;;' -e 's;.*/\([^/]*\)$;\1;'` - fi - fi - - # now finalize source and destination directory paths - srcdir=`echo $srcdir | sed -e 's;\([^/]\)$;\1/;'` - dstdir=`echo $dstdir | sed -e 's;\([^/]\)$;\1/;'` - - # run the final link command - if [ ".$opt_v" = .yes ]; then - echo "ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase" - fi - eval ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase - done - ;; - -mkshadow ) - ## - ## mkshadow -- Make a shadow tree - ## Copyright (c) 1998-1999 Ralf S. Engelschall - ## Originally written for Apache - ## - - # default IFS - DIFS=' - ' - - # source and destination directory - src=`echo "$1" | sed -e 's:/$::'` - dst=`echo "$2" | sed -e 's:/$::'` - - # check whether source exists - if [ ! -d $src ]; then - echo "$msgprefix:Error: source directory not found" 1>&2 - exit 1 - fi - - # determine if one of the paths is an absolute path, - # because then we have to use an absolute symlink - oneisabs=0 - case $src in - /* ) oneisabs=1 ;; - esac - case $dst in - /* ) oneisabs=1 ;; - esac - - # determine reverse directory for destination directory - dstrevdir='' - if [ $oneisabs = 0 ]; then - # (inlined fp2rp) - OIFS="$IFS"; IFS='/' - for pe in $dst; do - dstrevdir="../$dstrevdir" - done - IFS="$OIFS" - else - src="`cd $src; pwd`"; - fi - - # create directory tree at destination - if [ ! -d $dst ]; then - mkdir $dst - fi - DIRS="`cd $src - find . -type d -print |\ - sed -e '/\/CVS/d' \ - -e '/^\.$/d' \ - -e 's:^\./::'`" - OIFS="$IFS" IFS="$DIFS" - for dir in $DIRS; do - mkdir $dst/$dir - done - IFS="$OIFS" - - # fill directory tree with symlinks to files - FILES="`cd $src - find . -depth -print |\ - sed -e '/\.o$/d' \ - -e '/\.a$/d' \ - -e '/\.so$/d' \ - -e '/\.cvsignore$/d' \ - -e '/\/CVS/d' \ - -e '/\/\.#/d' \ - -e '/\.orig$/d' \ - -e 's/^\.\///'`" - OIFS="$IFS" IFS="$DIFS" - for file in $FILES; do - # don't use `-type f' above for find because of symlinks - if [ -d $file ]; then - continue - fi - basename=`echo $file | sed -e 's:^.*/::'` - dir=`echo $file | sed -e 's:[^/]*$::' -e 's:/$::' -e 's:$:/:' -e 's:^/$::'` - from=`echo "$src/$file" | sed -e 's/^\.\///'` - to="$dst/$dir$basename" - if [ $oneisabs = 0 ]; then - if [ ".$dir" != . ]; then - subdir=`echo $dir | sed -e 's:/$::'` - # (inlined fp2rp) - revdir='' - OIFS2="$IFS"; IFS='/' - for pe in $subdir; do - revdir="../$revdir" - done - IFS="$OIFS2" - # finalize from - from="$revdir$from" - fi - from="$dstrevdir$from" - fi - if [ ".$opt_v" = .yes ]; then - echo " $to" 1>&2 - fi - ln -s $from $to - done - IFS="$OIFS" - ;; - -fixperm ) - ## - ## fixperm -- Fix file permissions inside a source tree - ## Copyright (c) 1996-1999 Ralf S. Engelschall - ## Originally written for ePerl - ## - - paths="$*" - - # check whether the test command supports the -x option - cat >$tmpfile </dev/null; then - minusx="-x" - else - minusx="-r" - fi - rm -f $tmpfile - - # iterate over paths - for p in $paths; do - for file in `find $p -depth -print`; do - if [ -f $file ]; then - if [ $minusx $file ]; then - if [ ".$opt_v" = .yes ]; then - echo "-rwxrwxr-x $file" - fi - chmod 775 $file - else - if [ ".$opt_v" = .yes ]; then - echo "-rw-rw-r-- $file" - fi - chmod 664 $file - fi - continue - fi - if [ -d $file ]; then - if [ ".$opt_v" = .yes ]; then - echo "drwxrwxr-x $file" - fi - chmod 775 $file - continue - fi - if [ ".$opt_v" = .yes ]; then - echo "?????????? $file" - fi - done - done - ;; - -guessos ) - ## - ## guessos -- Simple OS/platform guesser - ## Copyright (c) 1996-1999 The Apache Group, http://www.apache.org/ - ## The Apache license applies (see http://www.apache.org/docs/LICENSE) - ## Originally written for Apache - ## - - MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown" - RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown" - SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown" - VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown" - - XREL=`(uname -X) 2>/dev/null | grep "^Release" | awk '{print $3}'` - if [ "x$XREL" != "x" ]; then - if [ -f /etc/kconfig ]; then - case "$XREL" in - 4.0|4.1) echo "${MACHINE}-whatever-isc4"; exit 0 ;; - esac - else - case "$XREL" in - 3.2v4.2) - echo "whatever-whatever-sco3"; exit 0 - ;; - 3.2v5.0*) - echo "whatever-whatever-sco5"; exit 0 - ;; - 4.2MP) - if [ "x$VERSION" = "x2.1.1" ]; then - echo "${MACHINE}-whatever-unixware211"; exit 0 - elif [ "x$VERSION" = "x2.1.2" ]; then - echo "${MACHINE}-whatever-unixware212"; exit 0 - else - echo "${MACHINE}-whatever-unixware2"; exit 0 - fi - ;; - 4.2) - echo "whatever-whatever-unixware1"; exit 0 - ;; - 5) - case "$VERSION" in - 7*) echo "${MACHINE}-whatever-unixware7"; exit 0 ;; - esac - ;; - esac - fi - fi - case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in - MiNT:*) - echo "m68k-atari-mint"; exit 0 - ;; - A/UX:*) - echo "m68k-apple-aux3"; exit 0 - ;; - AIX:*) - MACH=`echo $MACHINE | sed -e 's;[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F];;'` - echo "${MACH}-ibm-aix${VERSION}.${RELEASE}"; exit 0 - ;; - dgux:*) - echo "${MACHINE}-dg-dgux"; exit 0 - ;; - HI-UX:*) - echo "${MACHINE}-hi-hiux"; exit 0 - ;; - HP-UX:*) - HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo "${MACHINE}-hp-hpux${HPUXVER}"; exit 0 - ;; - IRIX:*) - if [ -f /usr/lib32/mips4/libm.so ]; then - echo "${MACHINE}/32-sgi-irix${RELEASE}"; exit 0 - else - echo "${MACHINE}-sgi-irix${RELEASE}"; exit 0 - fi - ;; - IRIX64:*) - echo "${MACHINE}-sgi-irix64"; exit 0 - ;; - Linux:[2-9].*) - echo "${MACHINE}-whatever-linux2"; exit 0 - ;; - Linux:1.*) - echo "${MACHINE}-whatever-linux1"; exit 0 - ;; - LynxOS:*) - echo "${MACHINE}-lynx-lynxos"; exit 0 - ;; - BSD/386|BSD/OS:3.*) - echo "${MACHINE}-whatever-bsdi3"; exit 0 - ;; - BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*) - echo "i486-whatever-bsdi"; exit 0 - ;; - BSD/386:*|BSD/OS:*) - echo "${MACHINE}-whatever-bsdi"; exit 0 - ;; - FreeBSD:*) - VERS=`echo ${RELEASE} | sed -e 's/[-(].*//'` - MACH=`sysctl -n hw.model` - ARCH='whatever' - case ${MACH} in - *386* ) MACH="i386" ;; - *486* ) MACH="i486" ;; - Pentium\ II*) MACH="i686" ;; - Pentium* ) MACH="i586" ;; - Alpha* ) MACH="alpha" ;; - * ) MACH="$MACHINE" ;; - esac - case ${MACH} in - i[0-9]86 ) ARCH="pc" ;; - esac - echo "${MACH}-${ARCH}-freebsd${VERS}"; exit 0 - ;; - NetBSD:*:*:*486*) - echo "i486-whatever-netbsd${RELEASE}"; exit 0 - ;; - NetBSD:*) - echo "${MACHINE}-whatever-netbsd${RELEASE}"; exit 0 - ;; - OpenBSD:*) - echo "${MACHINE}-whatever-openbsd"; exit 0 - ;; - OSF1:*:*:*alpha*) - VERS=`echo $RELEASE | sed -e 's;^V;;'` - echo "${MACHINE}-dec-osf${VERS}"; exit 0 - ;; - QNX:*) - if [ "$VERSION" -gt 422 ]; then - echo "${MACHINE}-qssl-qnx32" - else - echo "${MACHINE}-qssl-qnx" - fi - exit 0 - ;; - Paragon*:*:*:*) - echo "i860-intel-osf1"; exit 0 - ;; - SunOS:5.*) - VERSION=`echo $RELEASE | sed -e 's;^5\.;;'` - echo "${MACHINE}-sun-solaris2.${VERSION}"; exit 0 - ;; - SunOS:*) - echo "${MACHINE}-sun-sunos4"; exit 0 - ;; - UNIX_System_V:4.*:*) - echo "${MACHINE}-whatever-sysv4"; exit 0 - ;; - unix:3.0.9*:*:88k) - echo "${MACHINE}-encore-sysv4"; exit 0 - ;; - *:4*:R4*:m88k) - echo "${MACHINE}-whatever-sysv4"; exit 0 - ;; - UnixWare:5:99*:*) - # Gemini, beta release of next rev of unixware - echo "${MACHINE}-whatever-unixware212"; exit 0 - ;; - DYNIX/ptx:4*:*) - echo "${MACHINE}-whatever-sysv4"; exit 0 - ;; - *:4.0:3.0:[345][0-9]?? | *:4.0:3.0:3[34]??[/,]* | library:*) - echo "x86-ncr-sysv4"; exit 0 - ;; - ULTRIX:*) - echo "${MACHINE}-unknown-ultrix"; exit 0 - ;; - SINIX-?:* | ReliantUNIX-?:*) - echo "${MACHINE}-siemens-sysv4"; exit 0 - ;; - POSIX*BS2000) - echo "${MACHINE}-siemens-sysv4"; exit 0 - ;; - machten:*) - echo "${MACHINE}-tenon-${SYSTEM}"; exit 0; - ;; - ConvexOS:*:11.*:*) - echo "${MACHINE}-v11-${SYSTEM}"; exit 0; - ;; - UNIX_SV:*:*:maxion) - echo "${MACHINE}-ccur-sysv4"; exit 0; - ;; - PowerMAX_OS:*:*:Night_Hawk) - MACHINE=`uname -p` - echo "${MACHINE}-concurrent-powermax"; exit 0; - ;; - UNIX_SV:*) - if [ -d /usr/nec ];then - echo "mips-nec-sysv4"; exit 0; - fi - ;; - NonStop-UX:4.[02]*:[BC]*:*) - echo "${MACHINE}-tandem-sysv4"; exit 0; - ;; - Rhapsody:*:*:*) - case "${MACHINE}" in - "Power Macintosh") MACHINE=powerpc ;; - esac - echo "${MACHINE}-apple-rhapsody${RELEASE}"; exit 0 - ;; - "Mac OS":*:*:*) - MACHINE=`uname -p` - echo "${MACHINE}-apple-macos${RELEASE}"; exit 0 - ;; - "RISC iX":*) - echo "arm-whatever-riscix"; exit 0; - ;; - *:4.0:2:*) - echo "whatever-unisys-sysv4"; exit 0; - ;; - *:*:dcosx:NILE*) - echo "pyramid-pyramid-svr4"; exit 0; - ;; - *:*:*:"DRS 6000") - echo "drs6000-whatever-whatever"; exit 0; - ;; - esac - - # Now NeXT - ISNEXT=`(hostinfo) 2>/dev/null` - case "$ISNEXT" in - *NeXT*) - # Swiped from a friendly uname clone for NEXT/OPEN Step. - NEXTOSVER="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`" - if [ "$NEXTOSVER" -gt 3.3 ]; then - NEXTOS="openstep" - else - NEXTOS="nextstep" - fi - NEXTREL="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`" - NEXTARCH=`arch` - echo "${NEXTARCH}-next-${NEXTOS}${NEXTREL}" ; exit 0 - ;; - esac - - # Fallback - echo "${MACHINE}-whatever-${SYSTEM}|${RELEASE}|${VERSION}" - ;; - -arx ) - ## - ## arx -- Extended archive command - ## Copyright (c) 1999 Ralf S. Engelschall - ## Originally written for shtool - ## - - ar_prg="$opt_C"; shift - ar_cmd="$1"; shift - archive="$1"; shift - files="$*" - - # walk through the file list and expand archives members - tmpdir=`echo $archive | sed -e 's;[^/]*$;.arx;'` - nfiles='' - for file in $files; do - if [ ! -f $file ]; then - echo "$msgprefix:Error: input file not found: $file" 1>&2 - exit 1 - fi - case $file in - *.a ) - if [ ! -d $tmpdir ]; then - if [ ".$opt_v" = .yes ]; then - echo "mkdir $tmpdir" - fi - mkdir $tmpdir - fi - case $tmpdir in - .arx ) - from="../$file" - ;; - * ) - dir=`echo $file | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;'` - base=`echo $file | sed -e 's;.*/\([^/]*\)$;\1;'` - from="`cd $dir; pwd`/$base" - ;; - esac - if [ ".$opt_v" = .yes ]; then - echo "(cd $tmpdir && $ar_prg x $from)" - fi - (cd $tmpdir && eval $ar_prg x $from) - if [ $? -ne 0 ]; then - echo "$msgprefix:Error: member extraction failed for archive: $file" 1>&2 - exit 1 - fi - for member in - `eval $ar_prg t $file`; do - [ ".$member" = .- ] && continue - nfiles="$nfiles $tmpdir/$member" - done - ;; - * ) - nfiles="$nfiles $file" - ;; - esac - done - - # run the final archive command - if [ ".$opt_v" = .yes ]; then - echo "$ar_prg $ar_cmd $archive $nfiles" - fi - eval $ar_prg $ar_cmd $archive $nfiles - if [ $? -ne 0 ]; then - echo "$msgprefix:Error: archive command failed" 1>&2 - exit $? - fi - - # cleanup and die gracefully - if [ -d $tmpdir ]; then - if [ ".$opt_v" = .yes ]; then - echo "rm -rf $tmpdir" - fi - rm -rf $tmpdir - fi - ;; - -slo ) - ## - ## slo -- Separate linker options by library class - ## Copyright (c) 1998-1999 Ralf S. Engelschall - ## Originally written for Apache - ## - - DIFS=' - ' - - # parse out -L and -l options from command line - DIRS='' - LIBS='' - ARGV='' - optprev="" - OIFS="$IFS" IFS="$DIFS" - for opt - do - # concatenate with previous option if exists - if [ ".$optprev" != . ]; then - opt="${optprev}${opt}"; - optprev='' - fi - # remember options for arg when used stand-alone - if [ ".$opt" = ".-L" -o ".$opt" = ".-l" ]; then - optprev="$opt" - continue; - fi - # split argument into option plus option argument - arg="`echo $opt | cut -c3-`" - opt="`echo $opt | cut -c1-2`" - # store into containers - case $opt in - -L) DIRS="$DIRS:$arg" ;; - -l) LIBS="$LIBS:$arg" ;; - *) ARGV="$ARGV $opt" ;; - esac - done - IFS="$OIFS" - - # set linker default directories - DIRS_DEFAULT='/lib:/usr/lib' - if [ ".$LD_LIBRARY_PATH" != . ]; then - DIRS_DEFAULT="$DIRS_DEFAULT:$LD_LIBRARY_PATH" - fi - - # sort options by class - DIRS_OBJ='' - LIBS_OBJ='' - DIRS_PIC='' - LIBS_PIC='' - DIRS_DSO='' - LIBS_DSO='' - - # for each library... - OIFS="$IFS" IFS=':' - for lib in $LIBS; do - [ ".$lib" = . ] && continue - - found='no' - found_indefdir='no' - found_type='' - found_dir='' - - # for each directory... - OIFS2="$IFS" IFS=":$DIFS" - for dir in ${DIRS} switch-to-defdirs ${DIRS_DEFAULT}; do - [ ".$dir" = . ] && continue - [ ".$dir" = .switch-to-defdirs ] && found_indefdir=yes - [ ! -d $dir ] && continue - - # search the file - OIFS3="$IFS" IFS="$DIFS" - for file in '' `cd $dir && ls lib${lib}.* 2>/dev/null`; do - [ ".$file" = . ] && continue - case $file in - *.so|*.so.[0-9]*|*.sl|*.sl.[0-9]* ) - found=yes; - found_type=DSO; - break - ;; - *.lo|*.la ) - found=yes; - found_type=PIC - ;; - *.a ) - if [ ".$found_type" = . ]; then - found=yes - found_type=OBJ - fi - ;; - esac - done - IFS="$OIFS3" - if [ ".$found" = .yes ]; then - found_dir="$dir" - break - fi - done - IFS="$OIFS2" - - if [ ".$found" = .yes ]; then - if [ ".$found_indefdir" != .yes ]; then - eval "dirlist=\"\${DIRS_${found_type}}:\"" - if [ ".`echo \"$dirlist\" | fgrep :$found_dir:`" = . ]; then - eval "DIRS_${found_type}=\"\$DIRS_${found_type}:${found_dir}\"" - fi - eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\"" - else - eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\"" - fi - else - LIBS_OBJ="$LIBS_OBJ:$lib" - #dirlist="`echo $DIRS $DIRS_DEFAULT | sed -e 's/:/ /g'`" - #echo "slo:Warning: library \"$lib\" not found in any of the following dirs:" 2>&1 - #echo "slo:Warning: $dirlist" 1>&1 - fi - done - IFS="$OIFS" - - # also pass-through unused dirs even if it's useless - OIFS="$IFS" IFS=':' - for dir in $DIRS; do - dirlist="${DIRS_OBJ}:${DIRS_PIC}:${DIRS_DSO}:" - if [ ".`echo \"$dirlist\" | fgrep :$dir:`" = . ]; then - DIRS_OBJ="$DIRS_OBJ:$dir" - fi - done - IFS="$OIFS" - - # reassemble the options but seperated by type - OIFS="$IFS" IFS="$DIFS" - for type in OBJ PIC DSO; do - OIFS2="$IFS" IFS=':' - eval "libs=\"\$LIBS_${type}\"" - opts='' - for lib in $libs; do - [ ".$lib" = . ] && continue - opts="$opts -l$lib" - done - eval "LIBS_${type}=\"$opts\"" - - eval "dirs=\"\$DIRS_${type}\"" - opts='' - for dir in $dirs; do - [ ".$dir" = . ] && continue - opts="$opts -L$dir" - done - eval "DIRS_${type}=\"$opts\"" - IFS="$OIFS2" - done - IFS="$OIFS" - - # give back results - OIFS="$IFS" IFS="$DIFS" - for var in ARGV DIRS_OBJ LIBS_OBJ DIRS_PIC LIBS_PIC DIRS_DSO LIBS_DSO; do - eval "val=\"\$${var}\"" - val="`echo $val | sed -e 's/^ *//'`" - echo "SLO_${var}=\"${val}\"" - done - IFS="$OIFS" - ;; - -scpp ) - ## - ## scpp -- Sharing C Pre-Processor - ## Copyright (c) 1999 Ralf S. Engelschall - ## Originally written for NPS - ## - - srcs="$*" - output="${opt_o}.n" - - # parse source file(s) - if [ ".$opt_v" = .yes ]; then - echo "Parsing:" | awk '{ printf("%s", $0); }' 1>&2 - fi - for src in $srcs; do - if [ ".$opt_v" = .yes ]; then - echo $src | awk '{ printf(" %s", $0); }' 1>&2 - fi - awk <$src ' - BEGIN { - ln = 0; - fln = 0; - level = 0; - mode = ""; - store = ""; - } - { - ln++; - } - /^#if.*/ { - level++; - } - /^#if [a-zA-Z_][a-zA-Z0-9_]* *$/ { - if ($2 == define) { - mode = "D"; - printf("D:#line %d \"%s\"\n", ln, src); - next; - } - } - /^#endif.*/ { - level--; - if (mode == "D" && level == 0) { - mode = ""; - next; - } - } - /^[a-zA-Z_][a-zA-Z0-9_].*;.*/ || /^[a-zA-Z_][a-zA-Z0-9_].*=.*/ { - if ($1 == class) { - printf("V:#line %d \"%s\"\n", ln, src); - printf("V:%s\n", $0); - printf("J:%s\n", $0); - next; - } - } - /^[a-zA-Z_][a-zA-Z0-9_]*/ { - if ($1 == class) { - fln = ln; - store = $0; - mode = "F"; - next; - } - } - /^\{ *$/ { - if (mode == "F") { - printf("F:#line %d \"%s\"\n", fln, src); - printf("F:%s;\n", store); - printf("I:%s;\n", store); - store = ""; - mode = ""; - next; - } - } - { - if (mode == "D") - printf("D:%s\n", $0); - else if (mode == "F") - store = store " " $0; - } - ' "src=$src" "define=$opt_D" "class=$opt_C" >>$tmpfile - done - if [ ".$opt_v" = .yes ]; then - echo "" 1>&2 - fi - - # start generating output header - echo "/* $opt_o -- autogenerated from $opt_t, DO NOT EDIT! */" >$output - echo "#line 1 \"$opt_t\"" >>$output - sed <$opt_t -e "1,/^${opt_M} *\$/p" -e 'd' |\ - sed -e "/^${opt_M} *\$/d" >>$output - - # merge in the define blocks - grep '^D:' $tmpfile | sed -e 's/^D://' >>$output - - # generate standard prolog - echo "#line 1 \"_ON_THE_FLY_\"" >>$output - echo "" >>$output - echo "/* make sure the scpp source extensions are skipped */" >>$output - echo "#define $opt_D 0" >>$output - echo "#define $opt_C /**/" >>$output - - # generate namespace hiding for variables - echo "" >>$output - echo "/* move intern variables to hidden namespace */" >>$output - grep '^J:' $tmpfile | sed >>$output \ - -e 's/^J://' \ - -e 's/ */ /g' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\)\[\];.*$/#define \1 __\1/' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\)\[\] =.*$/#define \1 __\1/' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\);.*$/#define \1 __\1/' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\) =.*$/#define \1 __\1/' - - # generate namespace hiding for functions - echo "" >>$output - echo "/* move intern function to hidden namespace */" >>$output - grep '^I:' $tmpfile | sed >>$output \ - -e 's/^I://' \ - -e 's/\([ (]\) */\1/g' \ - -e 's/ *\([),]\)/\1/g' \ - -e 's/^[^(]*[ *]\([a-zA-Z0-9_]*\)(.*$/#define \1 __\1/' - - # generate prototypes for variables - echo "" >>$output - echo "/* prototypes for intern variables */" >>$output - grep '^V:' $tmpfile | sed >>$output \ - -e 's/^V://' \ - -e 's/ */ /g' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\[\]\);.*$/\1;/' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\[\]\) =.*$/\1;/' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\);.*$/\1;/' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\) =.*$/\1;/' \ - -e 's/ ;/;/g' \ - -e "s/^$opt_C /extern /" - - # generate prototypes for functions - echo "" >>$output - echo "/* prototypes for intern functions */" >>$output - grep '^F:' $tmpfile | sed >>$output \ - -e 's/^F://' \ - -e 's/\([ (]\) */\1/g' \ - -e 's/ *\([),]\)/\1/g' \ - -e "s/^$opt_C /extern /" - - # finish generating output header - n=`(echo ''; sed <$opt_t -e "1,/^${opt_M} *\$/p" -e 'd') |\ - wc -l | sed -e 's;^ *\([0-9]*\) *$;\1;'` - echo "#line $n \"$opt_t\"" >>$output - sed <$opt_t -e "/^${opt_M} *\$/,\$p" -e 'd' |\ - sed -e "/^${opt_M} *\$/d" >>$output - - # create final output file - if [ -f $opt_o ]; then - if [ ".$opt_p" = .yes ]; then - grep -v '^#line' $opt_o >$tmpfile.o - grep -v '^#line' $output >$tmpfile.n - out_old="$tmpfile.o" - out_new="$tmpfile.n" - else - out_old="$opt_o" - out_new="$output" - fi - if cmp -s $out_old $out_new; then - : - else - cp $output $opt_o - fi - else - cp $output $opt_o - fi - rm -f $output - rm -f $tmpfile $tmpfile.* >/dev/null 2>&1 - ;; - -version ) - ## - ## version -- Generate and maintain a version information file - ## Copyright (c) 1994-1999 Ralf S. Engelschall - ## Originally written for ePerl - ## - - LANGUAGE="$opt_l" - NAME="$opt_n" - PREFIX="$opt_p" - FULLVERSION="$opt_s" - INCREASE="$opt_i" - REPORT="$opt_d" - FILE="$1" - - # determine language - if [ ".$LANGUAGE" = .unknown ]; then - case $FILE in - *.txt ) LANGUAGE=txt ;; - *.c ) LANGUAGE=c ;; - *.pl | *.pm ) LANGUAGE=perl ;; - * ) echo "$tool:Error: unknown language type" 1>&2; exit 1 ;; - esac - fi - - # determine prefix from name and vice versa - if [ ".$PREFIX" = . -o ".$PREFIX" = .unknown ]; then - if [ ".$NAME" != . -a ".$NAME" != .unknown ]; then - PREFIX="$NAME" - fi - fi - if [ ".$NAME" = . -o ".$NAME" = .unknown ]; then - if [ ".$PREFIX" != . -a ".$PREFIX" != .unknown ]; then - NAME="$PREFIX" - fi - fi - - # determine version - date=unknown - version=0 - revision=0 - bplevel=0 - if [ ".$FULLVERSION" = .unknown ]; then - if [ -r "$FILE" ]; then - # grep out current information - id=`grep 'Version [0-9]*.[0-9]*[.abps][0-9]* ([0-9]*-[a-zA-Z]*-[0-9]*)' $FILE | \ - head -1 | \ - sed -e 's%.*Version \([0-9]*\)\.\([0-9]*\)\([.abps]\)\([0-9]*\) (\([0-9]*-[a-zA-Z]*-[0-9]*\)).*%\1:\2:\3:\4:\5%'` - version=`echo $id | awk -F: '{ print $1 }'` - revision=`echo $id | awk -F: '{ print $2 }'` - bptype=`echo $id | awk -F: '{ print $3 }'` - bplevel=`echo $id | awk -F: '{ print $4 }'` - date=`echo $id | awk -F: '{ print $5 }'` - if [ .$REPORT = .NO ]; then - case $INCREASE in - b ) bplevel=`expr $bplevel + 1` - bptype=b - ;; - a ) bplevel=`expr $bplevel + 1` - bptype=a - ;; - s ) bplevel=`expr $bplevel + 1` - bptype=s - ;; - P ) bplevel=`expr $bplevel + 1` - bptype=. - ;; - p ) bplevel=`expr $bplevel + 1` - bptype=p - ;; - r ) revision=`expr $revision + 1` - bplevel=0 - ;; - v ) version=`expr $version + 1` - revision=0 - bplevel=0 - ;; - esac - date=calc - fi - FULLVERSION="$version.$revision$bptype$bplevel" - else - # intialise to first version - version=0 - revision=5 - bptype=b - bplevel=0 - date=calc - fi - else - # take given version - V=`echo $FULLVERSION | sed -e 's%\([0-9]*\)\.\([0-9]*\)\([.abps]\)\([0-9]*\).*%\1:\2:\3:\4%'` - version=`echo $V | awk -F: '{ print $1 }'` - revision=`echo $V | awk -F: '{ print $2 }'` - bptype=`echo $V | awk -F: '{ print $3 }'` - bplevel=`echo $V | awk -F: '{ print $4 }'` - date=calc - fi - - # determine hex value of version - case $FULLVERSION in - *.*a* ) - HEX=`echo "$FULLVERSION" | sed -e 's/a.*//' | awk -F. '{ printf("%d%02d", $1, $2); }' && - echo "$FULLVERSION" | sed -e 's/.*a//' | awk '{ printf("0%02d", $1); }'` - ;; - *.*b* ) - HEX=`echo "$FULLVERSION" | sed -e 's/b.*//' | awk -F. '{ printf("%d%02d", $1, $2); }' && - echo "$FULLVERSION" | sed -e 's/.*b//' | awk '{ printf("1%02d", $1); }'` - ;; - *.*.* ) - HEX=`echo "$FULLVERSION" | awk -F. '{ printf("%d%02d2%02d", $1, $2, $3); }'` - ;; - esac - - # determine libtool version - case $FULLVERSION in - *.*a* ) - LTV=`echo "$FULLVERSION" | sed -e 's/a.*//' | awk -F. '{ printf("%d:0", $1*10+$2); }'` - ;; - *.*b* ) - LTV=`echo "$FULLVERSION" | sed -e 's/b.*//' | awk -F. '{ printf("%d:0", $1*10+$2); }'` - ;; - *.*.* ) - LTV=`echo "$FULLVERSION" | awk -F. '{ printf("%d:%d", $1*10+$2, $3); }'` - ;; - esac - - # determine string out of filename - # (don't try to optimize this in any way - portability!) - FILESTR=`echo "$FILE" |\ - tr 'abcdefghijklmnopqrstuvwxyz./%+' \ - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ____' | sed -e 's/-/_/g'` - - # determine date - if [ ".$date" = .calc ]; then - day=`date '+%d'` - month=`date '+%m'` - year=`date '+%Y' 2>/dev/null` - if [ ".$time_year" = . ]; then - year=`date '+%y'` - case $year in - [5-9][0-9]) year="19$year" ;; - [0-4][0-9]) year="20$year" ;; - esac - fi - case $month in - 1|01) month='Jan' ;; - 2|02) month='Feb' ;; - 3|03) month='Mar' ;; - 4|04) month='Apr' ;; - 5|05) month='May' ;; - 6|06) month='Jun' ;; - 7|07) month='Jul' ;; - 8|08) month='Aug' ;; - 9|09) month='Sep' ;; - 10) month='Oct' ;; - 11) month='Nov' ;; - 12) month='Dec' ;; - esac - date="${day}-${month}-${year}" - fi - - if [ .$REPORT != .NO ]; then - case $REPORT in - long ) - echo "$version.$revision$bptype$bplevel ($date)" - ;; - short ) - echo "$version.$revision$bptype$bplevel" - ;; - libtool ) - echo "$LTV" - ;; - hex ) - echo "0x$HEX" - ;; - esac - rm -f $tmpfile >/dev/null 2>&1 - exit 0 - fi - - # create the version file according the the selected language - echo "new version: $version.$revision$bptype$bplevel ($date)" - case $LANGUAGE in - txt ) - cat >$tmpfile <<'EOT' - - This is @NAME@, Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@) -EOT - ;; - c ) - cat >$tmpfile <<'EOT' -/* -** @FILE@ -- Version Information -** [automatically generated and maintained by shtool] -*/ - -#ifdef _AS_HEADER - -#ifndef _@FILESTR@ -#define _@FILESTR@ -#define @PREFIX@_VERSION 0x@HEX@ -extern const int @PREFIX@_Version; -extern const char @PREFIX@_VersionStr[]; -extern const char @PREFIX@_Hello[]; -extern const char @PREFIX@_GNUVersion[]; -extern const char @PREFIX@_WhatID[]; -extern const char @PREFIX@_RCSIdentID[]; -extern const char @PREFIX@_WebID[]; -extern const char @PREFIX@_PlainID[]; -#endif /* _@FILESTR@ */ - -#else - -const int @PREFIX@_Version = 0x@HEX@; -const char @PREFIX@_VersionStr[] = "@VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@)"; -const char @PREFIX@_Hello[] = "This is @NAME@, Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@)"; -const char @PREFIX@_GNUVersion[] = "@NAME@ Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@"; -const char @PREFIX@_WhatID[] = "@(#)@NAME@ Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@)"; -const char @PREFIX@_RCSIdentID[] = "$Id: shtool,v 1.1 1999/08/17 15:59:45 rbb Exp $"; -const char @PREFIX@_WebID[] = "@NAME@/@VERSION@.@REVISION@@BPTYPE@@BPLEVEL@"; -const char @PREFIX@_PlainID[] = "@VERSION@.@REVISION@@BPTYPE@@BPLEVEL@"; - -#endif -EOT - ;; - perl ) - cat >$tmpfile <<'EOT' -## -## @FILE@ -- Version Information -## [automatically generated and maintained by shtool] -## - -$@PREFIX@_Version = 0x@HEX@; -$@PREFIX@_VersionStr = "@VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@)"; -$@PREFIX@_Hello = "This is @NAME@, Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@)"; -$@PREFIX@_GNUVersion = "@NAME@ Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@"; -$@PREFIX@_WhatID = "@(#)@NAME@ Version @VERSION@.@REVISION@@BPTYPE@@BPLEVEL@ (@DAY@-@MONTH@-@YEAR@)"; -$@PREFIX@_RCSIdentID = "\$Id: shtool,v 1.1 1999/08/17 15:59:45 rbb Exp $/"; -$@PREFIX@_WebID = "@NAME@/@VERSION@.@REVISION@@BPTYPE@@BPLEVEL@"; -$@PREFIX@_PlainID = "@VERSION@.@REVISION@@BPTYPE@@BPLEVEL@"; - -1; -EOT - ;; - esac - - # now create the version file - rm -f $FILE >/dev/null 2>&1 - sed \ - -e "s|@FILE@|$FILE|g" \ - -e "s|@FILESTR@|$FILESTR|g" \ - -e "s|@PREFIX@|$PREFIX|g" \ - -e "s|@NAME@|$NAME|g" \ - -e "s|@HEX@|$HEX|g" \ - -e "s|@VERSION@|$version|g" \ - -e "s|@REVISION@|$revision|g" \ - -e "s|@BPTYPE@|$bptype|g" \ - -e "s|@BPLEVEL@|$bplevel|g" \ - -e "s|@YEAR@|$year|g" \ - -e "s|@MONTH@|$month|g" \ - -e "s|@DAY@|$day|g" <$tmpfile >$FILE - rm -f $tmpfile >/dev/null 2>&1 - exit 0 - ;; - -path ) - ## - ## path -- Deal with program paths - ## Copyright (c) 1998-1999 Ralf S. Engelschall - ## Originally written for Apache - ## - - namelist="$*" - - # check whether the test command supports the -x option - cat >$tmpfile </dev/null; then - minusx="-x" - else - minusx="-r" - fi - rm -f $tmpfile - - # split path string - paths="`echo $opt_p |\ - sed -e 's/^:/.:/' \ - -e 's/::/:.:/g' \ - -e 's/:$/:./' \ - -e 's/:/ /g'`" - - # SPECIAL REQUEST - # translate forward to reverse path - if [ ".$opt_r" = .yes ]; then - if [ "x$namelist" = "x." ]; then - rp='.' - else - rp='' - for pe in `IFS="$IFS/"; echo $namelist`; do - rp="../$rp" - done - fi - echo $rp | sed -e 's:/$::' - exit 0 - fi - - # SPECIAL REQUEST - # strip out directory or base name - if [ ".$opt_d" = .yes ]; then - echo "$namelist" |\ - sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' - exit 0 - fi - if [ ".$opt_b" = .yes ]; then - echo "$namelist" |\ - sed -e 's;.*/\([^/]*\)$;\1;' - exit 0 - fi - - # MAGIC SITUATION - # Perl Interpreter (perl) - if [ ".$opt_m" = .yes ] && [ ".$namelist" = .perl ]; then - rm -f $tmpfile - touch $tmpfile - c=0 - found=0 - for dir in $paths; do - dir=`echo $dir | sed -e 's;/*$;;'` - for perl in perl5 perl miniperl; do - if [ $minusx "$dir/$perl" ]; then - perl="$dir/$perl" - version=`$perl -v | grep version |\ - sed -e 's/.* version //' -e 's/ built.*//' -e 's/ with.*//'` - versionnum="`echo $version | sed -e 's/\.//g' -e 's/_//g'`" - versionnum=`expr $versionnum - $c` - echo "$versionnum $perl" >>$tmpfile - found=1 - fi - done - c=`expr $c + 1` - done - if [ $found = 1 ]; then - perl="`cat $tmpfile | sort -u | tail -1 | cut '-d ' -f2`" - rm -f $tmpfile - echo "$perl" - exit 0 - fi - exit 1 - fi - - # MAGIC SITUATION - # C pre-processor (cpp) - if [ ".$opt_m" = .yes ] && [ ".$namelist" = .cpp ]; then - cat >$tmpfile.c < - Syntax Error -EOT - # 1. try the standard cc -E approach - cpp="${CC-cc} -E" - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # 2. try the cc -E approach and GCC's -traditional-ccp option - cpp="${CC-cc} -E -traditional-cpp" - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # 3. try a standalone cpp command in path and lib dirs - for path in $paths /lib /usr/lib /usr/local/lib; do - path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/cpp" ] && [ ! -d "$path/cpp" ]; then - cpp="$path/cpp" - break - fi - done - if [ ".$cpp" != . ]; then - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # ok, we gave up... - cpp='' - fi - fi - fi - fi - rm -f $tmpfile.c $tmpfile.out - if [ ".$cpp" != . ]; then - echo "$cpp" - exit 0 - fi - exit 1 - fi - - # STANDARD SITUATION - # iterate over names - for name in $namelist; do - # iterate over paths - for path in $paths; do - path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/$name" ] && [ ! -d "$path/$name" ]; then - if [ ".$opt_s" != .yes ]; then - echo "$path/$name" 2>&1 - fi - exit 0 - fi - done - done - exit 1 - ;; - -esac - -exit 0 - -##EOF## diff --git a/shmem/unix/shmem.c b/shmem/unix/shmem.c deleted file mode 100644 index 8db258c3d..000000000 --- a/shmem/unix/shmem.c +++ /dev/null @@ -1,170 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "mm.h" -#include "apr_general.h" -#include "apr_errno.h" - -struct shmem_t { - MM *mm; - ap_context_t *cntxt; -}; - -ap_status_t ap_shm_create(ap_context_t *cont, ap_size_t size, const char *file, - struct shmem_t **new) -{ - MM *mm = mm_create(size, file); - - if (mm == NULL) { - return APR_ENOMEM; - } - (*new) = (struct shmem_t *)mm_malloc(mm, sizeof(struct shmem_t)); - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->mm = mm; - (*new)->cntxt = cont; - return APR_SUCCESS; -} - -ap_status_t ap_shm_destroy(struct shmem_t *shared) -{ - mm_destroy(shared->mm); - shared->mm = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_shm_malloc(struct shmem_t *shared, ap_size_t size, void **entity) -{ - entity = mm_malloc(shared->mm, size); - if (entity == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_calloc(struct shmem_t *shared, ap_size_t num, - ap_size_t size, void **entity) -{ - entity = mm_calloc(shared->mm, num, size); - if (entity == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_realloc(struct shmem_t *shared, ap_size_t size, void **entity) -{ - void *new; - - new = mm_realloc(shared->mm, *entity, size); - if (new == NULL) { - return APR_ENOMEM; - } - - (*entity) = new; - return APR_SUCCESS; -} - -ap_status_t apr_shm_free(struct shmem_t *shared, void *entity) -{ - mm_free(shared->mm, entity); - return APR_SUCCESS; -} - -ap_status_t ap_shm_strdup(struct shmem_t *shared, const char *old, char **new) -{ - (*new) = mm_strdup(shared->mm, old); - if ((*new) == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_sizeof(struct shmem_t *shared, const void *ent, - ap_size_t *size) -{ - *size = mm_sizeof(shared->mm, ent); - if ((*size) == -1) { - return APR_EINVAL; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_maxsize(ap_size_t *size) -{ - (*size) = mm_maxsize(); - if ((*size) <= 0) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_available(struct shmem_t *shared, ap_size_t *size) -{ - (*size) = mm_available(shared->mm); - if ((*size) <= 0) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -ap_status_t ap_shm_child_create(ap_context_t *cont, const char *fname, - struct shmem_t **shared) -{ - return APR_SUCCESS; -} - - diff --git a/signal/unix/.cvsignore b/signal/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/signal/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/signal/unix/Makefile.in b/signal/unix/Makefile.in deleted file mode 100644 index ca70233c5..000000000 --- a/signal/unix/Makefile.in +++ /dev/null @@ -1,55 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/unix -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../libsig.a - -OBJS=signal.o \ - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -signal.o: signal.c ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h diff --git a/signal/unix/signal.c b/signal/unix/signal.c deleted file mode 100644 index 87a522fa1..000000000 --- a/signal/unix/signal.c +++ /dev/null @@ -1,116 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_general.h" -#include - -#ifdef HAVE_PTHREAD_H - -#include -#ifdef HAVE_SIGNAL_H -#include -#endif - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_signal(ap_context_t *, ap_signum_t) - * Create a signal for use later on. - * arg 1) The context to operate on. - * arg 2) The signal we are creating. One of: - * List to come. :) - * NOTE: This function must be called before the desired signal can be sent. - * This is for Windows to be able to send signals, so your program - * won't be portable without it. - */ -ap_status_t ap_create_signal(ap_context_t *cont, ap_signum_t signum) -{ - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_send_signal(ap_context_t *, ap_signum_t) - * Send a signal to your process group - * arg 1) The context to operate on. - * arg 2) The signal we are sending. Same as above list - * NOTE: Signals can only be sent to the whole process group because I haven't - * figured out how to send to individual children on Windows yet. When - * that is solved, this will change here. - */ -ap_status_t ap_send_signal(ap_context_t *cont, ap_signum_t signum) -{ - killpg(0, signum); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setup_signal(ap_context_t *, ap_signum_t) - * Setup the response when a process receives a particular signal. - * arg 1) The context to operate on. - * arg 2) The signal we are expecting to receive. Same as above list - * arg 3) The function to execute when this signal is received. - */ -ap_setup_signal(ap_context_t *cont, ap_signum_t signum, Sigfunc *func) -{ - sigset_t newset; - - sigemptyset(&newset); - sigaddset(&newset, signum); - - signal(signum, func); - - pthread_sigmask(SIG_UNBLOCK, &newset, NULL); - - return APR_SUCCESS; -} -#endif diff --git a/signal/win32/signal.c b/signal/win32/signal.c deleted file mode 100644 index a630a2d3e..000000000 --- a/signal/win32/signal.c +++ /dev/null @@ -1,182 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include "apr_lib.h" -#include "apr_general.h" -#include "apr_win.h" -#include "apr_errno.h" -#include -#include - -static char *NewEvent; -static Sigfunc *sig_handler; - -volatile int ready = 0; - -ap_status_t ap_create_signal(ap_context_t *cont, ap_signum_t signum) -{ - char *EventName; - int ppid; - char pidstr[10]; - char sigstr[4]; - SECURITY_ATTRIBUTES sa; - - ppid = _getpid(); - - _itoa(ppid, pidstr, 10); - _itoa(signum, sigstr, 10); - - EventName = ap_pstrcat(cont, "APR", pidstr, sigstr, NULL); - - sa.nLength = sizeof(sa); - sa.bInheritHandle = TRUE; - sa.lpSecurityDescriptor = NULL; - - if (CreateEvent(&sa, TRUE, FALSE, EventName) == NULL) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_send_signal(ap_context_t *cont, ap_signum_t signum) -{ - HANDLE event; - char *EventName; - char *sigstr; - int ppid; - char pidstr[10]; - - ppid = _getpid(); - - _itoa(ppid, pidstr, 10); - _itoa(signum, sigstr, 10); - - EventName = ap_pstrcat(cont, "APR", pidstr, sigstr, NULL); - event = OpenEvent(EVENT_ALL_ACCESS, FALSE, EventName); - - if (event == NULL) { - return APR_EEXIST; - } - - if (SetEvent(event) == 0) { - return APR_EEXIST; - } - return APR_SUCCESS; -} - -ap_status_t ap_setup_signal(ap_context_t *cont, ap_signum_t signum, Sigfunc *func) -{ - HANDLE event; - char ppid[20]; - char *sigstr; - - event = OpenEvent(EVENT_ALL_ACCESS, FALSE, "EventRegister"); - - if (GetEnvironmentVariable("parentpid", ppid, 20) == 0) { - return APR_EEXIST; - } - - sigstr = (char *)ap_palloc(cont, sizeof(int) * 10); - _itoa(signum, sigstr, 10); - - NewEvent = ap_pstrcat(cont, "APR", ppid, sigstr, NULL); - sig_handler = func; - - if (event == NULL) { - return APR_EEXIST; - } - - if (SetEvent(event)) { - return APR_SUCCESS; - } - - return APR_EEXIST; -} - -unsigned int __stdcall SignalHandling(void *data) -{ - int i = 1; - HANDLE eventlist[MAXIMUM_WAIT_OBJECTS]; - Sigfunc *funclist[MAXIMUM_WAIT_OBJECTS]; - DWORD rv; - - if ((eventlist[0] = CreateEvent(NULL, TRUE, FALSE, "EventRegister")) == NULL) { - return APR_EEXIST; - } - - sig_handler = NULL; - - while (1) { - ready = 1; - rv = WaitForMultipleObjects(i, eventlist, FALSE, INFINITE); - if (rv == WAIT_FAILED) { - exit(-1); - } - else if (rv == WAIT_OBJECT_0){ - eventlist[i] = OpenEvent(EVENT_ALL_ACCESS, TRUE, NewEvent); - funclist[i] = sig_handler; - i++; - ResetEvent(eventlist[0]); - } - else { - funclist[rv - WAIT_OBJECT_0](0); - ResetEvent(eventlist[rv - WAIT_OBJECT_0]); - } - } -} - -int thread_ready(void) -{ - return ready; -} diff --git a/signal/win32/signal.def b/signal/win32/signal.def deleted file mode 100644 index 5f251aa89..000000000 --- a/signal/win32/signal.def +++ /dev/null @@ -1,12 +0,0 @@ -; signal.def : - -LIBRARY signal -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_create_signal @1 - ap_setup_signal @2 - SignalHandling @3 - ap_send_signal @4 - thread_ready @5 diff --git a/signal/win32/signal.dsp b/signal/win32/signal.dsp deleted file mode 100644 index ee65c8d03..000000000 --- a/signal/win32/signal.dsp +++ /dev/null @@ -1,97 +0,0 @@ -# Microsoft Developer Studio Project File - Name="signal" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=signal - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "signal.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "signal.mak" CFG="signal - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "signal - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "signal - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "signal - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "signal - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\Debug\lib.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "signal - Win32 Release" -# Name "signal - Win32 Debug" -# Begin Source File - -SOURCE=.\signal.c -# End Source File -# Begin Source File - -SOURCE=.\signal.def -# End Source File -# End Target -# End Project diff --git a/test/.cvsignore b/test/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/test/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/test/Makefile.in b/test/Makefile.in deleted file mode 100644 index 2c6a35381..000000000 --- a/test/Makefile.in +++ /dev/null @@ -1,127 +0,0 @@ -# Generated automatically from Makefile.in by configure. -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=-L../network_io -lnetwork -L../threadproc -lthreadproc -L../file_io -lfile -L../misc -lmisc -L../lib -lapr -L../time -ltime -L../locks -llock -L../signal -lsig -lcrypt @LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../include -INCDIR1=../../inc -INCLUDES=-I$(INCDIR) -I$(INCDIR1) - -TARGETS= testfile@EXEEXT@ \ - testproc@EXEEXT@ \ - testsock@EXEEXT@ \ - testthread@EXEEXT@ \ - testtime@EXEEXT@ \ - testsig@EXEEXT@ \ - testargs@EXEEXT@ \ - ab@EXEEXT@ \ - htdigest@EXEEXT@ - -OBJS= testfile.o \ - testproc.o \ - testsock.o \ - testthread.o \ - testtime.o \ - testsig.o \ - testargs.o \ - ab_apr.o \ - htdigest.o - -.c.o: - $(CC) -c $(CFLAGS) $(INCLUDES) $< - -all: $(TARGETS) - -testfile@EXEEXT@: testfile.o - $(CC) $(CFLAGS) testfile.o -o testfile@EXEEXT@ $(LDFLAGS) - -testargs@EXEEXT@: testargs.o - $(CC) $(CFLAGS) testargs.o -o testargs@EXEEXT@ $(LDFLAGS) - -ab@EXEEXT@: ab_apr.o - $(CC) $(CFLAGS) ab_apr.o -o ab@EXEEXT@ $(LDFLAGS) - -htdigest@EXEEXT@: htdigest.o - $(CC) $(CFLAGS) htdigest.o -o htdigest@EXEEXT@ $(LDFLAGS) - -testproc@EXEEXT@: testproc.o - $(CC) $(CFLAGS) testproc.o -o testproc@EXEEXT@ $(LDFLAGS) - -testthread@EXEEXT@: testthread.o - $(CC) $(CFLAGS) testthread.o -o testthread@EXEEXT@ $(LDFLAGS) - -testsock@EXEEXT@: testsock.o client.o server.o - $(CC) $(CFLAGS) testsock.o -o testsock@EXEEXT@ $(LDFLAGS) - $(CC) $(CFLAGS) server.o -o server@EXEEXT@ $(LDFLAGS) - $(CC) $(CFLAGS) client.o -o client@EXEEXT@ $(LDFLAGS) - -testtime@EXEEXT@: testtime.o - $(CC) $(CFLAGS) testtime.o -o testtime@EXEEXT@ $(LDFLAGS) - -testsig@EXEEXT@: testsig.o - $(CC) $(CFLAGS) testsig.o -o testsig@EXEEXT@ $(LDFLAGS) - -clean: - $(RM) -f *.o *.a *.so $(TARGETS) - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -ab_apr.o: ab_apr.c ../include/apr_network_io.h \ - ../include/apr_general.h $(INCDIR)/apr_config.h \ - ../include/apr_errno.h ../include/apr_file_io.h -client.o: client.c ../include/apr_network_io.h \ - ../include/apr_general.h $(INCDIR)/apr_config.h \ - ../include/apr_errno.h -server.o: server.c ../include/apr_network_io.h \ - ../include/apr_general.h $(INCDIR)/apr_config.h \ - ../include/apr_errno.h -testargs.o: testargs.c ../include/apr_file_io.h \ - ../include/apr_general.h $(INCDIR)/apr_config.h \ - ../include/apr_errno.h $(INCDIR)/apr_lib.h $(INCDIR)/hsregex.h -testfile.o: testfile.c ../include/apr_file_io.h \ - ../include/apr_general.h $(INCDIR)/apr_config.h \ - ../include/apr_errno.h $(INCDIR)/apr_lib.h $(INCDIR)/hsregex.h -testproc.o: testproc.c ../include/apr_thread_proc.h \ - ../include/apr_file_io.h ../include/apr_general.h \ - $(INCDIR)/apr_config.h ../include/apr_errno.h \ - $(INCDIR)/apr_win.h $(INCDIR)/apr_lib.h $(INCDIR)/hsregex.h -testsig.o: testsig.c ../include/apr_thread_proc.h \ - ../include/apr_file_io.h ../include/apr_general.h \ - $(INCDIR)/apr_config.h ../include/apr_errno.h \ - $(INCDIR)/apr_win.h $(INCDIR)/apr_lib.h $(INCDIR)/hsregex.h -testsock.o: testsock.c ../include/apr_thread_proc.h \ - ../include/apr_file_io.h ../include/apr_general.h \ - $(INCDIR)/apr_config.h ../include/apr_errno.h \ - $(INCDIR)/apr_win.h $(INCDIR)/apr_lib.h $(INCDIR)/hsregex.h -testthread.o: testthread.c ../include/apr_thread_proc.h \ - ../include/apr_file_io.h ../include/apr_general.h \ - $(INCDIR)/apr_config.h ../include/apr_errno.h \ - $(INCDIR)/apr_win.h ../include/apr_lock.h -testtime.o: testtime.c ../include/apr_time.h \ - ../include/apr_general.h $(INCDIR)/apr_config.h \ - ../include/apr_errno.h diff --git a/test/ab_apr.c b/test/ab_apr.c deleted file mode 100644 index d3357b7fe..000000000 --- a/test/ab_apr.c +++ /dev/null @@ -1,975 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1998-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - ** This program is based on ZeusBench V1.0 written by Adam Twiss - ** which is Copyright (c) 1996 by Zeus Technology Ltd. http://www.zeustech.net/ - ** - ** This software is provided "as is" and any express or implied waranties, - ** including but not limited to, the implied warranties of merchantability and - ** fitness for a particular purpose are disclaimed. In no event shall - ** Zeus Technology Ltd. be liable for any direct, indirect, incidental, special, - ** exemplary, or consequential damaged (including, but not limited to, - ** procurement of substitute good or services; loss of use, data, or profits; - ** or business interruption) however caused and on 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. - ** - */ - -/* - ** HISTORY: - ** - Originally written by Adam Twiss , March 1996 - ** with input from Mike Belshe and - ** Michael Campanella - ** - Enhanced by Dean Gaudet , November 1997 - ** - Cleaned up by Ralf S. Engelschall , March 1998 - ** - POST and verbosity by Kurt Sussman , August 1998 - ** - HTML table output added by David N. Welton , January 1999 - ** - */ - -/* - * BUGS: - * - * - uses strcpy/etc. - * - has various other poor buffer attacks related to the lazy parsing of - * response headers from the server - * - doesn't implement much of HTTP/1.x, only accepts certain forms of - * responses - * - (performance problem) heavy use of strstr shows up top in profile - * only an issue for loopback usage - */ - -#define VERSION "1.3" - -/* -------------------------------------------------------------------- */ - -/* affects include files on Solaris */ -#define BSD_COMP - -#include "apr_network_io.h" -#include "apr_file_io.h" -#include "apr_time.h" -#include -#include - -/* ------------------- DEFINITIONS -------------------------- */ -/* maximum number of requests on a time limited test */ -#define MAX_REQUESTS 50000 - -/* good old state hostname */ -#define STATE_UNCONNECTED 0 -#define STATE_CONNECTING 1 -#define STATE_READ 2 - -#define CBUFFSIZE 512 - -struct connection { - ap_socket_t *aprsock; - int state; - int read; /* amount of bytes read */ - int bread; /* amount of body read */ - int length; /* Content-Length value used for keep-alive */ - char cbuff[CBUFFSIZE]; /* a buffer to store server response header */ - int cbx; /* offset in cbuffer */ - int keepalive; /* non-zero if a keep-alive request */ - int gotheader; /* non-zero if we have the entire header in cbuff */ - ap_time_t *start, *connect, *done; - int socknum; -}; - -struct data { - int read; /* number of bytes read */ - int ctime; /* time in ms to connect */ - int time; /* time in ms for connection */ -}; - -#define ap_min(a,b) ((a)<(b))?(a):(b) -#define ap_max(a,b) ((a)>(b))?(a):(b) - -/* --------------------- GLOBALS ---------------------------- */ -API_VAR_IMPORT char *optarg; /* argument associated with option */ -API_VAR_IMPORT int optind; - -int verbosity = 0; /* no verbosity by default */ -int posting = 0; /* GET by default */ -int requests = 1; /* Number of requests to make */ -int concurrency = 1; /* Number of multiple requests to make */ -int tlimit = 0; /* time limit in cs */ -int keepalive = 0; /* try and do keepalive connections */ -char servername[1024]; /* name that server reports */ -char hostname[1024]; /* host name */ -char path[1024]; /* path name */ -char postfile[1024]; /* name of file containing post data */ -char *postdata; /* *buffer containing data from postfile */ -ap_ssize_t postlen = 0; /* length of data to be POSTed */ -char content_type[1024]; /* content type to put in POST header */ -int port = 80; /* port number */ -time_t aprtimeout = 30000; /* timeout value... */ - -int use_html = 0; /* use html in the report */ -char *tablestring; -char *trstring; -char *tdstring; - -int doclen = 0; /* the length the document should be */ -int totalread = 0; /* total number of bytes read */ -int totalbread = 0; /* totoal amount of entity body read */ -int totalposted = 0; /* total number of bytes posted, inc. headers */ -int done = 0; /* number of requests we have done */ -int doneka = 0; /* number of keep alive connections done */ -int good = 0, bad = 0; /* number of good and bad requests */ - -/* store error cases */ -int err_length = 0, err_conn = 0, err_except = 0; -int err_response = 0; - -ap_time_t *start, *endtime; - -/* global request (and its length) */ -char request[512]; -ap_ssize_t reqlen; - -/* one global throw-away buffer to read stuff into */ -char buffer[8192]; - -struct connection *con; /* connection array */ -struct data *stats; /* date for each request */ -ap_context_t *cntxt; - -ap_pollfd_t *readbits; - -/* --------------------------------------------------------- */ - -/* simple little function to perror and exit */ - -static void err(char *s) -{ - if (errno) { - perror(s); - } - else { - printf("%s", s); - } - exit(errno); -} - -/* --------------------------------------------------------- */ - -/* write out request to a connection - assumes we can write - (small) request out in one go into our new socket buffer */ - -static void write_request(struct connection *c) -{ - ap_ssize_t len = reqlen; - ap_current_time(c->connect); - if (ap_send(c->aprsock, request, &reqlen, 30) != APR_SUCCESS && - reqlen != len) { - printf("Send request failed!\n"); - } - if (posting) { - ap_send(c->aprsock, postdata, &postlen, 30); - totalposted += (reqlen + postlen); - } - - c->state = STATE_READ; - ap_add_poll_socket(readbits, c->aprsock, APR_POLLIN); - ap_remove_poll_socket(readbits, c->aprsock, APR_POLLOUT); -} - - /* --------------------------------------------------------- */ - - /* calculate and output results */ - -static void output_results(void) -{ - int timetaken; - - ap_current_time(endtime); - ap_timediff(endtime, start, &timetaken); - - printf("\r \r"); - printf("Server Software: %s\n", servername); - printf("Server Hostname: %s\n", hostname); - printf("Server Port: %d\n", port); - printf("\n"); - printf("Document Path: %s\n", path); - printf("Document Length: %d bytes\n", doclen); - printf("\n"); - printf("Concurrency Level: %d\n", concurrency); - printf("Time taken for tests: %d.%03d seconds\n", - timetaken / 1000, timetaken % 1000); - printf("Complete requests: %d\n", done); - printf("Failed requests: %d\n", bad); - if (bad) - printf(" (Connect: %d, Length: %d, Exceptions: %d)\n", - err_conn, err_length, err_except); - if (err_response) - printf("Non-2xx responses: %d\n", err_response); - if (keepalive) - printf("Keep-Alive requests: %d\n", doneka); - printf("Total transferred: %d bytes\n", totalread); - if (posting) - printf("Total POSTed: %d\n", totalposted); - printf("HTML transferred: %d bytes\n", totalbread); - - /* avoid divide by zero */ - if (timetaken) { - printf("Requests per second: %.2f\n", 1000 * (float) (done) / timetaken); - printf("Transfer rate: %.2f kb/s received\n", - (float) (totalread) / timetaken); - if (posting) { - printf(" %.2f kb/s sent\n", - (float) (totalposted) / timetaken); - printf(" %.2f kb/s total\n", - (float) (totalread + totalposted) / timetaken); - } - } - - { - /* work out connection times */ - int i; - int totalcon = 0, total = 0; - int mincon = 9999999, mintot = 999999; - int maxcon = 0, maxtot = 0; - - for (i = 0; i < requests; i++) { - struct data s = stats[i]; - mincon = ap_min(mincon, s.ctime); - mintot = ap_min(mintot, s.time); - maxcon = ap_max(maxcon, s.ctime); - maxtot = ap_max(maxtot, s.time); - totalcon += s.ctime; - total += s.time; - } - printf("\nConnnection Times (ms)\n"); - printf(" min avg max\n"); - printf("Connect: %5d %5d %5d\n", mincon, totalcon / requests, maxcon); - printf("Processing: %5d %5d %5d\n", - mintot - mincon, (total / requests) - (totalcon / requests), - maxtot - maxcon); - printf("Total: %5d %5d %5d\n", mintot, total / requests, maxtot); - } -} - - /* --------------------------------------------------------- */ - - /* calculate and output results in HTML */ - -static void output_html_results(void) -{ - int timetaken; - - ap_current_time(endtime); - ap_timediff(endtime, start, &timetaken); - - printf("\n\n\n", tablestring); - printf("" - "\n", - trstring, tdstring, tdstring, servername); - printf("" - "\n", - trstring, tdstring, tdstring, hostname); - printf("" - "\n", - trstring, tdstring, tdstring, port); - printf("" - "\n", - trstring, tdstring, tdstring, path); - printf("" - "\n", - trstring, tdstring, tdstring, doclen); - printf("" - "\n", - trstring, tdstring, tdstring, concurrency); - printf("" - "\n", - trstring, tdstring, tdstring, timetaken / 1000, timetaken % 1000); - printf("" - "\n", - trstring, tdstring, tdstring, done); - printf("" - "\n", - trstring, tdstring, tdstring, bad); - if (bad) - printf("\n", - trstring, tdstring, err_conn, err_length, err_except); - if (err_response) - printf("" - "\n", - trstring, tdstring, tdstring, err_response); - if (keepalive) - printf("" - "\n", - trstring, tdstring, tdstring, doneka); - printf("" - "\n", - trstring, tdstring, tdstring, totalread); - if (posting) - printf("" - "\n", - trstring, tdstring, tdstring, totalposted); - printf("" - "\n", - trstring, tdstring, tdstring, totalbread); - - /* avoid divide by zero */ - if (timetaken) { - printf("" - "\n", - trstring, tdstring, tdstring, 1000 * (float) (done) / timetaken); - printf("" - "\n", - trstring, tdstring, tdstring, (float) (totalread) / timetaken); - if (posting) { - printf("" - "\n", - trstring, tdstring, tdstring, - (float) (totalposted) / timetaken); - printf("" - "\n", - trstring, tdstring, tdstring, - (float) (totalread + totalposted) / timetaken); - } - } - - { - /* work out connection times */ - int i; - int totalcon = 0, total = 0; - int mincon = 9999999, mintot = 999999; - int maxcon = 0, maxtot = 0; - - for (i = 0; i < requests; i++) { - struct data s = stats[i]; - mincon = ap_min(mincon, s.ctime); - mintot = ap_min(mintot, s.time); - maxcon = ap_max(maxcon, s.ctime); - maxtot = ap_max(maxtot, s.time); - totalcon += s.ctime; - total += s.time; - } - - printf("\n", - trstring, tdstring); - printf("\n", - trstring, tdstring, tdstring, tdstring, tdstring); - printf("" - "" - "" - "\n", - trstring, tdstring, tdstring, mincon, tdstring, totalcon / requests, tdstring, maxcon); - printf("" - "" - "" - "\n", - trstring, tdstring, tdstring, mintot - mincon, tdstring, - (total / requests) - (totalcon / requests), tdstring, maxtot - maxcon); - printf("" - "" - "" - "\n", - trstring, tdstring, tdstring, mintot, tdstring, total / requests, tdstring, maxtot); - printf("
Server Software:%s
Server Hostname:%s
Server Port:%d
Document Path:%s
Document Length:%d bytes
Concurrency Level:%d
Time taken for tests:%d.%03d seconds
Complete requests:%d
Failed requests:%d
(Connect: %d, Length: %d, Exceptions: %d)
Non-2xx responses:%d
Keep-Alive requests:%d
Total transferred:%d bytes
Total POSTed:%d
HTML transferred:%d bytes
Requests per second:%.2f
Transfer rate:%.2f kb/s received
 %.2f kb/s sent
 %.2f kb/s total
Connnection Times (ms)
  min avg max
Connect:%5d%5d%5d
Processing:%5d%5d%5d
Total:%5d%5d%5d
\n"); - } -} - -/* --------------------------------------------------------- */ - -/* start asnchronous non-blocking connection */ - -static void start_connect(struct connection *c) -{ - c->read = 0; - c->bread = 0; - c->keepalive = 0; - c->cbx = 0; - c->gotheader = 0; - - if (ap_create_tcp_socket(cntxt, &c->aprsock) != APR_SUCCESS) { - err("Socket:"); - } - if (ap_setport(c->aprsock, port) != APR_SUCCESS) { - err("Port:"); - } - ap_current_time(c->start); - if (ap_connect(c->aprsock, hostname) != APR_SUCCESS) { - if (errno == APR_EINPROGRESS) { - c->state = STATE_CONNECTING; - ap_add_poll_socket(readbits, c->aprsock, APR_POLLOUT); - return; - } - else { - /* we don't have to close the socket. If we have an error this bad, - ap_connect will destroy it for us. */ - err_conn++; - if (bad++ > 10) { - err("\nTest aborted after 10 failures\n\n"); - } - start_connect(c); - } - } - /* connected first time */ - write_request(c); -} - -/* --------------------------------------------------------- */ - -/* close down connection and save stats */ - -static void close_connection(struct connection *c) -{ - if (c->read == 0 && c->keepalive) { - /* server has legitimately shut down an idle keep alive request */ - good--; /* connection never happend */ - } - else { - if (good == 1) { - /* first time here */ - doclen = c->bread; - } - else if (c->bread != doclen) { - bad++; - err_length++; - } - /* save out time */ - if (done < requests) { - struct data s; - ap_current_time(c->done); - s.read = c->read; - ap_timediff(c->connect, c->start, &s.ctime); - ap_timediff(c->done, c->start, &s.time); - stats[done++] = s; - } - } - - ap_remove_poll_socket(readbits, c->aprsock, APR_POLLIN | APR_POLLOUT); - ap_close_socket(c->aprsock); - - /* connect again */ - start_connect(c); - return; -} - -/* --------------------------------------------------------- */ - -/* read data from connection */ - -static void read_connection(struct connection *c) -{ - ap_ssize_t r; - char *part; - char respcode[4]; /* 3 digits and null */ - - r = sizeof(buffer); - ap_recv(c->aprsock, buffer, &r, aprtimeout); - if (r == 0 || (r < 0 && errno != EAGAIN)) { - good++; - close_connection(c); - return; - } - - if (r < 0 && errno == EAGAIN) - return; - - c->read += r; - totalread += r; - - if (!c->gotheader) { - char *s; - int l = 4; - int space = CBUFFSIZE - c->cbx - 1; /* -1 to allow for 0 terminator */ - int tocopy = (space < r) ? space : r; -#ifndef CHARSET_EBCDIC - memcpy(c->cbuff + c->cbx, buffer, space); -#else /*CHARSET_EBCDIC */ - ascii2ebcdic(c->cbuff + c->cbx, buffer, space); -#endif /*CHARSET_EBCDIC */ - c->cbx += tocopy; - space -= tocopy; - c->cbuff[c->cbx] = 0; /* terminate for benefit of strstr */ - if (verbosity >= 4) { - printf("LOG: header received:\n%s\n", c->cbuff); - } - s = strstr(c->cbuff, "\r\n\r\n"); - /* this next line is so that we talk to NCSA 1.5 which blatantly breaks - the http specifaction */ - if (!s) { - s = strstr(c->cbuff, "\n\n"); - l = 2; - } - - if (!s) { - /* read rest next time */ - if (space) { - return; - } - else { - /* header is in invalid or too big - close connection */ - ap_remove_poll_socket(readbits, c->aprsock, APR_POLLOUT); - ap_close_socket(c->aprsock); - if (bad++ > 10) { - err("\nTest aborted after 10 failures\n\n"); - } - start_connect(c); - } - } - else { - /* have full header */ - if (!good) { - /* this is first time, extract some interesting info */ - char *p, *q; - p = strstr(c->cbuff, "Server:"); - q = servername; - if (p) { - p += 8; - while (*p > 32) - *q++ = *p++; - } - *q = 0; - } - - /* XXX: this parsing isn't even remotely HTTP compliant... - * but in the interest of speed it doesn't totally have to be, - * it just needs to be extended to handle whatever servers - * folks want to test against. -djg */ - - /* check response code */ - part = strstr(c->cbuff, "HTTP"); /* really HTTP/1.x_ */ - strncpy(respcode, (part + strlen("HTTP/1.x_")), 3); - respcode[3] = '\0'; - if (respcode[0] != '2') { - err_response++; - if (verbosity >= 2) - printf("WARNING: Response code not 2xx (%s)\n", respcode); - } - else if (verbosity >= 3) { - printf("LOG: Response code = %s\n", respcode); - } - - c->gotheader = 1; - *s = 0; /* terminate at end of header */ - if (keepalive && - (strstr(c->cbuff, "Keep-Alive") - || strstr(c->cbuff, "keep-alive"))) { /* for benefit of MSIIS */ - char *cl; - cl = strstr(c->cbuff, "Content-Length:"); - /* handle NCSA, which sends Content-length: */ - if (!cl) - cl = strstr(c->cbuff, "Content-length:"); - if (cl) { - c->keepalive = 1; - c->length = atoi(cl + 16); - } - } - c->bread += c->cbx - (s + l - c->cbuff) + r - tocopy; - totalbread += c->bread; - } - } - else { - /* outside header, everything we have read is entity body */ - c->bread += r; - totalbread += r; - } - - if (c->keepalive && (c->bread >= c->length)) { - /* finished a keep-alive connection */ - good++; - doneka++; - /* save out time */ - if (good == 1) { - /* first time here */ - doclen = c->bread; - } - else if (c->bread != doclen) { - bad++; - err_length++; - } - if (done < requests) { - struct data s; - ap_current_time(c->done); - s.read = c->read; - ap_timediff(c->connect, c->start, &s.ctime); - ap_timediff(c->done, c->start, &s.time); - stats[done++] = s; - } - c->keepalive = 0; - c->length = 0; - c->gotheader = 0; - c->cbx = 0; - c->read = c->bread = 0; - write_request(c); - c->start = c->connect; /* zero connect time with keep-alive */ - } -} - -/* --------------------------------------------------------- */ - -/* run the tests */ - -static void test(void) -{ - ap_time_t *now; - time_t timeout; - ap_int16_t rv; - int i; - - if (!use_html) { - printf("Benchmarking %s (be patient)...", hostname); - fflush(stdout); - } - - ap_make_time(cntxt, &now); - - con = (struct connection *)malloc(concurrency * sizeof(struct connection)); - memset(con, 0, concurrency * sizeof(struct connection)); - - stats = (struct data *)malloc(requests * sizeof(struct data)); - ap_setup_poll(cntxt, concurrency, &readbits); - - for (i = 0; i < concurrency; i++) { - ap_make_time(cntxt, &con[i].start); - ap_make_time(cntxt, &con[i].connect); - ap_make_time(cntxt, &con[i].done); - } - - /* setup request */ - if (!posting) { - sprintf(request, "GET %s HTTP/1.0\r\n" - "User-Agent: ApacheBench/%s\r\n" - "%s" - "Host: %s\r\n" - "Accept: */*\r\n" - "\r\n", - path, - VERSION, - keepalive ? "Connection: Keep-Alive\r\n" : "", - hostname); - } - else { - sprintf(request, "POST %s HTTP/1.0\r\n" - "User-Agent: ApacheBench/%s\r\n" - "%s" - "Host: %s\r\n" - "Accept: */*\r\n" - "Content-length: %d\r\n" - "Content-type: %s\r\n" - "\r\n", - path, - VERSION, - keepalive ? "Connection: Keep-Alive\r\n" : "", - hostname, postlen, - (content_type[0]) ? content_type : "text/plain"); - } - - if (verbosity >= 2) - printf("INFO: POST header == \n---\n%s\n---\n", request); - - reqlen = strlen(request); - -#ifdef CHARSET_EBCDIC - ebcdic2ascii(request, request, reqlen); -#endif /*CHARSET_EBCDIC */ - - /* ok - lets start */ - ap_current_time(start); - - /* initialise lots of requests */ - for (i = 0; i < concurrency; i++) { - con[i].socknum = i; - start_connect(&con[i]); - } - - while (done < requests) { - ap_int32_t n; - ap_int32_t timed; - - /* check for time limit expiry */ - ap_current_time(now); - ap_timediff(now, start, &timed); - if (tlimit && timed > (tlimit * 1000)) { - requests = done; /* so stats are correct */ - } - /* Timeout of 30 seconds. */ - timeout = 30; - - n = concurrency; - ap_poll(readbits, &n, timeout); - - if (!n) { - err("\nServer timed out\n\n"); - } - if (n < 1) - err("select"); - - for (i = 0; i < concurrency; i++) { - ap_get_revents(readbits, con[i].aprsock, &rv); - if ((rv & APR_POLLERR) || (rv & APR_POLLNVAL) || (rv & APR_POLLHUP)) { - bad++; - err_except++; - start_connect(&con[i]); - continue; - } - if ((rv & APR_POLLIN) || (rv & APR_POLLPRI)) - read_connection(&con[i]); - if (rv & APR_POLLOUT) - write_request(&con[i]); - } - } - if (use_html) - output_html_results(); - else - output_results(); -} - -/* ------------------------------------------------------- */ - -/* display copyright information */ -static void copyright(void) -{ - if (!use_html) { - printf("This is ApacheBench, Version %s\n", VERSION); - printf("Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\n"); - printf("Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/\n"); - printf("\n"); - } - else { - printf("

\n"); - printf(" This is ApacheBench, Version %s
\n", VERSION); - printf(" Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
\n"); - printf(" Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
\n"); - printf("

\n

\n"); - } -} - -/* display usage information */ -static void usage(char *progname) -{ - fprintf(stderr, "Usage: %s [options] [http://]hostname[:port]/path\n", progname); - fprintf(stderr, "Options are:\n"); - fprintf(stderr, " -n requests Number of requests to perform\n"); - fprintf(stderr, " -c concurrency Number of multiple requests to make\n"); - fprintf(stderr, " -t timelimit Seconds to max. wait for responses\n"); - fprintf(stderr, " -p postfile File containg data to POST\n"); - fprintf(stderr, " -T content-type Content-type header for POSTing\n"); - fprintf(stderr, " -v verbosity How much troubleshooting info to print\n"); - fprintf(stderr, " -w Print out results in HTML tables\n"); - fprintf(stderr, " -x attributes String to insert as table attributes\n"); - fprintf(stderr, " -y attributes String to insert as tr attributes\n"); - fprintf(stderr, " -z attributes String to insert as td or th attributes\n"); - fprintf(stderr, " -V Print version number and exit\n"); - fprintf(stderr, " -k Use HTTP KeepAlive feature\n"); - fprintf(stderr, " -h Display usage information (this message)\n"); - exit(EINVAL); -} - -/* ------------------------------------------------------- */ - -/* split URL into parts */ - -static int parse_url(char *url) -{ - char *cp; - char *h; - char *p = NULL; - - if (strlen(url) > 7 && strncmp(url, "http://", 7) == 0) - url += 7; - h = url; - if ((cp = strchr(url, ':')) != NULL) { - *cp++ = '\0'; - p = cp; - url = cp; - } - if ((cp = strchr(url, '/')) == NULL) - return 1; - strcpy(path, cp); - *cp = '\0'; - strcpy(hostname, h); - if (p != NULL) - port = atoi(p); - return 0; -} - -/* ------------------------------------------------------- */ - -/* read data to POST from file, save contents and length */ - -static int open_postfile(char *pfile) -{ - ap_file_t *postfd = NULL; - ap_fileperms_t mode; - ap_ssize_t length; - - if (ap_open(cntxt, pfile, APR_READ, mode, &postfd) != APR_SUCCESS) { - printf("Invalid postfile name (%s)\n", pfile); - return errno; - } - - /* No need to perform stat here, the apr_open will do it for us. */ - - ap_get_filesize(postfd, &postlen); - postdata = (char *)malloc(postlen); - if (!postdata) { - printf("Can\'t alloc postfile buffer\n"); - return ENOMEM; - } - length = postlen; - if (ap_read(postfd, postdata, &length) != APR_SUCCESS && - length != postlen) { - printf("error reading postfilen"); - return EIO; - } - return 0; -} - -/* ------------------------------------------------------- */ - -/* sort out command-line args and call test */ -int main(int argc, char **argv) -{ - int c, r; - - /* table defaults */ - tablestring = ""; - trstring = ""; - tdstring = "bgcolor=white"; - - ap_create_context(NULL, NULL, &cntxt); - - ap_make_time(cntxt, &start); - ap_make_time(cntxt, &endtime); - - optind = 1; - while (ap_getopt(cntxt, argc, argv, "n:c:t:T:p:v:kVhwx:y:z:", &c) == APR_SUCCESS) { - switch (c) { - case 'n': - requests = atoi(optarg); - if (!requests) { - err("Invalid number of requests\n"); - } - break; - case 'k': - keepalive = 1; - break; - case 'c': - concurrency = atoi(optarg); - break; - case 'p': - if (0 == (r = open_postfile(optarg))) { - posting = 1; - } - else if (postdata) { - exit(r); - } - break; - case 'v': - verbosity = atoi(optarg); - break; - case 't': - tlimit = atoi(optarg); - requests = MAX_REQUESTS; /* need to size data array on something */ - break; - case 'T': - strcpy(content_type, optarg); - break; - case 'V': - copyright(); - exit(0); - break; - case 'w': - use_html = 1; - break; - /* if any of the following three are used, turn on html output automatically */ - case 'x': - use_html = 1; - tablestring = optarg; - break; - case 'y': - use_html = 1; - trstring = optarg; - break; - case 'z': - use_html = 1; - tdstring = optarg; - break; - case 'h': - usage(argv[0]); - break; - default: - fprintf(stderr, "%s: invalid option `%c'\n", argv[0], c); - usage(argv[0]); - break; - } - } - if (optind != argc - 1) { - fprintf(stderr, "%s: wrong number of arguments\n", argv[0]); - usage(argv[0]); - } - - if (parse_url(argv[optind++])) { - fprintf(stderr, "%s: invalid URL\n", argv[0]); - usage(argv[0]); - } - - copyright(); - test(); - - return(0); -} diff --git a/test/ab_apr.dsp b/test/ab_apr.dsp deleted file mode 100644 index a3071cbae..000000000 --- a/test/ab_apr.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ab_apr" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ab_apr - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ab_apr.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ab_apr.mak" CFG="ab_apr - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ab_apr - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ab_apr - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ab_apr - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ab_apr - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "ab_apr__" -# PROP BASE Intermediate_Dir "ab_apr__" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ab_apr" -# PROP Intermediate_Dir "ab_apr" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /Fr /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab_apr\ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "ab_apr - Win32 Release" -# Name "ab_apr - Win32 Debug" -# Begin Source File - -SOURCE=.\ab_apr.c -# End Source File -# End Target -# End Project diff --git a/test/abc.c b/test/abc.c deleted file mode 100644 index 43583ec52..000000000 --- a/test/abc.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#include -#include "apr_file_io.h" -#include "apr_general.h" - -int main(int argc, char *argv[]) -{ - ap_file_t *fd; - char ch; - int status = 0; - ap_context_t *context; - - ap_create_context(NULL, NULL, &context); - - ap_open(context, argv[1], APR_READ, -1, &fd); - - while (!status) { - status = ap_getc(fd, &ch); - if (status == APR_EOF ) - fprintf(stdout, "EOF, YEAH!!!!!!!!!\n"); - else if (status == APR_SUCCESS) - fprintf(stdout, "%c", ch); - else - fprintf(stdout, " Big error, NOooooooooo!\n"); - } - return 1; -} diff --git a/test/client.c b/test/client.c deleted file mode 100644 index a8bf93c7e..000000000 --- a/test/client.c +++ /dev/null @@ -1,153 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "errno.h" - -#define STRLEN 15 - -int main(int argc, char *argv[]) -{ - ap_context_t *context; - ap_socket_t *sock; - ap_ssize_t length; - ap_status_t stat; - char datasend[STRLEN] = "Send data test"; - char datarecv[STRLEN]; - - fprintf(stdout, "Creating context......."); - if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { - fprintf(stderr, "Something went wrong\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Creating new socket......."); - if (ap_create_tcp_socket(context, &sock) != APR_SUCCESS) { - fprintf(stderr, "Couldn't create socket\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Setting socket option NONBLOCK......."); - if (ap_setsocketopt(sock, APR_SO_NONBLOCK, 1) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Couldn't set socket option\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Setting port for socket......."); - if (ap_setport(sock, 8021) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Couldn't set the port correctly\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Connecting to socket......."); -do { - stat = ap_connect(sock, "127.0.0.1"); -} while (stat == APR_ECONNREFUSED); - if (stat != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Could not connect %d\n", stat); - fflush(stderr); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Trying to send data over socket......."); - length = STRLEN; - if (ap_send(sock, datasend, &length, 5) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Problem sending data\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - length = STRLEN; - fprintf(stdout, "\tClient: Trying to receive data over socket......."); - if (ap_recv(sock, datarecv, &length, 5) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Problem receiving data\n"); - exit(-1); - } - if (strcmp(datarecv, "Recv data test")) { - ap_close_socket(sock); - fprintf(stderr, "I did not receive the correct data %s\n", datarecv); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Shutting down socket......."); - if (ap_shutdown(sock, APR_SHUTDOWN_WRITE) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Could not shutdown socket\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClient: Closing down socket......."); - if (ap_close_socket(sock) != APR_SUCCESS) { - fprintf(stderr, "Could not shutdown socket\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - return 1; -} \ No newline at end of file diff --git a/test/client.dsp b/test/client.dsp deleted file mode 100644 index 47f807aed..000000000 --- a/test/client.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="client" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=client - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "client.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "client.mak" CFG="client - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "client - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "client - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "client - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "client - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "client__" -# PROP BASE Intermediate_Dir "client__" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "client" -# PROP Intermediate_Dir "client" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_STDIO_H" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\locks\win32\debug\locks.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "client - Win32 Release" -# Name "client - Win32 Debug" -# Begin Source File - -SOURCE=.\client.c -# End Source File -# End Target -# End Project diff --git a/test/htdigest.c b/test/htdigest.c deleted file mode 100644 index 528aa5c81..000000000 --- a/test/htdigest.c +++ /dev/null @@ -1,280 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -/****************************************************************************** - ****************************************************************************** - * NOTE! This program is not safe as a setuid executable! Do not make it - * setuid! - ****************************************************************************** - *****************************************************************************/ -/* - * htdigest.c: simple program for manipulating digest passwd file for Apache - * - * by Alexei Kosut, based on htpasswd.c, by Rob McCool - */ - -#include "apr_lib.h" -#include "apr_md5.h" -#include -#if defined(MPE) || defined(QNX) || defined(WIN32) -#include -#else -#include -#endif - -#ifdef WIN32 -#include -#endif - -#ifdef CHARSET_EBCDIC -#define LF '\n' -#define CR '\r' -#else -#define LF 10 -#define CR 13 -#endif /* CHARSET_EBCDIC */ - -#define MAX_STRING_LEN 256 - -char *tn; -ap_context_t *cntxt; - -static void getword(char *word, char *line, char stop) -{ - int x = 0, y; - - for (x = 0; ((line[x]) && (line[x] != stop)); x++) - word[x] = line[x]; - - word[x] = '\0'; - if (line[x]) - ++x; - y = 0; - - while ((line[y++] = line[x++])); -} - -static int getline(char *s, int n, ap_file_t *f) -{ - register int i = 0; - char ch; - - while (1) { - ap_getc(f, &ch); - s[i] = ch; - - if (s[i] == CR) - ap_getc(f, &ch); - s[i] = ch; - - if ((s[i] == 0x4) || (s[i] == LF) || (i == (n - 1))) { - s[i] = '\0'; - if (ap_eof(f) == APR_EOF) { - return 1; - } - return 0; - } - ++i; - } -} - -static void putline(ap_file_t *f, char *l) -{ - int x; - - for (x = 0; l[x]; x++) - ap_putc(f, l[x]); - ap_putc(f, '\n'); -} - - -static void add_password(char *user, char *realm, ap_file_t *f) -{ - char *pw; - APR_MD5_CTX context; - unsigned char digest[16]; - char string[MAX_STRING_LEN]; - char pwin[MAX_STRING_LEN]; - char pwv[MAX_STRING_LEN]; - unsigned int i; - size_t len = sizeof(pwin); - - if (ap_getpass("New password: ", pwin, &len) != APR_SUCCESS) { - fprintf(stderr, "password too long"); - exit(5); - } - len = sizeof(pwin); - ap_getpass("Re-type new password: ", pwv, &len); - if (strcmp(pwin, pwv) != 0) { - fprintf(stderr, "They don't match, sorry.\n"); - if (tn) { - ap_remove_file(cntxt, tn); - } - exit(1); - } - pw = pwin; - ap_fprintf(f, "%s:%s:", user, realm); - - /* Do MD5 stuff */ - sprintf(string, "%s:%s:%s", user, realm, pw); - - apr_MD5Init(&context); - apr_MD5Update(&context, (unsigned char *) string, strlen(string)); - apr_MD5Final(digest, &context); - - for (i = 0; i < 16; i++) - ap_fprintf(f, "%02x", digest[i]); - - ap_fprintf(f, "\n"); -} - -static void usage(void) -{ - fprintf(stderr, "Usage: htdigest [-c] passwordfile realm username\n"); - fprintf(stderr, "The -c flag creates a new file.\n"); - exit(1); -} - -static void interrupted(void) -{ - fprintf(stderr, "Interrupted.\n"); - if (tn) - ap_remove_file(cntxt, tn); - exit(1); -} - -int main(int argc, char *argv[]) -{ - ap_file_t *tfp, *f; - char user[MAX_STRING_LEN]; - char realm[MAX_STRING_LEN]; - char line[MAX_STRING_LEN]; - char l[MAX_STRING_LEN]; - char w[MAX_STRING_LEN]; - char x[MAX_STRING_LEN]; - char command[MAX_STRING_LEN]; - int found; - - ap_create_context(NULL, NULL, &cntxt); - - tn = NULL; - signal(SIGINT, (void (*)(int)) interrupted); - if (argc == 5) { - if (strcmp(argv[1], "-c")) - usage(); - if (ap_open(cntxt, argv[2], APR_WRITE | APR_CREATE, -1, &tfp) != APR_SUCCESS) { - fprintf(stderr, "Could not open passwd file %s for writing.\n", - argv[2]); - perror("ap_open"); - exit(1); - } - printf("Adding password for %s in realm %s.\n", argv[4], argv[3]); - add_password(argv[4], argv[3], tfp); - ap_close(tfp); - exit(0); - } - else if (argc != 4) - usage(); - - tn = tmpnam(NULL); - if (ap_open(cntxt, tn, APR_WRITE | APR_CREATE, -1, &tfp)!= APR_SUCCESS) { - fprintf(stderr, "Could not open temp file.\n"); - exit(1); - } - - if (ap_open(cntxt, argv[1], APR_READ, -1, &f) != APR_SUCCESS) { - fprintf(stderr, - "Could not open passwd file %s for reading.\n", argv[1]); - fprintf(stderr, "Use -c option to create new one.\n"); - exit(1); - } - strcpy(user, argv[3]); - strcpy(realm, argv[2]); - - found = 0; - while (!(getline(line, MAX_STRING_LEN, f))) { - if (found || (line[0] == '#') || (!line[0])) { - putline(tfp, line); - continue; - } - strcpy(l, line); - getword(w, l, ':'); - getword(x, l, ':'); - if (strcmp(user, w) || strcmp(realm, x)) { - putline(tfp, line); - continue; - } - else { - printf("Changing password for user %s in realm %s\n", user, realm); - add_password(user, realm, tfp); - found = 1; - } - } - if (!found) { - printf("Adding user %s in realm %s\n", user, realm); - add_password(user, realm, tfp); - } - ap_close(f); - ap_close(tfp); -#if defined(OS2) || defined(WIN32) - sprintf(command, "copy \"%s\" \"%s\"", tn, argv[1]); -#else - sprintf(command, "cp %s %s", tn, argv[1]); -#endif - system(command); - ap_remove_file(cntxt, tn); - return 0; -} diff --git a/test/htdigest.dsp b/test/htdigest.dsp deleted file mode 100644 index a0f8f0bf3..000000000 --- a/test/htdigest.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="htdigest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=htdigest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "htdigest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "htdigest.mak" CFG="htdigest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "htdigest - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "htdigest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "htdigest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "htdigest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "htdigest" -# PROP BASE Intermediate_Dir "htdigest" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "htdigest" -# PROP Intermediate_Dir "htdigest" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "htdigest - Win32 Release" -# Name "htdigest - Win32 Debug" -# Begin Source File - -SOURCE=.\htdigest.c -# End Source File -# End Target -# End Project diff --git a/test/htpasswd.c b/test/htpasswd.c deleted file mode 100644 index 2c268ea55..000000000 --- a/test/htpasswd.c +++ /dev/null @@ -1,538 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/****************************************************************************** - ****************************************************************************** - * NOTE! This program is not safe as a setuid executable! Do not make it - * setuid! - ****************************************************************************** - *****************************************************************************/ -/* - * htpasswd.c: simple program for manipulating password file for - * the Apache HTTP server - * - * Originally by Rob McCool - * - * Exit values: - * 0: Success - * 1: Failure; file access/permission problem - * 2: Failure; command line syntax problem (usage message issued) - * 3: Failure; password verification failure - * 4: Failure; operation interrupted (such as with CTRL/C) - * 5: Failure; buffer would overflow (username, filename, or computed - * record too long) - * 6: Failure; username contains illegal or reserved characters - */ - -#include "apr_signal.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include -#include - -#ifdef WIN32 -#include -#include "../os/win32/getopt.h" -#define unlink _unlink -#endif - -#ifndef CHARSET_EBCDIC -#define LF 10 -#define CR 13 -#else /*CHARSET_EBCDIC*/ -#define LF '\n' -#define CR '\r' -#endif /*CHARSET_EBCDIC*/ - -#define MAX_STRING_LEN 256 -#define ALG_CRYPT 1 -#define ALG_APMD5 2 - -#define ERR_FILEPERM 1 -#define ERR_SYNTAX 2 -#define ERR_PWMISMATCH 3 -#define ERR_INTERRUPTED 4 -#define ERR_OVERFLOW 5 -#define ERR_BADUSER 6 - -/* - * This needs to be declared statically so the signal handler can - * access it. - */ -static char *tempfilename; - -/* - * Get a line of input from the user, not including any terminating - * newline. - */ -static int getline(char *s, int n, FILE *f) -{ - register int i = 0; - - while (1) { - s[i] = (char) fgetc(f); - - if (s[i] == CR) { - s[i] = fgetc(f); - } - - if ((s[i] == 0x4) || (s[i] == LF) || (i == (n - 1))) { - s[i] = '\0'; - return (feof(f) ? 1 : 0); - } - ++i; - } -} - -static void putline(FILE *f, char *l) -{ - int x; - - for (x = 0; l[x]; x++) { - fputc(l[x], f); - } - fputc('\n', f); -} - - -/* From local_passwd.c (C) Regents of Univ. of California blah blah */ -static unsigned char itoa64[] = /* 0 ... 63 => ascii - 64 */ - "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - -static void to64(register char *s, register long v, register int n) -{ - while (--n >= 0) { - *s++ = itoa64[v & 0x3f]; - v >>= 6; - } -} - -/* - * Make a password record from the given information. A zero return - * indicates success; failure means that the output buffer contains an - * error message instead. - */ -static int mkrecord(char *user, char *record, size_t rlen, char *passwd, - int alg) -{ - char *pw; - char cpw[120]; - char salt[9]; - char pwin[MAX_STRING_LEN]; - char pwv[MAX_STRING_LEN]; - - if (passwd != NULL) { - pw = passwd; - } - else { - if (ap_getpass("New password: ", pwin, sizeof(pwin)) != 0) { - ap_snprintf(record, (rlen - 1), "password too long (>%d)", - sizeof(pwin) - 1); - return ERR_OVERFLOW; - } - ap_getpass("Re-type new password: ", pwv, sizeof(pwv)); - if (strcmp(pwin, pwv) != 0) { - ap_cpystrn(record, "password verification error", (rlen - 1)); - return ERR_PWMISMATCH; - } - pw = pwin; - } - (void) srand((int) time((time_t *) NULL)); - to64(&salt[0], rand(), 8); - salt[8] = '\0'; - - switch (alg) { - case ALG_APMD5: - ap_MD5Encode((const unsigned char *)pw, (const unsigned char *)salt, - cpw, sizeof(cpw)); - break; - case ALG_CRYPT: - ap_cpystrn(cpw, (char *)crypt(pw, salt), sizeof(cpw) - 1); - break; - } - - /* - * Check to see if the buffer is large enough to hold the username, - * hash, and delimiters. - */ - if ((strlen(user) + 1 + strlen(cpw)) > (rlen - 1)) { - ap_cpystrn(record, "resultant record too long", (rlen - 1)); - return ERR_OVERFLOW; - } - strcpy(record, user); - strcat(record, ":"); - strcat(record, cpw); - return 0; -} - -static int usage(void) -{ - fprintf(stderr, "Usage:\n"); - fprintf(stderr, "\thtpasswd [-cm] passwordfile username\n"); - fprintf(stderr, "\thtpasswd -b[cm] passwordfile username password\n\n"); - fprintf(stderr, " -c Create a new file.\n"); - fprintf(stderr, " -m Force MD5 encryption of the password.\n"); - fprintf(stderr, " -b Use the password from the command line rather "); - fprintf(stderr, "than prompting for it.\n"); - fprintf(stderr, "On Windows systems the -m flag is used by default.\n"); - return ERR_SYNTAX; -} - -static void interrupted(void) -{ - fprintf(stderr, "Interrupted.\n"); - if (tempfilename != NULL) { - unlink(tempfilename); - } - exit(ERR_INTERRUPTED); -} - -/* - * Check to see if the specified file can be opened for the given - * access. - */ -static int accessible(char *fname, char *mode) -{ - FILE *s; - - s = fopen(fname, mode); - if (s == NULL) { - return 0; - } - fclose(s); - return 1; -} - -/* - * Return true if a file is readable. - */ -static int readable(char *fname) -{ - return accessible(fname, "r"); -} - -/* - * Return true if the specified file can be opened for write access. - */ -static int writable(char *fname) -{ - return accessible(fname, "a"); -} - -/* - * Return true if the named file exists, regardless of permissions. - */ -static int exists(char *fname) -{ -#ifdef WIN32 - struct _stat sbuf; -#else - struct stat sbuf; -#endif - int check; - -#ifdef WIN32 - check = _stat(fname, &sbuf); -#else - check = stat(fname, &sbuf); -#endif - return ((check == -1) && (errno == ENOENT)) ? 0 : 1; -} - -/* - * Copy from the current position of one file to the current position - * of another. - */ -static void copy_file(FILE *target, FILE *source) -{ - static char line[MAX_STRING_LEN]; - - while (fgets(line, sizeof(line), source) != NULL) { - fputs(line, target); - } -} - -/* - * Let's do it. We end up doing a lot of file opening and closing, - * but what do we care? This application isn't run constantly. - */ -int main(int argc, char *argv[]) -{ - FILE *ftemp = NULL; - FILE *fpw = NULL; - char user[MAX_STRING_LEN]; - char password[MAX_STRING_LEN]; - char record[MAX_STRING_LEN]; - char line[MAX_STRING_LEN]; - char pwfilename[MAX_STRING_LEN]; - char *arg; - int found = 0; - int alg = ALG_CRYPT; - int newfile = 0; - int noninteractive = 0; - int i; - int args_left = 2; - - tempfilename = NULL; - signal(SIGINT, (void (*)(int)) interrupted); - - /* - * Preliminary check to make sure they provided at least - * three arguments, we'll do better argument checking as - * we parse the command line. - */ - if (argc < 3) { - return usage(); - } - - /* - * Go through the argument list and pick out any options. They - * have to precede any other arguments. - */ - for (i = 1; i < argc; i++) { - arg = argv[i]; - if (*arg != '-') { - break; - } - while (*++arg != '\0') { - if (*arg == 'c') { - newfile++; - } - else if (*arg == 'm') { - alg = ALG_APMD5; - } - else if (*arg == 'b') { - noninteractive++; - args_left++; - } - else { - return usage(); - } - } - } - - /* - * Make sure we still have exactly the right number of arguments left - * (the filename, the username, and possibly the password if -b was - * specified). - */ - if ((argc - i) != args_left) { - return usage(); - } - if (strlen(argv[i]) > (sizeof(pwfilename) - 1)) { - fprintf(stderr, "%s: filename too long\n", argv[0]); - return ERR_OVERFLOW; - } - strcpy(pwfilename, argv[i]); - if (strlen(argv[i + 1]) > (sizeof(user) - 1)) { - fprintf(stderr, "%s: username too long (>%d)\n", argv[0], - sizeof(user) - 1); - return ERR_OVERFLOW; - } - strcpy(user, argv[i + 1]); - if ((arg = strchr(user, ':')) != NULL) { - fprintf(stderr, "%s: username contains illegal character '%c'\n", - argv[0], *arg); - return ERR_BADUSER; - } - if (noninteractive) { - if (strlen(argv[i + 2]) > (sizeof(password) - 1)) { - fprintf(stderr, "%s: password too long (>%d)\n", argv[0], - sizeof(password) - 1); - return ERR_OVERFLOW; - } - strcpy(password, argv[i + 2]); - } - -#ifdef WIN32 - if (alg == ALG_CRYPT) { - alg = ALG_APMD5; - fprintf(stderr, "Automatically using MD5 format on Windows.\n"); - } -#endif - - /* - * Verify that the file exists if -c was omitted. We give a special - * message if it doesn't. - */ - if ((! newfile) && (! exists(pwfilename))) { - fprintf(stderr, "%s: cannot modify file %s; use '-c' to create it\n", - argv[0], pwfilename); - perror("fopen"); - exit(ERR_FILEPERM); - } - /* - * Verify that we can read the existing file in the case of an update - * to it (rather than creation of a new one). - */ - if ((! newfile) && (! readable(pwfilename))) { - fprintf(stderr, "%s: cannot open file %s for read access\n", - argv[0], pwfilename); - perror("fopen"); - exit(ERR_FILEPERM); - } - /* - * Now check to see if we can preserve an existing file in case - * of password verification errors on a -c operation. - */ - if (newfile && exists(pwfilename) && (! readable(pwfilename))) { - fprintf(stderr, "%s: cannot open file %s for read access\n" - "%s: existing auth data would be lost on password mismatch", - argv[0], pwfilename, argv[0]); - perror("fopen"); - exit(ERR_FILEPERM); - } - /* - * Now verify that the file is writable! - */ - if (! writable(pwfilename)) { - fprintf(stderr, "%s: cannot open file %s for write access\n", - argv[0], pwfilename); - perror("fopen"); - exit(ERR_FILEPERM); - } - - /* - * All the file access checks have been made. Time to go to work; - * try to create the record for the username in question. If that - * fails, there's no need to waste any time on file manipulations. - * Any error message text is returned in the record buffer, since - * the mkrecord() routine doesn't have access to argv[]. - */ - i = mkrecord(user, record, sizeof(record) - 1, - noninteractive ? password : NULL, - alg); - if (i != 0) { - fprintf(stderr, "%s: %s\n", argv[0], record); - exit(i); - } - - /* - * We can access the files the right way, and we have a record - * to add or update. Let's do it.. - */ - tempfilename = tmpnam(NULL); - ftemp = fopen(tempfilename, "w+"); - if (ftemp == NULL) { - fprintf(stderr, "%s: unable to create temporary file\n", argv[0]); - perror("fopen"); - exit(ERR_FILEPERM); - } - /* - * If we're not creating a new file, copy records from the existing - * one to the temporary file until we find the specified user. - */ - if (! newfile) { - char scratch[MAX_STRING_LEN]; - - fpw = fopen(pwfilename, "r"); - while (! (getline(line, sizeof(line), fpw))) { - char *colon; - - if ((line[0] == '#') || (line[0] == '\0')) { - putline(ftemp, line); - continue; - } - strcpy(scratch, line); - /* - * See if this is our user. - */ - colon = strchr(scratch, ':'); - if (colon != NULL) { - *colon = '\0'; - } - if (strcmp(user, scratch) != 0) { - putline(ftemp, line); - continue; - } - found++; - break; - } - } - if (found) { - fprintf(stderr, "Updating "); - } - else { - fprintf(stderr, "Adding "); - } - fprintf(stderr, "password for user %s\n", user); - /* - * Now add the user record we created. - */ - putline(ftemp, record); - /* - * If we're updating an existing file, there may be additional - * records beyond the one we're updating, so copy them. - */ - if (! newfile) { - copy_file(ftemp, fpw); - fclose(fpw); - } - /* - * The temporary file now contains the information that should be - * in the actual password file. Close the open files, re-open them - * in the appropriate mode, and copy them file to the real one. - */ - fclose(ftemp); - fpw = fopen(pwfilename, "w+"); - ftemp = fopen(tempfilename, "r"); - copy_file(fpw, ftemp); - fclose(fpw); - fclose(ftemp); - unlink(tempfilename); - return 0; -} diff --git a/test/logresolve.c b/test/logresolve.c deleted file mode 100644 index bcdc6e51b..000000000 --- a/test/logresolve.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - * logresolve 1.1 - * - * Tom Rathborne - tomr@uunet.ca - http://www.uunet.ca/~tomr/ - * UUNET Canada, April 16, 1995 - * - * Rewritten by David Robinson. (drtr@ast.cam.ac.uk) - * - * Usage: logresolve [-s filename] [-c] < access_log > new_log - * - * Arguments: - * -s filename name of a file to record statistics - * -c check the DNS for a matching A record for the host. - * - * Notes: - * - * To generate meaningful statistics from an HTTPD log file, it's good - * to have the domain name of each machine that accessed your site, but - * doing this on the fly can slow HTTPD down. - * - * Compiling NCSA HTTPD with the -DMINIMAL_DNS flag turns IP#->hostname - * resolution off. Before running your stats program, just run your log - * file through this program (logresolve) and all of your IP numbers will - * be resolved into hostnames (where possible). - * - * logresolve takes an HTTPD access log (in the COMMON log file format, - * or any other format that has the IP number/domain name as the first - * field for that matter), and outputs the same file with all of the - * domain names looked up. Where no domain name can be found, the IP - * number is left in. - * - * To minimize impact on your nameserver, logresolve has its very own - * internal hash-table cache. This means that each IP number will only - * be looked up the first time it is found in the log file. - * - * The -c option causes logresolve to apply the same check as httpd - * compiled with -DMAXIMUM_DNS; after finding the hostname from the IP - * address, it looks up the IP addresses for the hostname and checks - * that one of these matches the original address. - */ - -#include "ap_config.h" -#include - -#include - -#ifndef MPE -#include -#endif - -static void cgethost(struct in_addr ipnum, char *string, int check); -static int getline(char *s, int n); -static void stats(FILE *output); - - -/* maximum line length */ -#define MAXLINE 1024 - -/* maximum length of a domain name */ -#ifndef MAXDNAME -#define MAXDNAME 256 -#endif - -/* number of buckets in cache hash table */ -#define BUCKETS 256 - -#if defined(NEED_STRDUP) -char *strdup (const char *str) -{ - char *dup; - - if (!(dup = (char *) malloc(strlen(str) + 1))) - return NULL; - dup = strcpy(dup, str); - - return dup; -} -#endif - -/* - * struct nsrec - record of nameservice for cache linked list - * - * ipnum - IP number hostname - hostname noname - nonzero if IP number has no - * hostname, i.e. hostname=IP number - */ - -struct nsrec { - struct in_addr ipnum; - char *hostname; - int noname; - struct nsrec *next; -} *nscache[BUCKETS]; - -/* - * statistics - obvious - */ - -#ifndef h_errno -extern int h_errno; /* some machines don't have this in their headers */ -#endif - -/* largeste value for h_errno */ -#define MAX_ERR (NO_ADDRESS) -#define UNKNOWN_ERR (MAX_ERR+1) -#define NO_REVERSE (MAX_ERR+2) - -static int cachehits = 0; -static int cachesize = 0; -static int entries = 0; -static int resolves = 0; -static int withname = 0; -static int errors[MAX_ERR + 3]; - -/* - * cgethost - gets hostname by IP address, caching, and adding unresolvable - * IP numbers with their IP number as hostname, setting noname flag - */ - -static void cgethost (struct in_addr ipnum, char *string, int check) -{ - struct nsrec **current, *new; - struct hostent *hostdata; - char *name; - - current = &nscache[((ipnum.s_addr + (ipnum.s_addr >> 8) + - (ipnum.s_addr >> 16) + (ipnum.s_addr >> 24)) % BUCKETS)]; - - while (*current != NULL && ipnum.s_addr != (*current)->ipnum.s_addr) - current = &(*current)->next; - - if (*current == NULL) { - cachesize++; - new = (struct nsrec *) malloc(sizeof(struct nsrec)); - if (new == NULL) { - perror("malloc"); - fprintf(stderr, "Insufficient memory\n"); - exit(1); - } - *current = new; - new->next = NULL; - - new->ipnum = ipnum; - - hostdata = gethostbyaddr((const char *) &ipnum, sizeof(struct in_addr), - AF_INET); - if (hostdata == NULL) { - if (h_errno > MAX_ERR) - errors[UNKNOWN_ERR]++; - else - errors[h_errno]++; - new->noname = h_errno; - name = strdup(inet_ntoa(ipnum)); - } - else { - new->noname = 0; - name = strdup(hostdata->h_name); - if (check) { - if (name == NULL) { - perror("strdup"); - fprintf(stderr, "Insufficient memory\n"); - exit(1); - } - hostdata = gethostbyname(name); - if (hostdata != NULL) { - char **hptr; - - for (hptr = hostdata->h_addr_list; *hptr != NULL; hptr++) - if (((struct in_addr *) (*hptr))->s_addr == ipnum.s_addr) - break; - if (*hptr == NULL) - hostdata = NULL; - } - if (hostdata == NULL) { - fprintf(stderr, "Bad host: %s != %s\n", name, - inet_ntoa(ipnum)); - new->noname = NO_REVERSE; - free(name); - name = strdup(inet_ntoa(ipnum)); - errors[NO_REVERSE]++; - } - } - } - new->hostname = name; - if (new->hostname == NULL) { - perror("strdup"); - fprintf(stderr, "Insufficient memory\n"); - exit(1); - } - } - else - cachehits++; - - /* size of string == MAXDNAME +1 */ - strncpy(string, (*current)->hostname, MAXDNAME); - string[MAXDNAME] = '\0'; -} - -/* - * prints various statistics to output - */ - -static void stats (FILE *output) -{ - int i; - char *ipstring; - struct nsrec *current; - char *errstring[MAX_ERR + 3]; - - for (i = 0; i < MAX_ERR + 3; i++) - errstring[i] = "Unknown error"; - errstring[HOST_NOT_FOUND] = "Host not found"; - errstring[TRY_AGAIN] = "Try again"; - errstring[NO_RECOVERY] = "Non recoverable error"; - errstring[NO_DATA] = "No data record"; - errstring[NO_ADDRESS] = "No address"; - errstring[NO_REVERSE] = "No reverse entry"; - - fprintf(output, "logresolve Statistics:\n"); - - fprintf(output, "Entries: %d\n", entries); - fprintf(output, " With name : %d\n", withname); - fprintf(output, " Resolves : %d\n", resolves); - if (errors[HOST_NOT_FOUND]) - fprintf(output, " - Not found : %d\n", errors[HOST_NOT_FOUND]); - if (errors[TRY_AGAIN]) - fprintf(output, " - Try again : %d\n", errors[TRY_AGAIN]); - if (errors[NO_DATA]) - fprintf(output, " - No data : %d\n", errors[NO_DATA]); - if (errors[NO_ADDRESS]) - fprintf(output, " - No address: %d\n", errors[NO_ADDRESS]); - if (errors[NO_REVERSE]) - fprintf(output, " - No reverse: %d\n", errors[NO_REVERSE]); - fprintf(output, "Cache hits : %d\n", cachehits); - fprintf(output, "Cache size : %d\n", cachesize); - fprintf(output, "Cache buckets : IP number * hostname\n"); - - for (i = 0; i < BUCKETS; i++) - for (current = nscache[i]; current != NULL; current = current->next) { - ipstring = inet_ntoa(current->ipnum); - if (current->noname == 0) - fprintf(output, " %3d %15s - %s\n", i, ipstring, - current->hostname); - else { - if (current->noname > MAX_ERR + 2) - fprintf(output, " %3d %15s : Unknown error\n", i, - ipstring); - else - fprintf(output, " %3d %15s : %s\n", i, ipstring, - errstring[current->noname]); - } - } -} - - -/* - * gets a line from stdin - */ - -static int getline (char *s, int n) -{ - char *cp; - - if (!fgets(s, n, stdin)) - return (0); - cp = strchr(s, '\n'); - if (cp) - *cp = '\0'; - return (1); -} - -int main (int argc, char *argv[]) -{ - struct in_addr ipnum; - char *bar, hoststring[MAXDNAME + 1], line[MAXLINE], *statfile; - int i, check; - - check = 0; - statfile = NULL; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-c") == 0) - check = 1; - else if (strcmp(argv[i], "-s") == 0) { - if (i == argc - 1) { - fprintf(stderr, "logresolve: missing filename to -s\n"); - exit(1); - } - i++; - statfile = argv[i]; - } - else { - fprintf(stderr, "Usage: logresolve [-s statfile] [-c] < input > output\n"); - exit(0); - } - } - - - for (i = 0; i < BUCKETS; i++) - nscache[i] = NULL; - for (i = 0; i < MAX_ERR + 2; i++) - errors[i] = 0; - - while (getline(line, MAXLINE)) { - if (line[0] == '\0') - continue; - entries++; - if (!isdigit(line[0])) { /* short cut */ - puts(line); - withname++; - continue; - } - bar = strchr(line, ' '); - if (bar != NULL) - *bar = '\0'; - ipnum.s_addr = inet_addr(line); - if (ipnum.s_addr == 0xffffffffu) { - if (bar != NULL) - *bar = ' '; - puts(line); - withname++; - continue; - } - - resolves++; - - cgethost(ipnum, hoststring, check); - if (bar != NULL) - printf("%s %s\n", hoststring, bar + 1); - else - puts(hoststring); - } - - if (statfile != NULL) { - FILE *fp; - fp = fopen(statfile, "w"); - if (fp == NULL) { - fprintf(stderr, "logresolve: could not open statistics file '%s'\n" - ,statfile); - exit(1); - } - stats(fp); - fclose(fp); - } - - return (0); -} diff --git a/test/rotatelogs.c b/test/rotatelogs.c deleted file mode 100644 index dc6bd9772..000000000 --- a/test/rotatelogs.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Simple program to rotate Apache logs without having to kill the server. - * - * Contributed by Ben Laurie - * - * 12 Mar 1996 - */ - - -#define BUFSIZE 65536 -#define MAX_PATH 1024 - -#include "ap_config.h" -#include -#include -#include - -int main (int argc, char **argv) -{ - char buf[BUFSIZE], buf2[MAX_PATH]; - time_t tLogEnd = 0; - time_t tRotation; - int nLogFD = -1; - int nRead; - char *szLogRoot; - - if (argc != 3) { - fprintf(stderr, - "%s \n\n", - argv[0]); -#ifdef OS2 - fprintf(stderr, - "Add this:\n\nTransferLog \"|%s.exe /some/where 86400\"\n\n", - argv[0]); -#else - fprintf(stderr, - "Add this:\n\nTransferLog \"|%s /some/where 86400\"\n\n", - argv[0]); -#endif - fprintf(stderr, - "to httpd.conf. The generated name will be /some/where.nnnn " - "where nnnn is the\nsystem time at which the log nominally " - "starts (N.B. this time will always be a\nmultiple of the " - "rotation time, so you can synchronize cron scripts with it).\n" - "At the end of each rotation time a new log is started.\n"); - exit(1); - } - - szLogRoot = argv[1]; - tRotation = atoi(argv[2]); - if (tRotation <= 0) { - fprintf(stderr, "Rotation time must be > 0\n"); - exit(6); - } - - for (;;) { - nRead = read(0, buf, sizeof buf); - if (nRead == 0) - exit(3); - if (nRead < 0) - if (errno != EINTR) - exit(4); - if (nLogFD >= 0 && (time(NULL) >= tLogEnd || nRead < 0)) { - close(nLogFD); - nLogFD = -1; - } - if (nLogFD < 0) { - time_t tLogStart = (time(NULL) / tRotation) * tRotation; - sprintf(buf2, "%s.%010d", szLogRoot, (int) tLogStart); - tLogEnd = tLogStart + tRotation; - nLogFD = open(buf2, O_WRONLY | O_CREAT | O_APPEND, 0666); - if (nLogFD < 0) { - perror(buf2); - exit(2); - } - } - if (write(nLogFD, buf, nRead) != nRead) { - perror(buf2); - exit(5); - } - } -} diff --git a/test/server.c b/test/server.c deleted file mode 100644 index 79eac9125..000000000 --- a/test/server.c +++ /dev/null @@ -1,198 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" - -#define STRLEN 15 - -int main(int argc, char *argv[]) -{ - ap_context_t *context; - ap_socket_t *sock; - ap_socket_t *sock2; - ap_ssize_t length; - ap_int32_t rv; - ap_pollfd_t *sdset; - char datasend[STRLEN]; - char datarecv[STRLEN] = "Recv data test"; - - fprintf(stdout, "Creating context......."); - if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { - fprintf(stderr, "Could not create a context\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Creating new socket......."); - if (ap_create_tcp_socket(context, &sock) != APR_SUCCESS) { - fprintf(stderr, "Couldn't create socket\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Setting socket option NONBLOCK......."); - if (ap_setsocketopt(sock, APR_SO_NONBLOCK, 1) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Couldn't set socket option\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Setting port for socket......."); - if (ap_setport(sock, 8021) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Couldn't set the port correctly\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Binding socket to port......."); - if (ap_bind(sock) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Could not bind\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Listening to socket......."); - if (ap_listen(sock, 8021) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Could not listen\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Setting up socket for polling......."); - ap_setup_poll(context, 1, &sdset); - ap_add_poll_socket(sdset, sock, APR_POLLIN); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Beginning to poll for socket......."); - rv = 1; - if (ap_poll(sdset, &rv, -1) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Select caused an error\n"); - exit(-1); - } - else if (rv == 0) { - ap_close_socket(sock); - fprintf(stderr, "I should not return until rv == 1\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Accepting a connection......."); - if (ap_accept(sock, &sock2) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Could not accept connection.\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - length = STRLEN; - fprintf(stdout, "\tServer: Trying to recv data from socket......."); - if (ap_recv(sock2, datasend, &length, 5) != APR_SUCCESS) { - ap_close_socket(sock); - ap_close_socket(sock2); - fprintf(stderr, "Problem recving data\n"); - exit(-1); - } - if (strcmp(datasend, "Send data test")) { - ap_close_socket(sock); - ap_close_socket(sock2); - fprintf(stderr, "I did not receive the correct data %s\n", datarecv); - exit(-1); - } - fprintf(stdout, "OK\n"); - - length = STRLEN; - fprintf(stdout, "\tServer: Sending data over socket......."); - if (ap_send(sock2, datarecv, &length, 5) != APR_SUCCESS) { - ap_close_socket(sock); - ap_close_socket(sock2); - fprintf(stderr, "Problem sending data\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: Shutting down accepte socket......."); - if (ap_shutdown(sock2, APR_SHUTDOWN_READ) != APR_SUCCESS) { - ap_close_socket(sock); - ap_close_socket(sock2); - fprintf(stderr, "Problem shutting down\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: closing duplicate socket......."); - if (ap_close_socket(sock2) != APR_SUCCESS) { - ap_close_socket(sock); - fprintf(stderr, "Problem closing down\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tServer: closing original socket......."); - if (ap_close_socket(sock) != APR_SUCCESS) { - fprintf(stderr, "Problem closing down\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - return 1; -} - diff --git a/test/server.dsp b/test/server.dsp deleted file mode 100644 index dda23de75..000000000 --- a/test/server.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="server" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=server - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "server.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "server.mak" CFG="server - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "server - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "server - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "server - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "server - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "server__" -# PROP BASE Intermediate_Dir "server__" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "server" -# PROP Intermediate_Dir "server" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_STDIO_H" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\locks\win32\debug\locks.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "server - Win32 Release" -# Name "server - Win32 Debug" -# Begin Source File - -SOURCE=.\server.c -# End Source File -# End Target -# End Project diff --git a/test/suexec.c b/test/suexec.c deleted file mode 100644 index 3114b5e21..000000000 --- a/test/suexec.c +++ /dev/null @@ -1,565 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1995-1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group and was originally based - * on public domain software written at the National Center for - * Supercomputing Applications, University of Illinois, Urbana-Champaign. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -/* - * suexec.c -- "Wrapper" support program for suEXEC behaviour for Apache - * - *********************************************************************** - * - * NOTE! : DO NOT edit this code!!! Unless you know what you are doing, - * editing this code might open up your system in unexpected - * ways to would-be crackers. Every precaution has been taken - * to make this code as safe as possible; alter it at your own - * risk. - * - *********************************************************************** - * - * - */ - -#include "ap_config.h" -#include -#include -#include - -#include - -#include "suexec.h" - -/* - *********************************************************************** - * There is no initgroups() in QNX, so I believe this is safe :-) - * Use cc -osuexec -3 -O -mf -DQNX suexec.c to compile. - * - * May 17, 1997. - * Igor N. Kovalenko -- infoh@mail.wplus.net - *********************************************************************** - */ - -#if defined(NEED_INITGROUPS) -int initgroups(const char *name, gid_t basegid) -{ -/* QNX and MPE do not appear to support supplementary groups. */ - return 0; -} -#endif - -#if defined(PATH_MAX) -#define AP_MAXPATH PATH_MAX -#elif defined(MAXPATHLEN) -#define AP_MAXPATH MAXPATHLEN -#else -#define AP_MAXPATH 8192 -#endif - -#define AP_ENVBUF 256 - -extern char **environ; -static FILE *log = NULL; - -char *safe_env_lst[] = -{ - "AUTH_TYPE", - "CONTENT_LENGTH", - "CONTENT_TYPE", - "DATE_GMT", - "DATE_LOCAL", - "DOCUMENT_NAME", - "DOCUMENT_PATH_INFO", - "DOCUMENT_ROOT", - "DOCUMENT_URI", - "FILEPATH_INFO", - "GATEWAY_INTERFACE", - "LAST_MODIFIED", - "PATH_INFO", - "PATH_TRANSLATED", - "QUERY_STRING", - "QUERY_STRING_UNESCAPED", - "REMOTE_ADDR", - "REMOTE_HOST", - "REMOTE_IDENT", - "REMOTE_PORT", - "REMOTE_USER", - "REDIRECT_QUERY_STRING", - "REDIRECT_STATUS", - "REDIRECT_URL", - "REQUEST_METHOD", - "REQUEST_URI", - "SCRIPT_FILENAME", - "SCRIPT_NAME", - "SCRIPT_URI", - "SCRIPT_URL", - "SERVER_ADMIN", - "SERVER_NAME", - "SERVER_PORT", - "SERVER_PROTOCOL", - "SERVER_SOFTWARE", - "UNIQUE_ID", - "USER_NAME", - "TZ", - NULL -}; - - -static void err_output(const char *fmt, va_list ap) -{ -#ifdef LOG_EXEC - time_t timevar; - struct tm *lt; - - if (!log) { - if ((log = fopen(LOG_EXEC, "a")) == NULL) { - fprintf(stderr, "failed to open log file\n"); - perror("fopen"); - exit(1); - } - } - - time(&timevar); - lt = localtime(&timevar); - - fprintf(log, "[%d-%.2d-%.2d %.2d:%.2d:%.2d]: ", - lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday, - lt->tm_hour, lt->tm_min, lt->tm_sec); - - vfprintf(log, fmt, ap); - - fflush(log); -#endif /* LOG_EXEC */ - return; -} - -static void log_err(const char *fmt,...) -{ -#ifdef LOG_EXEC - va_list ap; - - va_start(ap, fmt); - err_output(fmt, ap); - va_end(ap); -#endif /* LOG_EXEC */ - return; -} - -static void clean_env(void) -{ - char pathbuf[512]; - char **cleanenv; - char **ep; - int cidx = 0; - int idx; - - - if ((cleanenv = (char **) calloc(AP_ENVBUF, sizeof(char *))) == NULL) { - log_err("failed to malloc memory for environment\n"); - exit(120); - } - - sprintf(pathbuf, "PATH=%s", SAFE_PATH); - cleanenv[cidx] = strdup(pathbuf); - cidx++; - - for (ep = environ; *ep && cidx < AP_ENVBUF-1; ep++) { - if (!strncmp(*ep, "HTTP_", 5)) { - cleanenv[cidx] = *ep; - cidx++; - } - else { - for (idx = 0; safe_env_lst[idx]; idx++) { - if (!strncmp(*ep, safe_env_lst[idx], - strlen(safe_env_lst[idx]))) { - cleanenv[cidx] = *ep; - cidx++; - break; - } - } - } - } - - cleanenv[cidx] = NULL; - - environ = cleanenv; -} - -int main(int argc, char *argv[]) -{ - int userdir = 0; /* ~userdir flag */ - uid_t uid; /* user information */ - gid_t gid; /* target group placeholder */ - char *target_uname; /* target user name */ - char *target_gname; /* target group name */ - char *target_homedir; /* target home directory */ - char *actual_uname; /* actual user name */ - char *actual_gname; /* actual group name */ - char *prog; /* name of this program */ - char *cmd; /* command to be executed */ - char cwd[AP_MAXPATH]; /* current working directory */ - char dwd[AP_MAXPATH]; /* docroot working directory */ - struct passwd *pw; /* password entry holder */ - struct group *gr; /* group entry holder */ - struct stat dir_info; /* directory info holder */ - struct stat prg_info; /* program info holder */ - - /* - * If there are a proper number of arguments, set - * all of them to variables. Otherwise, error out. - */ - prog = argv[0]; - if (argc < 4) { - log_err("too few arguments\n"); - exit(101); - } - target_uname = argv[1]; - target_gname = argv[2]; - cmd = argv[3]; - - /* - * Check existence/validity of the UID of the user - * running this program. Error out if invalid. - */ - uid = getuid(); - if ((pw = getpwuid(uid)) == NULL) { - log_err("invalid uid: (%ld)\n", uid); - exit(102); - } - - /* - * Check to see if the user running this program - * is the user allowed to do so as defined in - * suexec.h. If not the allowed user, error out. - */ -#ifdef _OSD_POSIX - /* User name comparisons are case insensitive on BS2000/OSD */ - if (strcasecmp(HTTPD_USER, pw->pw_name)) { - log_err("user mismatch (%s instead of %s)\n", pw->pw_name, HTTPD_USER); - exit(103); - } -#else /*_OSD_POSIX*/ - if (strcmp(HTTPD_USER, pw->pw_name)) { - log_err("user mismatch (%s instead of %s)\n", pw->pw_name, HTTPD_USER); - exit(103); - } -#endif /*_OSD_POSIX*/ - - /* - * Check for a leading '/' (absolute path) in the command to be executed, - * or attempts to back up out of the current directory, - * to protect against attacks. If any are - * found, error out. Naughty naughty crackers. - */ - if ((cmd[0] == '/') || (!strncmp(cmd, "../", 3)) - || (strstr(cmd, "/../") != NULL)) { - log_err("invalid command (%s)\n", cmd); - exit(104); - } - - /* - * Check to see if this is a ~userdir request. If - * so, set the flag, and remove the '~' from the - * target username. - */ - if (!strncmp("~", target_uname, 1)) { - target_uname++; - userdir = 1; - } - - /* - * Error out if the target username is invalid. - */ - if ((pw = getpwnam(target_uname)) == NULL) { - log_err("invalid target user name: (%s)\n", target_uname); - exit(105); - } - - /* - * Error out if the target group name is invalid. - */ - if (strspn(target_gname, "1234567890") != strlen(target_gname)) { - if ((gr = getgrnam(target_gname)) == NULL) { - log_err("invalid target group name: (%s)\n", target_gname); - exit(106); - } - gid = gr->gr_gid; - actual_gname = strdup(gr->gr_name); - } - else { - gid = atoi(target_gname); - actual_gname = strdup(target_gname); - } - -#ifdef _OSD_POSIX - /* - * Initialize BS2000 user environment - */ - { - pid_t pid; - int status; - - switch (pid = ufork(target_uname)) - { - case -1: /* Error */ - log_err("failed to setup bs2000 environment for user %s: %s\n", - target_uname, strerror(errno)); - exit(150); - case 0: /* Child */ - break; - default: /* Father */ - while (pid != waitpid(pid, &status, 0)) - ; - /* @@@ FIXME: should we deal with STOP signals as well? */ - if (WIFSIGNALED(status)) - kill (getpid(), WTERMSIG(status)); - exit(WEXITSTATUS(status)); - } - } -#endif /*_OSD_POSIX*/ - - /* - * Save these for later since initgroups will hose the struct - */ - uid = pw->pw_uid; - actual_uname = strdup(pw->pw_name); - target_homedir = strdup(pw->pw_dir); - - /* - * Log the transaction here to be sure we have an open log - * before we setuid(). - */ - log_err("uid: (%s/%s) gid: (%s/%s) cmd: %s\n", - target_uname, actual_uname, - target_gname, actual_gname, - cmd); - - /* - * Error out if attempt is made to execute as root or as - * a UID less than UID_MIN. Tsk tsk. - */ - if ((uid == 0) || (uid < UID_MIN)) { - log_err("cannot run as forbidden uid (%d/%s)\n", uid, cmd); - exit(107); - } - - /* - * Error out if attempt is made to execute as root group - * or as a GID less than GID_MIN. Tsk tsk. - */ - if ((gid == 0) || (gid < GID_MIN)) { - log_err("cannot run as forbidden gid (%d/%s)\n", gid, cmd); - exit(108); - } - - /* - * Change UID/GID here so that the following tests work over NFS. - * - * Initialize the group access list for the target user, - * and setgid() to the target group. If unsuccessful, error out. - */ - if (((setgid(gid)) != 0) || (initgroups(actual_uname, gid) != 0)) { - log_err("failed to setgid (%ld: %s)\n", gid, cmd); - exit(109); - } - - /* - * setuid() to the target user. Error out on fail. - */ - if ((setuid(uid)) != 0) { - log_err("failed to setuid (%ld: %s)\n", uid, cmd); - exit(110); - } - - /* - * Get the current working directory, as well as the proper - * document root (dependant upon whether or not it is a - * ~userdir request). Error out if we cannot get either one, - * or if the current working directory is not in the docroot. - * Use chdir()s and getcwd()s to avoid problems with symlinked - * directories. Yuck. - */ - if (getcwd(cwd, AP_MAXPATH) == NULL) { - log_err("cannot get current working directory\n"); - exit(111); - } - - if (userdir) { - if (((chdir(target_homedir)) != 0) || - ((chdir(USERDIR_SUFFIX)) != 0) || - ((getcwd(dwd, AP_MAXPATH)) == NULL) || - ((chdir(cwd)) != 0)) { - log_err("cannot get docroot information (%s)\n", target_homedir); - exit(112); - } - } - else { - if (((chdir(DOC_ROOT)) != 0) || - ((getcwd(dwd, AP_MAXPATH)) == NULL) || - ((chdir(cwd)) != 0)) { - log_err("cannot get docroot information (%s)\n", DOC_ROOT); - exit(113); - } - } - - if ((strncmp(cwd, dwd, strlen(dwd))) != 0) { - log_err("command not in docroot (%s/%s)\n", cwd, cmd); - exit(114); - } - - /* - * Stat the cwd and verify it is a directory, or error out. - */ - if (((lstat(cwd, &dir_info)) != 0) || !(S_ISDIR(dir_info.st_mode))) { - log_err("cannot stat directory: (%s)\n", cwd); - exit(115); - } - - /* - * Error out if cwd is writable by others. - */ - if ((dir_info.st_mode & S_IWOTH) || (dir_info.st_mode & S_IWGRP)) { - log_err("directory is writable by others: (%s)\n", cwd); - exit(116); - } - - /* - * Error out if we cannot stat the program. - */ - if (((lstat(cmd, &prg_info)) != 0) || (S_ISLNK(prg_info.st_mode))) { - log_err("cannot stat program: (%s)\n", cmd); - exit(117); - } - - /* - * Error out if the program is writable by others. - */ - if ((prg_info.st_mode & S_IWOTH) || (prg_info.st_mode & S_IWGRP)) { - log_err("file is writable by others: (%s/%s)\n", cwd, cmd); - exit(118); - } - - /* - * Error out if the file is setuid or setgid. - */ - if ((prg_info.st_mode & S_ISUID) || (prg_info.st_mode & S_ISGID)) { - log_err("file is either setuid or setgid: (%s/%s)\n", cwd, cmd); - exit(119); - } - - /* - * Error out if the target name/group is different from - * the name/group of the cwd or the program. - */ - if ((uid != dir_info.st_uid) || - (gid != dir_info.st_gid) || - (uid != prg_info.st_uid) || - (gid != prg_info.st_gid)) { - log_err("target uid/gid (%ld/%ld) mismatch " - "with directory (%ld/%ld) or program (%ld/%ld)\n", - uid, gid, - dir_info.st_uid, dir_info.st_gid, - prg_info.st_uid, prg_info.st_gid); - exit(120); - } - /* - * Error out if the program is not executable for the user. - * Otherwise, she won't find any error in the logs except for - * "[error] Premature end of script headers: ..." - */ - if (!(prg_info.st_mode & S_IXUSR)) { - log_err("file has no execute permission: (%s/%s)\n", cwd, cmd); - exit(121); - } - - clean_env(); - - /* - * Be sure to close the log file so the CGI can't - * mess with it. If the exec fails, it will be reopened - * automatically when log_err is called. Note that the log - * might not actually be open if LOG_EXEC isn't defined. - * However, the "log" cell isn't ifdef'd so let's be defensive - * and assume someone might have done something with it - * outside an ifdef'd LOG_EXEC block. - */ - if (log != NULL) { - fclose(log); - log = NULL; - } - - /* - * Execute the command, replacing our image with its own. - */ -#ifdef NEED_HASHBANG_EMUL - /* We need the #! emulation when we want to execute scripts */ - { - extern char **environ; - - ap_execve(cmd, &argv[3], environ); - } -#else /*NEED_HASHBANG_EMUL*/ - execv(cmd, &argv[3]); -#endif /*NEED_HASHBANG_EMUL*/ - - /* - * (I can't help myself...sorry.) - * - * Uh oh. Still here. Where's the kaboom? There was supposed to be an - * EARTH-shattering kaboom! - * - * Oh well, log the failure and error out. - */ - log_err("(%d)%s: exec failed (%s)\n", errno, strerror(errno), cmd); - exit(255); -} diff --git a/test/test.dsw b/test/test.dsw deleted file mode 100644 index 7ecd85f8e..000000000 --- a/test/test.dsw +++ /dev/null @@ -1,155 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "ab_apr"=".\ab_apr.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "client"=".\client.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "htdigest"=".\htdigest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "server"=".\server.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testarg"=".\testarg.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testfile"=".\testfile.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testproc"=".\testproc.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testsig"=".\testsig.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testsock"=".\testsock.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name client - End Project Dependency - Begin Project Dependency - Project_Dep_Name server - End Project Dependency -}}} - -############################################################################### - -Project: "testthread"=".\testthread.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "timetest"=".\timetest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/test/testarg.dsp b/test/testarg.dsp deleted file mode 100644 index c804b1f05..000000000 --- a/test/testarg.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testarg" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testarg - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testarg.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testarg.mak" CFG="testarg - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testarg - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "testarg - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testarg - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testarg - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "testarg_" -# PROP BASE Intermediate_Dir "testarg_" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "testarg" -# PROP Intermediate_Dir "testarg" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testarg - Win32 Release" -# Name "testarg - Win32 Debug" -# Begin Source File - -SOURCE=.\testargs.c -# End Source File -# End Target -# End Project diff --git a/test/testargs.c b/test/testargs.c deleted file mode 100644 index 5b03876bd..000000000 --- a/test/testargs.c +++ /dev/null @@ -1,95 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#ifdef BEOS -#include -#endif - -API_VAR_IMPORT char *optarg; /* argument associated with option */ - -int main(int argc, char * const argv[]) -{ - ap_context_t *context; - ap_int32_t data; - - ap_create_context(NULL, NULL, &context); - - while (ap_getopt(context, argc, argv, "abc:d::", &data) == APR_SUCCESS) { - switch(data) { - case 'a': - case 'b': - printf("option %c\n", data); - break; - case 'c': - printf("option %c with %s\n", data, optarg); - break; - case 'd': - printf("option %c", data); - if (optarg) { - printf(" with %s\n", optarg); - } - else { - printf("\n"); - } - break; - } - } - return 1; -} diff --git a/test/testfile.c b/test/testfile.c deleted file mode 100644 index 8d3cfb0c4..000000000 --- a/test/testfile.c +++ /dev/null @@ -1,324 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#ifdef BEOS -#include -#endif - -int test_filedel(ap_context_t *); -int testdirs(ap_context_t *); - -int main() -{ - ap_context_t *context; - ap_file_t *thefile = NULL; - ap_status_t status = 0; - ap_int32_t flag = APR_READ | APR_WRITE | APR_CREATE; - ap_uint64_t rv = 0; - ap_ssize_t nbytes = 0; - ap_off_t zer = 0; - char *buf; - char *str; - char *filename = "test.fil"; - if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { - fprintf(stderr, "Couldn't allocate context."); - exit(-1); - } - - fprintf(stdout, "Testing file functions.\n"); - - fprintf(stdout, "\tOpening file......."); - if (ap_open(context, filename, flag, APR_UREAD | APR_UWRITE | APR_GREAD, &thefile) != APR_SUCCESS) { - perror("Didn't open file"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tChecking file......."); - if (thefile == NULL) { - fprintf(stderr, "Bad file des\n"); - exit(-1); - } - ap_get_filename(thefile, &str); - if (strcmp(str, filename) != 0) { - fprintf(stderr, "wrong filename\n"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tWriting to file......."); - - nbytes = (ap_ssize_t)strlen("this is a test"); - if (ap_write(thefile, "this is a test", &nbytes) != APR_SUCCESS) { - perror("something's wrong"); - exit(-1); - } - if (nbytes != (ap_ssize_t)strlen("this is a test")) { - fprintf(stderr, "didn't write properly.\n"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tMoving to start of file......."); - zer = 0; - if (ap_seek(thefile, SEEK_SET, &zer) != 0) { - perror("couldn't seek to beginning of file."); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tReading from the file......."); - nbytes = (ap_ssize_t)strlen("this is a test"); - buf = (char *)ap_palloc(context, nbytes + 1); - if (ap_read(thefile, buf, &nbytes) != APR_SUCCESS) { - perror("something's wrong"); - exit(-1); - } - if (nbytes != (ap_ssize_t)strlen("this is a test")) { - fprintf(stderr, "didn't read properly.\n"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tClosing File......."); - status = ap_close(thefile); - if (status != APR_SUCCESS) { - fprintf(stderr, "Couldn't close the file\n"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tDeleting file......."); - status = ap_remove_file(context, filename); - if (status != APR_SUCCESS) { - fprintf(stderr, "Couldn't delete the file\n"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tMaking sure it's gone......."); - status = ap_open(context, filename, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, &thefile); - if (status == APR_SUCCESS) { - fprintf(stderr, "I could open the file for some reason?\n"); - exit(-1); - } - else { - fprintf(stdout, "OK\n"); - } - - testdirs(context); - test_filedel(context); - - return 1; -} - -int test_filedel(ap_context_t *context) -{ - ap_file_t *thefile; - ap_int32_t flag = APR_READ | APR_WRITE | APR_CREATE; - ap_status_t stat; - - stat = ap_open(context, "testdel", flag, APR_UREAD | APR_UWRITE | APR_GREAD, &thefile); - if (stat != APR_SUCCESS) { - return stat; - } - - if ((stat = ap_close(thefile)) != APR_SUCCESS) { - return stat; - } - - if ((stat = ap_remove_file(context, "testdel")) != APR_SUCCESS) { - return stat; - } - - stat = ap_open(context, "testdel", APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, &thefile); - if (stat == APR_SUCCESS) { - return stat; - } - - return APR_SUCCESS; -} - -int testdirs(ap_context_t *context) -{ - ap_dir_t *temp; - ap_file_t *file; - ap_ssize_t bytes; - ap_filetype_e type; - char *fname; - - fprintf(stdout, "Testing Directory functions.\n"); - - fprintf(stdout, "\tMakeing Directory......."); - if (ap_make_dir(context, "testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE | APR_GREAD | APR_GWRITE | APR_GEXECUTE | APR_WREAD | APR_WWRITE | APR_WEXECUTE) != APR_SUCCESS) { - fprintf(stderr, "Could not create directory\n"); - return -1; - } - else { - fprintf(stdout, "OK\n"); - } - - if (ap_open(context, "testdir/testfile", APR_READ | APR_WRITE | APR_CREATE, APR_UREAD | APR_UWRITE | APR_UEXECUTE, &file) != APR_SUCCESS) {; - return -1; - } - - bytes = strlen("Another test!!!"); - ap_write(file, "Another test!!", &bytes); - ap_close(file); - - fprintf(stdout, "\tOpening Directory......."); - if (ap_opendir(context, "testdir", &temp) != APR_SUCCESS) { - fprintf(stderr, "Could not open directory\n"); - return -1; - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tReading Directory......."); - if ((ap_readdir(temp)) != APR_SUCCESS) { - fprintf(stderr, "Could not read directory\n"); - return -1; - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tGetting Information about the file.......\n"); - fprintf(stdout, "\t\tFile name......."); - do { - /* Because I want the file I created, I am skipping the "." and ".." - * files that are here. - */ - if (ap_readdir(temp) != APR_SUCCESS) { - fprintf(stderr, "Error reading directory testdir"); - return -1; - } - ap_get_dir_filename(temp, &fname); - } while (fname[0] == '.'); - if (strcmp(fname, "testfile")) { - fprintf(stderr, "Got wrong file name %s\n", fname); - return -1; - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\t\tFile type......."); - ap_dir_entry_ftype(temp, &type); - if (type != APR_REG) { - fprintf(stderr, "Got wrong file type\n"); - return -1; - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\t\tFile size......."); - ap_dir_entry_size(temp, &bytes); - if (bytes != (ap_ssize_t)strlen("Another test!!!")) { - fprintf(stderr, "Got wrong file size %d\n", bytes); - return -1; - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tRewinding directory......."); - ap_rewinddir(temp); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tClosing Directory......."); - if (ap_closedir(temp) != APR_SUCCESS) { - fprintf(stderr, "Could not close directory\n"); - return -1; - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tRemoving file from directory......."); - if (ap_remove_file(context, "testdir/testfile") != APR_SUCCESS) { - fprintf(stderr, "Could not remove file\n"); - return -1; - } - else { - fprintf(stdout, "OK\n"); - } - - fprintf(stdout, "\tRemoving Directory......."); - if (ap_remove_dir(context, "testdir") != APR_SUCCESS) { - fprintf(stderr, "Could not remove directory\n"); - return -1; - } - else { - fprintf(stdout, "OK\n"); - } - - return 1; -} - diff --git a/test/testfile.dsp b/test/testfile.dsp deleted file mode 100644 index 149b3fff5..000000000 --- a/test/testfile.dsp +++ /dev/null @@ -1,91 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testfile" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testfile - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testfile.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testfile.mak" CFG="testfile - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testfile - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "testfile - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testfile - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\network_io\win32\Debug\network_io.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 - -!ELSEIF "$(CFG)" == "testfile - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\locks\win32\debug\locks.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testfile - Win32 Release" -# Name "testfile - Win32 Debug" -# Begin Source File - -SOURCE=.\testfile.c -# End Source File -# End Target -# End Project diff --git a/test/testproc.c b/test/testproc.c deleted file mode 100644 index 4a38c95ba..000000000 --- a/test/testproc.c +++ /dev/null @@ -1,163 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "errno.h" -#ifndef WIN32 -#include -#endif -#include -#include -#include - -int test_filedel(void); -int testdirs(void); - -int main(int argc, char *argv[]) -{ - ap_context_t *context; - ap_proc_t *newproc; - ap_procattr_t *attr; - ap_file_t *testfile; - ap_ssize_t length; - char *buf; - char *args[3]; - char *teststr; - - ap_create_context(NULL, NULL, &context); - - teststr = ap_pstrdup(context, "Whooo Hoooo\0"); - - if (argc > 1) { - fprintf(stdout, "%s", teststr); - exit(1); - } - - fprintf(stdout, "Creating directory for later use......."); - if (ap_make_dir(context, "proctest", APR_UREAD | APR_UWRITE | APR_UEXECUTE) != APR_SUCCESS) { - fprintf(stderr, "Could not create dir\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "Creating procattr......."); - if (ap_createprocattr_init(context, &attr) != APR_SUCCESS) { - fprintf(stderr, "Could not create attr\n"); - exit(-1);; - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Setting attr pipes, all three......."); - if (ap_setprocattr_io(attr, 1, 1, 0) != APR_SUCCESS) { - fprintf(stderr, "Could not set pipes attr\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Setting attr dir......."); - if (ap_setprocattr_dir(attr, "proctest") != APR_SUCCESS) { - fprintf(stderr, "Could not set directory attr\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Setting attr cmd type......."); - if (ap_setprocattr_cmdtype(attr, APR_PROGRAM) != APR_SUCCESS) { - fprintf(stderr, "Could not set cmd type attr\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - args[0] = ap_pstrdup(context, "testproc"); - args[1] = ap_pstrdup(context, "-X"); - args[2] = NULL; - - fprintf(stdout, "Creating a new process......."); - if (ap_create_process(context, "../testproc", args, NULL, attr, &newproc) != APR_SUCCESS) { - fprintf(stderr, "Could not create the new process\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Grabbing child's stdout......."); - if (ap_get_childout(newproc, &testfile) != APR_SUCCESS) { - fprintf(stderr, "Could not get child's stdout\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - length = 256; - fprintf(stdout, "Checking the data read from pipe to child......."); - buf = ap_pcalloc(context, length); - if (ap_read(testfile, buf, &length) == APR_SUCCESS) { - if (!strcmp(buf, teststr)) - fprintf(stdout,"OK\n"); - else fprintf(stderr, "Uh-Oh\n"); - } - else fprintf(stderr, "Read failed.\n"); - - fprintf(stdout, "Removing directory......."); - if (ap_remove_dir(context, "proctest") != APR_SUCCESS) { - fprintf(stderr, "Could not remove directory.\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - return(1); -} - diff --git a/test/testproc.dsp b/test/testproc.dsp deleted file mode 100644 index b1f12ce43..000000000 --- a/test/testproc.dsp +++ /dev/null @@ -1,91 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testproc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testproc - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testproc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testproc.mak" CFG="testproc - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testproc - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "testproc - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testproc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\network_io\win32\Debug\network_io.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testproc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "testproc" -# PROP BASE Intermediate_Dir "testproc" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "testproc" -# PROP Intermediate_Dir "testproc" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\locks\win32\debug\locks.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testproc - Win32 Release" -# Name "testproc - Win32 Debug" -# Begin Source File - -SOURCE=.\testproc.c -# End Source File -# End Target -# End Project diff --git a/test/testproc.rbb b/test/testproc.rbb deleted file mode 100644 index 395a4854c..000000000 --- a/test/testproc.rbb +++ /dev/null @@ -1,148 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "errno.h" -#ifndef WIN32 -#include -#endif -#include -#include -#include - -int test_filedel(void); -int testdirs(void); - -int main(int argc, char *argv[]) -{ - ap_context_t *context; - ap_proc_t *newproc; - ap_procattr_t *attr; - ap_file_t *testfile; - ap_ssize_t length; - char *buf; - char *args[3]; - char *teststr; - - ap_create_context(NULL, NULL, &context); - - teststr = ap_pstrdup(context, "Whooo Hoooo\n"); - - if (argc > 1) { - fprintf(stdout, "%s", teststr); - exit(1); - } - fprintf(stdout, "Creating procattr......."); - if (ap_createprocattr_init(context, &attr) != APR_SUCCESS) { - fprintf(stderr, "Could not create attr\n"); - exit(-1);; - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Setting attr pipes, all three......."); - if (ap_setprocattr_io(attr, 1, 1, 0) != APR_SUCCESS) { - fprintf(stderr, "Could not set pipes attr\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Setting attr dir......."); - if (ap_setprocattr_dir(attr, "proctest") != APR_SUCCESS) { - fprintf(stderr, "Could not set directory attr\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Setting attr cmd type......."); - if (ap_setprocattr_cmdtype(attr, APR_PROGRAM) != APR_SUCCESS) { - fprintf(stderr, "Could not set cmd type attr\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - args[0] = ap_pstrdup(context, "testproc"); - args[1] = ap_pstrdup(context, "-X"); - args[2] = NULL; - - fprintf(stdout, "Creating a new process......."); - if (ap_create_process(context, "../testproc", args, NULL, attr, &newproc) != APR_SUCCESS) { - fprintf(stderr, "Could not create the new process\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - fprintf(stdout, "Grabbing child's stdout......."); - if (ap_get_childout(newproc, &testfile) != APR_SUCCESS) { - fprintf(stderr, "Could not get child's stdout\n"); - exit(-1); - } - fprintf(stdout, "OK.\n"); - - length = 256; - fprintf(stdout, "Checking the data read from pipe to child......."); - buf = ap_pcalloc(context, length); - if (ap_read(testfile, buf, &length) == APR_SUCCESS) { - if (!strcmp(buf, teststr)) - fprintf(stdout,"OK\n"); - else fprintf(stderr, "Uh-Oh\n"); - } - else fprintf(stderr, "Read failed.\n"); - - return(1); -} - diff --git a/test/testsig.c b/test/testsig.c deleted file mode 100644 index d17aeb9f0..000000000 --- a/test/testsig.c +++ /dev/null @@ -1,127 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "errno.h" -#ifndef WIN32 -#include -#endif -#include -#include -#include - -int time_to_die = 0; - -void hup_handler(int sig) -{ - fprintf(stdout, "I got the signal\n"); - time_to_die++; -} - -int main(int argc, char *argv[]) -{ - ap_context_t *context; - ap_proc_t *newproc; - ap_procattr_t *attr; - char *args[3]; - - ap_initialize(); - - ap_create_context(NULL, NULL, &context); - - if (argc > 1) { - - ap_setup_signal(context, APR_SIGHUP, hup_handler); - - while(time_to_die == 0) { - sleep(1); - } - return(1); - } - - fprintf(stdout, "Creating new signal......."); - if (ap_create_signal(context, APR_SIGHUP) != APR_SUCCESS) { - fprintf(stderr, "Could not create attr\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - if (ap_createprocattr_init(context, &attr) != APR_SUCCESS) { - fprintf(stderr, "Could not create attr\n"); - exit(-1);; - } - ap_setprocattr_detach(attr, FALSE); - - args[0] = ap_pstrdup(context, "testsig"); - args[1] = ap_pstrdup(context, "-X"); - args[2] = NULL; - - if (ap_create_process(context, "./testsig", args, NULL, attr, &newproc) != APR_SUCCESS) { - fprintf(stderr, "Could not create the new process\n"); - exit(-1); - } - - fprintf(stdout, "Sending the signal......."); - fflush(stdout); - ap_send_signal(context, APR_SIGHUP); - - ap_wait_proc(newproc, APR_WAIT); - - return(1); -} - diff --git a/test/testsig.dsp b/test/testsig.dsp deleted file mode 100644 index c88c6be96..000000000 --- a/test/testsig.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testsig" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testsig - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testsig.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testsig.mak" CFG="testsig - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testsig - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "testsig - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testsig - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testsig - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "testsig_" -# PROP BASE Intermediate_Dir "testsig_" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "testsig" -# PROP Intermediate_Dir "testsig" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testsig - Win32 Release" -# Name "testsig - Win32 Debug" -# Begin Source File - -SOURCE=.\testsig.c -# End Source File -# End Target -# End Project diff --git a/test/testsock.c b/test/testsock.c deleted file mode 100644 index b8f5984ba..000000000 --- a/test/testsock.c +++ /dev/null @@ -1,126 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include -#include -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" - -#define STRLEN 15 - -int main(int argc, char *argv[]) -{ - ap_context_t *context; - - ap_procattr_t *attr1 = NULL; - ap_procattr_t *attr2 = NULL; - ap_proc_t *proc1 = NULL; - ap_proc_t *proc2 = NULL; - ap_status_t s1; - ap_status_t s2; - char *args[2]; - - fprintf(stdout, "Creating context......."); - if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { - fprintf(stderr, "Could not create context\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "This test relies on the process test working. Please\n"); - fprintf(stdout, "run that test first, and only run this test when it\n"); - fprintf(stdout, "completes successfully. Alternitevly, you could run\n"); - fprintf(stdout, "server and client by yourself.\n"); - - fprintf(stdout, "Creating children to run network tests.......\n"); - s1 = ap_createprocattr_init(context, &attr1); - s2 = ap_createprocattr_init(context, &attr2); - - if (s1 != APR_SUCCESS || s2 != APR_SUCCESS) { - fprintf(stderr, "Problem creating proc attrs\n"); - exit(-1); - } - - args[0] = ap_pstrdup(context, "server"); - args[1] = NULL; - s1 = ap_create_process(context, "./server", args, NULL, attr1, &proc1); - - args[0] = ap_pstrdup(context, "client"); - s2 = ap_create_process(context, "./client", args, NULL, attr2, &proc2); - - if (s1 != APR_SUCCESS || s2 != APR_SUCCESS) { - fprintf(stderr, "Problem spawning new process\n"); - exit(-1); - } - - while ((s1 = ap_wait_proc(proc1, APR_NOWAIT)) != APR_CHILD_DONE || - (s2 = ap_wait_proc(proc2, APR_NOWAIT)) != APR_CHILD_DONE) { - continue; - } - - if (s1 == APR_SUCCESS) { - ap_kill(proc2, SIGTERM); - ap_wait_proc(proc2, APR_WAIT); - } - else { - ap_kill(proc1, SIGTERM); - ap_wait_proc(proc1, APR_WAIT); - } - fprintf(stdout, "Network test completed.\n"); - - return 1; -} diff --git a/test/testsock.dsp b/test/testsock.dsp deleted file mode 100644 index 5c7e1a87d..000000000 --- a/test/testsock.dsp +++ /dev/null @@ -1,91 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testsock" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testsock - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testsock.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testsock.mak" CFG="testsock - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testsock - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "testsock - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testsock - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\network_io\win32\Debug\network_io.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testsock - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "testsock" -# PROP BASE Intermediate_Dir "testsock" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "testsock" -# PROP Intermediate_Dir "testsock" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\locks\win32\debug\locks.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testsock - Win32 Release" -# Name "testsock - Win32 Debug" -# Begin Source File - -SOURCE=.\testsock.c -# End Source File -# End Target -# End Project diff --git a/test/testthread.c b/test/testthread.c deleted file mode 100644 index ae7a93904..000000000 --- a/test/testthread.c +++ /dev/null @@ -1,174 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include "apr_thread_proc.h" -#include "apr_lock.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "errno.h" -#include -#ifdef BEOS -#include -#endif - - -void * API_THREAD_FUNC thread_func1(void *data); -void * API_THREAD_FUNC thread_func2(void *data); -void * API_THREAD_FUNC thread_func3(void *data); -void * API_THREAD_FUNC thread_func4(void *data); - - -ap_lock_t *thread_lock; -ap_context_t *context; -int x = 0; - -void * API_THREAD_FUNC thread_func1(void *data) -{ - int i; - for (i = 0; i < 10000; i++) { - ap_lock(thread_lock); - x++; - ap_unlock(thread_lock); - } - return NULL; -} - -void * API_THREAD_FUNC thread_func2(void *data) -{ - int i; - for (i = 0; i < 10000; i++) { - ap_lock(thread_lock); - x++; - ap_unlock(thread_lock); - } - return NULL; -} - -void * API_THREAD_FUNC thread_func3(void *data) -{ - int i; - for (i = 0; i < 10000; i++) { - ap_lock(thread_lock); - x++; - ap_unlock(thread_lock); - } - return NULL; -} - -void * API_THREAD_FUNC thread_func4(void *data) -{ - int i; - for (i = 0; i < 10000; i++) { - ap_lock(thread_lock); - x++; - ap_unlock(thread_lock); - } - return NULL; -} - -int main() -{ - ap_thread_t *t1; - ap_thread_t *t2; - ap_thread_t *t3; - ap_thread_t *t4; - ap_status_t s1; - ap_status_t s2; - ap_status_t s3; - ap_status_t s4; - - fprintf(stdout, "Initializing the context......."); - if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { - fprintf(stderr, "could not initialize\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "Initializing the lock......."); - s1 = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", &thread_lock); - if (s1 != APR_SUCCESS) { - fprintf(stderr, "Could not create lock\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "Starting all the threads......."); - s1 = ap_create_thread(context, NULL, thread_func1, NULL, &t1); - s2 = ap_create_thread(context, NULL, thread_func2, NULL, &t2); - s3 = ap_create_thread(context, NULL, thread_func3, NULL, &t3); - s4 = ap_create_thread(context, NULL, thread_func4, NULL, &t4); - if (s1 != APR_SUCCESS || s2 != APR_SUCCESS || - s3 != APR_SUCCESS || s4 != APR_SUCCESS) { - fprintf(stderr, "Error starting thread\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "Waiting for threads to exit......."); - ap_thread_join(t1, &s1); - ap_thread_join(t2, &s2); - ap_thread_join(t3, &s3); - ap_thread_join(t4, &s4); - fprintf (stdout, "OK\n"); - - fprintf(stdout, "Checking if locks worked......."); - if (x != 40000) { - fprintf(stderr, "The locks didn't work???? %d\n", x); - } - else { - fprintf(stdout, "Everything is working!\n"); - } - - return 1; -} diff --git a/test/testthread.dsp b/test/testthread.dsp deleted file mode 100644 index 3a094074e..000000000 --- a/test/testthread.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testthread" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testthread - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testthread.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testthread.mak" CFG="testthread - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testthread - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "testthread - Win32 Debug" (based on\ - "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testthread - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testthread - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testthread - Win32 Release" -# Name "testthread - Win32 Debug" -# Begin Source File - -SOURCE=.\testthread.c -# End Source File -# End Target -# End Project diff --git a/test/testtime.c b/test/testtime.c deleted file mode 100644 index dbc3d330d..000000000 --- a/test/testtime.c +++ /dev/null @@ -1,178 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include "apr_time.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "errno.h" -#include -#ifdef BEOS -#include -#endif - -int main() -{ - ap_context_t *context; - ap_time_t *time; - ap_time_t *time2; - ap_int32_t rv = 0; - ap_int64_t t1, t2; - - fprintf(stdout, "Creating context......."); - if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { - fprintf(stderr, "could not create context\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "Testing Time functions.\n"); - - fprintf(stdout, "\tMaking new time variable......."); - if (ap_make_time(context, &time) != APR_SUCCESS) { - fprintf(stderr, "Couldn't allocate memory\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting current time......."); - if (ap_current_time(time) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the time\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tExploding Current time......."); - if (ap_explode_time(time, APR_UTCTIME) != APR_SUCCESS) { - fprintf(stderr, "Couldn't explode the time\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - ap_make_time(context, &time2); - fprintf(stdout, "\tGetting the number of seconds......."); - if (ap_get_sec(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the seconds\n"); - exit(-1); - } - ap_set_sec(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting the number of minutes......."); - if (ap_get_min(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the minutes\n"); - exit(-1); - } - ap_set_min(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting the number of hours......."); - if (ap_get_hour(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the hours\n"); - exit(-1); - } - ap_set_hour(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting the number of days......."); - if (ap_get_mday(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the days\n"); - exit(-1); - } - ap_set_mday(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting the month ......."); - if (ap_get_mon(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the month\n"); - exit(-1); - } - ap_set_mon(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting the year......."); - if (ap_get_year(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the year\n"); - exit(-1); - } - ap_set_year(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tGetting the weekday......."); - if (ap_get_wday(time, &rv) != APR_SUCCESS) { - fprintf(stderr, "Couldn't get the week day\n"); - exit(-1); - } - ap_set_wday(time2, rv); - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tImploding the time......."); - if (ap_implode_time(time2) != APR_SUCCESS || - ap_implode_time(time) != APR_SUCCESS) { - fprintf(stderr, "Couldn't implode time\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - fprintf(stdout, "\tComparing two time values......."); - ap_get_curtime(time, &t1); - ap_get_curtime(time2, &t2); - if ((t1 == -1) || (t2 == -1) || (t1 != t2)) { - fprintf(stderr, "Values don't match\n"); - exit(-1); - } - fprintf(stdout, "OK\n"); - - return 1; -} - diff --git a/test/timetest.dsp b/test/timetest.dsp deleted file mode 100644 index 08fb1f35d..000000000 --- a/test/timetest.dsp +++ /dev/null @@ -1,91 +0,0 @@ -# Microsoft Developer Studio Project File - Name="timetest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=timetest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "timetest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "timetest.mak" CFG="timetest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "timetest - Win32 Release" (based on\ - "Win32 (x86) Console Application") -!MESSAGE "timetest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "timetest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\network_io\win32\Debug\network_io.lib ..\locks\win32\Debug\locks.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "timetest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "timetest" -# PROP BASE Intermediate_Dir "timetest" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "timetest" -# PROP Intermediate_Dir "timetest" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\locks\win32\debug\locks.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\Debug\locks.lib ..\network_io\win32\Debug\network_io.lib ..\signal\win32\Debug\signal.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"ab.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "timetest - Win32 Release" -# Name "timetest - Win32 Debug" -# Begin Source File - -SOURCE=.\testtime.c -# End Source File -# End Target -# End Project diff --git a/threadproc/beos/Makefile.in b/threadproc/beos/Makefile.in deleted file mode 100644 index 4aabf1b6d..000000000 --- a/threadproc/beos/Makefile.in +++ /dev/null @@ -1,73 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/@OSDIR@ -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../libthreadproc.a - -OBJS=proc.o \ - thread.o \ - threadcancel.o \ - threadpriv.o \ - signals.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -proc.o: proc.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../file_io/beos/fileio.h -signals.o: signals.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../file_io/beos/fileio.h -thread.o: thread.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../file_io/beos/fileio.h -threadcancel.o: threadcancel.c threadproc.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - ../../file_io/beos/fileio.h -threadpriv.o: threadpriv.c threadproc.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - ../../file_io/beos/fileio.h diff --git a/threadproc/beos/proc.c b/threadproc/beos/proc.c deleted file mode 100644 index dedf399ed..000000000 --- a/threadproc/beos/proc.c +++ /dev/null @@ -1,264 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - - -#include -#include -#include -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" - -ap_status_t ap_createprocattr_init(ap_context_t *cont, struct procattr_t **new) -{ - (*new) = (struct procattr_t *)ap_palloc(cont, - sizeof(struct procattr_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->parent_in = NULL; - (*new)->child_in = NULL; - (*new)->parent_out = NULL; - (*new)->child_out = NULL; - (*new)->parent_err = NULL; - (*new)->child_err = NULL; - (*new)->currdir = NULL; - (*new)->cmdtype = APR_PROGRAM; - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_io(struct procattr_t *attr, ap_int32_t in, - ap_int32_t out, ap_int32_t err) -{ - ap_status_t stat; - if (in) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->child_in, - &attr->parent_in)) != APR_SUCCESS) { - return stat; - } - } - if (out) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_out, - &attr->child_out)) != APR_SUCCESS) { - return stat; - } - } - if (err) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_err, - &attr->child_err)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_dir(struct procattr_t *attr, - char *dir) -{ - attr->currdir = (char *)ap_pstrdup(attr->cntxt, dir); - if (attr->currdir) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - -ap_status_t ap_setprocattr_cmdtype(struct procattr_t *attr, - ap_cmdtype_e cmd) -{ - attr->cmdtype = cmd; - return APR_SUCCESS; -} - -ap_status_t ap_fork(ap_context_t *cont, struct proc_t **proc) -{ - int pid; - - (*proc) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - - if ((pid = fork()) < 0) { - return errno; - } - else if (pid == 0) { - (*proc)->pid = pid; - (*proc)->attr = NULL; - return APR_INCHILD; - } - (*proc)->pid = pid; - (*proc)->attr = NULL; - return APR_INPARENT; -} - -ap_status_t ap_create_process(ap_context_t *cont, char *progname, - char *const args[], char **env, - struct procattr_t *attr, struct proc_t **new) -{ - int i; - char **newargs; - (*new) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - - if ((*new) == NULL){ - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - if (((*new)->pid = fork()) < 0) { - return errno; - } - else if ((*new)->pid == 0) { - /* child process */ - if (attr->child_in) { - ap_close(attr->parent_in); - dup2(attr->child_in->filedes, STDIN_FILENO); - ap_close(attr->child_in); - } - if (attr->child_out) { - ap_close(attr->parent_out); - dup2(attr->child_out->filedes, STDOUT_FILENO); - ap_close(attr->child_out); - } - if (attr->child_err) { - ap_close(attr->parent_err); - dup2(attr->child_err->filedes, STDERR_FILENO); - ap_close(attr->child_err); - } - - signal(SIGCHLD, SIG_DFL); /*not sure if this is needed or not */ - - if (attr->currdir != NULL) { - if (chdir(attr->currdir) == -1) { - exit(-1); /* We have big problems, the child should exit. */ - } - } - if (attr->cmdtype == APR_SHELLCMD) { - i = 0; - while (args[i]) { - i++; - } - newargs = (char **)ap_palloc(cont, sizeof (char *) * (i + 3)); - newargs[0] = strdup(SHELL_PATH); - newargs[1] = strdup("-c"); - i = 0; - while (args[i]) { - newargs[i + 2] = strdup(args[i]); - i++; - } - newargs[i + 3] = NULL; - execve(SHELL_PATH, newargs, env); - } - else { - execve(progname, args, env); - } - exit(-1); /* if we get here, there is a problem, so exit with an */ - /* error code. */ - } - /* Parent process */ - if (attr->child_in) { - ap_close(attr->child_in); - } - if (attr->child_out) { - ap_close(attr->child_out); - } - if (attr->child_err) { - ap_close(attr->child_err); - } - - (*new)->attr = attr; - return APR_SUCCESS; -} - -ap_status_t ap_get_childin(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_in; - return APR_SUCCESS; -} - -ap_status_t ap_get_childout(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_out; - return APR_SUCCESS; -} - -ap_status_t ap_get_childerr(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_err; - return APR_SUCCESS; -} - -ap_status_t ap_wait_proc(struct proc_t *proc, - ap_wait_how_e wait) -{ - pid_t stat; - if (!proc) - return APR_ENOPROC; - if (wait == APR_WAIT) { - if ((stat = waitpid(proc->pid, NULL, WUNTRACED)) > 0) { - return APR_CHILD_DONE; - } - else if (stat == 0) { - return APR_CHILD_NOTDONE; - } - return errno; - } - if ((stat = waitpid(proc->pid, NULL, WUNTRACED | WNOHANG)) > 0) { - return APR_CHILD_DONE; - } - else if (stat == 0) { - return APR_CHILD_NOTDONE; - } - return errno; -} diff --git a/threadproc/beos/signals.c b/threadproc/beos/signals.c deleted file mode 100644 index 014964230..000000000 --- a/threadproc/beos/signals.c +++ /dev/null @@ -1,72 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include -#include -#include - -ap_status_t ap_kill(struct proc_t *proc, int signal) -{ - if (kill(proc->pid, signal) == -1){ - return errno; - } - return APR_SUCCESS; -} - diff --git a/threadproc/beos/thread.c b/threadproc/beos/thread.c deleted file mode 100644 index e086aad50..000000000 --- a/threadproc/beos/thread.c +++ /dev/null @@ -1,162 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" - - -ap_status_t ap_create_threadattr(ap_context_t *cont, struct threadattr_t **new) -{ - ap_status_t stat; - - (*new) = (struct threadattr_t *)ap_palloc(cont, - sizeof(struct threadattr_t)); - (*new)->attr = (int32)ap_palloc(cont, - sizeof(int32)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->attr = (int32)B_NORMAL_PRIORITY; - - return APR_SUCCESS; -} - -ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on) -{ - if (on == 1){ - attr->detached = 1; - } else { - attr->detached = 0; - } - return APR_SUCCESS; -} - -ap_status_t ap_getthreadattr_detach(struct threadattr_t *attr) -{ - if (attr->detached == 1){ - return APR_DETACH; - } - return APR_NOTDETACH; -} - -ap_status_t ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, - ap_thread_start_t func, void *data, - struct thread_t **new) -{ - int32 temp; - ap_status_t stat; - - (*new) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->td = (thread_id) ap_palloc(cont, sizeof(thread_id)); - if ((*new)->td == (thread_id)NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - - /* First we create the new thread...*/ - if (attr) - temp = attr->attr; - else - temp = B_NORMAL_PRIORITY; - - stat = ap_create_context(cont, NULL, &(*new)->cntxt); - if (stat != APR_SUCCESS) { - return stat; - } - - (*new)->td = spawn_thread((thread_func)func, "apr thread", temp, data); - /* Now we try to run it...*/ - if (resume_thread((*new)->td) == B_NO_ERROR) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval) -{ - ap_destroy_pool(thd->cntxt); - exit_thread ((status_t)retval); -} - -ap_status_t ap_thread_join(ap_thread_t *thd, ap_status_t *retval) -{ - if (wait_for_thread(thd->td,(void *)&retval) == B_NO_ERROR) { - return APR_SUCCESS; - } - else { - return errno; - } -} - -ap_status_t ap_thread_detach(ap_thread_t *thd) -{ - if (suspend_thread(thd->td) == B_NO_ERROR){ - return APR_SUCCESS; - } - else { - return errno; - } -} diff --git a/threadproc/beos/threadcancel.c b/threadproc/beos/threadcancel.c deleted file mode 100644 index a3a245879..000000000 --- a/threadproc/beos/threadcancel.c +++ /dev/null @@ -1,91 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" - - -ap_status_t ap_cancel_thread(struct thread_t *thd) -{ - if (kill_thread(thd->td) == 0) { - return APR_SUCCESS; - } - else { - return errno; - } -} - - -ap_status_t ap_setcanceltype(ap_context_t *cont, ap_int32_t type) -{ -/* if (pthread_setcanceltype(type, NULL) == 0) {*/ - return APR_SUCCESS; -/* } - else { - return APR_FAILURE; - }*/ -} - -ap_status_t ap_setcancelstate(ap_context_t *cont, ap_int32_t type) -{ -/* if (pthread_setcanceltype(type, NULL) == 0) {*/ - return APR_SUCCESS; -/* } - else { - return APR_FAILURE; - }*/ -} - diff --git a/threadproc/beos/threadpriv.c b/threadproc/beos/threadpriv.c deleted file mode 100644 index 8b3b7e1cf..000000000 --- a/threadproc/beos/threadpriv.c +++ /dev/null @@ -1,189 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_errno.h" - -static struct beos_key key_table[BEOS_MAX_DATAKEYS]; -static struct beos_private_data *beos_data[BEOS_MAX_DATAKEYS]; -static sem_id lock; - -ap_status_t ap_create_thread_private(ap_context_t *cont, - void (*dest)(void *), struct threadkey_t **key) -{ - (*key) = (struct threadkey_t *)ap_palloc(cont, sizeof(struct threadkey_t)); - if ((*key) == NULL) { - return APR_ENOMEM; - } - - (*key)->cntxt = cont; - - acquire_sem(lock); - for ((*key)->key=0; (*key)->key < BEOS_MAX_DATAKEYS; (*key)->key++){ - if (key_table[(*key)->key].assigned == 0){ - key_table[(*key)->key].assigned = 1; - key_table[(*key)->key].destructor = dest; - release_sem(lock); - return APR_SUCCESS; - } - - } - release_sem(lock); - return APR_ENOMEM; -} - -ap_status_t ap_get_thread_private(struct threadkey_t *key, void **new) -{ - thread_id tid; - int i, index=0; - tid = find_thread(NULL); - for (i=0;idata){ - /* it's been used */ - if (beos_data[i]->td == tid){ - index = i; - } - } - } - if (index == 0){ - /* no storage for thread so we can't get anything... */ - return APR_ENOMEM; - } - - if ((key->key < BEOS_MAX_DATAKEYS) && (key_table)){ - acquire_sem(key_table[key->key].lock); - if (key_table[key->key].count){ - (*new) = (void*)beos_data[index]->data[key->key]; - } else { - (*new) = NULL; - } - release_sem(key_table[key->key].lock); - } else { - (*new) = NULL; - } - return APR_SUCCESS; -} - -ap_status_t ap_set_thread_private(struct threadkey_t *key, void *priv) -{ - thread_id tid; - int i,index = 0, ret; - - tid = find_thread(NULL); - for (i=0; i < BEOS_MAX_DATAKEYS; i++){ - if (beos_data[i]->data){ - if (beos_data[i]->td = tid){index = i;} - } - } - if (index==0){ - /* not yet been allocated */ - for (i=0; i< BEOS_MAX_DATAKEYS; i++){ - if (! beos_data[i]->data){ - /* we'll take this one... */ - index = i; - beos_data[i]->data = (const void **)malloc(sizeof(void *) * BEOS_MAX_DATAKEYS); - memset((void *)beos_data[i]->data, 0, sizeof(void *) * BEOS_MAX_DATAKEYS); - beos_data[i]->count = (int)malloc(sizeof(int)); - beos_data[i]->td = (thread_id)malloc(sizeof(thread_id)); - beos_data[i]->td = tid; - } - } - } - if (index == 0){ - /* we're out of luck.. */ - return APR_ENOMEM; - } - if ((key->key < BEOS_MAX_DATAKEYS) && (key_table)){ - acquire_sem(key_table[key->key].lock); - if (key_table[key->key].count){ - if (beos_data[index]->data[key->key] == NULL){ - if (priv != NULL){ - beos_data[index]->count++; - key_table[key->key].count++; - } - } else { - if (priv == NULL){ - beos_data[index]->count--; - key_table[key->key].count--; - } - } - beos_data[index]->data[key->key] = priv; - ret = 1; - } else { - ret = 0; - } - release_sem(key_table[key->key].lock); - } - if (ret) - return APR_SUCCESS; - return APR_ENOMEM; -} - -ap_status_t ap_delete_thread_private(struct threadkey_t *key) -{ - if (key->key < BEOS_MAX_DATAKEYS){ - acquire_sem(key_table[key->key].lock); - if (key_table[key->key].count == 1){ - key_table[key->key].destructor = NULL; - key_table[key->key].count = 0; - } - release_sem(key_table[key->key].lock); - } else { - return APR_ENOMEM; - } - return APR_SUCCESS; -} diff --git a/threadproc/beos/threadproc.h b/threadproc/beos/threadproc.h deleted file mode 100644 index 64e87052f..000000000 --- a/threadproc/beos/threadproc.h +++ /dev/null @@ -1,124 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "fileio.h" -#include "apr_file_io.h" -#include - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define SHELL_PATH "/bin/sh" - -#define PTHREAD_CANCEL_AYNCHRONOUS CANCEL_ASYNCH; -#define PTHREAD_CANCEL_DEFERRED CANCEL_DEFER; - -#define PTHREAD_CANCEL_ENABLE CANCEL_ENABLE; -#define PTHREAD_CANCEL_DISABLE CANCEL_DISABLE; - -#define BEOS_MAX_DATAKEYS 128 - -struct thread_t { - ap_context_t *cntxt; - thread_id td; -}; - -struct threadattr_t { - ap_context_t *cntxt; - int32 attr; - int detached; - int joinable; -}; - -struct threadkey_t { - ap_context_t *cntxt; - int32 key; -}; - -struct beos_private_data { - const void ** data; - int count; - volatile thread_id td; -}; - -struct beos_key { - int assigned; - int count; - sem_id lock; - int32 ben_lock; - void (* destructor) (); -}; - -struct procattr_t { - ap_context_t *cntxt; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; -}; - -struct proc_t { - ap_context_t *cntxt; - pid_t pid; - struct procattr_t *attr; -}; - -#endif /* ! THREAD_PROC_H */ - diff --git a/threadproc/os2/Makefile.in b/threadproc/os2/Makefile.in deleted file mode 100644 index 91d4249c2..000000000 --- a/threadproc/os2/Makefile.in +++ /dev/null @@ -1,71 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/os2 -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../threadproc.a - -OBJS=proc.o \ - thread.o \ - threadcancel.o \ - threadpriv.o \ - signals.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -proc.o: proc.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../file_io/unix/fileio.h -signals.o: signals.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_errno.h ../../file_io/unix/fileio.h -thread.o: thread.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_errno.h -threadcancel.o: threadcancel.c threadproc.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h -threadpriv.o: threadpriv.c threadproc.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_general.h ../../include/apr_errno.h diff --git a/threadproc/os2/proc.c b/threadproc/os2/proc.c deleted file mode 100644 index 5767d898c..000000000 --- a/threadproc/os2/proc.c +++ /dev/null @@ -1,321 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" - -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -#include -#define INCL_DOS -#include - -ap_status_t ap_createprocattr_init(ap_context_t *cont, struct procattr_t **new) -{ - (*new) = (struct procattr_t *)ap_palloc(cont, - sizeof(struct procattr_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->parent_in = NULL; - (*new)->child_in = NULL; - (*new)->parent_out = NULL; - (*new)->child_out = NULL; - (*new)->parent_err = NULL; - (*new)->child_err = NULL; - (*new)->currdir = NULL; - (*new)->cmdtype = APR_PROGRAM; - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_io(struct procattr_t *attr, ap_int32_t in, - ap_int32_t out, ap_int32_t err) -{ - ap_status_t stat; - if (in) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->child_in, - &attr->parent_in)) != APR_SUCCESS) { - return stat; - } - } - if (out) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_out, - &attr->child_out)) != APR_SUCCESS) { - return stat; - } - } - if (err) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_err, - &attr->child_err)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_dir(struct procattr_t *attr, - char *dir) -{ - attr->currdir = ap_pstrdup(attr->cntxt, dir); - if (attr->currdir) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - -ap_status_t ap_setprocattr_cmdtype(struct procattr_t *attr, - ap_cmdtype_e cmd) -{ - attr->cmdtype = cmd; - return APR_SUCCESS; -} - -ap_status_t ap_fork(ap_context_t *cont, struct proc_t **proc) -{ - int pid; - - (*proc) = ap_palloc(cont, sizeof(struct proc_t)); - - if ((pid = fork()) < 0) { - return errno; - } else if (pid == 0) { - (*proc)->pid = pid; - (*proc)->attr = NULL; - (*proc)->running = TRUE; - return APR_INCHILD; - } - - (*proc)->pid = pid; - (*proc)->attr = NULL; - (*proc)->running = TRUE; - return APR_INPARENT; -} - -ap_status_t ap_create_process(ap_context_t *cont, char *progname, - char *const args[], char **env, - struct procattr_t *attr, struct proc_t **new) -{ - int i; - ap_status_t stat; - char **newargs; - char savedir[300]; - HFILE save_in, save_out, save_err, dup; - int criticalsection = FALSE; - - (*new) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->running = FALSE; - -/* Prevent other threads from running while these process-wide resources are modified */ - if (attr->child_in || attr->child_out || attr->child_err || attr->currdir) { - criticalsection = TRUE; - DosEnterCritSec(); - } - - if (attr->child_in) { - save_in = -1; - DosDupHandle(STDIN_FILENO, &save_in); - dup = STDIN_FILENO; - DosDupHandle(attr->child_in->filedes, &dup); - DosSetFHState(attr->parent_in->filedes, OPEN_FLAGS_NOINHERIT); - } - - if (attr->child_out) { - save_out = -1; - DosDupHandle(STDOUT_FILENO, &save_out); - dup = STDOUT_FILENO; - DosDupHandle(attr->child_out->filedes, &dup); - DosSetFHState(attr->parent_out->filedes, OPEN_FLAGS_NOINHERIT); - } - - if (attr->child_err) { - save_err = -1; - DosDupHandle(STDERR_FILENO, &save_err); - dup = STDERR_FILENO; - DosDupHandle(attr->child_err->filedes, &dup); - DosSetFHState(attr->parent_err->filedes, OPEN_FLAGS_NOINHERIT); - } - - signal(SIGCHLD, SIG_DFL); /*not sure if this is needed or not */ - - if (attr->currdir != NULL) { - _getcwd2(savedir, sizeof(savedir)); - - if (_chdir2(attr->currdir) < 0) { - if (criticalsection) - DosExitCritSec(); - return errno; - } - } - - if (attr->cmdtype == APR_SHELLCMD) { - i = 0; - while (args[i]) { - i++; - } - newargs = (char **)ap_palloc(cont, sizeof (char *) * (i + 3)); - newargs[0] = ap_pstrdup(cont, SHELL_PATH); - newargs[1] = ap_pstrdup(cont, "/c"); - i = 0; - - while (args[i]) { - newargs[i + 2] = ap_pstrdup(cont, args[i]); - i++; - } - - newargs[i + 3] = NULL; - (*new)->pid = spawnve(P_NOWAIT, SHELL_PATH, newargs, env); - } else { - (*new)->pid = spawnve(P_NOWAIT, progname, args, env); - } - - stat = (*new)->pid < 0 ? errno : APR_SUCCESS; - - if (attr->currdir != NULL) { - chdir(savedir); - } - - if (attr->child_in) { - ap_close(attr->child_in); - dup = STDIN_FILENO; - DosDupHandle(save_in, &dup); - DosClose(save_in); - } - - if (attr->child_out) { - ap_close(attr->child_out); - dup = STDOUT_FILENO; - DosDupHandle(save_out, &dup); - DosClose(save_out); - } - - if (attr->child_err) { - ap_close(attr->child_err); - dup = STDERR_FILENO; - DosDupHandle(save_err, &dup); - DosClose(save_err); - } - - if (criticalsection) - DosExitCritSec(); - - (*new)->attr = attr; - (*new)->running = stat == APR_SUCCESS; - return stat; -} - - - -ap_status_t ap_get_childin(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_in; - return APR_SUCCESS; -} - -ap_status_t ap_get_childout(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_out; - return APR_SUCCESS; -} - -ap_status_t ap_get_childerr(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_err; - return APR_SUCCESS; -} - -ap_status_t ap_wait_proc(struct proc_t *proc, - ap_wait_how_e wait) -{ - pid_t stat; - - if (!proc) - return APR_ENOPROC; - - if (!proc->running) - return APR_CHILD_DONE; - - if (wait == APR_WAIT) { - if ((stat = waitpid(proc->pid, NULL, WUNTRACED)) > 0) { - proc->running = FALSE; - return APR_CHILD_DONE; - } else if (stat == 0) { - return APR_CHILD_NOTDONE; - } - return errno; - } - - if ((stat = waitpid(proc->pid, NULL, WUNTRACED | WNOHANG)) > 0) { - proc->running = FALSE; - return APR_CHILD_DONE; - } else if (stat == 0) { - return APR_CHILD_NOTDONE; - } - - return errno; -} - diff --git a/threadproc/os2/signals.c b/threadproc/os2/signals.c deleted file mode 100644 index d0014f695..000000000 --- a/threadproc/os2/signals.c +++ /dev/null @@ -1,82 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include -#include -#include -#define INCL_DOS -#include - -ap_status_t ap_kill(struct proc_t *proc, int signal) -{ -/* SIGTERM's don't work too well in OS/2 (only affects other EMX programs). - CGIs may not be, esp. REXX scripts, so use a native call instead */ - - ap_status_t rc; - - if ( signal == SIGTERM ) { - rc = os2errno(DosSendSignalException(proc->pid, XCPT_SIGNAL_BREAK)); - } else { - rc = kill(proc->pid, signal) < 0 ? errno : APR_SUCCESS; - } - - return rc; -} - diff --git a/threadproc/os2/thread.c b/threadproc/os2/thread.c deleted file mode 100644 index 14cf980c5..000000000 --- a/threadproc/os2/thread.c +++ /dev/null @@ -1,178 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "fileio.h" -#define INCL_DOS -#include - -ap_status_t ap_create_threadattr(ap_context_t *cont, struct threadattr_t **new) -{ - (*new) = (struct threadattr_t *)ap_palloc(cont, sizeof(struct threadattr_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->attr = 0; - return APR_SUCCESS; -} - - - -ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on) -{ - attr->attr |= APR_THREADATTR_DETACHED; - return APR_SUCCESS; -} - - - -ap_status_t ap_getthreadattr_detach(struct threadattr_t *attr) -{ - return (attr->attr & APR_THREADATTR_DETACHED) ? APR_DETACH : APR_NOTDETACH; -} - - - -static void ap_thread_begin(void *arg) -{ - struct thread_t *thread = (struct thread_t *)arg; - thread->rv = thread->func(thread->data); -} - - - -ap_status_t ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, - ap_thread_start_t func, void *data, - struct thread_t **new) -{ - ap_status_t stat; - ap_thread_t *thread; - - thread = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); - *new = thread; - - if (thread == NULL) { - return APR_ENOMEM; - } - - thread->cntxt = cont; - thread->attr = attr; - thread->func = func; - thread->data = data; - stat = ap_create_context(cont, NULL, &thread->cntxt); - - if (stat != APR_SUCCESS) { - return stat; - } - - if (attr == NULL) { - stat = ap_create_threadattr(thread->cntxt, &thread->attr); - - if (stat != APR_SUCCESS) { - return stat; - } - } - - if (thread->attr->attr & APR_THREADATTR_DETACHED) - thread->tid = _beginthread((os2_thread_start_t)func, NULL, APR_THREAD_STACKSIZE, data); - else - thread->tid = _beginthread(ap_thread_begin, NULL, APR_THREAD_STACKSIZE, thread); - - if (thread->tid < 0) { - return errno; - } - - return APR_SUCCESS; -} - - - -ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval) -{ - thd->rv = retval; - _endthread(); - return -1; /* If we get here something's wrong */ -} - - - -ap_status_t ap_thread_join(struct thread_t *thd, ap_status_t *retval) -{ - ULONG rc; - TID waittid = thd->tid; - - if (thd->attr->attr & APR_THREADATTR_DETACHED) - return APR_ENOSTAT; - - rc = DosWaitThread(&waittid, DCWW_WAIT); - *retval = (ap_status_t)thd->rv; - return os2errno(rc); -} - - - -ap_status_t ap_thread_detach(struct thread_t *thd) -{ - thd->attr->attr |= APR_THREADATTR_DETACHED; - return APR_SUCCESS; -} - - diff --git a/threadproc/os2/threadcancel.c b/threadproc/os2/threadcancel.c deleted file mode 100644 index 5f4766bc5..000000000 --- a/threadproc/os2/threadcancel.c +++ /dev/null @@ -1,86 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "fileio.h" - -ap_status_t ap_cancel_thread(struct thread_t *thd) -{ - return os2errno(DosKillThread(thd->tid)); -} - - - -ap_status_t ap_setcanceltype(ap_context_t *cont, ap_int32_t type) -{ - ULONG rc, nesting; - - if (type == APR_CANCEL_DEFER) - rc = DosEnterMustComplete(&nesting); - else - rc = DosExitMustComplete(&nesting); - - return os2errno(rc); -} - - - -ap_status_t ap_setcancelstate(ap_context_t *cont, ap_int32_t type) -{ -/* There's no way to ignore thread kills altogether in OS/2 (that I know of) */ - return -1; -} diff --git a/threadproc/os2/threadpriv.c b/threadproc/os2/threadpriv.c deleted file mode 100644 index 049f93896..000000000 --- a/threadproc/os2/threadpriv.c +++ /dev/null @@ -1,92 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "fileio.h" - -ap_status_t ap_create_thread_private(ap_context_t *cont, void (*dest)(void *), - struct threadkey_t **key) -{ - (*key) = (struct threadkey_t *)ap_palloc(cont, sizeof(struct threadkey_t)); - - if ((*key) == NULL) { - return APR_ENOMEM; - } - - (*key)->cntxt = cont; - return os2errno(DosAllocThreadLocalMemory(1, &((*key)->key))); -} - -ap_status_t ap_get_thread_private(struct threadkey_t *key, void **new) -{ - (*new) = (void *)*(key->key); - return APR_SUCCESS; -} - -ap_status_t ap_set_thread_private(struct threadkey_t *key, void *priv) -{ - *(key->key) = (ULONG)priv; - return APR_SUCCESS; -} - -ap_status_t ap_delete_thread_private(struct threadkey_t *key) -{ - return os2errno(DosFreeThreadLocalMemory(key->key)); -} - diff --git a/threadproc/os2/threadproc.h b/threadproc/os2/threadproc.h deleted file mode 100644 index 215a7f9fd..000000000 --- a/threadproc/os2/threadproc.h +++ /dev/null @@ -1,108 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_file_io.h" - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define APR_THREADATTR_DETACHED 1 - -#define SHELL_PATH "cmd.exe" -#define APR_THREAD_STACKSIZE 65536 - -struct threadattr_t { - ap_context_t *cntxt; - unsigned long attr; -}; - -struct thread_t { - ap_context_t *cntxt; - struct threadattr_t *attr; - unsigned long tid; - ap_thread_start_t func; - void *data; - void *rv; -}; - -struct threadkey_t { - ap_context_t *cntxt; - unsigned long *key; -}; - -struct procattr_t { - ap_context_t *cntxt; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; -}; - -struct proc_t { - ap_context_t *cntxt; - pid_t pid; - struct procattr_t *attr; - int running; -}; - -typedef void (*os2_thread_start_t)(void *); - -#endif /* ! THREAD_PROC_H */ - diff --git a/threadproc/unix/.cvsignore b/threadproc/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/threadproc/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/threadproc/unix/Makefile.in b/threadproc/unix/Makefile.in deleted file mode 100644 index 0596a1a9a..000000000 --- a/threadproc/unix/Makefile.in +++ /dev/null @@ -1,90 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCDIR2=../../file_io/unix -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I. - -LIB=../libthreadproc.a - -OBJS=proc.o \ - procsup.o \ - thread.o \ - threadcancel.o \ - threadpriv.o \ - signals.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -proc.o: proc.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_win.h ../../file_io/unix/fileio.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h $(INCDIR)/hsregex.h \ - ../../include/apr_portable.h ../../include/apr_network_io.h \ - ../../include/apr_lock.h ../../include/apr_time.h -procsup.o: procsup.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_win.h ../../file_io/unix/fileio.h \ - $(INCDIR)/apr_config.h $(INCDIR)/apr_lib.h $(INCDIR)/hsregex.h -signals.o: signals.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_win.h ../../file_io/unix/fileio.h -thread.o: thread.c threadproc.h ../../include/apr_thread_proc.h \ - ../../include/apr_file_io.h ../../include/apr_general.h \ - ../../include/apr_config.h ../../include/apr_errno.h \ - ../../include/apr_win.h ../../include/apr_portable.h \ - ../../include/apr_network_io.h ../../include/apr_lock.h \ - ../../include/apr_time.h -threadcancel.o: threadcancel.c threadproc.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h ../../include/apr_win.h -threadpriv.o: threadpriv.c threadproc.h \ - ../../include/apr_thread_proc.h ../../include/apr_file_io.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h ../../include/apr_win.h \ - ../../include/apr_portable.h ../../include/apr_network_io.h \ - ../../include/apr_lock.h ../../include/apr_time.h diff --git a/threadproc/unix/proc.c b/threadproc/unix/proc.c deleted file mode 100644 index 3022350e5..000000000 --- a/threadproc/unix/proc.c +++ /dev/null @@ -1,410 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" - -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include -#include -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_createprocattr_init(ap_context_t *, ap_procattr_t **) - * Create and initialize a new procattr variable - * arg 1) The context to use - * arg 2) The newly created procattr. - */ -ap_status_t ap_createprocattr_init(ap_context_t *cont, struct procattr_t **new) -{ - (*new) = (struct procattr_t *)ap_palloc(cont, - sizeof(struct procattr_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->parent_in = NULL; - (*new)->child_in = NULL; - (*new)->parent_out = NULL; - (*new)->child_out = NULL; - (*new)->parent_err = NULL; - (*new)->child_err = NULL; - (*new)->currdir = NULL; - (*new)->cmdtype = APR_PROGRAM; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setprocattr_io(ap_procattr_t *, ap_int32_t, ap_int32_t - * ap_int32_t) - * Determine if any of stdin, stdout, or stderr should be linked - * to pipes when starting a child process. - * arg 1) The procattr we care about. - * arg 2) Should stdin be a pipe bnack to the parent? - * arg 3) Should stdout be a pipe bnack to the parent? - * arg 4) Should stderr be a pipe bnack to the parent? - */ -ap_status_t ap_setprocattr_io(struct procattr_t *attr, ap_int32_t in, - ap_int32_t out, ap_int32_t err) -{ - ap_status_t stat; - if (in) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->child_in, - &attr->parent_in)) != APR_SUCCESS) { - return stat; - } - } - if (out) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_out, - &attr->child_out)) != APR_SUCCESS) { - return stat; - } - } - if (err) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_err, - &attr->child_err)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setprocattr_dir(ap_procattr_t *, char *) - * Set which directory the child process should start executing in. - * arg 1) The procattr we care about. - * arg 2) Which dir to start in. By default, this is the same dir as - * the parent currently resides in, when the createprocess call - * is made. - */ -ap_status_t ap_setprocattr_dir(struct procattr_t *attr, - char *dir) -{ - attr->currdir = ap_pstrdup(attr->cntxt, dir); - if (attr->currdir) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setprocattr_cmdtype(ap_procattr_t *, ap_cmdtype_e) - * Set what type of command the child process will call. - * arg 1) The procattr we care about. - * arg 2) The type of command. One of: - * APR_SHELLCMD -- Shell script - * APR_PROGRAM -- Executable program (default) - */ -ap_status_t ap_setprocattr_cmdtype(struct procattr_t *attr, - ap_cmdtype_e cmd) -{ - attr->cmdtype = cmd; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setprocattr_detach(ap_procattr_t *, ap_int32_t) - * Determine if the chlid should start in detached state. - * arg 1) The procattr we care about. - * arg 2) Should the child start in detached state? Default is no. - */ -ap_status_t ap_setprocattr_detach(struct procattr_t *attr, ap_int32_t detach) -{ - attr->detached = detach; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_fork_detach(ap_context_t *, ap_proc_t **) - * This is currently the only non-portable call in APR. This executes - * a standard unix fork. - * arg 1) The context to use. - * arg 2) The resulting process handle. - */ -ap_status_t ap_fork(ap_context_t *cont, struct proc_t **proc) -{ - int pid; - - (*proc) = ap_palloc(cont, sizeof(struct proc_t)); - - if ((pid = fork()) < 0) { - return errno; - } - else if (pid == 0) { - (*proc)->pid = pid; - (*proc)->attr = NULL; - return APR_INCHILD; - } - (*proc)->pid = pid; - (*proc)->attr = NULL; - return APR_INPARENT; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_process(ap_context_t *, char *, char *const [], - char **, ap_procattr_t *, ap_proc_t **) - * Create a new process and execute a new program within that process. - * arg 1) The context to use. - * arg 2) The program to run - * arg 3) the arguments to pass to the new program. The first one should - * be the program name. - * arg 4) The new environment table for the new process. This should be a - * list of NULL-terminated strings. - * arg 5) the procattr we should use to determine how to create the new - * process - * arg 6) The resulting process handle. - */ -ap_status_t ap_create_process(ap_context_t *cont, char *progname, - char *const args[], char **env, - struct procattr_t *attr, struct proc_t **new) -{ - int i; - char **newargs; - struct proc_t *pgrp; - - (*new) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - - if (((*new)->pid = fork()) < 0) { - return errno; - } - else if ((*new)->pid == 0) { - /* child process */ - if (attr->child_in) { - ap_close(attr->parent_in); - dup2(attr->child_in->filedes, STDIN_FILENO); - ap_close(attr->child_in); - } - if (attr->child_out) { - ap_close(attr->parent_out); - dup2(attr->child_out->filedes, STDOUT_FILENO); - ap_close(attr->child_out); - } - if (attr->child_err) { - ap_close(attr->parent_err); - dup2(attr->child_err->filedes, STDERR_FILENO); - ap_close(attr->child_err); - } - - signal(SIGCHLD, SIG_DFL); /*not sure if this is needed or not */ - - if (attr->currdir != NULL) { - if (chdir(attr->currdir) == -1) { - exit(-1); /* We have big problems, the child should exit. */ - } - } - if (attr->cmdtype == APR_SHELLCMD) { - i = 0; - while (args[i]) { - i++; - } - newargs = (char **)ap_palloc(cont, sizeof (char *) * (i + 3)); - newargs[0] = strdup(SHELL_PATH); - newargs[1] = strdup("-c"); - i = 0; - while (args[i]) { - newargs[i + 2] = strdup(args[i]); - i++; - } - newargs[i + 3] = NULL; - if (attr->detached) { - ap_detach(attr->cntxt, &pgrp); - } - execve(SHELL_PATH, newargs, env); - } - else { - if (attr->detached) { - ap_detach(attr->cntxt, &pgrp); - } - execve(progname, args, env); - } - exit(-1); /* if we get here, there is a problem, so exit with an */ - /* error code. */ - } - /* Parent process */ - if (attr->child_in) { - ap_close(attr->child_in); - } - if (attr->child_out) { - ap_close(attr->child_out); - } - if (attr->child_err) { - ap_close(attr->child_err); - } - - (*new)->attr = attr; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_childin(ap_proc_t *, ap_file_t **) - * Get the file handle that is assocaited with a child's stdin. - * arg 1) The process handle that corresponds to the desired child process - * arg 2) The returned file handle. - */ -ap_status_t ap_get_childin(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_in; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_childout(ap_proc_t *, ap_file_t **) - * Get the file handle that is assocaited with a child's stdout. - * arg 1) The process handle that corresponds to the desired child process - * arg 2) The returned file handle. - */ -ap_status_t ap_get_childout(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_out; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_childerr(ap_proc_t *, ap_file_t **) - * Get the file handle that is assocaited with a child's stderr. - * arg 1) The process handle that corresponds to the desired child process - * arg 2) The returned file handle. - */ -ap_status_t ap_get_childerr(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_err; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_wait_proc(ap_proc_t *, ap_wait_how) - * Wait for a child process to die - * arg 1) The process handle that corresponds to the desired child process - * arg 2) 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. - * NOTE: 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. - */ -ap_status_t ap_wait_proc(struct proc_t *proc, - ap_wait_how_e wait) -{ - pid_t stat; - if (!proc) - return APR_ENOPROC; - if (wait == APR_WAIT) { - if ((stat = waitpid(proc->pid, NULL, WUNTRACED)) > 0) { - return APR_CHILD_DONE; - } - else if (stat == 0) { - return APR_CHILD_NOTDONE; - } - return errno; - } - if ((stat = waitpid(proc->pid, NULL, WUNTRACED | WNOHANG)) > 0) { - return APR_CHILD_DONE; - } - else if (stat == 0) { - return APR_CHILD_NOTDONE; - } - return errno; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_proc(ap_proc_t *, ap_os_proc_t *) - * convert the proc from os specific type to apr type. - * arg 1) The apr proc to converting - * arg 2) The os specific proc we are converting to - */ -ap_status_t ap_get_os_proc(ap_proc_t *proc, ap_os_proc_t *theproc) -{ - if (proc == NULL) { - return APR_ENOPROC; - } - theproc = &(proc->pid); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_proc(ap_context_t *, ap_proc_t *, ap_os_proc_t *) - * convert the proc from os specific type to apr type. - * arg 1) The context to use if it is needed. - * arg 2) The apr proc we are converting to. - * arg 3) The os specific proc to convert - */ -ap_status_t ap_put_os_proc(ap_context_t *cont, struct proc_t **proc, - ap_os_proc_t *theproc) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*proc) == NULL) { - (*proc) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - (*proc)->cntxt = cont; - } - (*proc)->pid = *theproc; - return APR_SUCCESS; -} - diff --git a/threadproc/unix/procsup.c b/threadproc/unix/procsup.c deleted file mode 100644 index ddf6020e7..000000000 --- a/threadproc/unix/procsup.c +++ /dev/null @@ -1,166 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" - -#include "apr_config.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" - -/* ***APRDOC******************************************************** - * ap_status_t ap_detach(ap_context_t *, ap_proc_t *) - * Detach the process from the controlling terminal. - * arg 1) The context to use if it is needed. - * arg 2) The new process handler - */ -ap_status_t ap_detach(ap_context_t *cont, struct proc_t **new) -{ - int x; - - (*new) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - (*new)->cntxt = cont; - (*new)->attr = NULL; - - chdir("/"); -#if !defined(MPE) && !defined(OS2) && !defined(TPF) -/* Don't detach for MPE because child processes can't survive the death of - the parent. */ - if ((x = fork()) > 0) - exit(0); - else if (x == -1) { - perror("fork"); - fprintf(stderr, "unable to fork new process\n"); - exit(1); /* we can't do anything here, so just exit. */ - } -/* RAISE_SIGSTOP(DETACH);*/ -#endif -#if HAVE_SETSID - if (((*new)->pid = setsid()) == -1) { - return errno; - } -#elif defined(NEXT) || defined(NEWSOS) - if (setpgrp(0, getpid()) == -1 || ((*new)->pid = getpgrp(0)) == -1) { - return errno; - } -#elif defined(OS2) || defined(TPF) - /* OS/2 don't support process group IDs */ - (*new)->pid = getpid(); -#elif defined(MPE) - /* MPE uses negative pid for process group */ - (*new)->pid = -getpid(); -#else - if (((*new)->pid = setpgrp(getpid(), 0)) == -1) { - return errno; - } -#endif - - /* close out the standard file descriptors */ - if (freopen("/dev/null", "r", stdin) == NULL) { - return APR_ALLSTD; - /* continue anyhow -- note we can't close out descriptor 0 because we - * have nothing to replace it with, and if we didn't have a descriptor - * 0 the next file would be created with that value ... leading to - * havoc. - */ - } - if (freopen("/dev/null", "w", stdout) == NULL) { - return APR_STDOUT; - } - /* We are going to reopen this again in a little while to the error - * log file, but better to do it twice and suffer a small performance - * hit for consistancy than not reopen it here. - */ - if (freopen("/dev/null", "w", stderr) == NULL) { - return APR_STDERR; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_procdata(ap_proc_t *, void *) - * Return the context associated with the current proc. - * arg 1) The currently open proc. - * arg 2) The user data associated with the proc. - */ -ap_status_t ap_get_procdata(struct proc_t *proc, void *data) -{ - if (proc != NULL) { - return ap_get_userdata(proc->cntxt, &data); - } - else { - data = NULL; - return APR_ENOPROC; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_procdata(ap_proc_t *, void *) - * Return the context associated with the current proc. - * arg 1) The currently open proc. - * arg 2) The user data to associate with the proc. -*/ -ap_status_t ap_set_procdata(struct proc_t *proc, void *data) -{ - if (proc != NULL) { - return ap_set_userdata(proc->cntxt, data); - } - else { - data = NULL; - return APR_ENOPROC; - } -} - diff --git a/threadproc/unix/signals.c b/threadproc/unix/signals.c deleted file mode 100644 index 529dcad8d..000000000 --- a/threadproc/unix/signals.c +++ /dev/null @@ -1,72 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include -#include -#include - -ap_status_t ap_kill(struct proc_t *proc, int signal) -{ - if (kill(proc->pid, signal) == -1) { - return errno; - } - return APR_SUCCESS; -} - diff --git a/threadproc/unix/thread.c b/threadproc/unix/thread.c deleted file mode 100644 index d79359a0b..000000000 --- a/threadproc/unix/thread.c +++ /dev/null @@ -1,364 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_portable.h" - -#ifdef HAVE_PTHREAD_H -/* ***APRDOC******************************************************** - * ap_status_t ap_create_threadattr(ap_context_t *, ap_threadattr_t **) - * Create and initialize a new threadattr variable - * arg 1) The context to use - * arg 2) The newly created threadattr. - */ -ap_status_t ap_create_threadattr(ap_context_t *cont, struct threadattr_t **new) -{ - ap_status_t stat; - - (*new) = (struct threadattr_t *)ap_palloc(cont, - sizeof(struct threadattr_t)); - (*new)->attr = (pthread_attr_t *)ap_palloc(cont, - sizeof(pthread_attr_t)); - - if ((*new) == NULL || (*new)->attr == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - stat = pthread_attr_init((*new)->attr); - - if (stat == 0) { - return APR_SUCCESS; - } - return stat; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setthreadattr_detach(ap_threadattr_t *, ap_int32_t) - * Set if newly created threads should be created in detach mode. - * arg 1) The threadattr to affect - * arg 2) Thread detach state on or off - */ -ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on) -{ - ap_status_t stat; - if ((stat = pthread_attr_setdetachstate(attr->attr, on)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_getthreadattr_detach(ap_threadattr_t *, ap_int32_t *) - * Get the detach mode for this threadattr. - * arg 1) The threadattr to reference - * arg 2) Thread detach state on or off - */ -ap_status_t ap_getthreadattr_detach(struct threadattr_t *attr) -{ - int state; - - pthread_attr_getdetachstate(attr->attr, &state); - if (state == 1) - return APR_DETACH; - return APR_NOTDETACH; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_create_thread(ap_context_t *, ap_threadattr_t *, - * ap_thread_start_t, coid *, ap_thread_t **) - * Create a new thread of execution - * arg 1) The context to use - * arg 2) The threadattr to use to determine how to create the thread - * arg 3) The function to start the new thread in - * arg 4) Any data to be passed to the starting function - * arg 5) The newly created thread handle. - */ -ap_status_t ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, - ap_thread_start_t func, void *data, - struct thread_t **new) -{ - ap_status_t stat; - pthread_attr_t *temp; - - (*new) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->td = (pthread_t *)ap_palloc(cont, sizeof(pthread_t)); - - if ((*new)->td == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - - if (attr) - temp = attr->attr; - else - temp = NULL; - - stat = ap_create_context(cont, NULL, &(*new)->cntxt); - if (stat != APR_SUCCESS) { - return stat; - } - - if ((stat = pthread_create((*new)->td, temp, func, data)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_thread_exit(ap_thread_t *, ap_status_t *) - * stop the current thread - * arg 1) The thread to stop - * arg 2) The return value to pass back to any thread that cares - */ -ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval) -{ - ap_destroy_pool(thd->cntxt); - pthread_exit(retval); -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_thread_join(ap_thread_t *, ap_status_t *) - * block until the desired thread stops executing. - * arg 1) The thread to join - * arg 2) The return value from the dead thread. - */ -ap_status_t ap_thread_join(struct thread_t *thd, ap_status_t *retval) -{ - ap_status_t stat; - - if ((stat = pthread_join(*thd->td,(void *)&retval)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_thread_detach(ap_thread_t *) - * detach a thread - * arg 1) The thread to detach - */ -ap_status_t ap_thread_detach(struct thread_t *thd) -{ - ap_status_t stat; - - if ((stat = pthread_detach(*thd->td)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_threaddata(ap_thread_t *, void *) - * Return the context associated with the current thread. - * arg 1) The currently open thread. - * arg 2) The user data associated with the thread. - */ -ap_status_t ap_get_threaddata(struct thread_t *thread, void *data) -{ - if (thread != NULL) { - return ap_get_userdata(thread->cntxt, &data); - } - else { - data = NULL; - return APR_ENOTHREAD; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_threaddata(ap_thread_t *, void *) - * Return the context associated with the current thread. - * arg 1) The currently open thread. - * arg 2) The user data to associate with the thread. - */ -ap_status_t ap_set_threaddata(struct thread_t *thread, void *data) -{ - if (thread != NULL) { - return ap_set_userdata(thread->cntxt, data); - } - else { - data = NULL; - return APR_ENOTHREAD; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_thread(ap_thread_t *, ap_os_thread_t *) - * convert the thread to os specific type from apr type. - * arg 1) The apr thread to convert - * arg 2) The os specific thread we are converting to - */ -ap_status_t ap_get_os_thread(struct thread_t *thd, ap_os_thread_t *thethd) -{ - if (thd == NULL) { - return APR_ENOTHREAD; - } - thethd = thd->td; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_thread(ap_context_t *, ap_thread_t *, ap_os_thread_t *) - * convert the thread from os specific type to apr type. - * arg 1) The context to use if it is needed. - * arg 2) The apr thread we are converting to. - * arg 3) The os specific thread to convert - */ -ap_status_t ap_put_os_thread(ap_context_t *cont, struct thread_t **thd, - ap_os_thread_t *thethd) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*thd) == NULL) { - (*thd) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); - (*thd)->cntxt = cont; - } - (*thd)->td = thethd; - return APR_SUCCESS; -} -#else - /* No pthread.h, no threads for right now.*/ -ap_status_t ap_create_threadattr(ap_context_t *cont, struct threadattr_t **new) -{ - *new = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on) -{ - return APR_SUCCESS; -} - -ap_status_t ap_getthreadattr_detach(struct threadattr_t *attr) -{ - return APR_NOTDETACH; -} - -ap_status_t ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, - ap_thread_start_t func, void *data, - struct thread_t **new) -{ - *new = NULL; - return stat; -} - -ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval) -{ - APR_SUCCESS; -} - -ap_status_t ap_thread_join(struct thread_t *thd, ap_status_t *retval) -{ - return APR_SUCCESS; -} - -ap_status_t ap_thread_detach(struct thread_t *thd) -{ - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_threaddata(ap_thread_t *, void *) - * Return the context associated with the current thread. - * arg 1) The currently open thread. - * arg 2) The user data associated with the thread. - */ -ap_status_t ap_get_threaddata(struct thread_t *thread, void *data) -{ - data = NULL; - return APR_ENOTHREAD; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_threaddata(ap_thread_t *, void *) - * Return the context associated with the current thread. - * arg 1) The currently open thread. - * arg 2) The user data to associate with the thread. - */ -ap_status_t ap_set_threaddata(struct thread_t *thread, void *data) -{ - return APR_ENOTHREAD; -} - -ap_status_t ap_get_os_thread(struct thread_t *thd, ap_os_thread_t *thethd) -{ - thethd = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_put_os_thread(ap_context_t *cont, struct thread_t **thd, - ap_os_thread_t *thethd) -{ - return APR_SUCCESS; -} -#endif - diff --git a/threadproc/unix/threadcancel.c b/threadproc/unix/threadcancel.c deleted file mode 100644 index b6b5104fb..000000000 --- a/threadproc/unix/threadcancel.c +++ /dev/null @@ -1,128 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" - -#ifdef HAVE_PTHREAD_H -/* ***APRDOC******************************************************** - * ap_status_t ap_cancel_thread(ap_thread_t *) - * Asynchronously kill a thread - * arg 1) The thread to kill. - */ -ap_status_t ap_cancel_thread(struct thread_t *thd) -{ - ap_status_t stat; - if ((stat = pthread_cancel(*thd->td)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setcanceltype(ap_context_t *, ap_int32_t) - * Determine how threads are cancelable. - * arg 1) The context to operate on - * arg 2) how are threads cancelable. One of: - * APR_CANCEL_ASYNCH -- cancel it no matter where it is - * APR_CANCEL_DEFER -- only cancel the thread if it is safe. - */ -ap_status_t ap_setcanceltype(ap_context_t *cont, ap_int32_t type) -{ - ap_status_t stat; - if ((stat = pthread_setcanceltype(type, NULL)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_setcancelstate(ap_context_t *, ap_int32_t) - * Determine if threads will be cancelable. - * arg 1) The context to operate on - * arg 2) Are threads cancelable. - */ -ap_status_t ap_setcancelstate(ap_context_t *cont, ap_int32_t type) -{ - ap_status_t stat; - if ((stat = pthread_setcanceltype(type, NULL)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} -#else -ap_status_t ap_cancel_thread(struct thread_t *thd) -{ - return APR_SUCCESS; -} - -ap_status_t ap_setcanceltype(ap_context_t *cont, ap_int32_t type) -{ - return APR_SUCCESS; -} - -ap_status_t ap_setcancelstate(ap_context_t *cont, ap_int32_t type) -{ - return APR_SUCCESS; -} -#endif - diff --git a/threadproc/unix/threadpriv.c b/threadproc/unix/threadpriv.c deleted file mode 100644 index eaa4a348d..000000000 --- a/threadproc/unix/threadpriv.c +++ /dev/null @@ -1,260 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_portable.h" - -#ifdef HAVE_PTHREAD_H -/* ***APRDOC******************************************************** - * ap_status_t ap_create_thread_private(ap_context_t *, void *(void *), - * ap_key_t) - * Create and initialize a new thread private address space - * arg 1) The context to use - * arg 2) The destructor to use when freeing the private memory. - * arg 3) The thread private handle. - */ -ap_status_t ap_create_thread_private(ap_context_t *cont, void (*dest)(void *), - struct threadkey_t **key) -{ - ap_status_t stat; - (*key) = (struct threadkey_t *)ap_palloc(cont, sizeof(struct threadkey_t)); - - if ((*key) == NULL) { - return APR_ENOMEM; - } - - (*key)->cntxt = cont; - - if ((stat = pthread_key_create(&(*key)->key, dest)) == 0) { - return stat; - } - return stat; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_thread_private(ap_key_t *, void **) - * Get a pointer to the thread private memory - * arg 1) The handle for the desired thread private memory - * arg 2) The data stored in private memory - */ -ap_status_t ap_get_thread_private(struct threadkey_t *key, void **new) -{ - (*new) = pthread_getspecific(key->key); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_thread_private(ap_key_t *, void *) - * Set the data to be stored in thread private memory - * arg 1) The handle for the desired thread private memory - * arg 2) The data to be stored in private memory - */ -ap_status_t ap_set_thread_private(struct threadkey_t *key, void *priv) -{ - ap_status_t stat; - if ((stat = pthread_setspecific(key->key, priv)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_delete_thread_private(ap_key_t *) - * Free the thread private memory - * arg 1) The handle for the desired thread private memory - */ -ap_status_t ap_delete_thread_private(struct threadkey_t *key) -{ - ap_status_t stat; - if ((stat = pthread_key_delete(key->key)) == 0) { - return APR_SUCCESS; - } - return stat; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_threadkeydata(ap_threadkey_t *, void *) - * Return the context associated with the current threadkey. - * arg 1) The currently open threadkey. - * arg 2) The user data associated with the threadkey. - */ -ap_status_t ap_get_threadkeydata(struct threadkey_t *threadkey, void *data) -{ - if (threadkey != NULL) { - return ap_get_userdata(threadkey->cntxt, &data); - } - else { - data = NULL; - return APR_ENOTHDKEY; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_threadkeydata(ap_threadkey_t *, void *) - * Return the context associated with the current threadkey. - * arg 1) The currently open threadkey. - * arg 2) The user data to associate with the threadkey. - */ -ap_status_t ap_set_threadkeydata(struct threadkey_t *threadkey, void *data) -{ - if (threadkey != NULL) { - return ap_set_userdata(threadkey->cntxt, data); - } - else { - data = NULL; - return APR_ENOTHDKEY; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_threadkey(ap_key_t *, ap_os_threadkey_t *) - * convert the thread private memory key to os specific type - * from an apr type. - * arg 1) The apr handle we are converting from. - * arg 2) The os specific handle we are converting to. - */ -ap_status_t ap_get_os_threadkey(struct threadkey_t *key, ap_os_threadkey_t *thekey) -{ - if (key == NULL) { - return APR_ENOFILE; - } - thekey = &(key->key); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_threadkey(ap_context_t *, ap_key_t *, - * ap_os_threadkey_t *) - * convert the thread private memory key from os specific type to apr type. - * arg 1) The context to use if it is needed. - * arg 2) The apr handle we are converting to. - * arg 3) The os specific handle to convert - */ -ap_status_t ap_put_os_threadkey(ap_context_t *cont, struct threadkey_t **key, - ap_os_threadkey_t *thekey) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*key) == NULL) { - (*key) = (struct threadkey_t *)ap_palloc(cont, sizeof(struct threadkey_t)); - (*key)->cntxt = cont; - } - (*key)->key = *thekey; - return APR_SUCCESS; -} -#else -ap_status_t ap_create_thread_private(ap_context_t *cont, void (*dest)(void *), - struct threadkey_t **key) -{ - *key = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_get_thread_private(struct threadkey_t *key, void **new) -{ - (*new) = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_set_thread_private(struct threadkey_t *key, void *priv) -{ - return APR_SUCCESS; -} - -ap_status_t ap_delete_thread_private(struct threadkey_t *key) -{ - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_threadkeydata(ap_threadkey_t *, void *) - * Return the context associated with the current threadkey. - * arg 1) The currently open threadkey. - * arg 2) The user data associated with the threadkey. - */ -ap_status_t ap_get_threadkeydata(struct threadkey_t *threadkey, void *data) -{ - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_threadkeydata(ap_threadkey_t *, void *) - * Return the context associated with the current threadkey. - * arg 1) The currently open threadkey. - * arg 2) The user data to associate with the threadkey. - */ -ap_status_t ap_set_threadkeydata(struct threadkey_t *threadkey, void *data) -{ - return APR_SUCCESS; -} - -ap_status_t ap_get_os_threadkey(struct threadkey_t *key, ap_os_threadkey_t *thekey) -{ - thekey = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_put_os_threadkey(ap_context_t *cont, struct threadkey_t **key, - ap_os_threadkey_t *thekey) -{ - return APR_SUCCESS; -} -#endif diff --git a/threadproc/unix/threadproc.h b/threadproc/unix/threadproc.h deleted file mode 100644 index fc9755011..000000000 --- a/threadproc/unix/threadproc.h +++ /dev/null @@ -1,105 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define SHELL_PATH "/bin/sh" - -struct thread_t { - ap_context_t *cntxt; - pthread_t *td; -}; - -struct threadattr_t { - ap_context_t *cntxt; - pthread_attr_t *attr; -}; - -struct threadkey_t { - ap_context_t *cntxt; - pthread_key_t key; -}; - -struct procattr_t { - ap_context_t *cntxt; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; - ap_int32_t detached; -}; - -struct proc_t { - ap_context_t *cntxt; - pid_t pid; - struct procattr_t *attr; -}; - -/*This will move to apr_threadproc.h in time, but I need to figure it out - * on windows first. :) - */ -ap_status_t ap_detach(ap_context_t *, struct proc_t **); - -#endif /* ! THREAD_PROC_H */ - diff --git a/threadproc/win32/proc.c b/threadproc/win32/proc.c deleted file mode 100644 index 50c454a35..000000000 --- a/threadproc/win32/proc.c +++ /dev/null @@ -1,384 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" - -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include -#include -#include -#include - -ap_status_t ap_createprocattr_init(ap_context_t *cont, struct procattr_t **new) -{ - (*new) = (struct procattr_t *)ap_palloc(cont, - sizeof(struct procattr_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - (*new)->cntxt = cont; - (*new)->parent_in = NULL; - (*new)->child_in = NULL; - (*new)->parent_out = NULL; - (*new)->child_out = NULL; - (*new)->parent_err = NULL; - (*new)->child_err = NULL; - (*new)->currdir = NULL; - (*new)->cmdtype = APR_PROGRAM; - (*new)->detached = TRUE; - - memset(&(*new)->si, 0, sizeof((*new)->si)); - - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_io(struct procattr_t *attr, ap_int32_t in, - ap_int32_t out, ap_int32_t err) -{ - ap_status_t stat; - if (in) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->child_in, - &attr->parent_in)) != APR_SUCCESS) { - return stat; - } - } - if (out) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_out, - &attr->child_out)) != APR_SUCCESS) { - return stat; - } - } - if (err) { - if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_err, - &attr->child_err)) != APR_SUCCESS) { - return stat; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_dir(struct procattr_t *attr, - char *dir) -{ - attr->currdir = ap_pstrdup(attr->cntxt, dir); - if (attr->currdir) { - return APR_SUCCESS; - } - return APR_ENOMEM; -} - -ap_status_t ap_setprocattr_cmdtype(struct procattr_t *attr, - ap_cmdtype_e cmd) -{ - attr->cmdtype = cmd; - return APR_SUCCESS; -} - -ap_status_t ap_setprocattr_detach(struct procattr_t *attr, - ap_int32_t det) -{ - attr->detached = det; - return APR_SUCCESS; -} - -ap_status_t ap_create_process(ap_context_t *cont, char *progname, - char *const args[], char **env, - struct procattr_t *attr, struct proc_t **new) -{ - int i, iEnvBlockLen; - char *cmdline; - HANDLE hCurrentProcess; - HANDLE hParentindup, hParentoutdup,hParenterrdup; - char ppid[20]; - char *envstr; - char *pEnvBlock, *pNext; - - - - (*new) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->attr = attr; - - attr->si.cb = sizeof(attr->si); - if (attr->detached) { - /* If we are creating ourselves detached, Then we should hide the - * window we are starting in. And we had better redfine our - * handles for STDIN, STDOUT, and STDERR. - */ - attr->si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; - attr->si.wShowWindow = SW_HIDE; - - if (attr->child_in) { - attr->si.hStdInput = attr->child_in->filehand; - } - - if (attr->child_out) { - attr->si.hStdOutput = attr->child_out->filehand; - } - - if (attr->child_err) { - attr->si.hStdError = attr->child_err->filehand; - } - } - - cmdline = args[0]; - i = 1; - while (args[i]) { - cmdline = ap_pstrcat(cont, cmdline, " ", args[i], NULL); - i++; - } - /* - * When the pipe handles are created, the security descriptor - * indicates that the handle can be inherited. However, we do not - * want the server side handles to the pipe to be inherited by the - * child CGI process. If the child CGI does inherit the server - * side handles, then the child may be left around if the server - * closes its handles (e.g. if the http connection is aborted), - * because the child will have a valid copy of handles to both - * sides of the pipes, and no I/O error will occur. Microsoft - * recommends using DuplicateHandle to turn off the inherit bit - * under NT and Win95. - */ - hCurrentProcess = GetCurrentProcess(); - if ((attr->child_in && !DuplicateHandle(hCurrentProcess, attr->parent_in->filehand, - hCurrentProcess, - &hParentindup, 0, FALSE, - DUPLICATE_SAME_ACCESS)) - || (attr->child_out && !DuplicateHandle(hCurrentProcess, attr->parent_out->filehand, - hCurrentProcess, &hParentoutdup, - 0, FALSE, DUPLICATE_SAME_ACCESS)) - || (attr->child_err && !DuplicateHandle(hCurrentProcess, attr->parent_err->filehand, - hCurrentProcess, &hParenterrdup, - 0, FALSE, DUPLICATE_SAME_ACCESS))) { - if (attr->child_in) { - ap_close(attr->child_in); - ap_close(attr->parent_in); - } - if (attr->child_out) { - ap_close(attr->child_out); - ap_close(attr->parent_out); - } - if (attr->child_err) { - ap_close(attr->child_err); - ap_close(attr->parent_err); - } - return APR_EEXIST; - } - else { - if (attr->child_in) { - ap_close(attr->parent_in); - attr->parent_in->filehand = hParentindup; - } - if (attr->child_out) { - ap_close(attr->parent_out); - attr->parent_out->filehand = hParentoutdup; - } - if (attr->child_err) { - ap_close(attr->parent_err); - attr->parent_err->filehand = hParenterrdup; - } - } - - _itoa(_getpid(), ppid, 10); - if (env) { - - envstr = ap_pstrcat(cont, "parentpid=", ppid, NULL); - /* - * Win32's CreateProcess call requires that the environment - * be passed in an environment block, a null terminated block of - * null terminated strings. - */ - i = 0; - iEnvBlockLen = 1; - while (env[i]) { - iEnvBlockLen += strlen(env[i]) + 1; - i++; - } - - pEnvBlock = (char *)ap_pcalloc(cont, iEnvBlockLen + strlen(envstr)); - - i = 0; - pNext = pEnvBlock; - while (env[i]) { - strcpy(pNext, env[i]); - pNext = pNext + strlen(pNext) + 1; - i++; - } - strcpy(pNext, envstr); - } - else { - SetEnvironmentVariable("parentpid", ppid); - pEnvBlock = NULL; - } - - - if (CreateProcess(NULL, cmdline, NULL, NULL, TRUE, 0, pEnvBlock, attr->currdir, - &attr->si, &(*new)->pi)) { - if (attr->detached) { - CloseHandle((*new)->pi.hProcess); - } - if (attr->child_in) { - ap_close(attr->child_in); - } - if (attr->child_out) { - ap_close(attr->child_out); - } - if (attr->child_err) { - ap_close(attr->child_err); - } - CloseHandle((*new)->pi.hThread); - return APR_SUCCESS; - } - - return GetLastError(); -} - -ap_status_t ap_get_childin(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_in; - return APR_SUCCESS; -} - -ap_status_t ap_get_childout(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_out; - return APR_SUCCESS; -} - -ap_status_t ap_get_childerr(struct proc_t *proc, ap_file_t **new) -{ - (*new) = proc->attr->parent_err; - return APR_SUCCESS; -} - -ap_status_t ap_wait_proc(struct proc_t *proc, - ap_wait_how_e wait) -{ - pid_t stat; - if (!proc) - return APR_ENOPROC; - if (wait == APR_WAIT) { - if ((stat = WaitForSingleObject(proc->pi.hProcess, INFINITE)) == WAIT_OBJECT_0) { - return APR_CHILD_DONE; - } - else if (stat == WAIT_TIMEOUT) { - return APR_CHILD_NOTDONE; - } - return APR_EEXIST; - } - if ((stat = WaitForSingleObject(proc->pi.hProcess, 0)) == WAIT_OBJECT_0) { - return APR_CHILD_DONE; - } - else if (stat == WAIT_TIMEOUT) { - return APR_CHILD_NOTDONE; - } - return APR_EEXIST; -} - -ap_status_t ap_get_procdata(struct proc_t *proc, void *data) -{ - if (proc != NULL) { - return ap_get_userdata(proc->cntxt, &data); - } - else { - data = NULL; - return APR_ENOPROC; - } -} - -ap_status_t ap_set_procdata(struct proc_t *proc, void *data) -{ - if (proc != NULL) { - return ap_set_userdata(proc->cntxt, data); - } - else { - data = NULL; - return APR_ENOPROC; - } -} - -ap_status_t ap_get_os_proc(ap_proc_t *proc, ap_os_proc_t *theproc) -{ - if (proc == NULL) { - return APR_ENOPROC; - } - theproc = &(proc->pi); - return APR_SUCCESS; -} - -ap_status_t ap_put_os_proc(ap_context_t *cont, struct proc_t **proc, - ap_os_proc_t *theproc) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*proc) == NULL) { - (*proc) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t)); - (*proc)->cntxt = cont; - } - (*proc)->pi = *theproc; - return APR_SUCCESS; -} diff --git a/threadproc/win32/signals.c b/threadproc/win32/signals.c deleted file mode 100644 index 9aefad4d6..000000000 --- a/threadproc/win32/signals.c +++ /dev/null @@ -1,75 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "fileio.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include -#include -#ifdef HAVE_SYS_WAIT -#include -#endif - -/* Windows only really support killing process, but that will do for now. */ -ap_status_t ap_kill(struct proc_t *proc, int signal) -{ - if (TerminateProcess(proc->pi.hProcess, signal) == 0) { - return errno; - } - return APR_SUCCESS; -} - diff --git a/threadproc/win32/thread.c b/threadproc/win32/thread.c deleted file mode 100644 index 79fc083cb..000000000 --- a/threadproc/win32/thread.c +++ /dev/null @@ -1,203 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include "apr_win.h" -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include - - -ap_status_t ap_create_threadattr(ap_context_t *cont, struct threadattr_t **new) -{ - (*new) = (struct threadattr_t *)ap_palloc(cont, - sizeof(struct threadattr_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - return APR_SUCCESS; -} - -ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on) -{ - attr->detach = on; - return APR_SUCCESS; -} - -ap_status_t ap_getthreadattr_detach(struct threadattr_t *attr) -{ - if (attr->detach == 1) - return APR_DETACH; - return APR_NOTDETACH; -} - -ap_status_t ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, - ap_thread_start_t func, void *data, - struct thread_t **new) -{ - ap_status_t stat; - unsigned temp; - int lasterror; - - (*new) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - - stat = ap_create_context(cont, NULL, &(*new)->cntxt); - if (stat != APR_SUCCESS) { - return stat; - } - - /* Use 0 for Thread Stack Size, because that will default the stack to the - * same size as the calling thread. - */ - if (((*new)->td = (HANDLE *)_beginthreadex(NULL, 0, (unsigned int (API_THREAD_FUNC *)(void *))func, - data, 0, &temp)) == 0) { - lasterror = GetLastError(); - return APR_EEXIST; - } - - if (attr && attr->detach) { - CloseHandle((*new)->td); - } - - return APR_SUCCESS; -} - -ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval) -{ - ap_destroy_pool(thd->cntxt); - _endthreadex(*retval); - return APR_SUCCESS; -} - -ap_status_t ap_thread_join(struct thread_t *thd, ap_status_t *retval) -{ - ap_status_t stat; - - if ((stat = WaitForSingleObject(thd->td, INFINITE)) == WAIT_OBJECT_0) { - if (GetExitCodeThread(thd->td, retval) == 0) { - return APR_SUCCESS; - } - return APR_EEXIST; - } - else { - return stat; - } -} - -ap_status_t ap_thread_detach(struct thread_t *thd) -{ - if (CloseHandle(thd->td)) { - return APR_SUCCESS; - } - else { - return APR_EEXIST; - } -} - -ap_status_t ap_get_threaddata(struct thread_t *thread, void *data) -{ - if (thread != NULL) { - return ap_get_userdata(thread->cntxt, &data); - } - else { - data = NULL; - return APR_ENOTHREAD; - } -} - -ap_status_t ap_set_threaddata(struct thread_t *thread, void *data) -{ - if (thread != NULL) { - return ap_set_userdata(thread->cntxt, data); - } - else { - data = NULL; - return APR_ENOTHREAD; - } -} - -ap_status_t ap_get_os_thread(struct thread_t *thd, ap_os_thread_t *thethd) -{ - if (thd == NULL) { - return APR_ENOTHREAD; - } - thethd = thd->td; - return APR_SUCCESS; -} - -ap_status_t ap_put_os_thread(ap_context_t *cont, struct thread_t **thd, - ap_os_thread_t *thethd) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*thd) == NULL) { - (*thd) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); - (*thd)->cntxt = cont; - } - (*thd)->td = thethd; - return APR_SUCCESS; -} - diff --git a/threadproc/win32/threadcancel.c b/threadproc/win32/threadcancel.c deleted file mode 100644 index a1e4d8ea1..000000000 --- a/threadproc/win32/threadcancel.c +++ /dev/null @@ -1,87 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" - - -ap_status_t ap_cancel_thread(struct thread_t *thd) -{ - if (TerminateThread(thd->td, APR_SUCCESS) == 0) { - return APR_EEXIST; - } - else { - return APR_SUCCESS; - } -} - -/* Not sure of the best way to do this just yet. -ap_status_t ap_setcanceltype(ap_context_t *cont, ap_int32_t type) -{ - -} - -ap_status_t ap_setcancelstate(ap_context_t *cont, ap_int32_t type) -{ - ap_status_t stat; - if ((stat = pthread_setcanceltype(type, NULL)) == 0) { - return APR_SUCCESS; - } - else { - return stat; - } -} -*/ diff --git a/threadproc/win32/threadpriv.c b/threadproc/win32/threadpriv.c deleted file mode 100644 index a6b7813d4..000000000 --- a/threadproc/win32/threadpriv.c +++ /dev/null @@ -1,138 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_errno.h" -#include "apr_portable.h" - -ap_status_t ap_create_thread_private(ap_context_t *cont, void (*dest)(void *), - struct threadkey_t **key) -{ - (*key)->key = TlsAlloc(); - return APR_SUCCESS; -} - -ap_status_t ap_get_thread_private(struct threadkey_t *key, void **new) -{ - if ((*new) = TlsGetValue(key->key)) { - return APR_SUCCESS; - } - return APR_EEXIST; -} - -ap_status_t ap_set_thread_private(struct threadkey_t *key, void *priv) -{ - if (TlsSetValue(key->key, priv)) { - return APR_SUCCESS; - } - return APR_EEXIST; -} - -ap_status_t ap_delete_thread_private(struct threadkey_t *key) -{ - if (TlsFree(key->key)) { - return APR_SUCCESS; - } - return APR_EEXIST; -} - -ap_status_t ap_get_threadkeydata(struct threadkey_t *threadkey, void *data) -{ - if (threadkey != NULL) { - return ap_get_userdata(threadkey->cntxt, &data); - } - else { - data = NULL; - return APR_ENOTHDKEY; - } -} - -ap_status_t ap_set_threadkeydata(struct threadkey_t *threadkey, void *data) -{ - if (threadkey != NULL) { - return ap_set_userdata(threadkey->cntxt, data); - } - else { - data = NULL; - return APR_ENOTHDKEY; - } -} - -ap_status_t ap_get_os_threadkey(struct threadkey_t *key, ap_os_threadkey_t *thekey) -{ - if (key == NULL) { - return APR_ENOFILE; - } - thekey = &(key->key); - return APR_SUCCESS; -} - -ap_status_t ap_put_os_threadkey(ap_context_t *cont, struct threadkey_t **key, - ap_os_threadkey_t *thekey) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if ((*key) == NULL) { - (*key) = (struct threadkey_t *)ap_palloc(cont, sizeof(struct threadkey_t)); - (*key)->cntxt = cont; - } - (*key)->key = *thekey; - return APR_SUCCESS; -} - diff --git a/threadproc/win32/threadproc.def b/threadproc/win32/threadproc.def deleted file mode 100644 index 5a6e12bb9..000000000 --- a/threadproc/win32/threadproc.def +++ /dev/null @@ -1,39 +0,0 @@ -; threadproc.def : - -LIBRARY threadproc -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_createprocattr_init @1 - ap_setprocattr_io @2 - ap_setprocattr_dir @3 - ap_setprocattr_cmdtype @4 - ap_setprocattr_detach @5 - ap_create_process @6 - ap_get_childin @7 - ap_get_childout @8 - ap_get_childerr @9 - ap_wait_proc @10 - ap_kill @11 - ap_create_threadattr @12 - ap_setthreadattr_detach @13 - ap_getthreadattr_detach @14 - ap_create_thread @15 - ap_thread_exit @16 - ap_thread_join @17 - ap_thread_detach @18 - ap_cancel_thread @19 - ap_create_thread_private @20 - ap_get_thread_private @21 - ap_set_thread_private @22 - ap_delete_thread_private @23 - ap_get_threaddata @24 - ap_set_threaddata @25 - ap_get_threadkeydata @26 - ap_set_threadkeydata @27 - ap_get_procdata @28 - ap_set_procdata @29 - ap_get_os_proc @30 - ap_get_os_thread @31 - ap_get_os_threadkey @32 diff --git a/threadproc/win32/threadproc.dsp b/threadproc/win32/threadproc.dsp deleted file mode 100644 index b9d2d2d8e..000000000 --- a/threadproc/win32/threadproc.dsp +++ /dev/null @@ -1,119 +0,0 @@ -# Microsoft Developer Studio Project File - Name="threadproc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=threadproc - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "threadproc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "threadproc.mak" CFG="threadproc - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "threadproc - Win32 Release" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE "threadproc - Win32 Debug" (based on\ - "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "threadproc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "threadproc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /I "..\..\file_io\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "NEED_TLS_SPEC" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\file_io\win32\Debug\file_io.lib ..\..\lib\Debug\lib.lib ..\..\misc\win32\Debug\misc.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "threadproc - Win32 Release" -# Name "threadproc - Win32 Debug" -# Begin Source File - -SOURCE=.\proc.c -# End Source File -# Begin Source File - -SOURCE=.\signals.c -# End Source File -# Begin Source File - -SOURCE=.\thread.c -# End Source File -# Begin Source File - -SOURCE=.\threadcancel.c -# End Source File -# Begin Source File - -SOURCE=.\threadpriv.c -# End Source File -# Begin Source File - -SOURCE=.\threadproc.def -# End Source File -# Begin Source File - -SOURCE=.\threadproc.h -# End Source File -# End Target -# End Project diff --git a/threadproc/win32/threadproc.h b/threadproc/win32/threadproc.h deleted file mode 100644 index 72d71af1d..000000000 --- a/threadproc/win32/threadproc.h +++ /dev/null @@ -1,105 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ -#include "apr_win.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include - -#ifndef THREAD_PROC_H -#define THREAD_PROC_H - -#define SHELL_PATH "/bin/sh" - -struct thread_t { - ap_context_t *cntxt; - HANDLE td; - ap_int32_t cancel; - ap_int32_t cancel_how; -}; - -struct threadattr_t { - ap_context_t *cntxt; - ap_int32_t detach; - -}; - -struct threadkey_t { - ap_context_t *cntxt; - DWORD key; - -}; - -struct procattr_t { - ap_context_t *cntxt; - STARTUPINFO si; - ap_file_t *parent_in; - ap_file_t *child_in; - ap_file_t *parent_out; - ap_file_t *child_out; - ap_file_t *parent_err; - ap_file_t *child_err; - char *currdir; - ap_int32_t cmdtype; - ap_int32_t detached; -}; - -struct proc_t { - ap_context_t *cntxt; - PROCESS_INFORMATION pi; - struct procattr_t *attr; -}; - -#endif /* ! THREAD_PROC_H */ - diff --git a/time/beos/Makefile.in b/time/beos/Makefile.in deleted file mode 100644 index d31daa7e9..000000000 --- a/time/beos/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../libtime.a - -OBJS=time.o \ - access.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -access.o: access.c atime.h ../../include/apr_time.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -time.o: time.c atime.h ../../include/apr_time.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h diff --git a/time/beos/access.c b/time/beos/access.c deleted file mode 100644 index 5c9297782..000000000 --- a/time/beos/access.c +++ /dev/null @@ -1,245 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include - -ap_status_t ap_get_curtime(struct atime_t *time, ap_int64_t *rv) -{ - if (time) { - (*rv) = time->currtime; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_sec(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_sec; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_min(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_min; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_hour(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_hour; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_mday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_mday; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_mon(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_mon; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_year(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_year; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_wday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_wday; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_set_sec(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_sec = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_min(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_min = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_hour(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_hour = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_mday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_mday = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_mon(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_mon = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_year(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_year = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_wday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_wday = value; - return APR_SUCCESS; -} diff --git a/time/beos/atime.h b/time/beos/atime.h deleted file mode 100644 index 6f036a5aa..000000000 --- a/time/beos/atime.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef ATIME_H -#define ATIME_H - -#include "apr_time.h" -#include - -struct atime_t { - ap_context_t *cntxt; - time_t currtime; - struct tm *explodedtime; -}; - - -#endif /* ! ATIME_H */ - diff --git a/time/beos/time.c b/time/beos/time.c deleted file mode 100644 index f1dc3c9e2..000000000 --- a/time/beos/time.c +++ /dev/null @@ -1,132 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include -ap_status_t ap_make_time(ap_context_t *cont, struct atime_t **new) -{ - (*new) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->explodedtime = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_current_time(struct atime_t *new) -{ - if (time(&new->currtime) == -1) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t ap_explode_time(struct atime_t *time, ap_timetype_e type) -{ - switch (type) { - case APR_LOCALTIME: { - time->explodedtime = localtime(&time->currtime); - break; - } - case APR_UTCTIME: { - time->explodedtime = gmtime(&time->currtime); - break; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_implode_time(struct atime_t *time) -{ - int year; - time_t days; - static const int dayoffset[12] = - {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275}; - - year = time->explodedtime->tm_year; - - if (year < 70 || ((sizeof(time_t) <= 4) && (year >= 138))) { - return APR_EBADDATE; - } - - /* shift new year to 1st March in order to make leap year calc easy */ - - if (time->explodedtime->tm_mon < 2) - year--; - - /* Find number of days since 1st March 1900 (in the Gregorian calendar). */ - - days = year * 365 + year / 4 - year / 100 + (year / 100 + 3) / 4; - days += dayoffset[time->explodedtime->tm_mon] + - time->explodedtime->tm_mday - 1; - days -= 25508; /* 1 jan 1970 is 25508 days since 1 mar 1900 */ - - days = ((days * 24 + time->explodedtime->tm_hour) * 60 + - time->explodedtime->tm_min) * 60 + time->explodedtime->tm_sec; - - if (days < 0) { - return APR_EBADDATE; - } - time->currtime = days; /* must be a valid time */ - return APR_SUCCESS; -} diff --git a/time/os2/Makefile.in b/time/os2/Makefile.in deleted file mode 100644 index b1507122f..000000000 --- a/time/os2/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../time.a - -OBJS=time.o \ - access.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -access.o: access.c atime.h ../../include/apr_time.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -time.o: time.c atime.h ../../include/apr_time.h \ - ../../include/apr_general.h ../../include/apr_errno.h \ - $(INCDIR)/apr_lib.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h diff --git a/time/os2/access.c b/time/os2/access.c deleted file mode 100644 index df19aee6f..000000000 --- a/time/os2/access.c +++ /dev/null @@ -1,247 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include - -ap_status_t ap_get_curtime(struct atime_t *time, ap_int64_t *rv) -{ - if (time) { - (*rv) = time->currtime; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_sec(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_sec; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_min(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_min; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_hour(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_hour; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_mday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_mday; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_mon(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_mon; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_year(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_year; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_wday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_wday; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_set_sec(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_sec = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_min(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_min = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_hour(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_hour = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_mday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_mday = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_mon(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_mon = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_year(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_year = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_wday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_wday = value; - return APR_SUCCESS; -} - - diff --git a/time/os2/atime.h b/time/os2/atime.h deleted file mode 100644 index 6f036a5aa..000000000 --- a/time/os2/atime.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef ATIME_H -#define ATIME_H - -#include "apr_time.h" -#include - -struct atime_t { - ap_context_t *cntxt; - time_t currtime; - struct tm *explodedtime; -}; - - -#endif /* ! ATIME_H */ - diff --git a/time/os2/time.c b/time/os2/time.c deleted file mode 100644 index 2b0e7a2a1..000000000 --- a/time/os2/time.c +++ /dev/null @@ -1,134 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include -#include - -ap_status_t ap_make_time(ap_context_t *cont, struct atime_t **new) -{ - (*new) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->explodedtime = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_current_time(struct atime_t *new) -{ - if (time(&new->currtime) == -1) { - return errno; - } - return APR_SUCCESS; -} - -ap_status_t ap_explode_time(struct atime_t *time, ap_timetype_e type) -{ - switch (type) { - case APR_LOCALTIME: { - time->explodedtime = localtime(&time->currtime); - break; - } - case APR_UTCTIME: { - time->explodedtime = gmtime(&time->currtime); - break; - } - } - return APR_SUCCESS; -} - -ap_status_t ap_implode_time(struct atime_t *time) -{ - int year; - time_t days; - static const int dayoffset[12] = - {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275}; - - year = time->explodedtime->tm_year; - - if (year < 70 || ((sizeof(time_t) <= 4) && (year >= 138))) { - return APR_EBADDATE; - } - - /* shift new year to 1st March in order to make leap year calc easy */ - - if (time->explodedtime->tm_mon < 2) - year--; - - /* Find number of days since 1st March 1900 (in the Gregorian calendar). */ - - days = year * 365 + year / 4 - year / 100 + (year / 100 + 3) / 4; - days += dayoffset[time->explodedtime->tm_mon] + - time->explodedtime->tm_mday - 1; - days -= 25508; /* 1 jan 1970 is 25508 days since 1 mar 1900 */ - - days = ((days * 24 + time->explodedtime->tm_hour) * 60 + - time->explodedtime->tm_min) * 60 + time->explodedtime->tm_sec; - - if (days < 0) { - return APR_EBADDATE; - } - time->currtime = days; /* must be a valid time */ - return APR_SUCCESS; -} - diff --git a/time/unix/.cvsignore b/time/unix/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/time/unix/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/time/unix/Makefile.in b/time/unix/Makefile.in deleted file mode 100644 index 9d86e28a2..000000000 --- a/time/unix/Makefile.in +++ /dev/null @@ -1,65 +0,0 @@ -#CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS) -#LIBS=$(EXTRA_LIBS) $(LIBS1) -#INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES) -#LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS) - -RM=@RM@ -CC=@CC@ -RANLIB=@RANLIB@ -CFLAGS=@CFLAGS@ @OPTIM@ -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ $(LIBS) -INCDIR=../../inc -INCDIR1=../../include -INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I. - -LIB=../libtime.a - -OBJS=time.o \ - access.o - -.c.o: - $(CC) $(CFLAGS) -c $(INCLUDES) $< - -all: $(LIB) - -clean: - $(RM) -f *.o *.a *.so - -distclean: clean - -$(RM) -f Makefile - -$(OBJS): Makefile - -$(LIB): $(OBJS) - $(RM) -f $@ - $(AR) cr $@ $(OBJS) - $(RANLIB) $@ - -# -# We really don't expect end users to use this rule. It works only with -# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after -# using it. -# -depend: - cp Makefile.in Makefile.in.bak \ - && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \ - && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \ - && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \ - -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \ - > Makefile.in \ - && rm Makefile.new - -# DO NOT REMOVE -access.o: access.c atime.h ../../include/apr_time.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h $(INCDIR)/apr_lib.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h -time.o: time.c atime.h ../../include/apr_time.h \ - ../../include/apr_general.h ../../include/apr_config.h \ - ../../include/apr_errno.h $(INCDIR)/apr_lib.h \ - ../../include/apr_file_io.h $(INCDIR)/apr_config.h \ - $(INCDIR)/hsregex.h ../../include/apr_portable.h \ - ../../include/apr_thread_proc.h ../../include/apr_win.h \ - ../../include/apr_network_io.h ../../include/apr_lock.h diff --git a/time/unix/access.c b/time/unix/access.c deleted file mode 100644 index bae1cbf01..000000000 --- a/time/unix/access.c +++ /dev/null @@ -1,370 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_curtime(ap_time_t *, ap_int64_t *) - * Get the current time in seconds since Jan 1, 1970. - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_curtime(struct atime_t *time, ap_int64_t *rv) -{ - if (time) { - (*rv) = time->currtime->tv_sec; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_sec(ap_time_t *, ap_int64_t *) - * Get the number of seconds since the top of the minute - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_sec(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_sec; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_min(ap_time_t *, ap_int64_t *) - * Get the number of minutes since the top of the hour - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_min(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_min; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_min(ap_time_t *, ap_int64_t *) - * Get the number of minutes since the top of the hour - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_hour(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_hour; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_mday(ap_time_t *, ap_int64_t *) - * Get the number of days since the beginning of the month - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_mday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_mday; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_mon(ap_time_t *, ap_int64_t *) - * Get the number of months since the beginning of the year - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_mon(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_mon; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_year(ap_time_t *, ap_int64_t *) - * Get the number of years since 1900 - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_year(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_year; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_wday(ap_time_t *, ap_int64_t *) - * Get the number of days since the beginning of the week. 0 == Sunday - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_get_wday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->tm_wday; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_sec(ap_time_t *, ap_int64_t) - * Set the number of sec since the top of the minute - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_sec(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_sec = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_min(ap_time_t *, ap_int64_t) - * Set the number of minutes since the top of the hour - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_min(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_min = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_min(ap_time_t *, ap_int64_t) - * Set the number of hours since the beginning of the day - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_hour(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_hour = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_mday(ap_time_t *, ap_int64_t) - * Set the number of days since the beginning of the month - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_mday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_mday = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_mon(ap_time_t *, ap_int64_t) - * Set the number of months since the beginning of the year - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_mon(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_mon = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_min(ap_time_t *, ap_int64_t) - * Set the number of years since the 1900 - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_year(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_year = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_wday(ap_time_t *, ap_int64_t) - * Get the number of days since the beginning of the week. 0 == Sunday - * arg 1) The time value we care about. - * arg 2) Integer to store time value in - */ -ap_status_t ap_set_wday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (struct tm *)ap_palloc(time->cntxt, - sizeof(struct tm)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->tm_wday = value; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_timedata(ap_time_t *, void *) - * Return the context associated with the current atime. - * arg 1) The currently open atime. - * arg 2) The user data associated with the atime. - */ -ap_status_t ap_get_timedata(struct atime_t *atime, void *data) -{ - if (atime != NULL) { - return ap_get_userdata(atime->cntxt, &data); - } - else { - data = NULL; - return APR_ENOTIME; - } -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_set_timedata(ap_time_t *, void *) - * Set the context associated with the current atime. - * arg 1) The currently open atime. - * arg 2) The user data to associate with the atime. - */ -ap_status_t ap_set_timedata(struct atime_t *atime, void *data) -{ - if (atime != NULL) { - return ap_set_userdata(atime->cntxt, data); - } - else { - data = NULL; - return APR_ENOTIME; - } -} - diff --git a/time/unix/atime.h b/time/unix/atime.h deleted file mode 100644 index 772150dce..000000000 --- a/time/unix/atime.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef ATIME_H -#define ATIME_H - -#include "apr_time.h" -#include - -struct atime_t { - ap_context_t *cntxt; - struct timeval *currtime; - struct tm *explodedtime; -}; - - -#endif /* ! ATIME_H */ - diff --git a/time/unix/time.c b/time/unix/time.c deleted file mode 100644 index f32491d53..000000000 --- a/time/unix/time.c +++ /dev/null @@ -1,222 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include -#include -#include - -/* ***APRDOC******************************************************** - * ap_status_t ap_make_time(ap_context_t *, ap_time_t *) - * Create a time entity. - * arg 1) The context to operate on. - * arg 2) The new time entity to create. - */ -ap_status_t ap_make_time(ap_context_t *cont, struct atime_t **new) -{ - (*new) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->explodedtime = NULL; - (*new)->currtime = NULL; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_current_time(ap_time_t *) - * Return the number of seconds since January 1, 1970. - * arg 1) The time entity to reference. - */ -ap_status_t ap_current_time(struct atime_t *new) -{ - struct timeval newtime; - new->currtime = ap_palloc(new->cntxt, sizeof(struct timeval)); - gettimeofday(new->currtime, NULL); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_explode_time(ap_time_t *, ap_timetype_e) - * Convert time value from number of seconds since epoch to a set - * of integers representing the time in a human readable form. - * arg 1) The time entity to reference. - * arg 2) How to explode the time. One of: - * APR_LOCALTIME -- Use local time - * APR_UTCTIME -- Use UTC time - */ -ap_status_t ap_explode_time(struct atime_t *atime, ap_timetype_e type) -{ - switch (type) { - case APR_LOCALTIME: { - atime->explodedtime = localtime(&atime->currtime->tv_sec); - break; - } - case APR_UTCTIME: { - atime->explodedtime = gmtime(&atime->currtime->tv_sec); - break; - } - } - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_implode_time(ap_time_t *) - * Convert time value from human readable format to number of seconds - * since epoch - * arg 1) The time entity to reference. - */ -ap_status_t ap_implode_time(struct atime_t *atime) -{ - int year; - time_t days; - static const int dayoffset[12] = - {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275}; - - year = atime->explodedtime->tm_year; - - if (year < 70 || ((sizeof(time_t) <= 4) && (year >= 138))) { - return APR_EBADDATE; - } - - /* shift new year to 1st March in order to make leap year calc easy */ - - if (atime->explodedtime->tm_mon < 2) - year--; - - /* Find number of days since 1st March 1900 (in the Gregorian calendar). */ - - days = year * 365 + year / 4 - year / 100 + (year / 100 + 3) / 4; - days += dayoffset[atime->explodedtime->tm_mon] + - atime->explodedtime->tm_mday - 1; - days -= 25508; /* 1 jan 1970 is 25508 days since 1 mar 1900 */ - - days = ((days * 24 + atime->explodedtime->tm_hour) * 60 + - atime->explodedtime->tm_min) * 60 + atime->explodedtime->tm_sec; - - if (days < 0) { - return APR_EBADDATE; - } - atime->currtime = ap_palloc(atime->cntxt, sizeof(struct timeval)); - atime->currtime->tv_sec = days; /* must be a valid time */ - atime->currtime->tv_usec = 0; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_get_os_time(ap_time_t *, ap_os_time_t *) - * Convert from apr time type to OS specific time value - * arg 1) The time value to convert. - * arg 2) The OS specific value to convert to. - */ -ap_status_t ap_get_os_time(struct atime_t *thetime, ap_os_time_t **atime) -{ - if (thetime == NULL) { - return APR_ENOTIME; - } - if (thetime->currtime == NULL) { - ap_implode_time(thetime); - } - atime = &(thetime->currtime); - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_put_os_time(ap_context_t *, ap_time_t **, ap_os_time_t *) - * Convert to apr time type from OS specific time value - * arg 1) The context to use. - * arg 2) The time value to convert to. - * arg 3) The OS specific value to convert. - */ -ap_status_t ap_put_os_time(ap_context_t *cont, struct atime_t **thetime, - ap_os_time_t *atime) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if (thetime == NULL) { - (*thetime) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); - (*thetime)->cntxt = cont; - } - (*thetime)->currtime = atime; - return APR_SUCCESS; -} - -/* ***APRDOC******************************************************** - * ap_status_t ap_timediff(ap_time_t *, ap_time_t *, ap_int32_t *) - * Retrieve the difference between two time structures in milliseconds. - * arg 1) The first time value - * arg 2) The second timevalue - * arg 3) The difference to return. - */ -ap_status_t ap_timediff(struct atime_t *a, struct atime_t *b, ap_int32_t *rv) -{ - register int us, s; - - us = a->currtime->tv_usec - b->currtime->tv_usec; - us /= 1000; - s = a->currtime->tv_sec - b->currtime->tv_sec; - s *= 1000; - *rv = s + us; - return APR_SUCCESS; -} - diff --git a/time/win32/access.c b/time/win32/access.c deleted file mode 100644 index 2e80e3b66..000000000 --- a/time/win32/access.c +++ /dev/null @@ -1,267 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTwARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" - -ap_status_t ap_get_curtime(struct atime_t *time, ap_int64_t *rv) -{ - if (time) { - (*rv) = time->currtime; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_sec(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wSecond; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_min(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wMinute; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_hour(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wHour; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_mday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wDay; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_mon(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wMonth; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_year(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wYear; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_get_wday(struct atime_t *time, ap_int32_t *rv) -{ - if (time) { - (*rv) = time->explodedtime->wDayOfWeek; - return APR_SUCCESS; - } - return APR_ENOTIME; -} - -ap_status_t ap_set_sec(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wSecond = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_min(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wMinute = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_hour(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wHour = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_mday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wDay = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_mon(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wMonth = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_year(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wYear = value; - return APR_SUCCESS; -} - -ap_status_t ap_set_wday(struct atime_t *time, ap_int32_t value) -{ - if (!time) { - return APR_ENOTIME; - } - if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)ap_pcalloc(time->cntxt, - sizeof(SYSTEMTIME)); - } - if (time->explodedtime == NULL) { - return APR_ENOMEM; - } - time->explodedtime->wDayOfWeek = value; - return APR_SUCCESS; -} - -ap_status_t ap_get_timedata(struct atime_t *atime, void *data) -{ - if (atime != NULL) { - return ap_get_userdata(atime->cntxt, &data); - } - else { - data = NULL; - return APR_ENOTIME; - } -} - -ap_status_t ap_set_timedata(struct atime_t *atime, void *data) -{ - if (atime != NULL) { - return ap_set_userdata(atime->cntxt, data); - } - else { - data = NULL; - return APR_ENOTIME; - } -} - - diff --git a/time/win32/atime.h b/time/win32/atime.h deleted file mode 100644 index cba8000da..000000000 --- a/time/win32/atime.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#ifndef ATIME_H -#define ATIME_H - -#include "apr_time.h" -#include - -struct atime_t { - ap_context_t *cntxt; - time_t currtime; - SYSTEMTIME *explodedtime; -}; - - -#endif /* ! ATIME_H */ - diff --git a/time/win32/time.c b/time/win32/time.c deleted file mode 100644 index b61a547f9..000000000 --- a/time/win32/time.c +++ /dev/null @@ -1,158 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The Apache Group. 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 acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * 4. The names "Apache Server" and "Apache Group" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the Apache Group - * for use in the Apache HTTP server project (http://www.apache.org/)." - * - * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY - * EXPRESSED 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 APACHE GROUP OR - * ITS 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. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Group. - * For more information on the Apache Group and the Apache HTTP server - * project, please see . - * - */ - -#include "atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include -#include -#include - -ap_status_t ap_make_time(ap_context_t *cont, struct atime_t **new) -{ - (*new) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); - - if ((*new) == NULL) { - return APR_ENOMEM; - } - - (*new)->cntxt = cont; - (*new)->currtime = -1; - (*new)->explodedtime = NULL; - return APR_SUCCESS; -} - -ap_status_t ap_current_time(struct atime_t *new) -{ - if (!new) { - return APR_ENOTIME; - } - if (new->explodedtime == NULL) { - new->explodedtime = (SYSTEMTIME *)ap_palloc(new->cntxt, sizeof(SYSTEMTIME)); - } - GetSystemTime(new->explodedtime); - return APR_SUCCESS; -} - -ap_status_t ap_explode_time(struct atime_t *atime, ap_timetype_e type) -{ - if (!atime || !atime->explodedtime) { - return APR_ENOTIME; - } - return APR_SUCCESS; -} - -ap_status_t ap_implode_time(struct atime_t *atime) -{ - FILETIME temp; - - if (!atime || !atime->explodedtime) { - return APR_ENOTIME; - } - - if (SystemTimeToFileTime(atime->explodedtime, &temp) == 0) { - return APR_EEXIST; - } - atime->currtime = WinTimeToUnixTime(&temp); - return APR_SUCCESS; -} - -ap_status_t ap_get_os_time(struct atime_t *thetime, ap_os_time_t **atime) -{ - if (thetime == NULL) { - return APR_ENOTIME; - } - if (thetime->explodedtime == NULL) { - ap_explode_time(thetime, APR_LOCALTIME); - } - *atime = thetime->explodedtime; - return APR_SUCCESS; -} - -ap_status_t ap_put_os_time(ap_context_t *cont, struct atime_t **thetime, - ap_os_time_t *atime) -{ - if (cont == NULL) { - return APR_ENOCONT; - } - if (thetime == NULL) { - (*thetime) = (struct atime_t *)ap_palloc(cont, sizeof(struct atime_t)); - (*thetime)->cntxt = cont; - } - (*thetime)->explodedtime = atime; - return APR_SUCCESS; -} - -ap_status_t ap_timediff(struct atime_t *a, struct atime_t *b, ap_int32_t *rv) -{ - FILETIME fa, fb; - LONGLONG ia = 0, ib = 0; - - SystemTimeToFileTime(a->explodedtime, &fa); - SystemTimeToFileTime(b->explodedtime, &fb); - - ia = fa.dwHighDateTime; - ia = ia << 32; - ia |= fa.dwLowDateTime; - - ib = fb.dwHighDateTime; - ib = ib << 32; - ib |= fb.dwLowDateTime; - - *rv = (int)((ia - ib) / 10000); - return APR_SUCCESS; -} \ No newline at end of file diff --git a/time/win32/time.def b/time/win32/time.def deleted file mode 100644 index ca5675dcb..000000000 --- a/time/win32/time.def +++ /dev/null @@ -1,30 +0,0 @@ -; time.def : - -LIBRARY time -DESCRIPTION '' - -EXPORTS - ; Add new API calls to the end of this list. - ap_make_time @1 - ap_current_time @2 - ap_explode_time @3 - ap_implode_time @4 - ap_get_curtime @5 - ap_get_sec @6 - ap_get_min @7 - ap_get_hour @8 - ap_get_mday @9 - ap_get_mon @10 - ap_get_year @11 - ap_get_wday @12 - ap_set_sec @13 - ap_set_min @14 - ap_set_hour @15 - ap_set_mday @16 - ap_set_mon @17 - ap_set_year @18 - ap_set_wday @19 - ap_get_timedata @20 - ap_set_timedata @21 - ap_get_os_time @22 - ap_timediff @23 \ No newline at end of file diff --git a/time/win32/time.dsp b/time/win32/time.dsp deleted file mode 100644 index c116dbad6..000000000 --- a/time/win32/time.dsp +++ /dev/null @@ -1,105 +0,0 @@ -# Microsoft Developer Studio Project File - Name="time" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=time - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "time.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "time.mak" CFG="time - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "time - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "time - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "time - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 - -!ELSEIF "$(CFG)" == "time - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\Debug\lib.lib ..\..\misc\win32\Debug\misc.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "time - Win32 Release" -# Name "time - Win32 Debug" -# Begin Source File - -SOURCE=.\access.c -# End Source File -# Begin Source File - -SOURCE=.\atime.h -# End Source File -# Begin Source File - -SOURCE=.\time.c -# End Source File -# Begin Source File - -SOURCE=.\time.def -# End Source File -# End Target -# End Project -- cgit v1.2.1