summaryrefslogtreecommitdiffstats
path: root/rubbos/app/httpd-2.0.64/srclib/apr/file_io
diff options
context:
space:
mode:
authorhongbotian <hongbo.tianhongbo@huawei.com>2015-11-30 03:10:21 -0500
committerhongbotian <hongbo.tianhongbo@huawei.com>2015-11-30 03:10:21 -0500
commitc0b7206652b2852bc574694e7ba07ba1c2acdc00 (patch)
tree5cb95cb0e19e03610525903df46279df2c3b7eb1 /rubbos/app/httpd-2.0.64/srclib/apr/file_io
parentb6d3d6e668b793220f2d3af1bc3e828553dc3fe6 (diff)
delete app
Change-Id: Id4c572809969ebe89e946e88063eaed262cff3f2 Signed-off-by: hongbotian <hongbo.tianhongbo@huawei.com>
Diffstat (limited to 'rubbos/app/httpd-2.0.64/srclib/apr/file_io')
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filepath.c4
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filestat.c421
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filesys.c106
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/flock.c39
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/mktemp.c54
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/pipe.c185
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/Makefile.in31
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/copy.c1
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/dir.c175
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fileacc.c18
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filedup.c124
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath.c16
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath_util.c1
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filestat.c237
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filesys.c148
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/flock.c37
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fullrw.c1
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/maperrorcode.c95
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/mktemp.c1
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/open.c244
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/pipe.c177
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/readwrite.c370
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/seek.c119
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/tempdir.c1
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/copy.obin15048 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/dir.obin25576 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fileacc.obin10544 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filedup.obin15712 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath.obin20008 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath_util.obin10088 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filestat.obin23928 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/flock.obin9552 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fullrw.obin8576 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/mktemp.obin9416 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/open.obin25744 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/pipe.obin17960 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/readwrite.obin28144 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/seek.obin14400 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/tempdir.obin14232 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile29
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile.in29
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.c131
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.obin15024 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.c323
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.obin25544 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.c119
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.obin10488 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.c149
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.obin15560 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.c314
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.obin19872 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.c111
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.obin10024 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.c311
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.obin23824 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.c120
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.obin9472 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.c63
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.obin8480 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.c208
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.obin9352 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.c303
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.obin25672 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.c227
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.obin17896 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.c387
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.obin28096 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.c105
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.obin14360 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.c136
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.obin13528 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/dir.c393
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filedup.c216
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filepath.c985
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filestat.c767
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filesys.c229
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/flock.c86
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/open.c628
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/pipe.c235
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/readwrite.c524
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/seek.c171
96 files changed, 0 insertions, 10084 deletions
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filepath.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filepath.c
deleted file mode 100644
index e4bb3f36..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filepath.c
+++ /dev/null
@@ -1,4 +0,0 @@
-/* NetWare & Win32 have much in common with regards to file names (both are
- * DOSish) so it makes sense to share some code
- */
-#include "../win32/filepath.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filestat.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filestat.c
deleted file mode 100644
index def63b7e..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filestat.c
+++ /dev/null
@@ -1,421 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "fsio.h"
-#include "nks/dirio.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_errno.h"
-#include "apr_hash.h"
-#include "apr_thread_rwlock.h"
-
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-
-#define APR_HAS_PSA
-
-static apr_filetype_e filetype_from_mode(mode_t mode)
-{
- apr_filetype_e type = APR_NOFILE;
-
- if (S_ISREG(mode))
- type = APR_REG;
- else if (S_ISDIR(mode))
- type = APR_DIR;
- else if (S_ISCHR(mode))
- type = APR_CHR;
- else if (S_ISBLK(mode))
- type = APR_BLK;
- else if (S_ISFIFO(mode))
- type = APR_PIPE;
- else if (S_ISLNK(mode))
- type = APR_LNK;
- else if (S_ISSOCK(mode))
- type = APR_SOCK;
- else
- type = APR_UNKFILE;
- return type;
-}
-
-static void fill_out_finfo(apr_finfo_t *finfo, struct stat *info,
- apr_int32_t wanted)
-{
- finfo->valid = APR_FINFO_MIN | APR_FINFO_IDENT | APR_FINFO_NLINK
- | APR_FINFO_OWNER | APR_FINFO_PROT;
- finfo->protection = apr_unix_mode2perms(info->st_mode);
- finfo->filetype = filetype_from_mode(info->st_mode);
- finfo->user = info->st_uid;
- finfo->group = info->st_gid;
- finfo->size = info->st_size;
- finfo->inode = info->st_ino;
- finfo->device = info->st_dev;
- finfo->nlink = info->st_nlink;
- apr_time_ansi_put(&finfo->atime, info->st_atime.tv_sec);
- apr_time_ansi_put(&finfo->mtime, info->st_mtime.tv_sec);
- apr_time_ansi_put(&finfo->ctime, info->st_ctime.tv_sec);
- /* ### needs to be revisited
- * if (wanted & APR_FINFO_CSIZE) {
- * finfo->csize = info->st_blocks * 512;
- * finfo->valid |= APR_FINFO_CSIZE;
- * }
- */
-}
-
-apr_status_t apr_file_info_get_locked(apr_finfo_t *finfo,
- apr_int32_t wanted,
- apr_file_t *thefile)
-{
- struct stat info;
-
- if (thefile->buffered) {
- apr_status_t rv = apr_file_flush_locked(thefile);
- if (rv != APR_SUCCESS)
- return rv;
- }
-
- if (fstat(thefile->filedes, &info) == 0) {
- finfo->pool = thefile->pool;
- finfo->fname = thefile->fname;
- fill_out_finfo(finfo, &info, wanted);
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo,
- apr_int32_t wanted,
- apr_file_t *thefile)
-{
- struct stat info;
-
- if (thefile->buffered) {
- apr_status_t rv = apr_file_flush(thefile);
- if (rv != APR_SUCCESS)
- return rv;
- }
-
- if (fstat(thefile->filedes, &info) == 0) {
- finfo->pool = thefile->pool;
- finfo->fname = thefile->fname;
- fill_out_finfo(finfo, &info, wanted);
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname,
- apr_fileperms_t perms)
-{
- mode_t mode = apr_unix_perms2mode(perms);
-
- if (chmod(fname, mode) == -1)
- return errno;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
- apr_fileattrs_t attributes,
- apr_fileattrs_t attr_mask,
- apr_pool_t *pool)
-{
- apr_status_t status;
- apr_finfo_t finfo;
-
- /* Don't do anything if we can't handle the requested attributes */
- if (!(attr_mask & (APR_FILE_ATTR_READONLY
- | APR_FILE_ATTR_EXECUTABLE)))
- return APR_SUCCESS;
-
- status = apr_stat(&finfo, fname, APR_FINFO_PROT, pool);
- if (!APR_STATUS_IS_SUCCESS(status))
- return status;
-
- /* ### TODO: should added bits be umask'd? */
- if (attr_mask & APR_FILE_ATTR_READONLY)
- {
- if (attributes & APR_FILE_ATTR_READONLY)
- {
- finfo.protection &= ~APR_UWRITE;
- finfo.protection &= ~APR_GWRITE;
- finfo.protection &= ~APR_WWRITE;
- }
- else
- {
- /* ### umask this! */
- finfo.protection |= APR_UWRITE;
- finfo.protection |= APR_GWRITE;
- finfo.protection |= APR_WWRITE;
- }
- }
-
- if (attr_mask & APR_FILE_ATTR_EXECUTABLE)
- {
- if (attributes & APR_FILE_ATTR_EXECUTABLE)
- {
- /* ### umask this! */
- finfo.protection |= APR_UEXECUTE;
- finfo.protection |= APR_GEXECUTE;
- finfo.protection |= APR_WEXECUTE;
- }
- else
- {
- finfo.protection &= ~APR_UEXECUTE;
- finfo.protection &= ~APR_GEXECUTE;
- finfo.protection &= ~APR_WEXECUTE;
- }
- }
-
- return apr_file_perms_set(fname, finfo.protection);
-}
-
-#ifndef APR_HAS_PSA
-static apr_status_t stat_cache_cleanup(void *data)
-{
- apr_pool_t *p = (apr_pool_t *)getGlobalPool();
- apr_hash_index_t *hi;
- apr_hash_t *statCache = (apr_hash_t*)data;
- char *key;
- apr_ssize_t keylen;
- NXPathCtx_t pathctx;
-
- for (hi = apr_hash_first(p, statCache); hi; hi = apr_hash_next(hi)) {
- apr_hash_this(hi, (const void**)&key, &keylen, (void**)&pathctx);
-
- if (pathctx) {
- NXFreePathContext(pathctx);
- }
- }
-
- return APR_SUCCESS;
-}
-
-int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestmap, apr_pool_t *p)
-{
- apr_pool_t *gPool = (apr_pool_t *)getGlobalPool();
- apr_hash_t *statCache = NULL;
- apr_thread_rwlock_t *rwlock = NULL;
-
- NXPathCtx_t pathctx = 0;
- char *ptr = NULL, *tr;
- int len = 0, x;
- char *ppath;
- char *pinfo;
-
- if (ctx == 1) {
-
- /* If there isn't a global pool then just stat the file
- and return */
- if (!gPool) {
- char poolname[50];
-
- if (apr_pool_create(&gPool, NULL) != APR_SUCCESS) {
- return getstat(ctx, path, buf, requestmap);
- }
-
- setGlobalPool(gPool);
- apr_pool_tag(gPool, apr_pstrdup(gPool, "cstat_mem_pool"));
-
- statCache = apr_hash_make(gPool);
- apr_pool_userdata_set ((void*)statCache, "STAT_CACHE", stat_cache_cleanup, gPool);
-
- apr_thread_rwlock_create(&rwlock, gPool);
- apr_pool_userdata_set ((void*)rwlock, "STAT_CACHE_LOCK", apr_pool_cleanup_null, gPool);
- }
- else {
- apr_pool_userdata_get((void**)&statCache, "STAT_CACHE", gPool);
- apr_pool_userdata_get((void**)&rwlock, "STAT_CACHE_LOCK", gPool);
- }
-
- if (!gPool || !statCache || !rwlock) {
- return getstat(ctx, path, buf, requestmap);
- }
-
- for (x = 0,tr = path;*tr != '\0';tr++,x++) {
- if (*tr == '\\' || *tr == '/') {
- ptr = tr;
- len = x;
- }
- if (*tr == ':') {
- ptr = "\\";
- len = x;
- }
- }
-
- if (ptr) {
- ppath = apr_pstrndup (p, path, len);
- strlwr(ppath);
- if (ptr[1] != '\0') {
- ptr++;
- }
- /* If the path ended in a trailing slash then our result path
- will be a single slash. To avoid stat'ing the root with a
- slash, we need to make sure we stat the current directory
- with a dot */
- if (((*ptr == '/') || (*ptr == '\\')) && (*(ptr+1) == '\0')) {
- pinfo = apr_pstrdup (p, ".");
- }
- else {
- pinfo = apr_pstrdup (p, ptr);
- }
- }
-
- /* If we have a statCache then try to pull the information
- from the cache. Otherwise just stat the file and return.*/
- if (statCache) {
- apr_thread_rwlock_rdlock(rwlock);
- pathctx = (NXPathCtx_t) apr_hash_get(statCache, ppath, APR_HASH_KEY_STRING);
- apr_thread_rwlock_unlock(rwlock);
- if (pathctx) {
- return getstat(pathctx, pinfo, buf, requestmap);
- }
- else {
- int err;
-
- err = NXCreatePathContext(0, ppath, 0, NULL, &pathctx);
- if (!err) {
- apr_thread_rwlock_wrlock(rwlock);
- apr_hash_set(statCache, apr_pstrdup(gPool,ppath) , APR_HASH_KEY_STRING, (void*)pathctx);
- apr_thread_rwlock_unlock(rwlock);
- return getstat(pathctx, pinfo, buf, requestmap);
- }
- }
- }
- }
- return getstat(ctx, path, buf, requestmap);
-}
-#endif
-
-APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo,
- const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- struct stat info;
- int srv;
- NXPathCtx_t pathCtx = 0;
-
- getcwdpath(NULL, &pathCtx, CTX_ACTUAL_CWD);
-#ifdef APR_HAS_PSA
- srv = getstat(pathCtx, (char*)fname, &info, ST_STAT_BITS|ST_NAME_BIT);
-#else
- srv = cstat(pathCtx, (char*)fname, &info, ST_STAT_BITS|ST_NAME_BIT, pool);
-#endif
- errno = srv;
-
- if (srv == 0) {
- finfo->pool = pool;
- finfo->fname = fname;
- fill_out_finfo(finfo, &info, wanted);
- if (wanted & APR_FINFO_LINK)
- wanted &= ~APR_FINFO_LINK;
- if (wanted & APR_FINFO_NAME) {
- finfo->name = apr_pstrdup(pool, info.st_name);
- finfo->valid |= APR_FINFO_NAME;
- }
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
- }
- else {
-#if !defined(ENOENT) || !defined(ENOTDIR)
-#error ENOENT || ENOTDIR not defined; please see the
-#error comments at this line in the source for a workaround.
- /*
- * If ENOENT || ENOTDIR is not defined in one of the your OS's
- * include files, APR cannot report a good reason why the stat()
- * of the file failed; there are cases where it can fail even though
- * the file exists. This opens holes in Apache, for example, because
- * it becomes possible for someone to get a directory listing of a
- * directory even though there is an index (eg. index.html) file in
- * it. If you do not have a problem with this, delete the above
- * #error lines and start the compile again. If you need to do this,
- * please submit a bug report to http://www.apache.org/bug_report.html
- * letting us know that you needed to do this. Please be sure to
- * include the operating system you are using.
- */
- /* WARNING: All errors will be handled as not found
- */
-#if !defined(ENOENT)
- return APR_ENOENT;
-#else
- /* WARNING: All errors but not found will be handled as not directory
- */
- if (errno != ENOENT)
- return APR_ENOENT;
- else
- return errno;
-#endif
-#else /* All was defined well, report the usual: */
- return errno;
-#endif
- }
-}
-
-/* Perhaps this becomes nothing but a macro?
- */
-APR_DECLARE(apr_status_t) apr_lstat(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- return apr_stat(finfo, fname, wanted | APR_FINFO_LINK, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
- apr_time_t mtime,
- apr_pool_t *pool)
-{
- apr_status_t status;
- apr_finfo_t finfo;
-
- status = apr_stat(&finfo, fname, APR_FINFO_ATIME, pool);
- if (!APR_STATUS_IS_SUCCESS(status)) {
- return status;
- }
-
-#ifdef HAVE_UTIMES
- {
- struct timeval tvp[2];
-
- tvp[0].tv_sec = apr_time_sec(finfo.atime);
- tvp[0].tv_usec = apr_time_usec(finfo.atime);
- tvp[1].tv_sec = apr_time_sec(mtime);
- tvp[1].tv_usec = apr_time_usec(mtime);
-
- if (utimes(fname, tvp) == -1) {
- return errno;
- }
- }
-#elif defined(HAVE_UTIME)
- {
- struct utimbuf buf;
-
- buf.actime = (time_t) (finfo.atime / APR_USEC_PER_SEC);
- buf.modtime = (time_t) (mtime / APR_USEC_PER_SEC);
-
- if (utime(fname, &buf) == -1) {
- return errno;
- }
- }
-#else
- return APR_ENOTIMPL;
-#endif
-
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filesys.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filesys.c
deleted file mode 100644
index 05c44cec..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/filesys.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-
-apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p)
-{
-/* See the Windows code to figure out what to do here.
- It probably checks to make sure that the root exists
- and case it correctly according to the file system.
-*/
- *rootpath = apr_pstrdup(p, root);
- return APR_SUCCESS;
-}
-
-apr_status_t filepath_has_drive(const char *rootpath, int only, apr_pool_t *p)
-{
- char *s;
-
- if (rootpath) {
- s = strchr (rootpath, ':');
- if (only)
- /* Test if the path only has a drive/volume and nothing else
- */
- return (s && (s != rootpath) && !s[1]);
- else
- /* Test if the path includes a drive/volume
- */
- return (s && (s != rootpath));
- }
- return 0;
-}
-
-apr_status_t filepath_compare_drive(const char *path1, const char *path2, apr_pool_t *p)
-{
- char *s1, *s2;
-
- if (path1 && path2) {
- s1 = strchr (path1, ':');
- s2 = strchr (path2, ':');
-
- /* Make sure that they both have a drive/volume delimiter
- and are the same size. Then see if they match.
- */
- if (s1 && s2 && ((s1-path1) == (s2-path2))) {
- return strnicmp (s1, s2, s1-path1);
- }
- }
- return -1;
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags,
- apr_pool_t *p)
-{
- char path[APR_PATH_MAX];
- char *ptr;
-
- /* use getcwdpath to make sure that we get the volume name*/
- if (!getcwdpath(path, NULL, 0)) {
- if (errno == ERANGE)
- return APR_ENAMETOOLONG;
- else
- return errno;
- }
- /* Strip off the server name if there is one*/
- ptr = strpbrk(path, "\\/:");
- if (!ptr) {
- return APR_ENOENT;
- }
- if (*ptr == ':') {
- ptr = path;
- }
- *rootpath = apr_pstrdup(p, ptr);
- if (!(flags & APR_FILEPATH_NATIVE)) {
- for (ptr = *rootpath; *ptr; ++ptr) {
- if (*ptr == '\\')
- *ptr = '/';
- }
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_set(const char *rootpath,
- apr_pool_t *p)
-{
- if (chdir2(rootpath) != 0)
- return errno;
- return APR_SUCCESS;
-}
-
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/flock.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/flock.c
deleted file mode 100644
index c083a0ed..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/flock.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <nks/fsio.h>
-#include "apr_arch_file_io.h"
-
-
-apr_status_t apr_file_lock(apr_file_t *thefile, int type)
-{
- int fc;
-
- fc = (type & APR_FLOCK_NONBLOCK) ? NX_RANGE_LOCK_TRYLOCK : NX_RANGE_LOCK_CHECK;
-
- if(NXFileRangeLock(thefile->filedes,fc, 0, 0) == -1)
- return errno;
-
- return APR_SUCCESS;
-}
-
-apr_status_t apr_file_unlock(apr_file_t *thefile)
-{
- if(NXFileRangeUnlock(thefile->filedes,NX_RANGE_LOCK_CANCEL,0 , 0) == -1)
- return errno;
-
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/mktemp.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/mktemp.c
deleted file mode 100644
index 2a71af7d..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/mktemp.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_private.h"
-#include "apr_file_io.h" /* prototype of apr_mkstemp() */
-#include "apr_strings.h" /* prototype of apr_mkstemp() */
-#include "apr_arch_file_io.h" /* prototype of apr_mkstemp() */
-#include "apr_portable.h" /* for apr_os_file_put() */
-
-#include <stdlib.h> /* for mkstemp() - Single Unix */
-
-APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_int32_t flags, apr_pool_t *p)
-{
- int fd;
- apr_status_t rv;
-
- flags = (!flags) ? APR_CREATE | APR_READ | APR_WRITE |
- APR_DELONCLOSE : flags & ~APR_EXCL;
-
- fd = mkstemp(template);
- if (fd == -1) {
- return errno;
- }
- /* We need to reopen the file to get rid of the o_excl flag.
- * Otherwise file locking will not allow the file to be shared.
- */
- close(fd);
- if ((rv = apr_file_open(fp, template, flags|APR_FILE_NOCLEANUP,
- APR_UREAD | APR_UWRITE, p)) == APR_SUCCESS) {
-
-
- if (!(flags & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register((*fp)->pool, (void *)(*fp),
- apr_unix_file_cleanup,
- apr_unix_child_file_cleanup);
- }
- }
-
- return rv;
-}
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/pipe.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/pipe.c
deleted file mode 100644
index 1e573615..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/netware/pipe.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <nks/fsio.h>
-#include <nks/errno.h>
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_arch_inherit.h"
-
-static apr_status_t pipeblock(apr_file_t *thepipe)
-{
-#ifdef USE_FLAGS
- int err;
- unsigned long flags;
-
- if (fcntl(thepipe->filedes, F_GETFL, &flags) != -1)
- {
- flags &= ~FNDELAY;
- fcntl(thepipe->filedes, F_SETFL, flags);
- }
-#else
- errno = 0;
- fcntl(thepipe->filedes, F_SETFL, 0);
-#endif
-
- if (errno)
- return errno;
-
- thepipe->blocking = BLK_ON;
- return APR_SUCCESS;
-}
-
-static apr_status_t pipenonblock(apr_file_t *thepipe)
-{
-#ifdef USE_FLAGS
- int err;
- unsigned long flags;
-
- errno = 0;
- if (fcntl(thepipe->filedes, F_GETFL, &flags) != -1)
- {
- flags |= FNDELAY;
- fcntl(thepipe->filedes, F_SETFL, flags);
- }
-#else
- errno = 0;
- fcntl(thepipe->filedes, F_SETFL, FNDELAY);
-#endif
-
- if (errno)
- return errno;
-
- thepipe->blocking = BLK_OFF;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
-{
- if (thepipe->is_pipe == 1) {
- thepipe->timeout = timeout;
- if (timeout >= 0) {
- if (thepipe->blocking != BLK_OFF) { /* blocking or unknown state */
- return pipenonblock(thepipe);
- }
- }
- else {
- if (thepipe->blocking != BLK_ON) { /* non-blocking or unknown state */
- return pipeblock(thepipe);
- }
- }
- return APR_SUCCESS;
- }
- return APR_EINVAL;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
-{
- if (thepipe->is_pipe == 1) {
- *timeout = thepipe->timeout;
- return APR_SUCCESS;
- }
- return APR_EINVAL;
-}
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
- apr_os_file_t *thefile,
- int register_cleanup,
- apr_pool_t *pool)
-{
- int *dafile = thefile;
-
- (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->eof_hit = 0;
- (*file)->is_pipe = 1;
- (*file)->blocking = BLK_UNKNOWN; /* app needs to make a timeout call */
- (*file)->timeout = -1;
- (*file)->ungetchar = -1; /* no char avail */
- (*file)->filedes = *dafile;
- if (!register_cleanup) {
- (*file)->flags = APR_FILE_NOCLEANUP;
- }
- (*file)->buffered = 0;
-#if APR_HAS_THREADS
- (*file)->thlock = NULL;
-#endif
- if (register_cleanup) {
- apr_pool_cleanup_register((*file)->pool, (void *)(*file),
- apr_unix_file_cleanup,
- apr_pool_cleanup_null);
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
- apr_os_file_t *thefile,
- apr_pool_t *pool)
-{
- return apr_os_pipe_put_ex(file, thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
-{
- int filedes[2];
- int err;
-
- if (pipe(filedes) == -1) {
- return errno;
- }
-
- (*in) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
- (*out) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
-
- (*in)->pool =
- (*out)->pool = pool;
- (*in)->filedes = filedes[0];
- (*out)->filedes = filedes[1];
- (*in)->flags = APR_INHERIT;
- (*out)->flags = APR_INHERIT;
- (*in)->is_pipe =
- (*out)->is_pipe = 1;
- (*out)->fname =
- (*in)->fname = NULL;
- (*in)->buffered =
- (*out)->buffered = 0;
- (*in)->blocking =
- (*out)->blocking = BLK_ON;
- (*in)->timeout =
- (*out)->timeout = -1;
- (*in)->ungetchar = -1;
- (*in)->thlock =
- (*out)->thlock = NULL;
-
- apr_pool_cleanup_register((*in)->pool, (void *)(*in), apr_unix_file_cleanup,
- apr_pool_cleanup_null);
- apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup,
- apr_pool_cleanup_null);
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename,
- apr_fileperms_t perm, apr_pool_t *pool)
-{
- return APR_ENOTIMPL;
-}
-
-
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/Makefile.in b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/Makefile.in
deleted file mode 100644
index a87f4242..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/Makefile.in
+++ /dev/null
@@ -1,31 +0,0 @@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-TARGETS = \
- dir.lo \
- fileacc.lo \
- filedup.lo \
- filestat.lo \
- open.lo \
- pipe.lo \
- readwrite.lo \
- seek.lo \
- flock.lo \
- maperrorcode.lo \
- fullrw.lo \
- filepath.lo \
- filepath_util.lo \
- filesys.lo \
- mktemp.lo \
- copy.lo \
- tempdir.lo
-
-# bring in rules.mk for standard functionality
-@INCLUDE_RULES@
-
-INCDIR=../../include
-OSDIR=$(INCDIR)/arch/@OSDIR@
-DEFOSDIR=$(INCDIR)/arch/@DEFAULT_OSDIR@
-INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR)
-
-# DO NOT REMOVE
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/copy.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/copy.c
deleted file mode 100644
index f4ce010f..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/copy.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../unix/copy.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/dir.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/dir.c
deleted file mode 100644
index dc194e3b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/dir.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include <string.h>
-
-static apr_status_t dir_cleanup(void *thedir)
-{
- apr_dir_t *dir = thedir;
- return apr_dir_close(dir);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, apr_pool_t *pool)
-{
- apr_dir_t *thedir = (apr_dir_t *)apr_palloc(pool, sizeof(apr_dir_t));
-
- if (thedir == NULL)
- return APR_ENOMEM;
-
- thedir->pool = pool;
- thedir->dirname = apr_pstrdup(pool, dirname);
-
- if (thedir->dirname == NULL)
- return APR_ENOMEM;
-
- thedir->handle = 0;
- thedir->validentry = FALSE;
- *new = thedir;
- apr_pool_cleanup_register(pool, thedir, dir_cleanup, apr_pool_cleanup_null);
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir)
-{
- int rv = 0;
-
- if (thedir->handle) {
- rv = DosFindClose(thedir->handle);
-
- if (rv == 0) {
- thedir->handle = 0;
- }
- }
-
- return APR_FROM_OS_ERROR(rv);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
- apr_dir_t *thedir)
-{
- int rv;
- ULONG entries = 1;
-
- if (thedir->handle == 0) {
- thedir->handle = HDIR_CREATE;
- rv = DosFindFirst(apr_pstrcat(thedir->pool, 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);
- }
-
- finfo->pool = thedir->pool;
- finfo->fname = NULL;
- finfo->valid = 0;
-
- if (rv == 0 && entries == 1) {
- thedir->validentry = TRUE;
-
- /* We passed a name off the stack that has popped */
- finfo->fname = NULL;
- finfo->size = thedir->entry.cbFile;
- finfo->csize = thedir->entry.cbFileAlloc;
-
- /* Only directories & regular files show up in directory listings */
- finfo->filetype = (thedir->entry.attrFile & FILE_DIRECTORY) ? APR_DIR : APR_REG;
-
- apr_os2_time_to_apr_time(&finfo->mtime, thedir->entry.fdateLastWrite,
- thedir->entry.ftimeLastWrite);
- apr_os2_time_to_apr_time(&finfo->atime, thedir->entry.fdateLastAccess,
- thedir->entry.ftimeLastAccess);
- apr_os2_time_to_apr_time(&finfo->ctime, thedir->entry.fdateCreation,
- thedir->entry.ftimeCreation);
-
- finfo->name = thedir->entry.achName;
- finfo->valid = APR_FINFO_NAME | APR_FINFO_MTIME | APR_FINFO_ATIME |
- APR_FINFO_CTIME | APR_FINFO_TYPE | APR_FINFO_SIZE |
- APR_FINFO_CSIZE;
-
- return APR_SUCCESS;
- }
-
- thedir->validentry = FALSE;
-
- if (rv)
- return APR_FROM_OS_ERROR(rv);
-
- return APR_ENOENT;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir)
-{
- return apr_dir_close(thedir);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *pool)
-{
- return APR_FROM_OS_ERROR(DosCreateDir(path, NULL));
-}
-
-
-
-apr_status_t apr_dir_make_recursive(const char *path, apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- return APR_ENOTIMPL;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool)
-{
- return APR_FROM_OS_ERROR(DosDeleteDir(path));
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir)
-{
- if (dir == NULL) {
- return APR_ENODIR;
- }
- *thedir = &dir->handle;
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir,
- apr_pool_t *pool)
-{
- if ((*dir) == NULL) {
- (*dir) = (apr_dir_t *)apr_pcalloc(pool, sizeof(apr_dir_t));
- (*dir)->pool = pool;
- }
- (*dir)->handle = *thedir;
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fileacc.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fileacc.c
deleted file mode 100644
index b5c1afd5..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fileacc.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "../unix/fileacc.c"
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filedup.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filedup.c
deleted file mode 100644
index 0077d2d6..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filedup.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include <string.h>
-#include "apr_arch_inherit.h"
-
-static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)
-{
- int rv;
- apr_file_t *dup_file;
-
- if (*new_file == NULL) {
- dup_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
-
- if (dup_file == NULL) {
- return APR_ENOMEM;
- }
-
- dup_file->filedes = -1;
- } else {
- dup_file = *new_file;
- }
-
- dup_file->pool = p;
- rv = DosDupHandle(old_file->filedes, &dup_file->filedes);
-
- if (rv) {
- return APR_FROM_OS_ERROR(rv);
- }
-
- dup_file->fname = apr_pstrdup(dup_file->pool, old_file->fname);
- dup_file->buffered = old_file->buffered;
- dup_file->isopen = old_file->isopen;
- dup_file->flags = old_file->flags & ~APR_INHERIT;
- /* TODO - dup pipes correctly */
- dup_file->pipe = old_file->pipe;
-
- if (*new_file == NULL) {
- apr_pool_cleanup_register(dup_file->pool, dup_file, apr_file_cleanup,
- apr_pool_cleanup_null);
- *new_file = dup_file;
- }
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)
-{
- if (*new_file) {
- apr_file_close(*new_file);
- (*new_file)->filedes = -1;
- }
-
- return file_dup(new_file, old_file, p);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p)
-{
- return file_dup(&new_file, old_file, p);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
- apr_file_t *old_file,
- apr_pool_t *p)
-{
- *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
- memcpy(*new_file, old_file, sizeof(apr_file_t));
- (*new_file)->pool = p;
-
- if (old_file->buffered) {
- (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE);
-
- if (old_file->direction == 1) {
- memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
- }
- else {
- memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
- }
-
- if (old_file->mutex) {
- apr_thread_mutex_create(&((*new_file)->mutex),
- APR_THREAD_MUTEX_DEFAULT, p);
- apr_thread_mutex_destroy(old_file->mutex);
- }
- }
-
- if (old_file->fname) {
- (*new_file)->fname = apr_pstrdup(p, old_file->fname);
- }
-
- if (!(old_file->flags & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register(p, (void *)(*new_file),
- apr_file_cleanup,
- apr_file_cleanup);
- }
-
- old_file->filedes = -1;
- apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
- apr_file_cleanup);
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath.c
deleted file mode 100644
index 9422faa9..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "../win32/filepath.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath_util.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath_util.c
deleted file mode 100644
index a89c173e..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filepath_util.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../unix/filepath_util.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filestat.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filestat.c
deleted file mode 100644
index 2e5dc24b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filestat.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define INCL_DOS
-#define INCL_DOSERRORS
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include <sys/time.h>
-#include "apr_strings.h"
-
-
-static void FS3_to_finfo(apr_finfo_t *finfo, FILESTATUS3 *fstatus)
-{
- finfo->protection = (fstatus->attrFile & FILE_READONLY) ? 0x555 : 0x777;
-
- if (fstatus->attrFile & FILE_DIRECTORY)
- finfo->filetype = APR_DIR;
- else
- finfo->filetype = APR_REG;
- /* XXX: No other possible types from FS3? */
-
- finfo->user = 0;
- finfo->group = 0;
- finfo->inode = 0;
- finfo->device = 0;
- finfo->size = fstatus->cbFile;
- finfo->csize = fstatus->cbFileAlloc;
- apr_os2_time_to_apr_time(&finfo->atime, fstatus->fdateLastAccess,
- fstatus->ftimeLastAccess );
- apr_os2_time_to_apr_time(&finfo->mtime, fstatus->fdateLastWrite,
- fstatus->ftimeLastWrite );
- apr_os2_time_to_apr_time(&finfo->ctime, fstatus->fdateCreation,
- fstatus->ftimeCreation );
- finfo->valid = APR_FINFO_TYPE | APR_FINFO_PROT | APR_FINFO_SIZE
- | APR_FINFO_CSIZE | APR_FINFO_MTIME
- | APR_FINFO_CTIME | APR_FINFO_ATIME | APR_FINFO_LINK;
-}
-
-
-
-static apr_status_t handle_type(apr_filetype_e *ftype, HFILE file)
-{
- ULONG filetype, fileattr, rc;
-
- rc = DosQueryHType(file, &filetype, &fileattr);
-
- if (rc == 0) {
- switch (filetype & 0xff) {
- case 0:
- *ftype = APR_REG;
- break;
-
- case 1:
- *ftype = APR_CHR;
- break;
-
- case 2:
- *ftype = APR_PIPE;
- break;
-
- default:
- /* Brian, is this correct???
- */
- *ftype = APR_UNKFILE;
- break;
- }
-
- return APR_SUCCESS;
- }
- return APR_FROM_OS_ERROR(rc);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted,
- apr_file_t *thefile)
-{
- ULONG rc;
- FILESTATUS3 fstatus;
-
- if (thefile->isopen) {
- if (thefile->buffered) {
- apr_status_t rv = apr_file_flush(thefile);
-
- if (rv != APR_SUCCESS) {
- return rv;
- }
- }
-
- rc = DosQueryFileInfo(thefile->filedes, FIL_STANDARD, &fstatus, sizeof(fstatus));
- }
- else
- rc = DosQueryPathInfo(thefile->fname, FIL_STANDARD, &fstatus, sizeof(fstatus));
-
- if (rc == 0) {
- FS3_to_finfo(finfo, &fstatus);
- finfo->fname = thefile->fname;
-
- if (finfo->filetype == APR_REG) {
- if (thefile->isopen) {
- return handle_type(&finfo->filetype, thefile->filedes);
- }
- } else {
- return APR_SUCCESS;
- }
- }
-
- finfo->protection = 0;
- finfo->filetype = APR_NOFILE;
- return APR_FROM_OS_ERROR(rc);
-}
-
-APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, apr_fileperms_t perms)
-{
- return APR_ENOTIMPL;
-}
-
-
-APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *cont)
-{
- ULONG rc;
- FILESTATUS3 fstatus;
-
- finfo->protection = 0;
- finfo->filetype = APR_NOFILE;
- finfo->name = NULL;
- rc = DosQueryPathInfo(fname, FIL_STANDARD, &fstatus, sizeof(fstatus));
-
- if (rc == 0) {
- FS3_to_finfo(finfo, &fstatus);
- finfo->fname = fname;
-
- if (wanted & APR_FINFO_NAME) {
- ULONG count = 1;
- HDIR hDir = HDIR_SYSTEM;
- FILEFINDBUF3 ffb;
- rc = DosFindFirst(fname, &hDir,
- FILE_DIRECTORY|FILE_HIDDEN|FILE_SYSTEM|FILE_ARCHIVED,
- &ffb, sizeof(ffb), &count, FIL_STANDARD);
- if (rc == 0 && count == 1) {
- finfo->name = apr_pstrdup(cont, ffb.achName);
- finfo->valid |= APR_FINFO_NAME;
- }
- }
- } else if (rc == ERROR_INVALID_ACCESS) {
- memset(finfo, 0, sizeof(apr_finfo_t));
- finfo->valid = APR_FINFO_TYPE | APR_FINFO_PROT;
- finfo->protection = 0666;
- finfo->filetype = APR_CHR;
-
- if (wanted & APR_FINFO_NAME) {
- finfo->name = apr_pstrdup(cont, fname);
- finfo->valid |= APR_FINFO_NAME;
- }
- } else {
- return APR_FROM_OS_ERROR(rc);
- }
-
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_lstat(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *cont)
-{
- return apr_stat(finfo, fname, wanted, cont);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
- apr_fileattrs_t attributes,
- apr_fileattrs_t attr_mask,
- apr_pool_t *cont)
-{
- FILESTATUS3 fs3;
- ULONG rc;
-
- /* Don't do anything if we can't handle the requested attributes */
- if (!(attr_mask & (APR_FILE_ATTR_READONLY
- | APR_FILE_ATTR_HIDDEN)))
- return APR_SUCCESS;
-
- rc = DosQueryPathInfo(fname, FIL_STANDARD, &fs3, sizeof(fs3));
- if (rc == 0) {
- ULONG old_attr = fs3.attrFile;
-
- if (attr_mask & APR_FILE_ATTR_READONLY)
- {
- if (attributes & APR_FILE_ATTR_READONLY) {
- fs3.attrFile |= FILE_READONLY;
- } else {
- fs3.attrFile &= ~FILE_READONLY;
- }
- }
-
- if (attr_mask & APR_FILE_ATTR_HIDDEN)
- {
- if (attributes & APR_FILE_ATTR_HIDDEN) {
- fs3.attrFile |= FILE_HIDDEN;
- } else {
- fs3.attrFile &= ~FILE_HIDDEN;
- }
- }
-
- if (fs3.attrFile != old_attr) {
- rc = DosSetPathInfo(fname, FIL_STANDARD, &fs3, sizeof(fs3), 0);
- }
- }
-
- return APR_FROM_OS_ERROR(rc);
-}
-
-
-/* ### Somebody please write this! */
-APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
- apr_time_t mtime,
- apr_pool_t *pool)
-{
- return APR_ENOTIMPL;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filesys.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filesys.c
deleted file mode 100644
index ae43bc0a..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/filesys.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#include <ctype.h>
-
-/* OS/2 Exceptions:
- *
- * Note that trailing spaces and trailing periods are never recorded
- * in the file system.
- *
- * Leading spaces and periods are accepted, however.
- * The * ? < > codes all have wildcard side effects
- * The " / \ : are exclusively component separator tokens
- * The system doesn't accept | for any (known) purpose
- * Oddly, \x7f _is_ acceptable ;)
- */
-
-const char c_is_fnchar[256] =
-{/* Reject all ctrl codes... */
- 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,
- /* " * / : < > ? */
- 1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0, 1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,
- /* \ */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,
- /* | */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,
- /* High bit codes are accepted */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
-};
-
-
-#define IS_SLASH(c) (c == '/' || c == '\\')
-
-
-apr_status_t filepath_root_test(char *path, apr_pool_t *p)
-{
- char drive = apr_toupper(path[0]);
-
- if (drive >= 'A' && drive <= 'Z' && path[1] == ':' && IS_SLASH(path[2]))
- return APR_SUCCESS;
-
- return APR_EBADPATH;
-}
-
-
-apr_status_t filepath_drive_get(char **rootpath, char drive,
- apr_int32_t flags, apr_pool_t *p)
-{
- char path[APR_PATH_MAX];
- char *pos;
- ULONG rc;
- ULONG bufsize = sizeof(path) - 3;
-
- path[0] = drive;
- path[1] = ':';
- path[2] = '/';
-
- rc = DosQueryCurrentDir(apr_toupper(drive) - 'A', path+3, &bufsize);
-
- if (rc) {
- return APR_FROM_OS_ERROR(rc);
- }
-
- if (!(flags & APR_FILEPATH_NATIVE)) {
- for (pos=path; *pos; pos++) {
- if (*pos == '\\')
- *pos = '/';
- }
- }
-
- *rootpath = apr_pstrdup(p, path);
- return APR_SUCCESS;
-}
-
-
-apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p)
-{
- if (root[0] && apr_islower(root[0]) && root[1] == ':') {
- *rootpath = apr_pstrdup(p, root);
- (*rootpath)[0] = apr_toupper((*rootpath)[0]);
- }
- else {
- *rootpath = root;
- }
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags,
- apr_pool_t *p)
-{
- char path[APR_PATH_MAX];
- ULONG drive;
- ULONG drivemap;
- ULONG rv, pathlen = sizeof(path) - 3;
- char *pos;
-
- DosQueryCurrentDisk(&drive, &drivemap);
- path[0] = '@' + drive;
- strcpy(path+1, ":\\");
- rv = DosQueryCurrentDir(drive, path+3, &pathlen);
-
- *defpath = apr_pstrdup(p, path);
-
- if (!(flags & APR_FILEPATH_NATIVE)) {
- for (pos=*defpath; *pos; pos++) {
- if (*pos == '\\')
- *pos = '/';
- }
- }
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p)
-{
- ULONG rv = 0;
-
- if (path[1] == ':')
- rv = DosSetDefaultDisk(apr_toupper(path[0]) - '@');
-
- if (rv == 0)
- rv = DosSetCurrentDir(path);
-
- return APR_FROM_OS_ERROR(rv);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/flock.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/flock.c
deleted file mode 100644
index ec940220..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/flock.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-
-APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type)
-{
- FILELOCK lockrange = { 0, 0x7fffffff };
- ULONG rc;
-
- rc = DosSetFileLocks(thefile->filedes, NULL, &lockrange,
- (type & APR_FLOCK_NONBLOCK) ? 0 : (ULONG)-1,
- (type & APR_FLOCK_TYPEMASK) == APR_FLOCK_SHARED);
- return APR_FROM_OS_ERROR(rc);
-}
-
-APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile)
-{
- FILELOCK unlockrange = { 0, 0x7fffffff };
- ULONG rc;
-
- rc = DosSetFileLocks(thefile->filedes, &unlockrange, NULL, 0, 0);
- return APR_FROM_OS_ERROR(rc);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fullrw.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fullrw.c
deleted file mode 100644
index cf629488..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/fullrw.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../unix/fullrw.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/maperrorcode.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/maperrorcode.c
deleted file mode 100644
index 282338bb..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/maperrorcode.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define INCL_DOSERRORS
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include <errno.h>
-#include <string.h>
-#include "apr_errno.h"
-
-static 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 },
- { ERROR_NO_SIGNAL_SENT, ESRCH },
- { ERROR_NO_DATA, APR_EAGAIN },
- { SOCEINTR, EINTR },
- { SOCEWOULDBLOCK, EWOULDBLOCK },
- { SOCEINPROGRESS, EINPROGRESS },
- { SOCEALREADY, EALREADY },
- { SOCENOTSOCK, ENOTSOCK },
- { SOCEDESTADDRREQ, EDESTADDRREQ },
- { SOCEMSGSIZE, EMSGSIZE },
- { SOCEPROTOTYPE, EPROTOTYPE },
- { SOCENOPROTOOPT, ENOPROTOOPT },
- { SOCEPROTONOSUPPORT, EPROTONOSUPPORT },
- { SOCESOCKTNOSUPPORT, ESOCKTNOSUPPORT },
- { SOCEOPNOTSUPP, EOPNOTSUPP },
- { SOCEPFNOSUPPORT, EPFNOSUPPORT },
- { SOCEAFNOSUPPORT, EAFNOSUPPORT },
- { SOCEADDRINUSE, EADDRINUSE },
- { SOCEADDRNOTAVAIL, EADDRNOTAVAIL },
- { SOCENETDOWN, ENETDOWN },
- { SOCENETUNREACH, ENETUNREACH },
- { SOCENETRESET, ENETRESET },
- { SOCECONNABORTED, ECONNABORTED },
- { SOCECONNRESET, ECONNRESET },
- { SOCENOBUFS, ENOBUFS },
- { SOCEISCONN, EISCONN },
- { SOCENOTCONN, ENOTCONN },
- { SOCESHUTDOWN, ESHUTDOWN },
- { SOCETOOMANYREFS, ETOOMANYREFS },
- { SOCETIMEDOUT, ETIMEDOUT },
- { SOCECONNREFUSED, ECONNREFUSED },
- { SOCELOOP, ELOOP },
- { SOCENAMETOOLONG, ENAMETOOLONG },
- { SOCEHOSTDOWN, EHOSTDOWN },
- { SOCEHOSTUNREACH, EHOSTUNREACH },
- { SOCENOTEMPTY, ENOTEMPTY },
- { SOCEPIPE, EPIPE }
-};
-
-#define MAPSIZE (sizeof(errormap)/sizeof(errormap[0]))
-
-int apr_canonical_error(apr_status_t err)
-{
- int rv = -1, index;
-
- if (err < APR_OS_START_SYSERR)
- return err;
-
- err -= APR_OS_START_SYSERR;
-
- for (index=0; index<MAPSIZE && errormap[index][0] != err; index++);
-
- if (index<MAPSIZE)
- rv = errormap[index][1];
- else
- fprintf(stderr, "apr_canonical_error: Unknown OS/2 error code %d\n", err );
-
- return rv;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/mktemp.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/mktemp.c
deleted file mode 100644
index 9e852360..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/mktemp.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../unix/mktemp.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/open.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/open.c
deleted file mode 100644
index 0994e7cf..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/open.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include "apr_portable.h"
-#include "apr_strings.h"
-#include "apr_arch_inherit.h"
-#include <string.h>
-
-apr_status_t apr_file_cleanup(void *thefile)
-{
- apr_file_t *file = thefile;
- return apr_file_close(file);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *pool)
-{
- int oflags = 0;
- int mflags = OPEN_FLAGS_FAIL_ON_ERROR|OPEN_SHARE_DENYNONE;
- int rv;
- ULONG action;
- apr_file_t *dafile = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t));
-
- dafile->pool = pool;
- dafile->isopen = FALSE;
- dafile->eof_hit = FALSE;
- dafile->buffer = NULL;
- dafile->flags = flag;
- dafile->blocking = BLK_ON;
-
- 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 (dafile->buffered) {
- dafile->buffer = apr_palloc(pool, APR_FILE_BUFSIZE);
- rv = apr_thread_mutex_create(&dafile->mutex, 0, pool);
-
- if (rv)
- return rv;
- }
-
- if (flag & APR_CREATE) {
- oflags |= OPEN_ACTION_CREATE_IF_NEW;
-
- if (!(flag & APR_EXCL) && !(flag & APR_TRUNCATE)) {
- oflags |= OPEN_ACTION_OPEN_IF_EXISTS;
- }
- }
-
- if ((flag & APR_EXCL) && !(flag & APR_CREATE))
- return APR_EACCES;
-
- if (flag & APR_TRUNCATE) {
- oflags |= OPEN_ACTION_REPLACE_IF_EXISTS;
- } else if ((oflags & 0xFF) == 0) {
- oflags |= OPEN_ACTION_OPEN_IF_EXISTS;
- }
-
- rv = DosOpen(fname, &(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 APR_FROM_OS_ERROR(rv);
-
- dafile->isopen = TRUE;
- dafile->fname = apr_pstrdup(pool, fname);
- dafile->filePtr = 0;
- dafile->bufpos = 0;
- dafile->dataRead = 0;
- dafile->direction = 0;
- dafile->pipe = FALSE;
-
- if (!(flag & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register(dafile->pool, dafile, apr_file_cleanup, apr_file_cleanup);
- }
-
- *new = dafile;
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
-{
- ULONG rc;
- apr_status_t status;
-
- if (file && file->isopen) {
- apr_file_flush(file);
- rc = DosClose(file->filedes);
-
- if (rc == 0) {
- file->isopen = FALSE;
- status = APR_SUCCESS;
-
- if (file->flags & APR_DELONCLOSE) {
- status = APR_FROM_OS_ERROR(DosDelete(file->fname));
- }
- } else {
- return APR_FROM_OS_ERROR(rc);
- }
- }
-
- if (file->buffered)
- apr_thread_mutex_destroy(file->mutex);
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
-{
- ULONG rc = DosDelete(path);
- return APR_FROM_OS_ERROR(rc);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, const char *to_path,
- apr_pool_t *p)
-{
- ULONG rc = DosMove(from_path, to_path);
-
- if (rc == ERROR_ACCESS_DENIED || rc == ERROR_ALREADY_EXISTS) {
- rc = DosDelete(to_path);
-
- if (rc == 0 || rc == ERROR_FILE_NOT_FOUND) {
- rc = DosMove(from_path, to_path);
- }
- }
-
- return APR_FROM_OS_ERROR(rc);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file)
-{
- *thefile = file->filedes;
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_int32_t flags, apr_pool_t *pool)
-{
- apr_os_file_t *dafile = thefile;
-
- (*file) = apr_palloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->filedes = *dafile;
- (*file)->isopen = TRUE;
- (*file)->eof_hit = FALSE;
- (*file)->flags = flags;
- (*file)->pipe = FALSE;
- (*file)->buffered = (flags & APR_BUFFERED) > 0;
-
- if ((*file)->buffered) {
- apr_status_t rv;
-
- (*file)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE);
- rv = apr_thread_mutex_create(&(*file)->mutex, 0, pool);
-
- if (rv)
- return rv;
- }
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
-{
- if (!fptr->isopen || fptr->eof_hit == 1) {
- return APR_EOF;
- }
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool)
-{
- apr_os_file_t fd = 2;
-
- return apr_os_file_put(thefile, &fd, 0, pool);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool)
-{
- apr_os_file_t fd = 1;
-
- return apr_os_file_put(thefile, &fd, 0, pool);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool)
-{
- apr_os_file_t fd = 0;
-
- return apr_os_file_put(thefile, &fd, 0, pool);
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(file);
-
-APR_IMPLEMENT_INHERIT_SET(file, flags, pool, apr_file_cleanup)
-
-APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, apr_file_cleanup)
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/pipe.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/pipe.c
deleted file mode 100644
index ee2b2b00..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/pipe.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define INCL_DOSERRORS
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include <string.h>
-#include <process.h>
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
-{
- ULONG filedes[2];
- ULONG rc, action;
- static int id = 0;
- char pipename[50];
-
- sprintf(pipename, "/pipe/%d.%d", getpid(), id++);
- rc = DosCreateNPipe(pipename, filedes, NP_ACCESS_INBOUND, NP_NOWAIT|1, 4096, 4096, 0);
-
- if (rc)
- return APR_FROM_OS_ERROR(rc);
-
- rc = DosConnectNPipe(filedes[0]);
-
- if (rc && rc != ERROR_PIPE_NOT_CONNECTED) {
- DosClose(filedes[0]);
- return APR_FROM_OS_ERROR(rc);
- }
-
- rc = DosOpen (pipename, filedes+1, &action, 0, FILE_NORMAL,
- OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW,
- OPEN_ACCESS_WRITEONLY | OPEN_SHARE_DENYREADWRITE,
- NULL);
-
- if (rc) {
- DosClose(filedes[0]);
- return APR_FROM_OS_ERROR(rc);
- }
-
- (*in) = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t));
- rc = DosCreateEventSem(NULL, &(*in)->pipeSem, DC_SEM_SHARED, FALSE);
-
- if (rc) {
- DosClose(filedes[0]);
- DosClose(filedes[1]);
- return APR_FROM_OS_ERROR(rc);
- }
-
- rc = DosSetNPipeSem(filedes[0], (HSEM)(*in)->pipeSem, 1);
-
- if (!rc) {
- rc = DosSetNPHState(filedes[0], NP_WAIT);
- }
-
- if (rc) {
- DosClose(filedes[0]);
- DosClose(filedes[1]);
- DosCloseEventSem((*in)->pipeSem);
- return APR_FROM_OS_ERROR(rc);
- }
-
- (*in)->pool = pool;
- (*in)->filedes = filedes[0];
- (*in)->fname = apr_pstrdup(pool, pipename);
- (*in)->isopen = TRUE;
- (*in)->buffered = FALSE;
- (*in)->flags = 0;
- (*in)->pipe = 1;
- (*in)->timeout = -1;
- (*in)->blocking = BLK_ON;
- apr_pool_cleanup_register(pool, *in, apr_file_cleanup, apr_pool_cleanup_null);
-
- (*out) = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t));
- (*out)->pool = pool;
- (*out)->filedes = filedes[1];
- (*out)->fname = apr_pstrdup(pool, pipename);
- (*out)->isopen = TRUE;
- (*out)->buffered = FALSE;
- (*out)->flags = 0;
- (*out)->pipe = 1;
- (*out)->timeout = -1;
- (*out)->blocking = BLK_ON;
- apr_pool_cleanup_register(pool, *out, apr_file_cleanup, apr_pool_cleanup_null);
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *pool)
-{
- /* Not yet implemented, interface not suitable */
- return APR_ENOTIMPL;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
-{
- if (thepipe->pipe == 1) {
- thepipe->timeout = timeout;
-
- if (thepipe->timeout >= 0) {
- if (thepipe->blocking != BLK_OFF) {
- thepipe->blocking = BLK_OFF;
- return APR_FROM_OS_ERROR(DosSetNPHState(thepipe->filedes, NP_NOWAIT));
- }
- }
- else if (thepipe->timeout == -1) {
- if (thepipe->blocking != BLK_ON) {
- thepipe->blocking = BLK_ON;
- return APR_FROM_OS_ERROR(DosSetNPHState(thepipe->filedes, NP_WAIT));
- }
- }
- }
- return APR_EINVAL;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
-{
- if (thepipe->pipe == 1) {
- *timeout = thepipe->timeout;
- return APR_SUCCESS;
- }
- return APR_EINVAL;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
- apr_os_file_t *thefile,
- int register_cleanup,
- apr_pool_t *pool)
-{
- (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->isopen = TRUE;
- (*file)->pipe = 1;
- (*file)->blocking = BLK_UNKNOWN; /* app needs to make a timeout call */
- (*file)->timeout = -1;
- (*file)->filedes = *thefile;
-
- if (register_cleanup) {
- apr_pool_cleanup_register(pool, *file, apr_file_cleanup,
- apr_pool_cleanup_null);
- }
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
- apr_os_file_t *thefile,
- apr_pool_t *pool)
-{
- return apr_os_pipe_put_ex(file, thefile, 0, pool);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/readwrite.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/readwrite.c
deleted file mode 100644
index f25a4210..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/readwrite.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define INCL_DOS
-#define INCL_DOSERRORS
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-
-#include <malloc.h>
-
-APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)
-{
- ULONG rc = 0;
- ULONG bytesread;
-
- if (!thefile->isopen) {
- *nbytes = 0;
- return APR_EBADF;
- }
-
- if (thefile->buffered) {
- char *pos = (char *)buf;
- ULONG blocksize;
- ULONG size = *nbytes;
-
- apr_thread_mutex_lock(thefile->mutex);
-
- if (thefile->direction == 1) {
- int rv = apr_file_flush(thefile);
-
- if (rv != APR_SUCCESS) {
- apr_thread_mutex_unlock(thefile->mutex);
- return rv;
- }
-
- thefile->bufpos = 0;
- thefile->direction = 0;
- thefile->dataRead = 0;
- }
-
- while (rc == 0 && size > 0) {
- if (thefile->bufpos >= thefile->dataRead) {
- ULONG bytesread;
- rc = DosRead(thefile->filedes, thefile->buffer,
- APR_FILE_BUFSIZE, &bytesread);
-
- if (bytesread == 0) {
- if (rc == 0)
- thefile->eof_hit = TRUE;
- break;
- }
-
- thefile->dataRead = bytesread;
- thefile->filePtr += thefile->dataRead;
- thefile->bufpos = 0;
- }
-
- blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
- memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
- thefile->bufpos += blocksize;
- pos += blocksize;
- size -= blocksize;
- }
-
- *nbytes = rc == 0 ? pos - (char *)buf : 0;
- apr_thread_mutex_unlock(thefile->mutex);
-
- if (*nbytes == 0 && rc == 0 && thefile->eof_hit) {
- return APR_EOF;
- }
-
- return APR_FROM_OS_ERROR(rc);
- } else {
- if (thefile->pipe)
- DosResetEventSem(thefile->pipeSem, &rc);
-
- rc = DosRead(thefile->filedes, buf, *nbytes, &bytesread);
-
- if (rc == ERROR_NO_DATA && thefile->timeout != 0) {
- int rcwait = DosWaitEventSem(thefile->pipeSem, thefile->timeout >= 0 ? thefile->timeout / 1000 : SEM_INDEFINITE_WAIT);
-
- if (rcwait == 0) {
- rc = DosRead(thefile->filedes, buf, *nbytes, &bytesread);
- }
- else if (rcwait == ERROR_TIMEOUT) {
- *nbytes = 0;
- return APR_TIMEUP;
- }
- }
-
- if (rc) {
- *nbytes = 0;
- return APR_FROM_OS_ERROR(rc);
- }
-
- *nbytes = bytesread;
-
- if (bytesread == 0) {
- thefile->eof_hit = TRUE;
- return APR_EOF;
- }
-
- return APR_SUCCESS;
- }
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
-{
- ULONG rc = 0;
- ULONG byteswritten;
-
- if (!thefile->isopen) {
- *nbytes = 0;
- return APR_EBADF;
- }
-
- if (thefile->buffered) {
- char *pos = (char *)buf;
- int blocksize;
- int size = *nbytes;
-
- apr_thread_mutex_lock(thefile->mutex);
-
- if ( thefile->direction == 0 ) {
- // Position file pointer for writing at the offset we are logically reading from
- ULONG offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
- if (offset != thefile->filePtr)
- DosSetFilePtr(thefile->filedes, offset, FILE_BEGIN, &thefile->filePtr );
- thefile->bufpos = thefile->dataRead = 0;
- thefile->direction = 1;
- }
-
- while (rc == 0 && size > 0) {
- if (thefile->bufpos == APR_FILE_BUFSIZE) // write buffer is full
- rc = apr_file_flush(thefile);
-
- blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ? APR_FILE_BUFSIZE - thefile->bufpos : size;
- memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);
- thefile->bufpos += blocksize;
- pos += blocksize;
- size -= blocksize;
- }
-
- apr_thread_mutex_unlock(thefile->mutex);
- return APR_FROM_OS_ERROR(rc);
- } else {
- if (thefile->flags & APR_APPEND) {
- FILELOCK all = { 0, 0x7fffffff };
- ULONG newpos;
- rc = DosSetFileLocks(thefile->filedes, NULL, &all, -1, 0);
-
- if (rc == 0) {
- rc = DosSetFilePtr(thefile->filedes, 0, FILE_END, &newpos);
-
- if (rc == 0) {
- rc = DosWrite(thefile->filedes, buf, *nbytes, &byteswritten);
- }
-
- DosSetFileLocks(thefile->filedes, &all, NULL, -1, 0);
- }
- } else {
- rc = DosWrite(thefile->filedes, buf, *nbytes, &byteswritten);
- }
-
- if (rc) {
- *nbytes = 0;
- return APR_FROM_OS_ERROR(rc);
- }
-
- *nbytes = byteswritten;
- return APR_SUCCESS;
- }
-}
-
-
-
-#ifdef HAVE_WRITEV
-
-APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes)
-{
- int bytes;
- if ((bytes = writev(thefile->filedes, vec, nvec)) < 0) {
- *nbytes = 0;
- return errno;
- }
- else {
- *nbytes = bytes;
- return APR_SUCCESS;
- }
-}
-#endif
-
-
-
-APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
-{
- ULONG rc;
- ULONG byteswritten;
-
- if (!thefile->isopen) {
- return APR_EBADF;
- }
-
- rc = DosWrite(thefile->filedes, &ch, 1, &byteswritten);
-
- if (rc) {
- return APR_FROM_OS_ERROR(rc);
- }
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
-{
- apr_off_t offset = -1;
- return apr_file_seek(thefile, APR_CUR, &offset);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
-{
- ULONG rc;
- apr_size_t bytesread;
-
- if (!thefile->isopen) {
- return APR_EBADF;
- }
-
- bytesread = 1;
- rc = apr_file_read(thefile, ch, &bytesread);
-
- if (rc) {
- return rc;
- }
-
- if (bytesread == 0) {
- thefile->eof_hit = TRUE;
- return APR_EOF;
- }
-
- return APR_SUCCESS;
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
-{
- apr_size_t len;
-
- len = strlen(str);
- return apr_file_write(thefile, str, &len);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
-{
- if (thefile->buffered) {
- ULONG written = 0;
- int rc = 0;
-
- if (thefile->direction == 1 && thefile->bufpos) {
- rc = DosWrite(thefile->filedes, thefile->buffer, thefile->bufpos, &written);
- thefile->filePtr += written;
-
- if (rc == 0)
- thefile->bufpos = 0;
- }
-
- return APR_FROM_OS_ERROR(rc);
- } else {
- /* There isn't anything to do if we aren't buffering the output
- * so just return success.
- */
- return APR_SUCCESS;
- }
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
-{
- apr_size_t readlen;
- apr_status_t rv = APR_SUCCESS;
- int i;
-
- for (i = 0; i < len-1; i++) {
- readlen = 1;
- rv = apr_file_read(thefile, str+i, &readlen);
-
- if (rv != APR_SUCCESS) {
- break;
- }
-
- if (readlen != 1) {
- rv = APR_EOF;
- break;
- }
-
- if (str[i] == '\n') {
- i++;
- break;
- }
- }
- str[i] = 0;
- if (i > 0) {
- /* we stored chars; don't report EOF or any other errors;
- * the app will find out about that on the next call
- */
- return APR_SUCCESS;
- }
- return rv;
-}
-
-
-
-APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr,
- const char *format, ...)
-{
- int cc;
- va_list ap;
- char *buf;
- int len;
-
- buf = malloc(HUGE_STRING_LEN);
- if (buf == NULL) {
- return 0;
- }
- va_start(ap, format);
- len = apr_vsnprintf(buf, HUGE_STRING_LEN, format, ap);
- cc = apr_file_puts(buf, fptr);
- va_end(ap);
- free(buf);
- return (cc == APR_SUCCESS) ? len : -1;
-}
-
-
-
-apr_status_t apr_file_check_read(apr_file_t *fd)
-{
- int rc;
-
- if (!fd->pipe)
- return APR_SUCCESS; /* Not a pipe, assume no waiting */
-
- rc = DosWaitEventSem(fd->pipeSem, SEM_IMMEDIATE_RETURN);
-
- if (rc == ERROR_TIMEOUT)
- return APR_TIMEUP;
-
- return APR_FROM_OS_ERROR(rc);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/seek.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/seek.c
deleted file mode 100644
index 6fdfe8e8..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/seek.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_lib.h"
-#include <string.h>
-#include <io.h>
-
-
-static apr_status_t setptr(apr_file_t *thefile, unsigned long pos )
-{
- long newbufpos;
- ULONG rc;
-
- if (thefile->direction == 1) {
- apr_status_t rv = apr_file_flush(thefile);
-
- if (rv != APR_SUCCESS) {
- return rv;
- }
-
- thefile->bufpos = thefile->direction = thefile->dataRead = 0;
- }
-
- newbufpos = pos - (thefile->filePtr - thefile->dataRead);
- if (newbufpos >= 0 && newbufpos <= thefile->dataRead) {
- thefile->bufpos = newbufpos;
- rc = 0;
- } else {
- rc = DosSetFilePtr(thefile->filedes, pos, FILE_BEGIN, &thefile->filePtr );
-
- if ( !rc )
- thefile->bufpos = thefile->dataRead = 0;
- }
-
- return APR_FROM_OS_ERROR(rc);
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset)
-{
- if (!thefile->isopen) {
- return APR_EBADF;
- }
-
- thefile->eof_hit = 0;
-
- if (thefile->buffered) {
- int rc = EINVAL;
- apr_finfo_t finfo;
-
- switch (where) {
- case APR_SET:
- rc = setptr(thefile, *offset);
- break;
-
- case APR_CUR:
- rc = setptr(thefile, thefile->filePtr - thefile->dataRead + thefile->bufpos + *offset);
- break;
-
- case APR_END:
- rc = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile);
- if (rc == APR_SUCCESS)
- rc = setptr(thefile, finfo.size + *offset);
- break;
- }
-
- *offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
- return rc;
- } else {
- switch (where) {
- case APR_SET:
- where = FILE_BEGIN;
- break;
-
- case APR_CUR:
- where = FILE_CURRENT;
- break;
-
- case APR_END:
- where = FILE_END;
- break;
- }
-
- return APR_FROM_OS_ERROR(DosSetFilePtr(thefile->filedes, *offset, where, (ULONG *)offset));
- }
-}
-
-
-
-APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset)
-{
- int rc = DosSetFileSize(fp->filedes, offset);
-
- if (rc != 0) {
- return APR_FROM_OS_ERROR(rc);
- }
-
- if (fp->buffered) {
- return setptr(fp, offset);
- }
-
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/tempdir.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/tempdir.c
deleted file mode 100644
index 6823569f..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/os2/tempdir.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../unix/tempdir.c"
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/copy.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/copy.o
deleted file mode 100644
index 54e9342c..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/copy.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/dir.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/dir.o
deleted file mode 100644
index 69530d7f..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/dir.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fileacc.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fileacc.o
deleted file mode 100644
index c4088154..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fileacc.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filedup.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filedup.o
deleted file mode 100644
index 61d2ea9c..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filedup.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath.o
deleted file mode 100644
index fac1cc59..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath_util.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath_util.o
deleted file mode 100644
index 23562757..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filepath_util.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filestat.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filestat.o
deleted file mode 100644
index ba786fdd..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/filestat.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/flock.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/flock.o
deleted file mode 100644
index 7c6cc570..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/flock.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fullrw.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fullrw.o
deleted file mode 100644
index 56b12074..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/fullrw.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/mktemp.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/mktemp.o
deleted file mode 100644
index b029da25..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/mktemp.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/open.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/open.o
deleted file mode 100644
index c0c5a246..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/open.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/pipe.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/pipe.o
deleted file mode 100644
index 3833ae8b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/pipe.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/readwrite.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/readwrite.o
deleted file mode 100644
index ae68e124..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/readwrite.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/seek.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/seek.o
deleted file mode 100644
index 33128c10..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/seek.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/tempdir.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/tempdir.o
deleted file mode 100644
index 5faa35fc..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/.libs/tempdir.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile
deleted file mode 100644
index f6108fab..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-srcdir = .
-
-
-TARGETS = \
- copy.lo \
- dir.lo \
- fileacc.lo \
- filedup.lo \
- filepath.lo \
- filepath_util.lo \
- filestat.lo \
- flock.lo \
- fullrw.lo \
- open.lo \
- pipe.lo \
- readwrite.lo \
- seek.lo \
- mktemp.lo \
- tempdir.lo
-
-# bring in rules.mk for standard functionality
-include /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr/build/apr_rules.mk
-
-INCDIR=../../include
-OSDIR=$(INCDIR)/arch/unix
-DEFOSDIR=$(INCDIR)/arch/unix
-INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR)
-
-# DO NOT REMOVE
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile.in b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile.in
deleted file mode 100644
index fbc93b1c..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/Makefile.in
+++ /dev/null
@@ -1,29 +0,0 @@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-TARGETS = \
- copy.lo \
- dir.lo \
- fileacc.lo \
- filedup.lo \
- filepath.lo \
- filepath_util.lo \
- filestat.lo \
- flock.lo \
- fullrw.lo \
- open.lo \
- pipe.lo \
- readwrite.lo \
- seek.lo \
- mktemp.lo \
- tempdir.lo
-
-# bring in rules.mk for standard functionality
-@INCLUDE_RULES@
-
-INCDIR=../../include
-OSDIR=$(INCDIR)/arch/@OSDIR@
-DEFOSDIR=$(INCDIR)/arch/@DEFAULT_OSDIR@
-INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR)
-
-# DO NOT REMOVE
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.c
deleted file mode 100644
index e68322c5..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-
-static apr_status_t apr_file_transfer_contents(const char *from_path,
- const char *to_path,
- apr_int32_t flags,
- apr_fileperms_t to_perms,
- apr_pool_t *pool)
-{
- apr_file_t *s, *d;
- apr_status_t status;
- apr_fileperms_t perms;
-
- /* Open source file. */
- status = apr_file_open(&s, from_path, APR_READ | APR_LARGEFILE,
- APR_OS_DEFAULT, pool);
- if (status)
- return status;
-
- /* Maybe get its permissions. */
- if (to_perms == APR_FILE_SOURCE_PERMS) {
-#if defined(HAVE_FSTAT64) && defined(O_LARGEFILE) && SIZEOF_OFF_T == 4
- struct stat64 st;
-
- if (fstat64(s->filedes, &st) != 0)
- return errno;
-
- perms = apr_unix_mode2perms(st.st_mode);
-#else
- apr_finfo_t finfo;
-
- status = apr_file_info_get(&finfo, APR_FINFO_PROT, s);
- if (status != APR_SUCCESS && status != APR_INCOMPLETE) {
- apr_file_close(s); /* toss any error */
- return status;
- }
- perms = finfo.protection;
-#endif
- }
- else
- perms = to_perms;
-
- /* Open dest file. */
- status = apr_file_open(&d, to_path, flags, perms, pool);
- if (status) {
- apr_file_close(s); /* toss any error */
- return status;
- }
-
-#if BUFSIZ > APR_FILE_DEFAULT_BUFSIZE
-#define COPY_BUFSIZ BUFSIZ
-#else
-#define COPY_BUFSIZ APR_FILE_DEFAULT_BUFSIZE
-#endif
-
- /* Copy bytes till the cows come home. */
- while (1) {
- char buf[COPY_BUFSIZ];
- apr_size_t bytes_this_time = sizeof(buf);
- apr_status_t read_err;
- apr_status_t write_err;
-
- /* Read 'em. */
- read_err = apr_file_read(s, buf, &bytes_this_time);
- if (read_err && !APR_STATUS_IS_EOF(read_err)) {
- apr_file_close(s); /* toss any error */
- apr_file_close(d); /* toss any error */
- return read_err;
- }
-
- /* Write 'em. */
- write_err = apr_file_write_full(d, buf, bytes_this_time, NULL);
- if (write_err) {
- apr_file_close(s); /* toss any error */
- apr_file_close(d); /* toss any error */
- return write_err;
- }
-
- if (read_err && APR_STATUS_IS_EOF(read_err)) {
- status = apr_file_close(s);
- if (status) {
- apr_file_close(d); /* toss any error */
- return status;
- }
-
- /* return the results of this close: an error, or success */
- return apr_file_close(d);
- }
- }
- /* NOTREACHED */
-}
-
-APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path,
- const char *to_path,
- apr_fileperms_t perms,
- apr_pool_t *pool)
-{
- return apr_file_transfer_contents(from_path, to_path,
- (APR_WRITE | APR_CREATE | APR_TRUNCATE
- | APR_LARGEFILE),
- perms,
- pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_append(const char *from_path,
- const char *to_path,
- apr_fileperms_t perms,
- apr_pool_t *pool)
-{
- return apr_file_transfer_contents(from_path, to_path,
- (APR_WRITE | APR_CREATE | APR_APPEND
- | APR_LARGEFILE),
- perms,
- pool);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.lo
deleted file mode 100644
index 968e921c..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# copy.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/copy.o'
-
-# Name of the non-PIC object.
-non_pic_object='copy.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.o
deleted file mode 100644
index e9f93c51..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/copy.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.c
deleted file mode 100644
index c42002a0..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#if APR_HAVE_SYS_SYSLIMITS_H
-#include <sys/syslimits.h>
-#endif
-#if APR_HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-static apr_status_t dir_cleanup(void *thedir)
-{
- apr_dir_t *dir = thedir;
- if (closedir(dir->dirstruct) == 0) {
- return APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-#define PATH_SEPARATOR '/'
-
-/* Remove trailing separators that don't affect the meaning of PATH. */
-static const char *path_canonicalize (const char *path, apr_pool_t *pool)
-{
- /* At some point this could eliminate redundant components. For
- * now, it just makes sure there is no trailing slash. */
- apr_size_t len = strlen (path);
- apr_size_t orig_len = len;
-
- while ((len > 0) && (path[len - 1] == PATH_SEPARATOR))
- len--;
-
- if (len != orig_len)
- return apr_pstrndup (pool, path, len);
- else
- return path;
-}
-
-/* Remove one component off the end of PATH. */
-static char *path_remove_last_component (const char *path, apr_pool_t *pool)
-{
- const char *newpath = path_canonicalize (path, pool);
- int i;
-
- for (i = (strlen(newpath) - 1); i >= 0; i--) {
- if (path[i] == PATH_SEPARATOR)
- break;
- }
-
- return apr_pstrndup (pool, path, (i < 0) ? 0 : i);
-}
-
-apr_status_t apr_dir_open(apr_dir_t **new, const char *dirname,
- apr_pool_t *pool)
-{
- /* On some platforms (e.g., Linux+GNU libc), d_name[] in struct
- * dirent is declared with enough storage for the name. On other
- * platforms (e.g., Solaris 8 for Intel), d_name is declared as a
- * one-byte array. Note: gcc evaluates this at compile time.
- */
- apr_size_t dirent_size =
- (sizeof((*new)->entry->d_name) > 1 ?
- sizeof(struct dirent) : sizeof (struct dirent) + 255);
-
- (*new) = (apr_dir_t *)apr_palloc(pool, sizeof(apr_dir_t));
-
- (*new)->pool = pool;
- (*new)->dirname = apr_pstrdup(pool, dirname);
- (*new)->dirstruct = opendir(dirname);
- (*new)->entry = apr_pcalloc(pool, dirent_size);
-
- if ((*new)->dirstruct == NULL) {
- return errno;
- }
- else {
- apr_pool_cleanup_register((*new)->pool, (void *)(*new), dir_cleanup,
- apr_pool_cleanup_null);
- return APR_SUCCESS;
- }
-}
-
-apr_status_t apr_dir_close(apr_dir_t *thedir)
-{
- return apr_pool_cleanup_run(thedir->pool, thedir, dir_cleanup);
-}
-
-#ifdef DIRENT_TYPE
-static apr_filetype_e filetype_from_dirent_type(int type)
-{
- switch (type) {
- case DT_REG:
- return APR_REG;
- case DT_DIR:
- return APR_DIR;
- case DT_LNK:
- return APR_LNK;
- case DT_CHR:
- return APR_CHR;
- case DT_BLK:
- return APR_BLK;
-#if defined(DT_FIFO)
- case DT_FIFO:
- return APR_PIPE;
-#endif
-#if !defined(BEOS) && defined(DT_SOCK)
- case DT_SOCK:
- return APR_SOCK;
-#endif
- default:
- return APR_UNKFILE;
- }
-}
-#endif
-
-apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
- apr_dir_t *thedir)
-{
- apr_status_t ret = 0;
-#ifdef DIRENT_TYPE
- apr_filetype_e type;
-#endif
-#if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) \
- && !defined(READDIR_IS_THREAD_SAFE)
- struct dirent *retent;
-
- ret = readdir_r(thedir->dirstruct, thedir->entry, &retent);
-
- /* Avoid the Linux problem where at end-of-directory thedir->entry
- * is set to NULL, but ret = APR_SUCCESS.
- */
- if(!ret && thedir->entry != retent)
- ret = APR_ENOENT;
-
- /* Solaris is a bit strange, if there are no more entries in the
- * directory, it returns EINVAL. Since this is against POSIX, we
- * hack around the problem here. EINVAL is possible from other
- * readdir implementations, but only if the result buffer is too small.
- * since we control the size of that buffer, we should never have
- * that problem.
- */
- if (ret == EINVAL) {
- ret = ENOENT;
- }
-#else
- /* We're about to call a non-thread-safe readdir() that may
- possibly set `errno', and the logic below actually cares about
- errno after the call. Therefore we need to clear errno first. */
- errno = 0;
- thedir->entry = readdir(thedir->dirstruct);
- if (thedir->entry == NULL) {
- /* If NULL was returned, this can NEVER be a success. Can it?! */
- if (errno == APR_SUCCESS) {
- ret = APR_ENOENT;
- }
- else
- ret = errno;
- }
-#endif
-
- /* No valid bit flag to test here - do we want one? */
- finfo->fname = NULL;
-
- if (ret) {
- finfo->valid = 0;
- return ret;
- }
-
-#ifdef DIRENT_TYPE
- type = filetype_from_dirent_type(thedir->entry->DIRENT_TYPE);
- if (type != APR_UNKFILE) {
- wanted &= ~APR_FINFO_TYPE;
- }
-#endif
-#ifdef DIRENT_INODE
- if (thedir->entry->DIRENT_INODE && thedir->entry->DIRENT_INODE != -1) {
- wanted &= ~APR_FINFO_INODE;
- }
-#endif
-
- wanted &= ~APR_FINFO_NAME;
-
- if (wanted)
- {
- char fspec[APR_PATH_MAX];
- int off;
- apr_cpystrn(fspec, thedir->dirname, sizeof(fspec));
- off = strlen(fspec);
- if ((fspec[off - 1] != '/') && (off + 1 < sizeof(fspec)))
- fspec[off++] = '/';
- apr_cpystrn(fspec + off, thedir->entry->d_name, sizeof(fspec) - off);
- ret = apr_lstat(finfo, fspec, wanted, thedir->pool);
- /* We passed a stack name that will disappear */
- finfo->fname = NULL;
- }
-
- if (wanted && (ret == APR_SUCCESS || ret == APR_INCOMPLETE)) {
- wanted &= ~finfo->valid;
- }
- else {
- /* We don't bail because we fail to stat, when we are only -required-
- * to readdir... but the result will be APR_INCOMPLETE
- */
- finfo->pool = thedir->pool;
- finfo->valid = 0;
-#ifdef DIRENT_TYPE
- if (type != APR_UNKFILE) {
- finfo->filetype = type;
- finfo->valid |= APR_FINFO_TYPE;
- }
-#endif
-#ifdef DIRENT_INODE
- if (thedir->entry->DIRENT_INODE && thedir->entry->DIRENT_INODE != -1) {
- finfo->inode = thedir->entry->DIRENT_INODE;
- finfo->valid |= APR_FINFO_INODE;
- }
-#endif
- }
-
- finfo->name = apr_pstrdup(thedir->pool, thedir->entry->d_name);
- finfo->valid |= APR_FINFO_NAME;
-
- if (wanted)
- return APR_INCOMPLETE;
-
- return APR_SUCCESS;
-}
-
-apr_status_t apr_dir_rewind(apr_dir_t *thedir)
-{
- rewinddir(thedir->dirstruct);
- return APR_SUCCESS;
-}
-
-apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- mode_t mode = apr_unix_perms2mode(perm);
-
- if (mkdir(path, mode) == 0) {
- return APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-apr_status_t apr_dir_make_recursive(const char *path, apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- apr_status_t apr_err = 0;
-
- apr_err = apr_dir_make (path, perm, pool); /* Try to make PATH right out */
-
- if (apr_err == EEXIST) /* It's OK if PATH exists */
- return APR_SUCCESS;
-
- if (apr_err == ENOENT) { /* Missing an intermediate dir */
- char *dir;
-
- dir = path_remove_last_component(path, pool);
- /* If there is no path left, give up. */
- if (dir[0] == '\0') {
- return apr_err;
- }
-
- apr_err = apr_dir_make_recursive(dir, perm, pool);
-
- if (!apr_err)
- apr_err = apr_dir_make (path, perm, pool);
- }
-
- return apr_err;
-}
-
-apr_status_t apr_dir_remove(const char *path, apr_pool_t *pool)
-{
- if (rmdir(path) == 0) {
- return APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir)
-{
- if (dir == NULL) {
- return APR_ENODIR;
- }
- *thedir = dir->dirstruct;
- return APR_SUCCESS;
-}
-
-apr_status_t apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir,
- apr_pool_t *pool)
-{
- if ((*dir) == NULL) {
- (*dir) = (apr_dir_t *)apr_pcalloc(pool, sizeof(apr_dir_t));
- (*dir)->pool = pool;
- }
- (*dir)->dirstruct = thedir;
- return APR_SUCCESS;
-}
-
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.lo
deleted file mode 100644
index a076bba3..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# dir.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/dir.o'
-
-# Name of the non-PIC object.
-non_pic_object='dir.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.o
deleted file mode 100644
index b6f07689..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/dir.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.c
deleted file mode 100644
index 437f3589..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_strings.h"
-#include "apr_arch_file_io.h"
-
-/* A file to put ALL of the accessor functions for apr_file_t types. */
-
-APR_DECLARE(apr_status_t) apr_file_name_get(const char **fname,
- apr_file_t *thefile)
-{
- *fname = thefile->fname;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f)
-{
- return f->flags;
-}
-
-#if !defined(OS2) && !defined(WIN32)
-mode_t apr_unix_perms2mode(apr_fileperms_t perms)
-{
- mode_t mode = 0;
-
- if (perms & APR_USETID)
- mode |= S_ISUID;
- if (perms & APR_UREAD)
- mode |= S_IRUSR;
- if (perms & APR_UWRITE)
- mode |= S_IWUSR;
- if (perms & APR_UEXECUTE)
- mode |= S_IXUSR;
-
- if (perms & APR_GSETID)
- mode |= S_ISGID;
- if (perms & APR_GREAD)
- mode |= S_IRGRP;
- if (perms & APR_GWRITE)
- mode |= S_IWGRP;
- if (perms & APR_GEXECUTE)
- mode |= S_IXGRP;
-
-#ifdef S_ISVTX
- if (perms & APR_WSTICKY)
- mode |= S_ISVTX;
-#endif
- if (perms & APR_WREAD)
- mode |= S_IROTH;
- if (perms & APR_WWRITE)
- mode |= S_IWOTH;
- if (perms & APR_WEXECUTE)
- mode |= S_IXOTH;
-
- return mode;
-}
-
-apr_fileperms_t apr_unix_mode2perms(mode_t mode)
-{
- apr_fileperms_t perms = 0;
-
- if (mode & S_ISUID)
- perms |= APR_USETID;
- if (mode & S_IRUSR)
- perms |= APR_UREAD;
- if (mode & S_IWUSR)
- perms |= APR_UWRITE;
- if (mode & S_IXUSR)
- perms |= APR_UEXECUTE;
-
- if (mode & S_ISGID)
- perms |= APR_GSETID;
- if (mode & S_IRGRP)
- perms |= APR_GREAD;
- if (mode & S_IWGRP)
- perms |= APR_GWRITE;
- if (mode & S_IXGRP)
- perms |= APR_GEXECUTE;
-
-#ifdef S_ISVTX
- if (mode & S_ISVTX)
- perms |= APR_WSTICKY;
-#endif
- if (mode & S_IROTH)
- perms |= APR_WREAD;
- if (mode & S_IWOTH)
- perms |= APR_WWRITE;
- if (mode & S_IXOTH)
- perms |= APR_WEXECUTE;
-
- return perms;
-}
-#endif
-
-APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key,
- apr_file_t *file)
-{
- return apr_pool_userdata_get(data, key, file->pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data,
- const char *key,
- apr_status_t (*cleanup)(void *))
-{
- return apr_pool_userdata_set(data, key, cleanup, file->pool);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.lo
deleted file mode 100644
index f7b91d17..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# fileacc.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/fileacc.o'
-
-# Name of the non-PIC object.
-non_pic_object='fileacc.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.o
deleted file mode 100644
index 97bc3fbc..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fileacc.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.c
deleted file mode 100644
index a0830db5..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_thread_mutex.h"
-#include "apr_arch_inherit.h"
-
-static apr_status_t _file_dup(apr_file_t **new_file,
- apr_file_t *old_file, apr_pool_t *p,
- int which_dup)
-{
- int rv;
-
- if (which_dup == 2) {
- if ((*new_file) == NULL) {
- /* We can't dup2 unless we have a valid new_file */
- return APR_EINVAL;
- }
- rv = dup2(old_file->filedes, (*new_file)->filedes);
- } else {
- rv = dup(old_file->filedes);
- }
-
- if (rv == -1)
- return errno;
-
- if (which_dup == 1) {
- (*new_file) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
- (*new_file)->pool = p;
- (*new_file)->filedes = rv;
- }
-
- (*new_file)->fname = apr_pstrdup(p, old_file->fname);
- (*new_file)->buffered = old_file->buffered;
-
- /* If the existing socket in a dup2 is already buffered, we
- * have an existing and valid (hopefully) mutex, so we don't
- * want to create it again as we could leak!
- */
-#if APR_HAS_THREADS
- if ((*new_file)->buffered && !(*new_file)->thlock && old_file->thlock) {
- apr_thread_mutex_create(&((*new_file)->thlock),
- APR_THREAD_MUTEX_DEFAULT, p);
- }
-#endif
- /* As above, only create the buffer if we haven't already
- * got one.
- */
- if ((*new_file)->buffered && !(*new_file)->buffer) {
- (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE);
- }
-
- /* this is the way dup() works */
- (*new_file)->blocking = old_file->blocking;
-
- /* make sure unget behavior is consistent */
- (*new_file)->ungetchar = old_file->ungetchar;
-
- /* apr_file_dup2() retains the original cleanup, reflecting
- * the existing inherit and nocleanup flags. This means,
- * that apr_file_dup2() cannot be called against an apr_file_t
- * already closed with apr_file_close, because the expected
- * cleanup was already killed.
- */
- if (which_dup == 2) {
- return APR_SUCCESS;
- }
-
- /* apr_file_dup() retains all old_file flags with the exceptions
- * of APR_INHERIT and APR_FILE_NOCLEANUP.
- * The user must call apr_file_inherit_set() on the dupped
- * apr_file_t when desired.
- */
- (*new_file)->flags = old_file->flags
- & ~(APR_INHERIT | APR_FILE_NOCLEANUP);
-
- apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file),
- apr_unix_file_cleanup,
- apr_unix_child_file_cleanup);
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
- apr_file_t *old_file, apr_pool_t *p)
-{
- return _file_dup(new_file, old_file, p, 1);
-}
-
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
- apr_file_t *old_file, apr_pool_t *p)
-{
- return _file_dup(&new_file, old_file, p, 2);
-}
-
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
- apr_file_t *old_file,
- apr_pool_t *p)
-{
- *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
- memcpy(*new_file, old_file, sizeof(apr_file_t));
- (*new_file)->pool = p;
- if (old_file->buffered) {
- (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE);
- if (old_file->direction == 1) {
- memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
- }
- else {
- memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
- }
-#if APR_HAS_THREADS
- if (old_file->thlock) {
- apr_thread_mutex_create(&((*new_file)->thlock),
- APR_THREAD_MUTEX_DEFAULT, p);
- apr_thread_mutex_destroy(old_file->thlock);
- }
-#endif /* APR_HAS_THREADS */
- }
- if (old_file->fname) {
- (*new_file)->fname = apr_pstrdup(p, old_file->fname);
- }
- if (!(old_file->flags & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register(p, (void *)(*new_file),
- apr_unix_file_cleanup,
- ((*new_file)->flags & APR_INHERIT)
- ? apr_pool_cleanup_null
- : apr_unix_child_file_cleanup);
- }
-
- old_file->filedes = -1;
- apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
- apr_unix_file_cleanup);
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.lo
deleted file mode 100644
index e4630825..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# filedup.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/filedup.o'
-
-# Name of the non-PIC object.
-non_pic_object='filedup.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.o
deleted file mode 100644
index d8640055..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filedup.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.c
deleted file mode 100644
index 6a65b202..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_private.h"
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_strings.h"
-#define APR_WANT_STRFUNC
-#include "apr_want.h"
-#if APR_HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/* Win32 malpropism that can go away once everyone believes this
- * code is golden, and I'm not testing it anymore :-)
- */
-#if APR_HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-
-/* Any OS that requires/refuses trailing slashes should be dealt with here.
- */
-APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags,
- apr_pool_t *p)
-{
- char path[APR_PATH_MAX];
-
- if (!getcwd(path, sizeof(path))) {
- if (errno == ERANGE)
- return APR_ENAMETOOLONG;
- else
- return errno;
- }
- *defpath = apr_pstrdup(p, path);
-
- return APR_SUCCESS;
-}
-
-
-/* Any OS that requires/refuses trailing slashes should be dealt with here
- */
-APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p)
-{
- if (chdir(path) != 0)
- return errno;
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath,
- const char **inpath,
- apr_int32_t flags,
- apr_pool_t *p)
-{
- if (**inpath == '/') {
- *rootpath = apr_pstrdup(p, "/");
- do {
- ++(*inpath);
- } while (**inpath == '/');
-
- return APR_SUCCESS;
- }
-
- return APR_ERELATIVE;
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath,
- const char *rootpath,
- const char *addpath,
- apr_int32_t flags,
- apr_pool_t *p)
-{
- char *path;
- apr_size_t rootlen; /* is the length of the src rootpath */
- apr_size_t maxlen; /* maximum total path length */
- apr_size_t keptlen; /* is the length of the retained rootpath */
- apr_size_t pathlen; /* is the length of the result path */
- apr_size_t seglen; /* is the end of the current segment */
- apr_status_t rv;
-
- /* Treat null as an empty path.
- */
- if (!addpath)
- addpath = "";
-
- if (addpath[0] == '/') {
- /* If addpath is rooted, then rootpath is unused.
- * Ths violates any APR_FILEPATH_SECUREROOTTEST and
- * APR_FILEPATH_NOTABSOLUTE flags specified.
- */
- if (flags & APR_FILEPATH_SECUREROOTTEST)
- return APR_EABOVEROOT;
- if (flags & APR_FILEPATH_NOTABSOLUTE)
- return APR_EABSOLUTE;
-
- /* If APR_FILEPATH_NOTABOVEROOT wasn't specified,
- * we won't test the root again, it's ignored.
- * Waste no CPU retrieving the working path.
- */
- if (!rootpath && !(flags & APR_FILEPATH_NOTABOVEROOT))
- rootpath = "";
- }
- else {
- /* If APR_FILEPATH_NOTABSOLUTE is specified, the caller
- * requires a relative result. If the rootpath is
- * ommitted, we do not retrieve the working path,
- * if rootpath was supplied as absolute then fail.
- */
- if (flags & APR_FILEPATH_NOTABSOLUTE) {
- if (!rootpath)
- rootpath = "";
- else if (rootpath[0] == '/')
- return APR_EABSOLUTE;
- }
- }
-
- if (!rootpath) {
- /* Start with the current working path. This is bass akwards,
- * but required since the compiler (at least vc) doesn't like
- * passing the address of a char const* for a char** arg.
- */
- char *getpath;
- rv = apr_filepath_get(&getpath, flags, p);
- rootpath = getpath;
- if (rv != APR_SUCCESS)
- return errno;
-
- /* XXX: Any kernel subject to goofy, uncanonical results
- * must run the rootpath against the user's given flags.
- * Simplest would be a recursive call to apr_filepath_merge
- * with an empty (not null) rootpath and addpath of the cwd.
- */
- }
-
- rootlen = strlen(rootpath);
- maxlen = rootlen + strlen(addpath) + 4; /* 4 for slashes at start, after
- * root, and at end, plus trailing
- * null */
- if (maxlen > APR_PATH_MAX) {
- return APR_ENAMETOOLONG;
- }
- path = (char *)apr_palloc(p, maxlen);
-
- if (addpath[0] == '/') {
- /* Ignore the given root path, strip off leading
- * '/'s to a single leading '/' from the addpath,
- * and leave addpath at the first non-'/' character.
- */
- keptlen = 0;
- while (addpath[0] == '/')
- ++addpath;
- path[0] = '/';
- pathlen = 1;
- }
- else {
- /* If both paths are relative, fail early
- */
- if (rootpath[0] != '/' && (flags & APR_FILEPATH_NOTRELATIVE))
- return APR_ERELATIVE;
-
- /* Base the result path on the rootpath
- */
- keptlen = rootlen;
- memcpy(path, rootpath, rootlen);
-
- /* Always '/' terminate the given root path
- */
- if (keptlen && path[keptlen - 1] != '/') {
- path[keptlen++] = '/';
- }
- pathlen = keptlen;
- }
-
- while (*addpath) {
- /* Parse each segment, find the closing '/'
- */
- const char *next = addpath;
- while (*next && (*next != '/')) {
- ++next;
- }
- seglen = next - addpath;
-
- if (seglen == 0 || (seglen == 1 && addpath[0] == '.')) {
- /* noop segment (/ or ./) so skip it
- */
- }
- else if (seglen == 2 && addpath[0] == '.' && addpath[1] == '.') {
- /* backpath (../) */
- if (pathlen == 1 && path[0] == '/') {
- /* Attempt to move above root. Always die if the
- * APR_FILEPATH_SECUREROOTTEST flag is specified.
- */
- if (flags & APR_FILEPATH_SECUREROOTTEST) {
- return APR_EABOVEROOT;
- }
-
- /* Otherwise this is simply a noop, above root is root.
- * Flag that rootpath was entirely replaced.
- */
- keptlen = 0;
- }
- else if (pathlen == 0
- || (pathlen == 3
- && !memcmp(path + pathlen - 3, "../", 3))
- || (pathlen > 3
- && !memcmp(path + pathlen - 4, "/../", 4))) {
- /* Path is already backpathed or empty, if the
- * APR_FILEPATH_SECUREROOTTEST.was given die now.
- */
- if (flags & APR_FILEPATH_SECUREROOTTEST) {
- return APR_EABOVEROOT;
- }
-
- /* Otherwise append another backpath, including
- * trailing slash if present.
- */
- memcpy(path + pathlen, "../", *next ? 3 : 2);
- pathlen += *next ? 3 : 2;
- }
- else {
- /* otherwise crop the prior segment
- */
- do {
- --pathlen;
- } while (pathlen && path[pathlen - 1] != '/');
- }
-
- /* Now test if we are above where we started and back up
- * the keptlen offset to reflect the added/altered path.
- */
- if (pathlen < keptlen) {
- if (flags & APR_FILEPATH_SECUREROOTTEST) {
- return APR_EABOVEROOT;
- }
- keptlen = pathlen;
- }
- }
- else {
- /* An actual segment, append it to the destination path
- */
- if (*next) {
- seglen++;
- }
- memcpy(path + pathlen, addpath, seglen);
- pathlen += seglen;
- }
-
- /* Skip over trailing slash to the next segment
- */
- if (*next) {
- ++next;
- }
-
- addpath = next;
- }
- path[pathlen] = '\0';
-
- /* keptlen will be the rootlen unless the addpath contained
- * backpath elements. If so, and APR_FILEPATH_NOTABOVEROOT
- * is specified (APR_FILEPATH_SECUREROOTTEST was caught above),
- * compare the original root to assure the result path is
- * still within given root path.
- */
- if ((flags & APR_FILEPATH_NOTABOVEROOT) && keptlen < rootlen) {
- if (strncmp(rootpath, path, rootlen)) {
- return APR_EABOVEROOT;
- }
- if (rootpath[rootlen - 1] != '/'
- && path[rootlen] && path[rootlen] != '/') {
- return APR_EABOVEROOT;
- }
- }
-
- *newpath = path;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts,
- const char *liststr,
- apr_pool_t *p)
-{
- return apr_filepath_list_split_impl(pathelts, liststr, ':', p);
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr,
- apr_array_header_t *pathelts,
- apr_pool_t *p)
-{
- return apr_filepath_list_merge_impl(liststr, pathelts, ':', p);
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p)
-{
-#if defined(DARWIN)
- *style = APR_FILEPATH_ENCODING_UTF8;
-#else
- *style = APR_FILEPATH_ENCODING_LOCALE;
-#endif
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.lo
deleted file mode 100644
index af05a4cf..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# filepath.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/filepath.o'
-
-# Name of the non-PIC object.
-non_pic_object='filepath.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.o
deleted file mode 100644
index 010f1383..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.c
deleted file mode 100644
index d8ccc567..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#define APR_WANT_STRFUNC
-#define APR_WANT_MEMFUNC
-#include "apr_want.h"
-
-#include "apr_errno.h"
-#include "apr_pools.h"
-#include "apr_strings.h"
-#include "apr_tables.h"
-
-#include "apr_private.h"
-
-apr_status_t apr_filepath_list_split_impl(apr_array_header_t **pathelts,
- const char *liststr,
- char separator,
- apr_pool_t *p)
-{
- char *path, *part, *ptr;
- char separator_string[2] = { '\0', '\0' };
- apr_array_header_t *elts;
- int nelts;
-
- separator_string[0] = separator;
- /* Count the number of path elements. We know there'll be at least
- one even if path is an empty string. */
- path = apr_pstrdup(p, liststr);
- for (nelts = 0, ptr = path; ptr != NULL; ++nelts)
- {
- ptr = strchr(ptr, separator);
- if (ptr)
- ++ptr;
- }
-
- /* Split the path into the array. */
- elts = apr_array_make(p, nelts, sizeof(char*));
- while ((part = apr_strtok(path, separator_string, &ptr)) != NULL)
- {
- if (*part == '\0') /* Ignore empty path components. */
- continue;
-
- *(char**)apr_array_push(elts) = part;
- path = NULL; /* For the next call to apr_strtok */
- }
-
- *pathelts = elts;
- return APR_SUCCESS;
-}
-
-
-apr_status_t apr_filepath_list_merge_impl(char **liststr,
- apr_array_header_t *pathelts,
- char separator,
- apr_pool_t *p)
-{
- apr_size_t path_size = 0;
- char *path;
- int i;
-
- /* This test isn't 100% certain, but it'll catch at least some
- invalid uses... */
- if (pathelts->elt_size != sizeof(char*))
- return APR_EINVAL;
-
- /* Calculate the size of the merged path */
- for (i = 0; i < pathelts->nelts; ++i)
- path_size += strlen(((char**)pathelts->elts)[i]);
-
- if (path_size == 0)
- {
- *liststr = NULL;
- return APR_SUCCESS;
- }
-
- if (i > 0) /* Add space for the separators */
- path_size += (i - 1);
-
- /* Merge the path components */
- path = *liststr = apr_palloc(p, path_size + 1);
- for (i = 0; i < pathelts->nelts; ++i)
- {
- /* ### Hmmmm. Calling strlen twice on the same string. Yuck.
- But is is better than reallocation in apr_pstrcat? */
- const char *part = ((char**)pathelts->elts)[i];
- apr_size_t part_size = strlen(part);
- if (part_size == 0) /* Ignore empty path components. */
- continue;
-
- if (i > 0)
- *path++ = separator;
- memcpy(path, part, part_size);
- path += part_size;
- }
- *path = '\0';
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.lo
deleted file mode 100644
index cdf8e7dc..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# filepath_util.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/filepath_util.o'
-
-# Name of the non-PIC object.
-non_pic_object='filepath_util.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.o
deleted file mode 100644
index b693de00..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filepath_util.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.c
deleted file mode 100644
index 9b0ae6e6..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_errno.h"
-
-#ifdef HAVE_UTIME
-#include <utime.h>
-#endif
-
-static apr_filetype_e filetype_from_mode(mode_t mode)
-{
- apr_filetype_e type;
-
- switch (mode & S_IFMT) {
- case S_IFREG:
- type = APR_REG; break;
- case S_IFDIR:
- type = APR_DIR; break;
- case S_IFLNK:
- type = APR_LNK; break;
- case S_IFCHR:
- type = APR_CHR; break;
- case S_IFBLK:
- type = APR_BLK; break;
-#if defined(S_IFFIFO)
- case S_IFFIFO:
- type = APR_PIPE; break;
-#endif
-#if !defined(BEOS) && defined(S_IFSOCK)
- case S_IFSOCK:
- type = APR_SOCK; break;
-#endif
-
- default:
- /* Work around missing S_IFxxx values above
- * for Linux et al.
- */
-#if !defined(S_IFFIFO) && defined(S_ISFIFO)
- if (S_ISFIFO(mode)) {
- type = APR_PIPE;
- } else
-#endif
-#if !defined(BEOS) && !defined(S_IFSOCK) && defined(S_ISSOCK)
- if (S_ISSOCK(mode)) {
- type = APR_SOCK;
- } else
-#endif
- type = APR_UNKFILE;
- }
- return type;
-}
-
-static void fill_out_finfo(apr_finfo_t *finfo, struct stat *info,
- apr_int32_t wanted)
-{
- finfo->valid = APR_FINFO_MIN | APR_FINFO_IDENT | APR_FINFO_NLINK
- | APR_FINFO_OWNER | APR_FINFO_PROT;
- finfo->protection = apr_unix_mode2perms(info->st_mode);
- finfo->filetype = filetype_from_mode(info->st_mode);
- finfo->user = info->st_uid;
- finfo->group = info->st_gid;
- finfo->size = info->st_size;
- finfo->inode = info->st_ino;
- finfo->device = info->st_dev;
- finfo->nlink = info->st_nlink;
- apr_time_ansi_put(&finfo->atime, info->st_atime);
- apr_time_ansi_put(&finfo->mtime, info->st_mtime);
- apr_time_ansi_put(&finfo->ctime, info->st_ctime);
- /* ### needs to be revisited
- * if (wanted & APR_FINFO_CSIZE) {
- * finfo->csize = info->st_blocks * 512;
- * finfo->valid |= APR_FINFO_CSIZE;
- * }
- */
-}
-
-apr_status_t apr_file_info_get_locked(apr_finfo_t *finfo, apr_int32_t wanted,
- apr_file_t *thefile)
-{
- struct stat info;
-
- if (thefile->buffered) {
- apr_status_t rv = apr_file_flush_locked(thefile);
- if (rv != APR_SUCCESS)
- return rv;
- }
-
- if (fstat(thefile->filedes, &info) == 0) {
- finfo->pool = thefile->pool;
- finfo->fname = thefile->fname;
- fill_out_finfo(finfo, &info, wanted);
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo,
- apr_int32_t wanted,
- apr_file_t *thefile)
-{
- struct stat info;
-
- if (thefile->buffered) {
- apr_status_t rv = apr_file_flush(thefile);
- if (rv != APR_SUCCESS)
- return rv;
- }
-
- if (fstat(thefile->filedes, &info) == 0) {
- finfo->pool = thefile->pool;
- finfo->fname = thefile->fname;
- fill_out_finfo(finfo, &info, wanted);
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname,
- apr_fileperms_t perms)
-{
- mode_t mode = apr_unix_perms2mode(perms);
-
- if (chmod(fname, mode) == -1)
- return errno;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
- apr_fileattrs_t attributes,
- apr_fileattrs_t attr_mask,
- apr_pool_t *pool)
-{
- apr_status_t status;
- apr_finfo_t finfo;
-
- /* Don't do anything if we can't handle the requested attributes */
- if (!(attr_mask & (APR_FILE_ATTR_READONLY
- | APR_FILE_ATTR_EXECUTABLE)))
- return APR_SUCCESS;
-
- status = apr_stat(&finfo, fname, APR_FINFO_PROT, pool);
- if (!APR_STATUS_IS_SUCCESS(status))
- return status;
-
- /* ### TODO: should added bits be umask'd? */
- if (attr_mask & APR_FILE_ATTR_READONLY)
- {
- if (attributes & APR_FILE_ATTR_READONLY)
- {
- finfo.protection &= ~APR_UWRITE;
- finfo.protection &= ~APR_GWRITE;
- finfo.protection &= ~APR_WWRITE;
- }
- else
- {
- /* ### umask this! */
- finfo.protection |= APR_UWRITE;
- finfo.protection |= APR_GWRITE;
- finfo.protection |= APR_WWRITE;
- }
- }
-
- if (attr_mask & APR_FILE_ATTR_EXECUTABLE)
- {
- if (attributes & APR_FILE_ATTR_EXECUTABLE)
- {
- /* ### umask this! */
- finfo.protection |= APR_UEXECUTE;
- finfo.protection |= APR_GEXECUTE;
- finfo.protection |= APR_WEXECUTE;
- }
- else
- {
- finfo.protection &= ~APR_UEXECUTE;
- finfo.protection &= ~APR_GEXECUTE;
- finfo.protection &= ~APR_WEXECUTE;
- }
- }
-
- return apr_file_perms_set(fname, finfo.protection);
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
- apr_time_t mtime,
- apr_pool_t *pool)
-{
- apr_status_t status;
- apr_finfo_t finfo;
-
- status = apr_stat(&finfo, fname, APR_FINFO_ATIME, pool);
- if (!APR_STATUS_IS_SUCCESS(status)) {
- return status;
- }
-
-#ifdef HAVE_UTIMES
- {
- struct timeval tvp[2];
-
- tvp[0].tv_sec = apr_time_sec(finfo.atime);
- tvp[0].tv_usec = apr_time_usec(finfo.atime);
- tvp[1].tv_sec = apr_time_sec(mtime);
- tvp[1].tv_usec = apr_time_usec(mtime);
-
- if (utimes(fname, tvp) == -1) {
- return errno;
- }
- }
-#elif defined(HAVE_UTIME)
- {
- struct utimbuf buf;
-
- buf.actime = (time_t) (finfo.atime / APR_USEC_PER_SEC);
- buf.modtime = (time_t) (mtime / APR_USEC_PER_SEC);
-
- if (utime(fname, &buf) == -1) {
- return errno;
- }
- }
-#else
- return APR_ENOTIMPL;
-#endif
-
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo,
- const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- struct stat info;
- int srv;
-
- if (wanted & APR_FINFO_LINK)
- srv = lstat(fname, &info);
- else
- srv = stat(fname, &info);
-
- if (srv == 0) {
- finfo->pool = pool;
- finfo->fname = fname;
- fill_out_finfo(finfo, &info, wanted);
- if (wanted & APR_FINFO_LINK)
- wanted &= ~APR_FINFO_LINK;
- return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
- }
- else {
-#if !defined(ENOENT) || !defined(ENOTDIR)
-#error ENOENT || ENOTDIR not defined; please see the
-#error comments at this line in the source for a workaround.
- /*
- * If ENOENT || ENOTDIR is not defined in one of the your OS's
- * include files, APR cannot report a good reason why the stat()
- * of the file failed; there are cases where it can fail even though
- * the file exists. This opens holes in Apache, for example, because
- * it becomes possible for someone to get a directory listing of a
- * directory even though there is an index (eg. index.html) file in
- * it. If you do not have a problem with this, delete the above
- * #error lines and start the compile again. If you need to do this,
- * please submit a bug report to http://www.apache.org/bug_report.html
- * letting us know that you needed to do this. Please be sure to
- * include the operating system you are using.
- */
- /* WARNING: All errors will be handled as not found
- */
-#if !defined(ENOENT)
- return APR_ENOENT;
-#else
- /* WARNING: All errors but not found will be handled as not directory
- */
- if (errno != ENOENT)
- return APR_ENOENT;
- else
- return errno;
-#endif
-#else /* All was defined well, report the usual: */
- return errno;
-#endif
- }
-}
-
-/* Perhaps this becomes nothing but a macro?
- */
-APR_DECLARE(apr_status_t) apr_lstat(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- return apr_stat(finfo, fname, wanted | APR_FINFO_LINK, pool);
-}
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.lo
deleted file mode 100644
index f1074ce6..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# filestat.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/filestat.o'
-
-# Name of the non-PIC object.
-non_pic_object='filestat.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.o
deleted file mode 100644
index 7eed58ce..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/filestat.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.c
deleted file mode 100644
index f400a967..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-
-#if APR_HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_FILE_H
-#include <sys/file.h>
-#endif
-
-APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type)
-{
- int rc;
-
-#if defined(HAVE_FCNTL_H)
- {
- struct flock l = { 0 };
- int fc;
-
- l.l_whence = SEEK_SET; /* lock from current point */
- l.l_start = 0; /* begin lock at this offset */
- l.l_len = 0; /* lock to end of file */
- if ((type & APR_FLOCK_TYPEMASK) == APR_FLOCK_SHARED)
- l.l_type = F_RDLCK;
- else
- l.l_type = F_WRLCK;
-
- fc = (type & APR_FLOCK_NONBLOCK) ? F_SETLK : F_SETLKW;
-
- /* keep trying if fcntl() gets interrupted (by a signal) */
- while ((rc = fcntl(thefile->filedes, fc, &l)) < 0 && errno == EINTR)
- continue;
-
- if (rc == -1) {
- /* on some Unix boxes (e.g., Tru64), we get EACCES instead
- * of EAGAIN; we don't want APR_STATUS_IS_EAGAIN() matching EACCES
- * since that breaks other things, so fix up the retcode here
- */
- if (errno == EACCES) {
- return EAGAIN;
- }
- return errno;
- }
- }
-#elif defined(HAVE_SYS_FILE_H)
- {
- int ltype;
-
- if ((type & APR_FLOCK_TYPEMASK) == APR_FLOCK_SHARED)
- ltype = LOCK_SH;
- else
- ltype = LOCK_EX;
- if ((type & APR_FLOCK_NONBLOCK) != 0)
- ltype |= LOCK_NB;
-
- /* keep trying if flock() gets interrupted (by a signal) */
- while ((rc = flock(thefile->filedes, ltype)) < 0 && errno == EINTR)
- continue;
-
- if (rc == -1)
- return errno;
- }
-#else
-#error No file locking mechanism is available.
-#endif
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile)
-{
- int rc;
-
-#if defined(HAVE_FCNTL_H)
- {
- struct flock l = { 0 };
-
- l.l_whence = SEEK_SET; /* lock from current point */
- l.l_start = 0; /* begin lock at this offset */
- l.l_len = 0; /* lock to end of file */
- l.l_type = F_UNLCK;
-
- /* keep trying if fcntl() gets interrupted (by a signal) */
- while ((rc = fcntl(thefile->filedes, F_SETLKW, &l)) < 0
- && errno == EINTR)
- continue;
-
- if (rc == -1)
- return errno;
- }
-#elif defined(HAVE_SYS_FILE_H)
- {
- /* keep trying if flock() gets interrupted (by a signal) */
- while ((rc = flock(thefile->filedes, LOCK_UN)) < 0 && errno == EINTR)
- continue;
-
- if (rc == -1)
- return errno;
- }
-#else
-#error No file locking mechanism is available.
-#endif
-
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.lo
deleted file mode 100644
index b2401d49..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# flock.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/flock.o'
-
-# Name of the non-PIC object.
-non_pic_object='flock.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.o
deleted file mode 100644
index a3cf7194..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/flock.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.c
deleted file mode 100644
index ff76a29f..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_file_io.h"
-
-
-APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf,
- apr_size_t nbytes,
- apr_size_t *bytes_read)
-{
- apr_status_t status;
- apr_size_t total_read = 0;
-
- do {
- apr_size_t amt = nbytes;
-
- status = apr_file_read(thefile, buf, &amt);
- buf = (char *)buf + amt;
- nbytes -= amt;
- total_read += amt;
- } while (status == APR_SUCCESS && nbytes > 0);
-
- if (bytes_read != NULL)
- *bytes_read = total_read;
-
- return status;
-}
-
-APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile,
- const void *buf,
- apr_size_t nbytes,
- apr_size_t *bytes_written)
-{
- apr_status_t status;
- apr_size_t total_written = 0;
-
- do {
- apr_size_t amt = nbytes;
-
- status = apr_file_write(thefile, buf, &amt);
- buf = (char *)buf + amt;
- nbytes -= amt;
- total_written += amt;
- } while (status == APR_SUCCESS && nbytes > 0);
-
- if (bytes_written != NULL)
- *bytes_written = total_written;
-
- return status;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.lo
deleted file mode 100644
index 003757c3..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# fullrw.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/fullrw.o'
-
-# Name of the non-PIC object.
-non_pic_object='fullrw.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.o
deleted file mode 100644
index db1a343c..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/fullrw.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.c
deleted file mode 100644
index 249f5772..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright (c) 1987, 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.
- */
-
-#include "apr_private.h"
-#include "apr_file_io.h" /* prototype of apr_mkstemp() */
-#include "apr_strings.h" /* prototype of apr_mkstemp() */
-#include "apr_arch_file_io.h" /* prototype of apr_mkstemp() */
-#include "apr_portable.h" /* for apr_os_file_put() */
-
-#ifndef HAVE_MKSTEMP
-
-#if defined(SVR4) || defined(WIN32) || defined(NETWARE)
-#ifdef SVR4
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#endif
-#define arc4random() rand()
-#define seedrandom(a) srand(a)
-#else
-#if APR_HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#define arc4random() random()
-#define seedrandom(a) srandom(a)
-#endif
-
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if APR_HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-
-static const unsigned char padchar[] =
-"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-static apr_uint32_t randseed=0;
-
-static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_t *p)
-{
- register char *start, *trv, *suffp;
- char *pad;
- apr_finfo_t sbuf;
- apr_status_t rv;
- apr_uint32_t randnum;
-
- if (randseed==0) {
- randseed = (int)apr_time_now();
- seedrandom(randseed);
- }
-
- for (trv = path; *trv; ++trv)
- ;
- suffp = trv;
- --trv;
- if (trv < path) {
- return APR_EINVAL;
- }
-
- /* Fill space with random characters */
- while (*trv == 'X') {
- randnum = arc4random() % (sizeof(padchar) - 1);
- *trv-- = padchar[randnum];
- }
- start = trv + 1;
-
- /*
- * check the target directory.
- */
- for (;; --trv) {
- if (trv <= path)
- break;
- if (*trv == '/') {
- *trv = '\0';
- rv = apr_stat(&sbuf, path, APR_FINFO_TYPE, p);
- *trv = '/';
- if (rv != APR_SUCCESS)
- return rv;
- if (sbuf.filetype != APR_DIR) {
- return APR_ENOTDIR;
- }
- break;
- }
- }
-
- for (;;) {
- if ((rv = apr_file_open(doopen, path, flags,
- APR_UREAD | APR_UWRITE, p)) == APR_SUCCESS)
- return APR_SUCCESS;
- if (!APR_STATUS_IS_EEXIST(rv))
- return rv;
-
- /* If we have a collision, cycle through the space of filenames */
- for (trv = start;;) {
- if (*trv == '\0' || trv == suffp)
- return APR_EINVAL; /* XXX: is this the correct return code? */
- pad = strchr((char *)padchar, *trv);
- if (pad == NULL || !*++pad) {
- *trv++ = padchar[0];
- }
- else {
- *trv++ = *pad;
- break;
- }
- }
- }
- /*NOTREACHED*/
-}
-
-#else
-
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h> /* for mkstemp() - Single Unix */
-#endif
-#if APR_HAVE_UNISTD_H
-#include <unistd.h> /* for mkstemp() - FreeBSD */
-#endif
-#endif /* !defined(HAVE_MKSTEMP) */
-
-APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_int32_t flags, apr_pool_t *p)
-{
-#ifdef HAVE_MKSTEMP
- int fd;
-#endif
- flags = (!flags) ? APR_CREATE | APR_READ | APR_WRITE | APR_EXCL |
- APR_DELONCLOSE : flags;
-#ifndef HAVE_MKSTEMP
- return gettemp(template, fp, flags, p);
-#else
-
- fd = mkstemp(template);
- if (fd == -1) {
- return errno;
- }
- /* XXX: We must reset several flags values as passed-in, since
- * mkstemp didn't subscribe to our preference flags.
- *
- * We either have to unset the flags, or fix up the fd and other
- * xthread and inherit bits appropriately. Since gettemp() above
- * calls apr_file_open, our flags are respected in that code path.
- */
- apr_os_file_put(fp, &fd, flags, p);
- (*fp)->fname = apr_pstrdup(p, template);
-
- if (!(flags & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register((*fp)->pool, (void *)(*fp),
- apr_unix_file_cleanup,
- apr_unix_child_file_cleanup);
- }
-#endif
- return APR_SUCCESS;
-}
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.lo
deleted file mode 100644
index 268a5865..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# mktemp.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/mktemp.o'
-
-# Name of the non-PIC object.
-non_pic_object='mktemp.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.o
deleted file mode 100644
index eaf9e090..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/mktemp.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.c
deleted file mode 100644
index 673da3e4..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_thread_mutex.h"
-#include "apr_arch_inherit.h"
-
-#ifdef NETWARE
-#include "nks/dirio.h"
-#include "apr_hash.h"
-#include "fsio.h"
-#endif
-
-static apr_status_t file_cleanup(apr_file_t *file)
-{
- apr_status_t rv = APR_SUCCESS;
-
- if (close(file->filedes) == 0) {
- file->filedes = -1;
- if (file->flags & APR_DELONCLOSE) {
- unlink(file->fname);
- }
-#if APR_HAS_THREADS
- if (file->thlock) {
- rv = apr_thread_mutex_destroy(file->thlock);
- }
-#endif
- }
- else {
- /* Are there any error conditions other than EINTR or EBADF? */
- rv = errno;
- }
- return rv;
-}
-
-apr_status_t apr_unix_file_cleanup(void *thefile)
-{
- apr_file_t *file = thefile;
- apr_status_t flush_rv = APR_SUCCESS, rv = APR_SUCCESS;
-
- if (file->buffered) {
- flush_rv = apr_file_flush(file);
- }
-
- rv = file_cleanup(file);
-
- return rv != APR_SUCCESS ? rv : flush_rv;
-}
-
-apr_status_t apr_unix_child_file_cleanup(void *thefile)
-{
- return file_cleanup(thefile);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new,
- const char *fname,
- apr_int32_t flag,
- apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- apr_os_file_t fd;
- int oflags = 0;
-#if APR_HAS_THREADS
- apr_thread_mutex_t *thlock;
- apr_status_t rv;
-#endif
-
- 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 {
- return APR_EACCES;
- }
-
- if (flag & APR_CREATE) {
- oflags |= O_CREAT;
- if (flag & APR_EXCL) {
- oflags |= O_EXCL;
- }
- }
- if ((flag & APR_EXCL) && !(flag & APR_CREATE)) {
- return APR_EACCES;
- }
-
- if (flag & APR_APPEND) {
- oflags |= O_APPEND;
- }
- if (flag & APR_TRUNCATE) {
- oflags |= O_TRUNC;
- }
-#ifdef O_BINARY
- if (flag & APR_BINARY) {
- oflags |= O_BINARY;
- }
-#endif
-#ifdef O_LARGEFILE
- if (flag & APR_LARGEFILE) {
- oflags |= O_LARGEFILE;
- }
-#endif
-
-#if APR_HAS_THREADS
- if ((flag & APR_BUFFERED) && (flag & APR_XTHREAD)) {
- rv = apr_thread_mutex_create(&thlock,
- APR_THREAD_MUTEX_DEFAULT, pool);
- if (rv) {
- return rv;
- }
- }
-#endif
-
- if (perm == APR_OS_DEFAULT) {
- fd = open(fname, oflags, 0666);
- }
- else {
- fd = open(fname, oflags, apr_unix_perms2mode(perm));
- }
- if (fd < 0) {
- return errno;
- }
-
- (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
- (*new)->pool = pool;
- (*new)->flags = flag;
- (*new)->filedes = fd;
-
- (*new)->fname = apr_pstrdup(pool, fname);
-
- (*new)->blocking = BLK_ON;
- (*new)->buffered = (flag & APR_BUFFERED) > 0;
-
- if ((*new)->buffered) {
- (*new)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE);
-#if APR_HAS_THREADS
- if ((*new)->flags & APR_XTHREAD) {
- (*new)->thlock = thlock;
- }
-#endif
- }
- else {
- (*new)->buffer = NULL;
- }
-
- (*new)->is_pipe = 0;
- (*new)->timeout = -1;
- (*new)->ungetchar = -1;
- (*new)->eof_hit = 0;
- (*new)->filePtr = 0;
- (*new)->bufpos = 0;
- (*new)->dataRead = 0;
- (*new)->direction = 0;
-
- if (!(flag & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register((*new)->pool, (void *)(*new),
- apr_unix_file_cleanup,
- apr_unix_child_file_cleanup);
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
-{
- return apr_pool_cleanup_run(file->pool, file, apr_unix_file_cleanup);
-}
-
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
-{
- if (unlink(path) == 0) {
- return APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path,
- const char *to_path,
- apr_pool_t *p)
-{
- if (rename(from_path, to_path) != 0) {
- return errno;
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile,
- apr_file_t *file)
-{
- *thefile = file->filedes;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file,
- apr_os_file_t *thefile,
- apr_int32_t flags, apr_pool_t *pool)
-{
- int *dafile = thefile;
-
- (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->eof_hit = 0;
- (*file)->blocking = BLK_UNKNOWN; /* in case it is a pipe */
- (*file)->timeout = -1;
- (*file)->ungetchar = -1; /* no char avail */
- (*file)->filedes = *dafile;
- (*file)->flags = flags | APR_FILE_NOCLEANUP;
- (*file)->buffered = (flags & APR_BUFFERED) > 0;
-
- if ((*file)->buffered) {
- (*file)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE);
-#if APR_HAS_THREADS
- if ((*file)->flags & APR_XTHREAD) {
- apr_status_t rv;
- rv = apr_thread_mutex_create(&((*file)->thlock),
- APR_THREAD_MUTEX_DEFAULT, pool);
- if (rv) {
- return rv;
- }
- }
-#endif
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
-{
- if (fptr->eof_hit == 1) {
- return APR_EOF;
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile,
- apr_pool_t *pool)
-{
- int fd = STDERR_FILENO;
-
- return apr_os_file_put(thefile, &fd, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile,
- apr_pool_t *pool)
-{
- int fd = STDOUT_FILENO;
-
- return apr_os_file_put(thefile, &fd, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile,
- apr_pool_t *pool)
-{
- int fd = STDIN_FILENO;
-
- return apr_os_file_put(thefile, &fd, 0, pool);
-}
-
-APR_IMPLEMENT_INHERIT_SET(file, flags, pool, apr_unix_file_cleanup)
-
-/* We need to do this by hand instead of using APR_IMPLEMENT_INHERIT_UNSET
- * because the macro sets both cleanups to the same function, which is not
- * suitable on Unix (see PR 41119). */
-APR_DECLARE(apr_status_t) apr_file_inherit_unset(apr_file_t *thefile)
-{
- if (thefile->flags & APR_FILE_NOCLEANUP) {
- return APR_EINVAL;
- }
- if (thefile->flags & APR_INHERIT) {
- thefile->flags &= ~APR_INHERIT;
- apr_pool_child_cleanup_set(thefile->pool,
- (void *)thefile,
- apr_unix_file_cleanup,
- apr_unix_child_file_cleanup);
- }
- return APR_SUCCESS;
-}
-/* Deprecated */
-APR_DECLARE(void) apr_file_unset_inherit(apr_file_t *thefile)
-{
- apr_file_inherit_unset(thefile);
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(file)
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.lo
deleted file mode 100644
index ebb21cc1..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# open.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/open.o'
-
-# Name of the non-PIC object.
-non_pic_object='open.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.o
deleted file mode 100644
index 9560247b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/open.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.c
deleted file mode 100644
index 8f96c494..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-
-#include "apr_arch_inherit.h"
-
-/* Figure out how to get pipe block/nonblock on BeOS...
- * Basically, BONE7 changed things again so that ioctl didn't work,
- * but now fcntl does, hence we need to do this extra checking.
- * The joys of beta programs. :-)
- */
-#if BEOS
-#if !BONE7
-# define BEOS_BLOCKING 1
-#else
-# define BEOS_BLOCKING 0
-#endif
-#endif
-
-static apr_status_t pipeblock(apr_file_t *thepipe)
-{
-#if !BEOS_BLOCKING
- int fd_flags;
-
- fd_flags = fcntl(thepipe->filedes, 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 APR_ENOTIMPL;
-# endif
- if (fcntl(thepipe->filedes, F_SETFL, fd_flags) == -1) {
- return errno;
- }
-#else /* BEOS_BLOCKING */
-
-# if BEOS_BONE /* This only works on BONE 0-6 */
- int on = 0;
- if (ioctl(thepipe->filedes, FIONBIO, &on, sizeof(on)) < 0) {
- return errno;
- }
-# else /* "classic" BeOS doesn't support this at all */
- return APR_ENOTIMPL;
-# endif
-
-#endif /* !BEOS_BLOCKING */
-
- thepipe->blocking = BLK_ON;
- return APR_SUCCESS;
-}
-
-static apr_status_t pipenonblock(apr_file_t *thepipe)
-{
-#if !BEOS_BLOCKING
- int fd_flags = fcntl(thepipe->filedes, 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 APR_ENOTIMPL;
-# endif
- if (fcntl(thepipe->filedes, F_SETFL, fd_flags) == -1) {
- return errno;
- }
-
-#else /* BEOS_BLOCKING */
-
-# if BEOS_BONE /* This only works on BONE 0-6 */
- int on = 1;
- if (ioctl(thepipe->filedes, FIONBIO, &on, sizeof(on)) < 0) {
- return errno;
- }
-# else /* "classic" BeOS doesn't support this at all */
- return APR_ENOTIMPL;
-# endif
-
-#endif /* !BEOS_BLOCKING */
-
- thepipe->blocking = BLK_OFF;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
-{
- if (thepipe->is_pipe == 1) {
- thepipe->timeout = timeout;
- if (timeout >= 0) {
- if (thepipe->blocking != BLK_OFF) { /* blocking or unknown state */
- return pipenonblock(thepipe);
- }
- }
- else {
- if (thepipe->blocking != BLK_ON) { /* non-blocking or unknown state */
- return pipeblock(thepipe);
- }
- }
- return APR_SUCCESS;
- }
- return APR_EINVAL;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
-{
- if (thepipe->is_pipe == 1) {
- *timeout = thepipe->timeout;
- return APR_SUCCESS;
- }
- return APR_EINVAL;
-}
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
- apr_os_file_t *thefile,
- int register_cleanup,
- apr_pool_t *pool)
-{
- int *dafile = thefile;
-
- (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->eof_hit = 0;
- (*file)->is_pipe = 1;
- (*file)->blocking = BLK_UNKNOWN; /* app needs to make a timeout call */
- (*file)->timeout = -1;
- (*file)->ungetchar = -1; /* no char avail */
- (*file)->filedes = *dafile;
- if (!register_cleanup) {
- (*file)->flags = APR_FILE_NOCLEANUP;
- }
- (*file)->buffered = 0;
-#if APR_HAS_THREADS
- (*file)->thlock = NULL;
-#endif
- if (register_cleanup) {
- apr_pool_cleanup_register((*file)->pool, (void *)(*file),
- apr_unix_file_cleanup,
- apr_pool_cleanup_null);
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
- apr_os_file_t *thefile,
- apr_pool_t *pool)
-{
- return apr_os_pipe_put_ex(file, thefile, 0, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
-{
- int filedes[2];
-
- if (pipe(filedes) == -1) {
- return errno;
- }
-
- (*in) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
- (*in)->pool = pool;
- (*in)->filedes = filedes[0];
- (*in)->is_pipe = 1;
- (*in)->fname = NULL;
- (*in)->buffered = 0;
- (*in)->blocking = BLK_ON;
- (*in)->timeout = -1;
- (*in)->ungetchar = -1;
- (*in)->flags = APR_INHERIT;
-#if APR_HAS_THREADS
- (*in)->thlock = NULL;
-#endif
-
- (*out) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
- (*out)->pool = pool;
- (*out)->filedes = filedes[1];
- (*out)->is_pipe = 1;
- (*out)->fname = NULL;
- (*out)->buffered = 0;
- (*out)->blocking = BLK_ON;
- (*out)->flags = APR_INHERIT;
- (*out)->timeout = -1;
-#if APR_HAS_THREADS
- (*out)->thlock = NULL;
-#endif
-
- apr_pool_cleanup_register((*in)->pool, (void *)(*in), apr_unix_file_cleanup,
- apr_pool_cleanup_null);
- apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup,
- apr_pool_cleanup_null);
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename,
- apr_fileperms_t perm, apr_pool_t *pool)
-{
- mode_t mode = apr_unix_perms2mode(perm);
-
- if (mkfifo(filename, mode) == -1) {
- return errno;
- }
- return APR_SUCCESS;
-}
-
-
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.lo
deleted file mode 100644
index 5c56a72d..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# pipe.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/pipe.o'
-
-# Name of the non-PIC object.
-non_pic_object='pipe.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.o
deleted file mode 100644
index f354c401..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/pipe.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.c
deleted file mode 100644
index 541ab587..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_thread_mutex.h"
-#include "apr_support.h"
-
-/* The only case where we don't use wait_for_io_or_timeout is on
- * pre-BONE BeOS, so this check should be sufficient and simpler */
-#if !BEOS_R5
-#define USE_WAIT_FOR_IO
-#endif
-
-/* problems:
- * 1) ungetchar not used for buffered files
- */
-APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)
-{
- apr_ssize_t rv;
- apr_size_t bytes_read;
-
- if (*nbytes <= 0) {
- *nbytes = 0;
- return APR_SUCCESS;
- }
-
- if (thefile->buffered) {
- char *pos = (char *)buf;
- apr_uint64_t blocksize;
- apr_uint64_t size = *nbytes;
-
- file_lock(thefile);
-
- if (thefile->direction == 1) {
- rv = apr_file_flush_locked(thefile);
- if (rv) {
- file_unlock(thefile);
- return rv;
- }
- thefile->bufpos = 0;
- thefile->direction = 0;
- thefile->dataRead = 0;
- }
-
- rv = 0;
- if (thefile->ungetchar != -1) {
- *pos = (char)thefile->ungetchar;
- ++pos;
- --size;
- thefile->ungetchar = -1;
- }
- while (rv == 0 && size > 0) {
- if (thefile->bufpos >= thefile->dataRead) {
- int bytesread = read(thefile->filedes, thefile->buffer, APR_FILE_BUFSIZE);
- if (bytesread == 0) {
- thefile->eof_hit = TRUE;
- rv = APR_EOF;
- break;
- }
- else if (bytesread == -1) {
- rv = errno;
- break;
- }
- thefile->dataRead = bytesread;
- thefile->filePtr += thefile->dataRead;
- thefile->bufpos = 0;
- }
-
- blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
- memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
- thefile->bufpos += blocksize;
- pos += blocksize;
- size -= blocksize;
- }
-
- *nbytes = pos - (char *)buf;
- if (*nbytes) {
- rv = 0;
- }
-
- file_unlock(thefile);
-
- return rv;
- }
- else {
- bytes_read = 0;
- if (thefile->ungetchar != -1) {
- bytes_read = 1;
- *(char *)buf = (char)thefile->ungetchar;
- buf = (char *)buf + 1;
- (*nbytes)--;
- thefile->ungetchar = -1;
- if (*nbytes == 0) {
- *nbytes = bytes_read;
- return APR_SUCCESS;
- }
- }
-
- do {
- rv = read(thefile->filedes, buf, *nbytes);
- } while (rv == -1 && errno == EINTR);
-#ifdef USE_WAIT_FOR_IO
- if (rv == -1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK) &&
- thefile->timeout != 0) {
- apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 1);
- if (arv != APR_SUCCESS) {
- *nbytes = bytes_read;
- return arv;
- }
- else {
- do {
- rv = read(thefile->filedes, buf, *nbytes);
- } while (rv == -1 && errno == EINTR);
- }
- }
-#endif
- *nbytes = bytes_read;
- if (rv == 0) {
- thefile->eof_hit = TRUE;
- return APR_EOF;
- }
- if (rv > 0) {
- *nbytes += rv;
- return APR_SUCCESS;
- }
- return errno;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
-{
- apr_size_t rv;
-
- if (thefile->buffered) {
- char *pos = (char *)buf;
- int blocksize;
- int size = *nbytes;
-
- file_lock(thefile);
-
- if ( thefile->direction == 0 ) {
- /* Position file pointer for writing at the offset we are
- * logically reading from
- */
- apr_int64_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
- if (offset != thefile->filePtr)
- lseek(thefile->filedes, offset, SEEK_SET);
- thefile->bufpos = thefile->dataRead = 0;
- thefile->direction = 1;
- }
-
- rv = 0;
- while (rv == 0 && size > 0) {
- if (thefile->bufpos == APR_FILE_BUFSIZE) /* write buffer is full*/
- rv = apr_file_flush_locked(thefile);
-
- blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ?
- APR_FILE_BUFSIZE - thefile->bufpos : size;
- memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);
- thefile->bufpos += blocksize;
- pos += blocksize;
- size -= blocksize;
- }
-
- file_unlock(thefile);
-
- return rv;
- }
- else {
- do {
- rv = write(thefile->filedes, buf, *nbytes);
- } while (rv == (apr_size_t)-1 && errno == EINTR);
-#ifdef USE_WAIT_FOR_IO
- if (rv == (apr_size_t)-1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK) &&
- thefile->timeout != 0) {
- apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 0);
- if (arv != APR_SUCCESS) {
- *nbytes = 0;
- return arv;
- }
- else {
- do {
- do {
- rv = write(thefile->filedes, buf, *nbytes);
- } while (rv == (apr_size_t)-1 && errno == EINTR);
- if (rv == (apr_size_t)-1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK)) {
- *nbytes /= 2; /* yes, we'll loop if kernel lied
- * and we can't even write 1 byte
- */
- }
- else {
- break;
- }
- } while (1);
- }
- }
-#endif
- if (rv == (apr_size_t)-1) {
- (*nbytes) = 0;
- return errno;
- }
- *nbytes = rv;
- return APR_SUCCESS;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iovec *vec,
- apr_size_t nvec, apr_size_t *nbytes)
-{
-#ifdef HAVE_WRITEV
- apr_status_t rv;
- int bytes;
-
- if (thefile->buffered) {
- file_lock(thefile);
-
- rv = apr_file_flush_locked(thefile);
- if (rv != APR_SUCCESS) {
- file_unlock(thefile);
- return rv;
- }
- if (thefile->direction == 0) {
- /* Position file pointer for writing at the offset we are
- * logically reading from
- */
- apr_int64_t offset = thefile->filePtr - thefile->dataRead +
- thefile->bufpos;
- if (offset != thefile->filePtr)
- lseek(thefile->filedes, offset, SEEK_SET);
- thefile->bufpos = thefile->dataRead = 0;
- }
-
- file_unlock(thefile);
- }
-
- if ((bytes = writev(thefile->filedes, vec, nvec)) < 0) {
- *nbytes = 0;
- rv = errno;
- }
- else {
- *nbytes = bytes;
- rv = APR_SUCCESS;
- }
- return rv;
-#else
- *nbytes = vec[0].iov_len;
- return apr_file_write(thefile, vec[0].iov_base, nbytes);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
-{
- apr_size_t nbytes = 1;
-
- return apr_file_write(thefile, &ch, &nbytes);
-}
-
-APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
-{
- thefile->ungetchar = (unsigned char)ch;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
-{
- apr_size_t nbytes = 1;
-
- return apr_file_read(thefile, ch, &nbytes);
-}
-
-APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
-{
- apr_size_t nbytes = strlen(str);
-
- return apr_file_write(thefile, str, &nbytes);
-}
-
-apr_status_t apr_file_flush_locked(apr_file_t *thefile)
-{
- apr_status_t rv = APR_SUCCESS;
-
- if (thefile->direction == 1 && thefile->bufpos) {
- apr_ssize_t written;
-
- do {
- written = write(thefile->filedes, thefile->buffer, thefile->bufpos);
- } while (written == -1 && errno == EINTR);
- if (written == -1) {
- rv = errno;
- } else {
- thefile->filePtr += written;
- thefile->bufpos = 0;
- }
- }
-
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
-{
- apr_status_t rv = APR_SUCCESS;
-
- if (thefile->buffered) {
- file_lock(thefile);
- rv = apr_file_flush_locked(thefile);
- file_unlock(thefile);
- }
- /* There isn't anything to do if we aren't buffering the output
- * so just return success.
- */
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
-{
- apr_status_t rv = APR_SUCCESS; /* get rid of gcc warning */
- apr_size_t nbytes;
- const char *str_start = str;
- char *final = str + len - 1;
-
- if (len <= 1) {
- /* sort of like fgets(), which returns NULL and stores no bytes
- */
- return APR_SUCCESS;
- }
-
- while (str < final) { /* leave room for trailing '\0' */
- nbytes = 1;
- rv = apr_file_read(thefile, str, &nbytes);
- if (rv != APR_SUCCESS) {
- break;
- }
- if (*str == '\n') {
- ++str;
- break;
- }
- ++str;
- }
- /* We must store a terminating '\0' if we've stored any chars. We can
- * get away with storing it if we hit an error first.
- */
- *str = '\0';
- if (str > str_start) {
- /* we stored chars; don't report EOF or any other errors;
- * the app will find out about that on the next call
- */
- return APR_SUCCESS;
- }
- return rv;
-}
-
-APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr,
- const char *format, ...)
-{
- apr_status_t cc;
- va_list ap;
- char *buf;
- int len;
-
- buf = malloc(HUGE_STRING_LEN);
- if (buf == NULL) {
- return 0;
- }
- va_start(ap, format);
- len = apr_vsnprintf(buf, HUGE_STRING_LEN, format, ap);
- cc = apr_file_puts(buf, fptr);
- va_end(ap);
- free(buf);
- return (cc == APR_SUCCESS) ? len : -1;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.lo
deleted file mode 100644
index 7e4eabce..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# readwrite.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/readwrite.o'
-
-# Name of the non-PIC object.
-non_pic_object='readwrite.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.o
deleted file mode 100644
index c69b0aef..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/readwrite.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.c
deleted file mode 100644
index 5daed0cb..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-
-static apr_status_t setptr(apr_file_t *thefile, unsigned long pos )
-{
- apr_off_t newbufpos;
- apr_status_t rv;
-
- if (thefile->direction == 1) {
- rv = apr_file_flush_locked(thefile);
- if (rv) {
- return rv;
- }
- thefile->bufpos = thefile->direction = thefile->dataRead = 0;
- }
-
- newbufpos = pos - (thefile->filePtr - thefile->dataRead);
- if (newbufpos >= 0 && newbufpos <= thefile->dataRead) {
- thefile->bufpos = newbufpos;
- rv = APR_SUCCESS;
- }
- else {
- if (lseek(thefile->filedes, pos, SEEK_SET) != -1) {
- thefile->bufpos = thefile->dataRead = 0;
- thefile->filePtr = pos;
- rv = APR_SUCCESS;
- }
- else {
- rv = errno;
- }
- }
-
- return rv;
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset)
-{
- apr_off_t rv;
-
- thefile->eof_hit = 0;
-
- if (thefile->buffered) {
- int rc = EINVAL;
- apr_finfo_t finfo;
-
- file_lock(thefile);
-
- switch (where) {
- case APR_SET:
- rc = setptr(thefile, *offset);
- break;
-
- case APR_CUR:
- rc = setptr(thefile, thefile->filePtr - thefile->dataRead + thefile->bufpos + *offset);
- break;
-
- case APR_END:
- rc = apr_file_info_get_locked(&finfo, APR_FINFO_SIZE, thefile);
- if (rc == APR_SUCCESS)
- rc = setptr(thefile, finfo.size + *offset);
- break;
- }
-
- *offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
-
- file_unlock(thefile);
-
- return rc;
- } else {
-
- rv = lseek(thefile->filedes, *offset, where);
- if (rv == -1) {
- *offset = -1;
- return errno;
- }
- else {
- *offset = rv;
- return APR_SUCCESS;
- }
- }
-}
-
-apr_status_t apr_file_trunc(apr_file_t *fp, apr_off_t offset)
-{
- if (ftruncate(fp->filedes, offset) == -1) {
- return errno;
- }
- return apr_file_seek(fp, APR_SET, &offset);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.lo
deleted file mode 100644
index b46d86d0..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# seek.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/seek.o'
-
-# Name of the non-PIC object.
-non_pic_object='seek.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.o
deleted file mode 100644
index b32032c1..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/seek.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.c
deleted file mode 100644
index 62f52076..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "apr_private.h"
-#include "apr_file_io.h"
-#include "apr_strings.h"
-#include "apr_env.h"
-
-/*
- * FIXME
- * Currently, this variable is a bit of misnomer.
- * The intention is to have this in APR's global pool so that we don't have
- * to go through this every time.
- */
-static char global_temp_dir[APR_PATH_MAX+1] = { 0 };
-
-/* Try to open a temporary file in the temporary dir, write to it,
- and then close it. */
-static int test_tempdir(const char *temp_dir, apr_pool_t *p)
-{
- apr_file_t *dummy_file;
- const char *path = apr_pstrcat(p, temp_dir, "/apr-tmp.XXXXXX", NULL);
-
- if (apr_file_mktemp(&dummy_file, (char *)path, 0, p) == APR_SUCCESS) {
- if (apr_file_putc('!', dummy_file) == APR_SUCCESS) {
- if (apr_file_close(dummy_file) == APR_SUCCESS) {
- return 1;
- }
- }
- }
- return 0;
-}
-
-
-APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir,
- apr_pool_t *p)
-{
- apr_status_t apr_err;
- const char *try_dirs[] = { "/tmp", "/usr/tmp", "/var/tmp" };
- const char *try_envs[] = { "TMP", "TEMP", "TMPDIR" };
- char *cwd;
- int i;
-
- /* Our goal is to find a temporary directory suitable for writing
- into. We'll only pay the price once if we're successful -- we
- cache our successful find. Here's the order in which we'll try
- various paths:
-
- $TMP
- $TEMP
- $TMPDIR
- "C:\TEMP" (windows only)
- "SYS:\TMP" (netware only)
- "/tmp"
- "/var/tmp"
- "/usr/tmp"
- P_tmpdir (POSIX define)
- `pwd`
-
- NOTE: This algorithm is basically the same one used by Python
- 2.2's tempfile.py module. */
-
- /* Try the environment first. */
- for (i = 0; i < (sizeof(try_envs) / sizeof(const char *)); i++) {
- char *value;
- apr_err = apr_env_get(&value, try_envs[i], p);
- if ((apr_err == APR_SUCCESS) && value) {
- apr_size_t len = strlen(value);
- if (len && (len < APR_PATH_MAX) && test_tempdir(value, p)) {
- memcpy(global_temp_dir, value, len + 1);
- goto end;
- }
- }
- }
-
-#ifdef WIN32
- /* Next, on Win32, try the C:\TEMP directory. */
- if (test_tempdir("C:\\TEMP", p)) {
- memcpy(global_temp_dir, "C:\\TEMP", 7 + 1);
- goto end;
- }
-#endif
-#ifdef NETWARE
- /* Next, on NetWare, try the SYS:/TMP directory. */
- if (test_tempdir("SYS:/TMP", p)) {
- memcpy(global_temp_dir, "SYS:/TMP", 8 + 1);
- goto end;
- }
-#endif
-
- /* Next, try a set of hard-coded paths. */
- for (i = 0; i < (sizeof(try_dirs) / sizeof(const char *)); i++) {
- if (test_tempdir(try_dirs[i], p)) {
- memcpy(global_temp_dir, try_dirs[i], strlen(try_dirs[i]) + 1);
- goto end;
- }
- }
-
-#ifdef P_tmpdir
- /*
- * If we have it, use the POSIX definition of where
- * the tmpdir should be
- */
- if (test_tempdir(P_tmpdir, p)) {
- memcpy(global_temp_dir, P_tmpdir, strlen(P_tmpdir) +1);
- goto end;
- }
-#endif
-
- /* Finally, try the current working directory. */
- if (APR_SUCCESS == apr_filepath_get(&cwd, APR_FILEPATH_NATIVE, p)) {
- if (test_tempdir(cwd, p)) {
- memcpy(global_temp_dir, cwd, strlen(cwd) + 1);
- goto end;
- }
- }
-
-end:
- if (global_temp_dir[0]) {
- *temp_dir = apr_pstrdup(p, global_temp_dir);
- return APR_SUCCESS;
- }
- return APR_EGENERAL;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.lo b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.lo
deleted file mode 100644
index 5b1535ab..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# tempdir.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/tempdir.o'
-
-# Name of the non-PIC object.
-non_pic_object='tempdir.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.o b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.o
deleted file mode 100644
index 93508b12..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/unix/tempdir.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/dir.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/dir.c
deleted file mode 100644
index 29a4e1c4..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/dir.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_arch_atime.h"
-
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if APR_HAVE_STRING_H
-#include <string.h>
-#endif
-#if APR_HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
-
-static apr_status_t dir_cleanup(void *thedir)
-{
- apr_dir_t *dir = thedir;
- if (dir->dirhand != INVALID_HANDLE_VALUE && !FindClose(dir->dirhand)) {
- return apr_get_os_error();
- }
- dir->dirhand = INVALID_HANDLE_VALUE;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname,
- apr_pool_t *pool)
-{
- apr_status_t rv;
-
- int len = strlen(dirname);
- (*new) = apr_pcalloc(pool, sizeof(apr_dir_t));
- /* Leave room here to add and pop the '*' wildcard for FindFirstFile
- * and double-null terminate so we have one character to change.
- */
- (*new)->dirname = apr_palloc(pool, len + 3);
- memcpy((*new)->dirname, dirname, len);
- if (len && (*new)->dirname[len - 1] != '/') {
- (*new)->dirname[len++] = '/';
- }
- (*new)->dirname[len++] = '\0';
- (*new)->dirname[len] = '\0';
-
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- /* Create a buffer for the longest file name we will ever see
- */
- (*new)->w.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW));
- (*new)->name = apr_pcalloc(pool, APR_FILE_MAX * 3 + 1);
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- /* Note that we won't open a directory that is greater than MAX_PATH,
- * including the trailing /* wildcard suffix. If a * won't fit, then
- * neither will any other file name within the directory.
- * The length not including the trailing '*' is stored as rootlen, to
- * skip over all paths which are too long.
- */
- if (len >= APR_PATH_MAX) {
- (*new) = NULL;
- return APR_ENAMETOOLONG;
- }
- (*new)->n.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW));
- }
-#endif
- (*new)->rootlen = len - 1;
- (*new)->pool = pool;
- (*new)->dirhand = INVALID_HANDLE_VALUE;
- apr_pool_cleanup_register((*new)->pool, (void *)(*new), dir_cleanup,
- apr_pool_cleanup_null);
-
- rv = apr_dir_read(NULL, 0, *new);
- if (rv != APR_SUCCESS) {
- dir_cleanup(*new);
- *new = NULL;
- }
-
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *dir)
-{
- apr_pool_cleanup_kill(dir->pool, dir, dir_cleanup);
- return dir_cleanup(dir);
-}
-
-APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
- apr_dir_t *thedir)
-{
- apr_status_t rv;
- char *fname;
- /* The while loops below allow us to skip all invalid file names, so that
- * we aren't reporting any files where their absolute paths are too long.
- */
-#if APR_HAS_UNICODE_FS
- apr_wchar_t wdirname[APR_PATH_MAX];
- apr_wchar_t *eos = NULL;
- IF_WIN_OS_IS_UNICODE
- {
- /* This code path is always be invoked by apr_dir_open or
- * apr_dir_rewind, so return without filling out the finfo.
- */
- if (thedir->dirhand == INVALID_HANDLE_VALUE)
- {
- apr_status_t rv;
- if (rv = utf8_to_unicode_path(wdirname, sizeof(wdirname)
- / sizeof(apr_wchar_t),
- thedir->dirname)) {
- return rv;
- }
- eos = wcschr(wdirname, '\0');
- eos[0] = '*';
- eos[1] = '\0';
- thedir->dirhand = FindFirstFileW(wdirname, thedir->w.entry);
- eos[0] = '\0';
- if (thedir->dirhand == INVALID_HANDLE_VALUE) {
- return apr_get_os_error();
- }
- thedir->bof = 1;
- return APR_SUCCESS;
- }
- else if (thedir->bof) {
- /* Noop - we already called FindFirstFileW from
- * either apr_dir_open or apr_dir_rewind ... use
- * that first record.
- */
- thedir->bof = 0;
- }
- else if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) {
- return apr_get_os_error();
- }
-
- while (thedir->rootlen &&
- thedir->rootlen + wcslen(thedir->w.entry->cFileName) >= APR_PATH_MAX)
- {
- if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) {
- return apr_get_os_error();
- }
- }
- if (rv = unicode_to_utf8_path(thedir->name, APR_FILE_MAX * 3 + 1,
- thedir->w.entry->cFileName))
- return rv;
- fname = thedir->name;
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- /* This code path is always be invoked by apr_dir_open or
- * apr_dir_rewind, so return without filling out the finfo.
- */
- if (thedir->dirhand == INVALID_HANDLE_VALUE) {
- /* '/' terminated, so add the '*' and pop it when we finish */
- char *eop = strchr(thedir->dirname, '\0');
- eop[0] = '*';
- eop[1] = '\0';
- thedir->dirhand = FindFirstFileA(thedir->dirname,
- thedir->n.entry);
- eop[0] = '\0';
- if (thedir->dirhand == INVALID_HANDLE_VALUE) {
- return apr_get_os_error();
- }
- thedir->bof = 1;
- return APR_SUCCESS;
- }
- else if (thedir->bof) {
- /* Noop - we already called FindFirstFileW from
- * either apr_dir_open or apr_dir_rewind ... use
- * that first record.
- */
- thedir->bof = 0;
- }
- else if (!FindNextFileA(thedir->dirhand, thedir->n.entry)) {
- return apr_get_os_error();
- }
- while (thedir->rootlen &&
- thedir->rootlen + strlen(thedir->n.entry->cFileName) >= MAX_PATH)
- {
- if (!FindNextFileA(thedir->dirhand, thedir->n.entry)) {
- return apr_get_os_error();
- }
- }
- fname = thedir->n.entry->cFileName;
- }
-#endif
-
- fillin_fileinfo(finfo, (WIN32_FILE_ATTRIBUTE_DATA *) thedir->w.entry,
- 0, wanted);
- finfo->pool = thedir->pool;
-
- finfo->valid |= APR_FINFO_NAME;
- finfo->name = fname;
-
- if (wanted &= ~finfo->valid) {
- /* Go back and get more_info if we can't answer the whole inquiry
- */
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- /* Almost all our work is done. Tack on the wide file name
- * to the end of the wdirname (already / delimited)
- */
- if (!eos)
- eos = wcschr(wdirname, '\0');
- wcscpy(eos, thedir->w.entry->cFileName);
- rv = more_finfo(finfo, wdirname, wanted, MORE_OF_WFSPEC);
- eos[0] = '\0';
- return rv;
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
-#if APR_HAS_UNICODE_FS
- /* Don't waste stack space on a second buffer, the one we set
- * aside for the wide directory name is twice what we need.
- */
- char *fspec = (char*)wdirname;
-#else
- char fspec[APR_PATH_MAX];
-#endif
- int dirlen = strlen(thedir->dirname);
- if (dirlen >= sizeof(fspec))
- dirlen = sizeof(fspec) - 1;
- apr_cpystrn(fspec, thedir->dirname, sizeof(fspec));
- apr_cpystrn(fspec + dirlen, fname, sizeof(fspec) - dirlen);
- return more_finfo(finfo, fspec, wanted, MORE_OF_FSPEC);
- }
-#endif
- }
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *dir)
-{
- apr_status_t rv;
-
- /* this will mark the handle as invalid and we'll open it
- * again if apr_dir_read() is subsequently called
- */
- rv = dir_cleanup(dir);
-
- if (rv == APR_SUCCESS)
- rv = apr_dir_read(NULL, 0, dir);
-
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm,
- apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- if (rv = utf8_to_unicode_path(wpath, sizeof(wpath)
- / sizeof(apr_wchar_t), path)) {
- return rv;
- }
- if (!CreateDirectoryW(wpath, NULL)) {
- return apr_get_os_error();
- }
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- if (!CreateDirectory(path, NULL)) {
- return apr_get_os_error();
- }
-#endif
- return APR_SUCCESS;
-}
-
-
-static apr_status_t dir_make_parent(char *path,
- apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- apr_status_t rv;
- char *ch = strrchr(path, '\\');
- if (!ch) {
- return APR_ENOENT;
- }
-
- *ch = '\0';
- rv = apr_dir_make (path, perm, pool); /* Try to make straight off */
-
- if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */
- rv = dir_make_parent(path, perm, pool);
-
- if (rv == APR_SUCCESS) {
- rv = apr_dir_make (path, perm, pool); /* And complete the path */
- }
- }
-
- *ch = '\\'; /* Always replace the slash before returning */
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path,
- apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- apr_status_t rv = 0;
-
- rv = apr_dir_make (path, perm, pool); /* Try to make PATH right out */
-
- if (APR_STATUS_IS_EEXIST(rv)) /* It's OK if PATH exists */
- return APR_SUCCESS;
-
- if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */
- char *dir;
-
- rv = apr_filepath_merge(&dir, "", path, APR_FILEPATH_NATIVE, pool);
-
- if (rv == APR_SUCCESS)
- rv = dir_make_parent(dir, perm, pool); /* Make intermediate dirs */
-
- if (rv == APR_SUCCESS)
- rv = apr_dir_make (dir, perm, pool); /* And complete the path */
- }
- return rv;
-}
-
-
-APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- if (rv = utf8_to_unicode_path(wpath, sizeof(wpath)
- / sizeof(apr_wchar_t), path)) {
- return rv;
- }
- if (!RemoveDirectoryW(wpath)) {
- return apr_get_os_error();
- }
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- if (!RemoveDirectory(path)) {
- return apr_get_os_error();
- }
-#endif
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir,
- apr_dir_t *dir)
-{
- if (dir == NULL) {
- return APR_ENODIR;
- }
- *thedir = dir->dirhand;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir,
- apr_os_dir_t *thedir,
- apr_pool_t *pool)
-{
- return APR_ENOTIMPL;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filedup.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filedup.c
deleted file mode 100644
index 8aaf6df2..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filedup.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "win32/apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include <string.h>
-#include "apr_arch_inherit.h"
-#include <io.h> /* for [_open/_get]_osfhandle */
-
-
-APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
- apr_file_t *old_file, apr_pool_t *p)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- HANDLE hproc = GetCurrentProcess();
- HANDLE newhand = NULL;
-
- if (!DuplicateHandle(hproc, old_file->filehand,
- hproc, &newhand, 0, FALSE,
- DUPLICATE_SAME_ACCESS)) {
- return apr_get_os_error();
- }
-
- (*new_file) = (apr_file_t *) apr_pcalloc(p, sizeof(apr_file_t));
- (*new_file)->filehand = newhand;
- (*new_file)->flags = old_file->flags & ~(APR_STD_FLAGS | APR_INHERIT);
- (*new_file)->pool = p;
- (*new_file)->fname = apr_pstrdup(p, old_file->fname);
- (*new_file)->append = old_file->append;
- (*new_file)->buffered = FALSE;
- (*new_file)->ungetchar = old_file->ungetchar;
-
-#if APR_HAS_THREADS
- if (old_file->mutex) {
- apr_thread_mutex_create(&((*new_file)->mutex),
- APR_THREAD_MUTEX_DEFAULT, p);
- }
-#endif
-
- apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), file_cleanup,
- apr_pool_cleanup_null);
-
- return APR_SUCCESS;
-#endif /* !defined(_WIN32_WCE) */
-}
-
-APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
- apr_file_t *old_file, apr_pool_t *p)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- DWORD stdhandle = 0;
- HANDLE hproc = GetCurrentProcess();
- HANDLE newhand = NULL;
- apr_int32_t newflags;
- int fd;
-
- if (new_file->flags & APR_STD_FLAGS)
- {
- if ((new_file->flags & APR_STD_FLAGS) == APR_STDERR_FLAG)
- {
- /* Flush stderr and unset its buffer, then commit the fd-based buffer.
- * This is typically a noop for Win2K/XP since services with NULL std
- * handles [but valid FILE *'s, oddly enough], but is required
- * for NT 4.0 and to use this code outside of services.
- */
- fflush(stderr);
- setvbuf(stderr, NULL, _IONBF, 0);
- _commit(2 /* stderr */);
-
- /* Clone a handle can _close() without harming the source handle,
- * open an MSVCRT-based pseudo-fd for the file handle, then dup2
- * and close our temporary pseudo-fd once it's been duplicated.
- * This will incidently keep the FILE-based stderr in sync.
- * Note the apparently redundant _O_BINARY coersions are required.
- * Note the _dup2 will close the previous std Win32 handle.
- */
- if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
- 0, FALSE, DUPLICATE_SAME_ACCESS)) {
- return apr_get_os_error();
- }
- fd = _open_osfhandle((INT_PTR)newhand, _O_WRONLY | _O_BINARY);
- _dup2(fd, 2);
- _close(fd);
- _setmode(2, _O_BINARY);
-
- /* hPipeWrite was _close()'ed above, and _dup2()'ed
- * to fd 2 creating a new, inherited Win32 handle.
- * Recover that real handle from fd 2. Note that
- * SetStdHandle(STD_ERROR_HANDLE, _get_osfhandle(2))
- * is implicit in the dup2() call above
- */
- newhand = (HANDLE)_get_osfhandle(2);
- }
- else if ((new_file->flags & APR_STD_FLAGS) == APR_STDOUT_FLAG) {
- /* For the process flow see the stderr case above */
- fflush(stdout);
- setvbuf(stdout, NULL, _IONBF, 0);
- _commit(1 /* stdout */);
-
- if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
- 0, FALSE, DUPLICATE_SAME_ACCESS)) {
- return apr_get_os_error();
- }
- fd = _open_osfhandle((INT_PTR)newhand, _O_WRONLY | _O_BINARY);
- _dup2(fd, 1);
- _close(fd);
- _setmode(1, _O_BINARY);
- newhand = (HANDLE)_get_osfhandle(1);
- }
- else if ((new_file->flags & APR_STD_FLAGS) == APR_STDIN_FLAG) {
- /* For the process flow see the stderr case above */
- fflush(stdin);
- setvbuf(stdin, NULL, _IONBF, 0);
- _commit(0 /* stdin */);
-
- if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand,
- 0, FALSE, DUPLICATE_SAME_ACCESS)) {
- return apr_get_os_error();
- }
- fd = _open_osfhandle((INT_PTR)newhand, _O_RDONLY | _O_BINARY);
- _dup2(fd, 0);
- _close(fd);
- _setmode(0, _O_BINARY);
- newhand = (HANDLE)_get_osfhandle(0);
- }
- newflags = (new_file->flags & APR_STD_FLAGS)
- | (old_file->flags & ~APR_STD_FLAGS) | APR_INHERIT;
-
- /* No need to close the old file, _dup2() above did that for us */
- }
- else {
- if (!DuplicateHandle(hproc, old_file->filehand,
- hproc, &newhand, 0,
- FALSE, DUPLICATE_SAME_ACCESS)) {
- return apr_get_os_error();
- }
- newflags = old_file->flags & ~(APR_STD_FLAGS | APR_INHERIT);
-
- if (new_file->filehand
- && (new_file->filehand != INVALID_HANDLE_VALUE)) {
- CloseHandle(new_file->filehand);
- }
- }
-
- new_file->flags = newflags;
- new_file->filehand = newhand;
- new_file->fname = apr_pstrdup(new_file->pool, old_file->fname);
- new_file->append = old_file->append;
- new_file->buffered = FALSE;
- new_file->ungetchar = old_file->ungetchar;
-
-#if APR_HAS_THREADS
- if (old_file->mutex) {
- apr_thread_mutex_create(&(new_file->mutex),
- APR_THREAD_MUTEX_DEFAULT, p);
- }
-#endif
-
- return APR_SUCCESS;
-#endif /* !defined(_WIN32_WCE) */
-}
-
-APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
- apr_file_t *old_file,
- apr_pool_t *p)
-{
- *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t));
- memcpy(*new_file, old_file, sizeof(apr_file_t));
- (*new_file)->pool = p;
- if (old_file->buffered) {
- (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE);
- if (old_file->direction == 1) {
- memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos);
- }
- else {
- memcpy((*new_file)->buffer, old_file->buffer, old_file->dataRead);
- }
- }
- if (old_file->mutex) {
- apr_thread_mutex_create(&((*new_file)->mutex),
- APR_THREAD_MUTEX_DEFAULT, p);
- apr_thread_mutex_destroy(old_file->mutex);
- }
- if (old_file->fname) {
- (*new_file)->fname = apr_pstrdup(p, old_file->fname);
- }
- if (!(old_file->flags & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register(p, (void *)(*new_file),
- file_cleanup,
- file_cleanup);
- }
-
- old_file->filehand = INVALID_HANDLE_VALUE;
- apr_pool_cleanup_kill(old_file->pool, (void *)old_file,
- file_cleanup);
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filepath.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filepath.c
deleted file mode 100644
index f3c1b77b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filepath.c
+++ /dev/null
@@ -1,985 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_private.h"
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#include <string.h>
-#include <ctype.h>
-
-#ifdef NETWARE
-#include <unistd.h>
-#include <fsio.h>
-#endif
-
- /* WinNT accepts several odd forms of a 'root' path. Under Unicode
- * calls (ApiFunctionW) the //?/C:/foo or //?/UNC/mach/share/foo forms
- * are accepted. Ansi and Unicode functions both accept the //./C:/foo
- * form under WinNT/2K. Since these forms are handled in the utf-8 to
- * unicode translation phase, we don't want the user confused by them, so
- * we will accept them but always return the canonical C:/ or //mach/share/
- *
- * OS2 appears immune from the nonsense :)
- */
-
-APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath,
- const char **inpath,
- apr_int32_t flags,
- apr_pool_t *p)
-{
- const char *testpath = *inpath;
- char *newpath;
-#ifdef NETWARE
- char seperator[2] = { 0, 0};
- char server[APR_PATH_MAX+1];
- char volume[APR_PATH_MAX+1];
- char file[APR_PATH_MAX+1];
- char *volsep = NULL;
- int elements;
-
- if (inpath && *inpath)
- volsep = strchr (*inpath, ':');
- else
- return APR_EBADPATH;
-
- if (strlen(*inpath) > APR_PATH_MAX) {
- return APR_EBADPATH;
- }
-
- seperator[0] = (flags & APR_FILEPATH_NATIVE) ? '\\' : '/';
-
- /* Allocate and initialize each of the segment buffers
- */
- server[0] = volume[0] = file[0] = '\0';
-
- /* If we don't have a volume separator then don't bother deconstructing
- the path since we won't use the deconstructed information anyway.
- */
- if (volsep) {
- /* Split the inpath into its separate parts. */
- deconstruct(testpath, server, volume, NULL, file, NULL, &elements, PATH_UNDEF);
-
- /* If we got a volume part then continue splitting out the root.
- Otherwise we either have an incomplete or relative path
- */
- if (volume && strlen(volume) > 0) {
- newpath = apr_pcalloc(p, strlen(server)+strlen(volume)+5);
- construct(newpath, server, volume, NULL, NULL, NULL, PATH_NETWARE);
-
- /* NetWare doesn't add the root slash so we need to add it manually.
- */
- strcat(newpath, seperator);
- *rootpath = newpath;
-
- /* Skip the inpath pointer down to the first non-root character
- */
- newpath = volsep;
- do {
- ++newpath;
- } while (*newpath && ((*newpath == '/') || (*newpath == '\\')));
- *inpath = newpath;
-
- /* Need to handle APR_FILEPATH_TRUENAME checking here. */
-
- return APR_SUCCESS;
- }
- else
- return APR_EBADPATH;
- }
- else if ((**inpath == '/') || (**inpath == '\\')) {
- /* if we have a root path without a volume then just split
- in same manner as unix although this path will be
- incomplete.
- */
- *rootpath = apr_pstrdup(p, seperator);
- do {
- ++(*inpath);
- } while ((**inpath == '/') || (**inpath == '\\'));
- }
- else
- return APR_ERELATIVE;
-
- return APR_EINCOMPLETE;
-
-#else /* ndef(NETWARE) */
-
- char seperator[2];
- const char *delim1;
- const char *delim2;
-
- seperator[0] = (flags & APR_FILEPATH_NATIVE) ? '\\' : '/';
- seperator[1] = 0;
-
- if (testpath[0] == '/' || testpath[0] == '\\') {
- if (testpath[1] == '/' || testpath[1] == '\\') {
-
-#ifdef WIN32 /* //server/share isn't the only // delimited syntax */
- if ((testpath[2] == '?' || testpath[2] == '.')
- && (testpath[3] == '/' || testpath[3] == '\\')) {
- if (IS_FNCHAR(testpath[4]) && testpath[5] == ':')
- {
- apr_status_t rv;
- testpath += 4;
- /* given '//?/C: or //./C: let us try this
- * all over again from the drive designator
- */
- rv = apr_filepath_root(rootpath, &testpath, flags, p);
- if (!rv || rv == APR_EINCOMPLETE)
- *inpath = testpath;
- return rv;
- }
- else if (strncasecmp(testpath + 4, "UNC", 3) == 0
- && (testpath[7] == '/' || testpath[7] == '\\')
- && (testpath[2] == '?')) {
- /* given '//?/UNC/machine/share, a little magic
- * at the end makes this all work out by using
- * 'C/machine' as the starting point and replacing
- * the UNC delimiters with \'s, including the 'C'
- */
- testpath += 6;
- }
- else
- /* This must not be a path to a file, but rather
- * a volume or device. Die for now.
- */
- return APR_EBADPATH;
- }
-#endif /* WIN32 (non - //server/share syntax) */
-
- /* Evaluate path of '//[machine/[share[/]]]' */
- delim1 = testpath + 2;
- do {
- /* Protect against //X/ where X is illegal */
- if (*delim1 && !IS_FNCHAR(*(delim1++)))
- return APR_EBADPATH;
- } while (*delim1 && *delim1 != '/' && *delim1 != '\\');
-
- if (*delim1) {
- apr_status_t rv;
- delim2 = delim1 + 1;
- while (*delim2 && *delim2 != '/' && *delim2 != '\\') {
- /* Protect against //machine/X/ where X is illegal */
- if (!IS_FNCHAR(*(delim2++)))
- return APR_EBADPATH;
- }
-
- /* Copy the '//machine/[share[/]]' path, always providing
- * an extra byte for the trailing slash.
- */
- newpath = apr_pstrmemdup(p, testpath, delim2 - testpath + 1);
-
- if (delim2 == delim1 + 1) {
- /* We found simply \\machine\, so give up already
- */
- *rootpath = newpath;
- *inpath = delim2;
- return APR_EINCOMPLETE;
- }
-
- if (flags & APR_FILEPATH_TRUENAME) {
- /* Validate the \\Machine\Share\ designation,
- * Win32 will argue about slashed in UNC paths,
- * so use backslashes till we finish testing,
- * and add the trailing backslash [required].
- * apr_pstrmemdup above guarentees us the new
- * trailing null character.
- */
- newpath[0] = '\\';
- newpath[1] = '\\';
- newpath[delim1 - testpath] = '\\';
- newpath[delim2 - testpath] = '\\';
-
- rv = filepath_root_test(newpath, p);
- if (rv)
- return rv;
- rv = filepath_root_case(&newpath, newpath, p);
- if (rv)
- return rv;
- newpath[0] = seperator[0];
- newpath[1] = seperator[0];
- newpath[delim1 - testpath] = seperator[0];
- newpath[delim2 - testpath] = (*delim2 ? seperator[0] : '\0');
- }
- else {
- /* Give back the caller's own choice of delimiters
- */
- newpath[0] = testpath[0];
- newpath[1] = testpath[1];
- newpath[delim1 - testpath] = *delim1;
- newpath[delim2 - testpath] = *delim2;
- }
-
- /* If this root included the trailing / or \ designation
- * then lop off multiple trailing slashes and give back
- * appropriate delimiters.
- */
- if (*delim2) {
- *inpath = delim2 + 1;
- while (**inpath == '/' || **inpath == '\\')
- ++*inpath;
- }
- else {
- *inpath = delim2;
- }
-
- *rootpath = newpath;
- return APR_SUCCESS;
- }
-
- /* Have path of '\\[machine]', if the machine is given,
- * append same trailing slash as the leading slash
- */
- delim1 = strchr(testpath, '\0');
- if (delim1 > testpath + 2) {
- newpath = apr_pstrndup(p, testpath, delim1 - testpath + 1);
- if (flags & APR_FILEPATH_TRUENAME)
- newpath[delim1 - testpath] = seperator[0];
- else
- newpath[delim1 - testpath] = newpath[0];
- newpath[delim1 - testpath + 1] = '\0';
- }
- else {
- newpath = apr_pstrndup(p, testpath, delim1 - testpath);
- }
- if (flags & APR_FILEPATH_TRUENAME) {
- newpath[0] = seperator[0];
- newpath[1] = seperator[0];
- }
- *rootpath = newpath;
- *inpath = delim1;
- return APR_EINCOMPLETE;
- }
-
- /* Left with a path of '/', what drive are we asking about?
- */
- *inpath = testpath + 1;
- newpath = apr_palloc(p, 2);
- if (flags & APR_FILEPATH_TRUENAME)
- newpath[0] = seperator[0];
- else
- newpath[0] = testpath[0];
- newpath[1] = '\0';
- *rootpath = newpath;
- return APR_EINCOMPLETE;
- }
-
- /* Evaluate path of 'd:[/]' */
- if (IS_FNCHAR(*testpath) && testpath[1] == ':')
- {
- apr_status_t rv;
- /* Validate that D:\ drive exists, test must be rooted
- * Note that posix/win32 insists a drive letter is upper case,
- * so who are we to argue with a 'feature'.
- * It is a safe fold, since only A-Z is legal, and has no
- * side effects of legal mis-mapped non-us-ascii codes.
- */
- newpath = apr_palloc(p, 4);
- newpath[0] = testpath[0];
- newpath[1] = testpath[1];
- newpath[2] = seperator[0];
- newpath[3] = '\0';
- if (flags & APR_FILEPATH_TRUENAME) {
- newpath[0] = apr_toupper(newpath[0]);
- rv = filepath_root_test(newpath, p);
- if (rv)
- return rv;
- }
- /* Just give back the root the user handed to us.
- */
- if (testpath[2] != '/' && testpath[2] != '\\') {
- newpath[2] = '\0';
- *rootpath = newpath;
- *inpath = testpath + 2;
- return APR_EINCOMPLETE;
- }
-
- /* strip off remaining slashes that designate the root,
- * give the caller back their original choice of slash
- * unless this is TRUENAME'ed
- */
- *inpath = testpath + 3;
- while (**inpath == '/' || **inpath == '\\')
- ++*inpath;
- if (!(flags & APR_FILEPATH_TRUENAME))
- newpath[2] = testpath[2];
- *rootpath = newpath;
- return APR_SUCCESS;
- }
-
- /* Nothing interesting */
- return APR_ERELATIVE;
-
-#endif /* ndef(NETWARE) */
-}
-
-
-APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath,
- const char *basepath,
- const char *addpath,
- apr_int32_t flags,
- apr_pool_t *p)
-{
- char path[APR_PATH_MAX]; /* isn't null term */
- const char *baseroot = NULL;
- const char *addroot;
- apr_size_t rootlen; /* the length of the root portion of path, d:/ is 3 */
- apr_size_t baselen; /* the length of basepath (excluding baseroot) */
- apr_size_t keptlen; /* the length of the retained basepath (incl root) */
- apr_size_t pathlen; /* the length of the result path */
- apr_size_t segend; /* the end of the current segment */
- apr_size_t seglen; /* the length of the segment (excl trailing chars) */
- apr_status_t basetype = 0; /* from parsing the basepath's baseroot */
- apr_status_t addtype; /* from parsing the addpath's addroot */
- apr_status_t rv;
-#ifndef NETWARE
- int fixunc = 0; /* flag to complete an incomplete UNC basepath */
-#endif
-
- /* Treat null as an empty path, otherwise split addroot from the addpath
- */
- if (!addpath) {
- addpath = addroot = "";
- addtype = APR_ERELATIVE;
- }
- else {
- /* This call _should_ test the path
- */
- addtype = apr_filepath_root(&addroot, &addpath,
- APR_FILEPATH_TRUENAME
- | (flags & APR_FILEPATH_NATIVE),
- p);
- if (addtype == APR_SUCCESS) {
- addtype = APR_EABSOLUTE;
- }
- else if (addtype == APR_ERELATIVE) {
- addroot = "";
- }
- else if (addtype != APR_EINCOMPLETE) {
- /* apr_filepath_root was incomprehensible so fail already
- */
- return addtype;
- }
- }
-
- /* If addpath is (even partially) rooted, then basepath is
- * unused. Ths violates any APR_FILEPATH_SECUREROOTTEST
- * and APR_FILEPATH_NOTABSOLUTE flags specified.
- */
- if (addtype == APR_EABSOLUTE || addtype == APR_EINCOMPLETE)
- {
- if (flags & APR_FILEPATH_SECUREROOTTEST)
- return APR_EABOVEROOT;
- if (flags & APR_FILEPATH_NOTABSOLUTE)
- return addtype;
- }
-
- /* Optimized tests before we query the current working path
- */
- if (!basepath) {
-
- /* If APR_FILEPATH_NOTABOVEROOT wasn't specified,
- * we won't test the root again, it's ignored.
- * Waste no CPU retrieving the working path.
- */
- if (addtype == APR_EABSOLUTE && !(flags & APR_FILEPATH_NOTABOVEROOT)) {
- basepath = baseroot = "";
- basetype = APR_ERELATIVE;
- }
-
- /* If APR_FILEPATH_NOTABSOLUTE is specified, the caller
- * requires an absolutely relative result, So do not retrieve
- * the working path.
- */
- if (addtype == APR_ERELATIVE && (flags & APR_FILEPATH_NOTABSOLUTE)) {
- basepath = baseroot = "";
- basetype = APR_ERELATIVE;
- }
- }
-
- if (!basepath)
- {
- /* Start with the current working path. This is bass akwards,
- * but required since the compiler (at least vc) doesn't like
- * passing the address of a char const* for a char** arg.
- * We must grab the current path of the designated drive
- * if addroot is given in drive-relative form (e.g. d:foo)
- */
- char *getpath;
-#ifndef NETWARE
- if (addtype == APR_EINCOMPLETE && addroot[1] == ':')
- rv = filepath_drive_get(&getpath, addroot[0], flags, p);
- else
-#endif
- rv = apr_filepath_get(&getpath, flags, p);
- if (rv != APR_SUCCESS)
- return rv;
- basepath = getpath;
- }
-
- if (!baseroot) {
- /* This call should _not_ test the path
- */
- basetype = apr_filepath_root(&baseroot, &basepath,
- (flags & APR_FILEPATH_NATIVE), p);
- if (basetype == APR_SUCCESS) {
- basetype = APR_EABSOLUTE;
- }
- else if (basetype == APR_ERELATIVE) {
- baseroot = "";
- }
- else if (basetype != APR_EINCOMPLETE) {
- /* apr_filepath_root was incomprehensible so fail already
- */
- return basetype;
- }
- }
- baselen = strlen(basepath);
-
- /* If APR_FILEPATH_NOTABSOLUTE is specified, the caller
- * requires an absolutely relative result. If the given
- * basepath is not relative then fail.
- */
- if ((flags & APR_FILEPATH_NOTABSOLUTE) && basetype != APR_ERELATIVE)
- return basetype;
-
- /* The Win32 nightmare on unc street... start combining for
- * many possible root combinations.
- */
- if (addtype == APR_EABSOLUTE)
- {
- /* Ignore the given root path, and start with the addroot
- */
- if ((flags & APR_FILEPATH_NOTABOVEROOT)
- && strncmp(baseroot, addroot, strlen(baseroot)))
- return APR_EABOVEROOT;
- keptlen = 0;
- rootlen = pathlen = strlen(addroot);
- memcpy(path, addroot, pathlen);
- }
- else if (addtype == APR_EINCOMPLETE)
- {
- /* There are several types of incomplete paths,
- * incomplete UNC paths (//foo/ or //),
- * drives without rooted paths (d: as in d:foo),
- * and simple roots (/ as in /foo).
- * Deal with these in significantly different manners...
- */
-#ifndef NETWARE
- if ((addroot[0] == '/' || addroot[0] == '\\') &&
- (addroot[1] == '/' || addroot[1] == '\\'))
- {
- /* Ignore the given root path if the incomplete addpath is UNC,
- * (note that the final result will be incomplete).
- */
- if (flags & APR_FILEPATH_NOTRELATIVE)
- return addtype;
- if ((flags & APR_FILEPATH_NOTABOVEROOT)
- && strncmp(baseroot, addroot, strlen(baseroot)))
- return APR_EABOVEROOT;
- fixunc = 1;
- keptlen = 0;
- rootlen = pathlen = strlen(addroot);
- memcpy(path, addroot, pathlen);
- }
- else
-#endif
- if ((addroot[0] == '/' || addroot[0] == '\\') && !addroot[1])
- {
- /* Bring together the drive or UNC root from the baseroot
- * if the addpath is a simple root and basepath is rooted,
- * otherwise disregard the basepath entirely.
- */
- if (basetype != APR_EABSOLUTE && (flags & APR_FILEPATH_NOTRELATIVE))
- return basetype;
- if (basetype != APR_ERELATIVE) {
-#ifndef NETWARE
- if (basetype == APR_INCOMPLETE
- && (baseroot[0] == '/' || baseroot[0] == '\\')
- && (baseroot[1] == '/' || baseroot[1] == '\\'))
- fixunc = 1;
-#endif
- keptlen = rootlen = pathlen = strlen(baseroot);
- memcpy(path, baseroot, pathlen);
- }
- else {
- if (flags & APR_FILEPATH_NOTABOVEROOT)
- return APR_EABOVEROOT;
- keptlen = 0;
- rootlen = pathlen = strlen(addroot);
- memcpy(path, addroot, pathlen);
- }
- }
-#ifdef NETWARE
- else if (filepath_has_drive(addroot, DRIVE_ONLY, p))
- {
- /* If the addroot is a drive (without a volume root)
- * use the basepath _if_ it matches this drive letter!
- * Otherwise we must discard the basepath.
- */
- if (!filepath_compare_drive(addroot, baseroot, p) &&
- filepath_has_drive(baseroot, 0, p)) {
-#else
- else if (addroot[0] && addroot[1] == ':' && !addroot[2])
- {
- /* If the addroot is a drive (without a volume root)
- * use the basepath _if_ it matches this drive letter!
- * Otherwise we must discard the basepath.
- */
- if (addroot[0] == baseroot[0] && baseroot[1] == ':') {
-#endif
- /* Base the result path on the basepath
- */
- if (basetype != APR_EABSOLUTE && (flags & APR_FILEPATH_NOTRELATIVE))
- return basetype;
- rootlen = strlen(baseroot);
- keptlen = pathlen = rootlen + baselen;
- if (keptlen >= sizeof(path))
- return APR_ENAMETOOLONG;
- memcpy(path, baseroot, rootlen);
- memcpy(path + rootlen, basepath, baselen);
- }
- else {
- if (flags & APR_FILEPATH_NOTRELATIVE)
- return addtype;
- if (flags & APR_FILEPATH_NOTABOVEROOT)
- return APR_EABOVEROOT;
- keptlen = 0;
- rootlen = pathlen = strlen(addroot);
- memcpy(path, addroot, pathlen);
- }
- }
- else {
- /* Now this is unexpected, we aren't aware of any other
- * incomplete path forms! Fail now.
- */
- return APR_EBADPATH;
- }
- }
- else { /* addtype == APR_ERELATIVE */
- /* If both paths are relative, fail early
- */
- if (basetype != APR_EABSOLUTE && (flags & APR_FILEPATH_NOTRELATIVE))
- return basetype;
-
-#ifndef NETWARE
- /* An incomplete UNC path must be completed
- */
- if (basetype == APR_INCOMPLETE
- && (baseroot[0] == '/' || baseroot[0] == '\\')
- && (baseroot[1] == '/' || baseroot[1] == '\\'))
- fixunc = 1;
-#endif
-
- /* Base the result path on the basepath
- */
- rootlen = strlen(baseroot);
- keptlen = pathlen = rootlen + baselen;
- if (keptlen >= sizeof(path))
- return APR_ENAMETOOLONG;
- memcpy(path, baseroot, rootlen);
- memcpy(path + rootlen, basepath, baselen);
- }
-
- /* '/' terminate the given root path unless it's already terminated
- * or is an incomplete drive root. Correct the trailing slash unless
- * we have an incomplete UNC path still to fix.
- */
- if (pathlen && path[pathlen - 1] != ':') {
- if (path[pathlen - 1] != '/' && path[pathlen - 1] != '\\') {
- if (pathlen + 1 >= sizeof(path))
- return APR_ENAMETOOLONG;
-
- path[pathlen++] = ((flags & APR_FILEPATH_NATIVE) ? '\\' : '/');
- }
- /* XXX: wrong, but gotta figure out what I intended;
- * else if (!fixunc)
- * path[pathlen++] = ((flags & APR_FILEPATH_NATIVE) ? '\\' : '/');
- */
- }
-
- while (*addpath)
- {
- /* Parse each segment, find the closing '/'
- */
- seglen = 0;
- while (addpath[seglen] && addpath[seglen] != '/'
- && addpath[seglen] != '\\')
- ++seglen;
-
- /* Truncate all trailing spaces and all but the first two dots */
- segend = seglen;
- while (seglen && (addpath[seglen - 1] == ' '
- || addpath[seglen - 1] == '.')) {
- if (seglen > 2 || addpath[seglen - 1] != '.' || addpath[0] != '.')
- --seglen;
- else
- break;
- }
-
- if (seglen == 0 || (seglen == 1 && addpath[0] == '.'))
- {
- /* NOTE: win32 _hates_ '/ /' and '/. /' (yes, with spaces in there)
- * so eliminate all preconceptions that it is valid.
- */
- if (seglen < segend)
- return APR_EBADPATH;
-
-#ifndef NETWARE
- /* This isn't legal unless the unc path is completed
- */
- if (fixunc)
- return APR_EBADPATH;
-#endif
-
- /* Otherwise, this is a noop segment (/ or ./) so ignore it
- */
- }
- else if (seglen == 2 && addpath[0] == '.' && addpath[1] == '.')
- {
- /* NOTE: win32 _hates_ '/.. /' (yes, with a space in there)
- * and '/..../', some functions treat it as ".", and some
- * fail! Eliminate all preconceptions that they are valid.
- */
- if (seglen < segend && (seglen != 3 || addpath[2] != '.'))
- return APR_EBADPATH;
-
-#ifndef NETWARE
- /* This isn't legal unless the unc path is completed
- */
- if (fixunc)
- return APR_EBADPATH;
-#endif
-
- /* backpath (../) when an absolute path is given */
- if (rootlen && (pathlen <= rootlen))
- {
- /* Attempt to move above root. Always die if the
- * APR_FILEPATH_SECUREROOTTEST flag is specified.
- */
- if (flags & APR_FILEPATH_SECUREROOTTEST)
- return APR_EABOVEROOT;
-
- /* Otherwise this is simply a noop, above root is root.
- */
- }
- else if (pathlen == 0
- || (pathlen >= 3
- && (pathlen == 3
- || path[pathlen - 4] == ':'
- || path[pathlen - 4] == '/'
- || path[pathlen - 4] == '\\')
- && path[pathlen - 3] == '.'
- && path[pathlen - 2] == '.'
- && (path[pathlen - 1] == '/'
- || path[pathlen - 1] == '\\')))
- {
- /* Verified path is empty, exactly "..[/\]", or ends
- * in "[:/\]..[/\]" - these patterns we will not back
- * over since they aren't 'prior segements'.
- *
- * If APR_FILEPATH_SECUREROOTTEST.was given, die now.
- */
- if (flags & APR_FILEPATH_SECUREROOTTEST)
- return APR_EABOVEROOT;
-
- /* Otherwise append another backpath.
- */
- if (pathlen + 3 >= sizeof(path))
- return APR_ENAMETOOLONG;
- path[pathlen++] = '.';
- path[pathlen++] = '.';
- if (addpath[segend]) {
- path[pathlen++] = ((flags & APR_FILEPATH_NATIVE)
- ? '\\' : ((flags & APR_FILEPATH_TRUENAME)
- ? '/' : addpath[segend]));
- }
- /* The 'root' part of this path now includes the ../ path,
- * because that backpath will not be parsed by the truename
- * code below.
- */
- keptlen = pathlen;
- }
- else
- {
- /* otherwise crop the prior segment
- */
- do {
- --pathlen;
- } while (pathlen && path[pathlen - 1] != '/'
- && path[pathlen - 1] != '\\');
-
- /* Now test if we are above where we started and back up
- * the keptlen offset to reflect the added/altered path.
- */
- if (pathlen < keptlen)
- {
- if (flags & APR_FILEPATH_SECUREROOTTEST)
- return APR_EABOVEROOT;
- keptlen = pathlen;
- }
- }
- }
- else /* not empty or dots */
- {
-#ifndef NETWARE
- if (fixunc) {
- const char *testpath = path;
- const char *testroot;
- apr_status_t testtype;
- apr_size_t i = (addpath[segend] != '\0');
-
- /* This isn't legal unless the unc path is complete!
- */
- if (seglen < segend)
- return APR_EBADPATH;
- if (pathlen + seglen + 1 >= sizeof(path))
- return APR_ENAMETOOLONG;
- memcpy(path + pathlen, addpath, seglen + i);
-
- /* Always add the trailing slash to a UNC segment
- */
- path[pathlen + seglen] = ((flags & APR_FILEPATH_NATIVE)
- ? '\\' : '/');
- pathlen += seglen + 1;
-
- /* Recanonicalize the UNC root with the new UNC segment,
- * and if we succeed, reset this test and the rootlen,
- * and replace our path with the canonical UNC root path
- */
- path[pathlen] = '\0';
- /* This call _should_ test the path
- */
- testtype = apr_filepath_root(&testroot, &testpath,
- APR_FILEPATH_TRUENAME
- | (flags & APR_FILEPATH_NATIVE),
- p);
- if (testtype == APR_SUCCESS) {
- rootlen = pathlen = (testpath - path);
- memcpy(path, testroot, pathlen);
- fixunc = 0;
- }
- else if (testtype != APR_EINCOMPLETE) {
- /* apr_filepath_root was very unexpected so fail already
- */
- return testtype;
- }
- }
- else
-#endif
- {
- /* An actual segment, append it to the destination path
- */
- apr_size_t i = (addpath[segend] != '\0');
- if (pathlen + seglen + i >= sizeof(path))
- return APR_ENAMETOOLONG;
- memcpy(path + pathlen, addpath, seglen + i);
- if (i)
- path[pathlen + seglen] = ((flags & APR_FILEPATH_NATIVE)
- ? '\\' : '/');
- pathlen += seglen + i;
- }
- }
-
- /* Skip over trailing slash to the next segment
- */
- if (addpath[segend])
- ++segend;
-
- addpath += segend;
- }
-
- /* keptlen will be the baselen unless the addpath contained
- * backpath elements. If so, and APR_FILEPATH_NOTABOVEROOT
- * is specified (APR_FILEPATH_SECUREROOTTEST was caught above),
- * compare the string beyond the root to assure the result path
- * is still within given basepath. Note that the root path
- * segment is thoroughly tested prior to path parsing.
- */
- if ((flags & APR_FILEPATH_NOTABOVEROOT) && baselen) {
- if (memcmp(basepath, path + rootlen, baselen) != 0)
- return APR_EABOVEROOT;
-
- /* Ahem... if we have a basepath without a trailing slash,
- * we better be sure that /foo wasn't replaced with /foobar!
- */
- if (basepath[baselen - 1] != '/' && basepath[baselen - 1] != '\\'
- && path[rootlen + baselen] && path[rootlen + baselen] != '/'
- && path[rootlen + baselen] != '\\')
- return APR_EABOVEROOT;
- }
-
- if (addpath && (flags & APR_FILEPATH_TRUENAME)) {
- /* We can always skip the root, it's already true-named. */
- if (rootlen > keptlen)
- keptlen = rootlen;
- if ((path[keptlen] == '/') || (path[keptlen] == '\\')) {
- /* By rights, keptlen may grown longer than pathlen.
- * we wont' use it again (in that case) so we don't care.
- */
- ++keptlen;
- }
- /* Go through all the new segments */
- while (keptlen < pathlen) {
- apr_finfo_t finfo;
- char saveslash = 0;
- seglen = 0;
- /* find any slash and set it aside for a minute. */
- for (seglen = 0; keptlen + seglen < pathlen; ++seglen) {
- if ((path[keptlen + seglen] == '/') ||
- (path[keptlen + seglen] == '\\')) {
- saveslash = path[keptlen + seglen];
- break;
- }
- }
- /* Null term for stat! */
- path[keptlen + seglen] = '\0';
- if ((rv = apr_lstat(&finfo, path,
- APR_FINFO_TYPE | APR_FINFO_NAME, p))
- == APR_SUCCESS) {
- apr_size_t namelen = strlen(finfo.name);
-
-#if defined(OS2) /* only has case folding, never aliases that change the length */
-
- if (memcmp(finfo.name, path + keptlen, seglen) != 0) {
- memcpy(path + keptlen, finfo.name, namelen);
- }
-#else /* WIN32 || NETWARE; here there be aliases that gire and gimble and change length */
-
- if ((namelen != seglen) ||
- (memcmp(finfo.name, path + keptlen, seglen) != 0))
- {
- if (namelen <= seglen) {
- memcpy(path + keptlen, finfo.name, namelen);
- if ((namelen < seglen) && saveslash) {
- memmove(path + keptlen + namelen + 1,
- path + keptlen + seglen + 1,
- pathlen - keptlen - seglen);
- pathlen += namelen - seglen;
- seglen = namelen;
- }
- }
- else { /* namelen > seglen */
- if (pathlen + namelen - seglen >= sizeof(path))
- return APR_ENAMETOOLONG;
- if (saveslash) {
- memmove(path + keptlen + namelen + 1,
- path + keptlen + seglen + 1,
- pathlen - keptlen - seglen);
- }
- memcpy(path + keptlen, finfo.name, namelen);
- pathlen += namelen - seglen;
- seglen = namelen;
- }
- }
-#endif /* !OS2 (Whatever that alias was we're over it) */
-
- /* That's it, the rest is path info.
- * I don't know how we aught to handle this. Should
- * we define a new error to indicate 'more info'?
- * Should we split out the rest of the path?
- */
- if ((finfo.filetype != APR_DIR) &&
- (finfo.filetype != APR_LNK) && saveslash)
- rv = APR_ENOTDIR;
-#ifdef XXX_FIGURE_THIS_OUT
- {
- /* the example inserts a null between the end of
- * the filename and the next segment, and increments
- * the path length so we would return both segments.
- */
- if (saveslash) {
- keptlen += seglen;
- path[keptlen] = saveslash;
- if (pathlen + 1 >= sizeof(path))
- return APR_ENAMETOOLONG;
- memmove(path + keptlen + 1,
- path + keptlen,
- pathlen - keptlen);
- path[keptlen] = '\0';
- ++pathlen;
- break;
- }
- }
-#endif
- }
-
- /* put back the '/' */
- if (saveslash) {
- path[keptlen + seglen] = saveslash;
- ++seglen;
- }
- keptlen += seglen;
-
- if (rv != APR_SUCCESS) {
- if (APR_STATUS_IS_ENOENT(rv))
- break;
- if (APR_STATUS_IS_EPATHWILD(rv))
- /* This path included wildcards. The path elements
- * that did not contain wildcards are canonicalized,
- * so we will return the path, although later elements
- * don't necessarily exist, and aren't canonical.
- */
- break;
- else if (APR_STATUS_IS_ENOTDIR(rv))
- /* This is a little more serious, we just added a name
- * onto a filename (think http's PATH_INFO)
- * If the caller is foolish enough to do this, we expect
- * the've already canonicalized the root) that they knew
- * what they are doing :(
- */
- break;
- else
- return rv;
- }
- }
- }
-
- *newpath = apr_pmemdup(p, path, pathlen + 1);
- (*newpath)[pathlen] = '\0';
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts,
- const char *liststr,
- apr_pool_t *p)
-{
- return apr_filepath_list_split_impl(pathelts, liststr, ';', p);
-}
-
-APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr,
- apr_array_header_t *pathelts,
- apr_pool_t *p)
-{
- return apr_filepath_list_merge_impl(liststr, pathelts, ';', p);
-}
-
-
-APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- *style = APR_FILEPATH_ENCODING_UTF8;
- return APR_SUCCESS;
- }
-#endif
-
- *style = APR_FILEPATH_ENCODING_LOCALE;
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filestat.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filestat.c
deleted file mode 100644
index 041b78de..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filestat.c
+++ /dev/null
@@ -1,767 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include <aclapi.h>
-#include "apr_private.h"
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_errno.h"
-#include "apr_time.h"
-#include <sys/stat.h>
-#include "apr_arch_atime.h"
-#include "apr_arch_misc.h"
-
-/* We have to assure that the file name contains no '*'s, or other
- * wildcards when using FindFirstFile to recover the true file name.
- */
-static apr_status_t test_safe_name(const char *name)
-{
- /* Only accept ':' in the second position of the filename,
- * as the drive letter delimiter:
- */
- if (apr_isalpha(*name) && (name[1] == ':')) {
- name += 2;
- }
- while (*name) {
- if (!IS_FNCHAR(*name) && (*name != '\\') && (*name != '/')) {
- if (*name == '?' || *name == '*')
- return APR_EPATHWILD;
- else
- return APR_EBADPATH;
- }
- ++name;
- }
- return APR_SUCCESS;
-}
-
-static apr_status_t free_localheap(void *heap) {
- LocalFree(heap);
- return APR_SUCCESS;
-}
-
-static apr_gid_t worldid = NULL;
-
-static void free_world(void)
-{
- if (worldid) {
- FreeSid(worldid);
- worldid = NULL;
- }
-}
-
-/* Left bit shifts from World scope to given scope */
-typedef enum prot_scope_e {
- prot_scope_world = 0,
- prot_scope_group = 4,
- prot_scope_user = 8
-} prot_scope_e;
-
-static apr_fileperms_t convert_prot(ACCESS_MASK acc, prot_scope_e scope)
-{
- /* These choices are based on the single filesystem bit that controls
- * the given behavior. They are -not- recommended for any set protection
- * function, such a function should -set- use GENERIC_READ/WRITE/EXECUTE
- */
- apr_fileperms_t prot = 0;
- if (acc & FILE_EXECUTE)
- prot |= APR_WEXECUTE;
- if (acc & FILE_WRITE_DATA)
- prot |= APR_WWRITE;
- if (acc & FILE_READ_DATA)
- prot |= APR_WREAD;
- return (prot << scope);
-}
-
-static void resolve_prot(apr_finfo_t *finfo, apr_int32_t wanted, PACL dacl)
-{
- TRUSTEE_W ident = {NULL, NO_MULTIPLE_TRUSTEE, TRUSTEE_IS_SID};
- ACCESS_MASK acc;
- /*
- * This function is only invoked for WinNT,
- * there is no reason for os_level testing here.
- */
- if ((wanted & APR_FINFO_WPROT) && !worldid) {
- SID_IDENTIFIER_AUTHORITY SIDAuth = SECURITY_WORLD_SID_AUTHORITY;
- if (AllocateAndInitializeSid(&SIDAuth, 1, SECURITY_WORLD_RID,
- 0, 0, 0, 0, 0, 0, 0, &worldid))
- atexit(free_world);
- else
- worldid = NULL;
- }
- if ((wanted & APR_FINFO_UPROT) && (finfo->valid & APR_FINFO_USER)) {
- ident.TrusteeType = TRUSTEE_IS_USER;
- ident.ptstrName = finfo->user;
- /* GetEffectiveRightsFromAcl isn't supported under Win9x,
- * which shouldn't come as a surprize. Since we are passing
- * TRUSTEE_IS_SID, always skip the A->W layer.
- */
- if (GetEffectiveRightsFromAclW(dacl, &ident, &acc) == ERROR_SUCCESS) {
- finfo->protection |= convert_prot(acc, prot_scope_user);
- finfo->valid |= APR_FINFO_UPROT;
- }
- }
- /* Windows NT: did not return group rights.
- * Windows 2000 returns group rights information.
- * Since WinNT kernels don't follow the unix model of
- * group associations, this all all pretty mute.
- */
- if ((wanted & APR_FINFO_GPROT) && (finfo->valid & APR_FINFO_GROUP)) {
- ident.TrusteeType = TRUSTEE_IS_GROUP;
- ident.ptstrName = finfo->group;
- if (GetEffectiveRightsFromAclW(dacl, &ident, &acc) == ERROR_SUCCESS) {
- finfo->protection |= convert_prot(acc, prot_scope_group);
- finfo->valid |= APR_FINFO_GPROT;
- }
- }
- if ((wanted & APR_FINFO_WPROT) && (worldid)) {
- ident.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
- ident.ptstrName = worldid;
- if (GetEffectiveRightsFromAclW(dacl, &ident, &acc) == ERROR_SUCCESS) {
- finfo->protection |= convert_prot(acc, prot_scope_world);
- finfo->valid |= APR_FINFO_WPROT;
- }
- }
-}
-
-static apr_status_t resolve_ident(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- apr_file_t *thefile = NULL;
- apr_status_t rv;
- /*
- * NT5 (W2K) only supports symlinks in the same manner as mount points.
- * This code should eventually take that into account, for now treat
- * every reparse point as a symlink...
- *
- * We must open the file with READ_CONTROL if we plan to retrieve the
- * user, group or permissions.
- */
-
- if ((rv = apr_file_open(&thefile, fname, APR_OPENINFO
- | ((wanted & APR_FINFO_LINK) ? APR_OPENLINK : 0)
- | ((wanted & (APR_FINFO_PROT | APR_FINFO_OWNER))
- ? APR_READCONTROL : 0),
- APR_OS_DEFAULT, pool)) == APR_SUCCESS) {
- rv = apr_file_info_get(finfo, wanted, thefile);
- finfo->filehand = NULL;
- apr_file_close(thefile);
- }
- else if (APR_STATUS_IS_EACCES(rv) && (wanted & (APR_FINFO_PROT
- | APR_FINFO_OWNER))) {
- /* We have a backup plan. Perhaps we couldn't grab READ_CONTROL?
- * proceed without asking for that permission...
- */
- if ((rv = apr_file_open(&thefile, fname, APR_OPENINFO
- | ((wanted & APR_FINFO_LINK) ? APR_OPENLINK : 0),
- APR_OS_DEFAULT, pool)) == APR_SUCCESS) {
- rv = apr_file_info_get(finfo, wanted & ~(APR_FINFO_PROT
- | APR_FINFO_OWNER),
- thefile);
- finfo->filehand = NULL;
- apr_file_close(thefile);
- }
- }
-
- if (rv != APR_SUCCESS && rv != APR_INCOMPLETE)
- return (rv);
-
- /* We picked up this case above and had opened the link's properties */
- if (wanted & APR_FINFO_LINK)
- finfo->valid |= APR_FINFO_LINK;
-
- return rv;
-}
-
-static void guess_protection_bits(apr_finfo_t *finfo)
-{
- /* Read, write execute for owner. In the Win9x environment, any
- * readable file is executable (well, not entirely 100% true, but
- * still looking for some cheap logic that would help us here.)
- * The same holds on NT if a file doesn't have a DACL (e.g., on FAT)
- */
- if (finfo->protection & APR_FREADONLY) {
- finfo->protection |= APR_WREAD | APR_WEXECUTE;
- }
- else {
- finfo->protection |= APR_WREAD | APR_WEXECUTE | APR_WWRITE;
- }
- finfo->protection |= (finfo->protection << prot_scope_group)
- | (finfo->protection << prot_scope_user);
-
- finfo->valid |= APR_FINFO_UPROT | APR_FINFO_GPROT | APR_FINFO_WPROT;
-}
-
-apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile,
- apr_int32_t wanted, int whatfile)
-{
- PSID user = NULL, grp = NULL;
- PACL dacl = NULL;
- apr_status_t rv;
-
- if (apr_os_level < APR_WIN_NT)
- guess_protection_bits(finfo);
- else if (wanted & (APR_FINFO_PROT | APR_FINFO_OWNER))
- {
- /* On NT this request is incredibly expensive, but accurate.
- * Since the WinNT-only functions below are protected by the
- * (apr_os_level < APR_WIN_NT) case above, we need no extra
- * tests, but remember GetNamedSecurityInfo & GetSecurityInfo
- * are not supported on 9x.
- */
- SECURITY_INFORMATION sinf = 0;
- PSECURITY_DESCRIPTOR pdesc = NULL;
- if (wanted & (APR_FINFO_USER | APR_FINFO_UPROT))
- sinf |= OWNER_SECURITY_INFORMATION;
- if (wanted & (APR_FINFO_GROUP | APR_FINFO_GPROT))
- sinf |= GROUP_SECURITY_INFORMATION;
- if (wanted & APR_FINFO_PROT)
- sinf |= DACL_SECURITY_INFORMATION;
- if (whatfile == MORE_OF_WFSPEC) {
- apr_wchar_t *wfile = (apr_wchar_t*) ufile;
- int fix = 0;
- if (wcsncmp(wfile, L"\\\\?\\", 4) == 0) {
- fix = 4;
- if (wcsncmp(wfile + fix, L"UNC\\", 4) == 0)
- wfile[6] = L'\\', fix = 6;
- }
- rv = GetNamedSecurityInfoW(wfile + fix,
- SE_FILE_OBJECT, sinf,
- ((wanted & (APR_FINFO_USER | APR_FINFO_UPROT)) ? &user : NULL),
- ((wanted & (APR_FINFO_GROUP | APR_FINFO_GPROT)) ? &grp : NULL),
- ((wanted & APR_FINFO_PROT) ? &dacl : NULL),
- NULL, &pdesc);
- if (fix == 6)
- wfile[6] = L'C';
- }
- else if (whatfile == MORE_OF_FSPEC)
- rv = GetNamedSecurityInfoA((char*)ufile,
- SE_FILE_OBJECT, sinf,
- ((wanted & (APR_FINFO_USER | APR_FINFO_UPROT)) ? &user : NULL),
- ((wanted & (APR_FINFO_GROUP | APR_FINFO_GPROT)) ? &grp : NULL),
- ((wanted & APR_FINFO_PROT) ? &dacl : NULL),
- NULL, &pdesc);
- else if (whatfile == MORE_OF_HANDLE)
- rv = GetSecurityInfo((HANDLE)ufile,
- SE_FILE_OBJECT, sinf,
- ((wanted & (APR_FINFO_USER | APR_FINFO_UPROT)) ? &user : NULL),
- ((wanted & (APR_FINFO_GROUP | APR_FINFO_GPROT)) ? &grp : NULL),
- ((wanted & APR_FINFO_PROT) ? &dacl : NULL),
- NULL, &pdesc);
- else
- return APR_INCOMPLETE;
- if (rv == ERROR_SUCCESS)
- apr_pool_cleanup_register(finfo->pool, pdesc, free_localheap,
- apr_pool_cleanup_null);
- else
- user = grp = dacl = NULL;
-
- if (user) {
- finfo->user = user;
- finfo->valid |= APR_FINFO_USER;
- }
-
- if (grp) {
- finfo->group = grp;
- finfo->valid |= APR_FINFO_GROUP;
- }
-
- if (dacl) {
- /* Retrieved the discresionary access list */
- resolve_prot(finfo, wanted, dacl);
- }
- else if (wanted & APR_FINFO_PROT)
- guess_protection_bits(finfo);
- }
-
- return ((wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS);
-}
-
-
-/* This generic fillin depends upon byhandle to be passed as 0 when
- * a WIN32_FILE_ATTRIBUTE_DATA or either WIN32_FIND_DATA [A or W] is
- * passed for wininfo. When the BY_HANDLE_FILE_INFORMATION structure
- * is passed for wininfo, byhandle is passed as 1 to offset the one
- * dword discrepancy in offset of the High/Low size structure members.
- *
- * The generic fillin returns 1 if the caller should further inquire
- * if this is a CHR filetype. If it's reasonably certain it can't be,
- * then the function returns 0.
- */
-int fillin_fileinfo(apr_finfo_t *finfo,
- WIN32_FILE_ATTRIBUTE_DATA *wininfo,
- int byhandle, apr_int32_t wanted)
-{
- DWORD *sizes = &wininfo->nFileSizeHigh + byhandle;
- int warn = 0;
-
- memset(finfo, '\0', sizeof(*finfo));
-
- FileTimeToAprTime(&finfo->atime, &wininfo->ftLastAccessTime);
- FileTimeToAprTime(&finfo->ctime, &wininfo->ftCreationTime);
- FileTimeToAprTime(&finfo->mtime, &wininfo->ftLastWriteTime);
-
-#if APR_HAS_LARGE_FILES
- finfo->size = (apr_off_t)sizes[1]
- | ((apr_off_t)sizes[0] << 32);
-#else
- finfo->size = (apr_off_t)sizes[1];
- if (finfo->size < 0 || sizes[0])
- finfo->size = 0x7fffffff;
-#endif
-
- if (wanted & APR_FINFO_LINK &&
- wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
- finfo->filetype = APR_LNK;
- }
- else if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
- finfo->filetype = APR_DIR;
- }
- else if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_DEVICE) {
- /* Warning: This test only succeeds on Win9x, on NT these files
- * (con, aux, nul, lpt#, com# etc) escape early detection!
- */
- finfo->filetype = APR_CHR;
- }
- else {
- /* Warning: Short of opening the handle to the file, the 'FileType'
- * appears to be unknowable (in any trustworthy or consistent sense)
- * on WinNT/2K as far as PIPE, CHR, etc are concerned.
- */
- if (!wininfo->ftLastWriteTime.dwLowDateTime
- && !wininfo->ftLastWriteTime.dwHighDateTime
- && !finfo->size)
- warn = 1;
- finfo->filetype = APR_REG;
- }
-
- /* The following flags are [for this moment] private to Win32.
- * That's the only excuse for not toggling valid bits to reflect them.
- */
- if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_READONLY)
- finfo->protection = APR_FREADONLY;
-
- finfo->valid = APR_FINFO_ATIME | APR_FINFO_CTIME | APR_FINFO_MTIME
- | APR_FINFO_SIZE | APR_FINFO_TYPE; /* == APR_FINFO_MIN */
-
- /* Only byhandle optionally tests link targets, so tell that caller
- * what it wants to hear, otherwise the byattributes is never
- * reporting anything but the link.
- */
- if (!byhandle || (wanted & APR_FINFO_LINK))
- finfo->valid |= APR_FINFO_LINK;
- return warn;
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted,
- apr_file_t *thefile)
-{
- BY_HANDLE_FILE_INFORMATION FileInfo;
-
- if (thefile->buffered) {
- /* XXX: flush here is not mutex protected */
- apr_status_t rv = apr_file_flush(thefile);
- if (rv != APR_SUCCESS)
- return rv;
- }
-
- if (!GetFileInformationByHandle(thefile->filehand, &FileInfo)) {
- return apr_get_os_error();
- }
-
- fillin_fileinfo(finfo, (WIN32_FILE_ATTRIBUTE_DATA *) &FileInfo, 1, wanted);
-
- if (finfo->filetype == APR_REG)
- {
- /* Go the extra mile to be -certain- that we have a real, regular
- * file, since the attribute bits aren't a certain thing. Even
- * though fillin should have hinted if we *must* do this, we
- * don't need to take chances while the handle is already open.
- */
- DWORD FileType;
- if (FileType = GetFileType(thefile->filehand)) {
- if (FileType == FILE_TYPE_CHAR) {
- finfo->filetype = APR_CHR;
- }
- else if (FileType == FILE_TYPE_PIPE) {
- finfo->filetype = APR_PIPE;
- }
- /* Otherwise leave the original conclusion alone
- */
- }
- }
-
- finfo->pool = thefile->pool;
-
- /* ### The finfo lifetime may exceed the lifetime of thefile->pool
- * but finfo's aren't managed in pools, so where on earth would
- * we pstrdup the fname into???
- */
- finfo->fname = thefile->fname;
-
- /* Extra goodies known only by GetFileInformationByHandle() */
- finfo->inode = (apr_ino_t)FileInfo.nFileIndexLow
- | ((apr_ino_t)FileInfo.nFileIndexHigh << 32);
- finfo->device = FileInfo.dwVolumeSerialNumber;
- finfo->nlink = FileInfo.nNumberOfLinks;
-
- finfo->valid |= APR_FINFO_IDENT | APR_FINFO_NLINK;
-
- /* If we still want something more (besides the name) go get it!
- */
- if ((wanted &= ~finfo->valid) & ~APR_FINFO_NAME) {
- return more_finfo(finfo, thefile->filehand, wanted, MORE_OF_HANDLE);
- }
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname,
- apr_fileperms_t perms)
-{
- return APR_ENOTIMPL;
-}
-
-APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- /* XXX: is constant - needs testing - which requires a lighter-weight root test fn */
- int isroot = 0;
- apr_status_t ident_rv = 0;
- apr_status_t rv;
-#if APR_HAS_UNICODE_FS
- apr_wchar_t wfname[APR_PATH_MAX];
-
-#endif
- char *filename = NULL;
- /* These all share a common subset of this structure */
- union {
- WIN32_FIND_DATAW w;
- WIN32_FIND_DATAA n;
- WIN32_FILE_ATTRIBUTE_DATA i;
- } FileInfo;
-
- /* Catch fname length == MAX_PATH since GetFileAttributesEx fails
- * with PATH_NOT_FOUND. We would rather indicate length error than
- * 'not found'
- */
- if (strlen(fname) >= APR_PATH_MAX) {
- return APR_ENAMETOOLONG;
- }
-
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- if ((wanted & (APR_FINFO_IDENT | APR_FINFO_NLINK))
- || (~wanted & APR_FINFO_LINK)) {
- /* FindFirstFile and GetFileAttributesEx can't figure the inode,
- * device or number of links, so we need to resolve with an open
- * file handle. If the user has asked for these fields, fall over
- * to the get file info by handle method. If we fail, or the user
- * also asks for the file name, continue by our usual means.
- *
- * We also must use this method for a 'true' stat, that resolves
- * a symlink (NTFS Junction) target. This is because all fileinfo
- * on a Junction always returns the junction, opening the target
- * is the only way to resolve the target's attributes.
- */
- if ((ident_rv = resolve_ident(finfo, fname, wanted, pool))
- == APR_SUCCESS)
- return ident_rv;
- else if (ident_rv == APR_INCOMPLETE)
- wanted &= ~finfo->valid;
- }
-
- if (rv = utf8_to_unicode_path(wfname, sizeof(wfname)
- / sizeof(apr_wchar_t), fname))
- return rv;
- if (!(wanted & APR_FINFO_NAME)) {
- if (!GetFileAttributesExW(wfname, GetFileExInfoStandard,
- &FileInfo.i))
- return apr_get_os_error();
- }
- else {
- /* Guard against bogus wildcards and retrieve by name
- * since we want the true name, and set aside a long
- * enough string to handle the longest file name.
- */
- char tmpname[APR_FILE_MAX * 3 + 1];
- HANDLE hFind;
- if ((rv = test_safe_name(fname)) != APR_SUCCESS) {
- return rv;
- }
- hFind = FindFirstFileW(wfname, &FileInfo.w);
- if (hFind == INVALID_HANDLE_VALUE)
- return apr_get_os_error();
- FindClose(hFind);
- if (unicode_to_utf8_path(tmpname, sizeof(tmpname),
- FileInfo.w.cFileName)) {
- return APR_ENAMETOOLONG;
- }
- filename = apr_pstrdup(pool, tmpname);
- }
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- char *root = NULL;
- const char *test = fname;
- rv = apr_filepath_root(&root, &test, APR_FILEPATH_NATIVE, pool);
- isroot = (root && *root && !(*test));
-
- if ((apr_os_level >= APR_WIN_98) && (!(wanted & APR_FINFO_NAME) || isroot))
- {
- /* cannot use FindFile on a Win98 root, it returns \*
- * GetFileAttributesExA is not available on Win95
- */
- if (!GetFileAttributesExA(fname, GetFileExInfoStandard,
- &FileInfo.i)) {
- return apr_get_os_error();
- }
- }
- else if (isroot) {
- /* This is Win95 and we are trying to stat a root. Lie.
- */
- if (GetDriveType(fname) != DRIVE_UNKNOWN)
- {
- finfo->pool = pool;
- finfo->filetype = 0;
- finfo->mtime = apr_time_now();
- finfo->protection |= APR_WREAD | APR_WEXECUTE | APR_WWRITE;
- finfo->protection |= (finfo->protection << prot_scope_group)
- | (finfo->protection << prot_scope_user);
- finfo->valid |= APR_FINFO_TYPE | APR_FINFO_PROT
- | APR_FINFO_MTIME
- | (wanted & APR_FINFO_LINK);
- return (wanted &= ~finfo->valid) ? APR_INCOMPLETE
- : APR_SUCCESS;
- }
- else
- return APR_FROM_OS_ERROR(ERROR_PATH_NOT_FOUND);
- }
- else {
- /* Guard against bogus wildcards and retrieve by name
- * since we want the true name, or are stuck in Win95,
- * or are looking for the root of a Win98 drive.
- */
- HANDLE hFind;
- if ((rv = test_safe_name(fname)) != APR_SUCCESS) {
- return rv;
- }
- hFind = FindFirstFileA(fname, &FileInfo.n);
- if (hFind == INVALID_HANDLE_VALUE) {
- return apr_get_os_error();
- }
- FindClose(hFind);
- filename = apr_pstrdup(pool, FileInfo.n.cFileName);
- }
- }
-#endif
-
- if (ident_rv != APR_INCOMPLETE) {
- if (fillin_fileinfo(finfo, (WIN32_FILE_ATTRIBUTE_DATA *) &FileInfo,
- 0, wanted))
- {
- /* Go the extra mile to assure we have a file. WinNT/2000 seems
- * to reliably translate char devices to the path '\\.\device'
- * so go ask for the full path.
- */
- if (apr_os_level >= APR_WIN_NT)
- {
-#if APR_HAS_UNICODE_FS
- apr_wchar_t tmpname[APR_FILE_MAX];
- apr_wchar_t *tmpoff = NULL;
- if (GetFullPathNameW(wfname, sizeof(tmpname) / sizeof(apr_wchar_t),
- tmpname, &tmpoff))
- {
- if (!wcsncmp(tmpname, L"\\\\.\\", 4)) {
-#else
- /* Same initial logic as above, but
- * only for WinNT/non-UTF-8 builds of APR:
- */
- char tmpname[APR_FILE_MAX];
- char *tmpoff;
- if (GetFullPathName(fname, sizeof(tmpname), tmpname, &tmpoff))
- {
- if (!strncmp(tmpname, "\\\\.\\", 4)) {
-#endif
- if (tmpoff == tmpname + 4) {
- finfo->filetype = APR_CHR;
- }
- /* For WHATEVER reason, CHR devices such as \\.\con
- * or \\.\lpt1 *may*not* update tmpoff; in fact the
- * resulting tmpoff is set to NULL. Guard against
- * either case.
- *
- * This code is identical for wide and narrow chars...
- */
- else if (!tmpoff) {
- tmpoff = tmpname + 4;
- while (*tmpoff) {
- if (*tmpoff == '\\' || *tmpoff == '/') {
- break;
- }
- ++tmpoff;
- }
- if (!*tmpoff) {
- finfo->filetype = APR_CHR;
- }
- }
- }
- }
- else {
- finfo->valid &= ~APR_FINFO_TYPE;
- }
-
- }
- else {
- finfo->valid &= ~APR_FINFO_TYPE;
- }
- }
- finfo->pool = pool;
- }
-
- if (filename && !isroot) {
- finfo->name = filename;
- finfo->valid |= APR_FINFO_NAME;
- }
-
- if (wanted &= ~finfo->valid) {
- /* Caller wants more than APR_FINFO_MIN | APR_FINFO_NAME */
-#if APR_HAS_UNICODE_FS
- if (apr_os_level >= APR_WIN_NT)
- return more_finfo(finfo, wfname, wanted, MORE_OF_WFSPEC);
-#endif
- return more_finfo(finfo, fname, wanted, MORE_OF_FSPEC);
- }
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_lstat(apr_finfo_t *finfo, const char *fname,
- apr_int32_t wanted, apr_pool_t *pool)
-{
- return apr_stat(finfo, fname, wanted | APR_FINFO_LINK, pool);
-}
-
-APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname,
- apr_fileattrs_t attributes,
- apr_fileattrs_t attr_mask,
- apr_pool_t *pool)
-{
- DWORD flags;
- apr_status_t rv;
-#if APR_HAS_UNICODE_FS
- apr_wchar_t wfname[APR_PATH_MAX];
-#endif
-
- /* Don't do anything if we can't handle the requested attributes */
- if (!(attr_mask & (APR_FILE_ATTR_READONLY
- | APR_FILE_ATTR_HIDDEN)))
- return APR_SUCCESS;
-
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- if (rv = utf8_to_unicode_path(wfname,
- sizeof(wfname) / sizeof(wfname[0]),
- fname))
- return rv;
- flags = GetFileAttributesW(wfname);
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- flags = GetFileAttributesA(fname);
- }
-#endif
-
- if (flags == 0xFFFFFFFF)
- return apr_get_os_error();
-
- if (attr_mask & APR_FILE_ATTR_READONLY)
- {
- if (attributes & APR_FILE_ATTR_READONLY)
- flags |= FILE_ATTRIBUTE_READONLY;
- else
- flags &= ~FILE_ATTRIBUTE_READONLY;
- }
-
- if (attr_mask & APR_FILE_ATTR_HIDDEN)
- {
- if (attributes & APR_FILE_ATTR_HIDDEN)
- flags |= FILE_ATTRIBUTE_HIDDEN;
- else
- flags &= ~FILE_ATTRIBUTE_HIDDEN;
- }
-
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- rv = SetFileAttributesW(wfname, flags);
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- rv = SetFileAttributesA(fname, flags);
- }
-#endif
-
- if (rv == 0)
- return apr_get_os_error();
-
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname,
- apr_time_t mtime,
- apr_pool_t *pool)
-{
- apr_file_t *thefile;
- apr_status_t rv;
-
- rv = apr_file_open(&thefile, fname,
- APR_READ | APR_WRITEATTRS,
- APR_OS_DEFAULT, pool);
- if (!rv)
- {
- FILETIME file_ctime;
- FILETIME file_atime;
- FILETIME file_mtime;
-
- if (!GetFileTime(thefile->filehand,
- &file_ctime, &file_atime, &file_mtime))
- rv = apr_get_os_error();
- else
- {
- AprTimeToFileTime(&file_mtime, mtime);
- if (!SetFileTime(thefile->filehand,
- &file_ctime, &file_atime, &file_mtime))
- rv = apr_get_os_error();
- }
-
- apr_file_close(thefile);
- }
-
- return rv;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filesys.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filesys.c
deleted file mode 100644
index ad31e338..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/filesys.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_arch_file_io.h"
-#include "apr_strings.h"
-
-/* Win32 Exceptions:
- *
- * Note that trailing spaces and trailing periods are never recorded
- * in the file system, except by a very obscure bug where any file
- * that is created with a trailing space or period, followed by the
- * ':' stream designator on an NTFS volume can never be accessed again.
- * In other words, don't ever accept them when designating a stream!
- *
- * An interesting side effect is that two or three periods are both
- * treated as the parent directory, although the fourth and on are
- * not [strongly suggest all trailing periods are trimmed off, or
- * down to two if there are no other characters.]
- *
- * Leading spaces and periods are accepted, however.
- * The * ? < > codes all have wildcard side effects
- * The " / \ : are exclusively component separator tokens
- * The system doesn't accept | for any (known) purpose
- * Oddly, \x7f _is_ acceptable ;)
- */
-
-/* apr_c_is_fnchar[] maps Win32's file name and shell escape symbols
- *
- * element & 1 == valid file name character [excluding delimiters]
- * element & 2 == character should be shell (caret) escaped from cmd.exe
- *
- * this must be in-sync with Apache httpd's gen_test_char.c for cgi escaping.
- */
-
-const char apr_c_is_fnchar[256] =
-{/* Reject all ctrl codes... Escape \n and \r (ascii 10 and 13) */
- 0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- 1,1,2,1,3,3,3,3,3,3,2,1,1,1,1,0, 1,1,1,1,1,1,1,1,1,1,0,3,2,1,2,2,
- /* @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,3,2,3,3,1,
- /* ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ */
- 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,3,2,3,3,1,
- /* High bit codes are accepted (subject to utf-8->Unicode xlation) */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
-};
-
-
-apr_status_t filepath_root_test(char *path, apr_pool_t *p)
-{
- apr_status_t rv;
-#if APR_HAS_UNICODE_FS
- if (apr_os_level >= APR_WIN_NT)
- {
- apr_wchar_t wpath[APR_PATH_MAX];
- if (rv = utf8_to_unicode_path(wpath, sizeof(wpath)
- / sizeof(apr_wchar_t), path))
- return rv;
- rv = GetDriveTypeW(wpath);
- }
- else
-#endif
- rv = GetDriveType(path);
-
- if (rv == DRIVE_UNKNOWN || rv == DRIVE_NO_ROOT_DIR)
- return APR_EBADPATH;
- return APR_SUCCESS;
-}
-
-
-apr_status_t filepath_drive_get(char **rootpath, char drive,
- apr_int32_t flags, apr_pool_t *p)
-{
- char path[APR_PATH_MAX];
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t *ignored;
- apr_wchar_t wdrive[8];
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- /* ???: This needs review, apparently "\\?\d:." returns "\\?\d:"
- * as if that is useful for anything.
- */
- wcscpy(wdrive, L"D:.");
- wdrive[0] = (apr_wchar_t)(unsigned char)drive;
- if (!GetFullPathNameW(wdrive, sizeof(wpath) / sizeof(apr_wchar_t), wpath, &ignored))
- return apr_get_os_error();
- if ((rv = unicode_to_utf8_path(path, sizeof(path), wpath)))
- return rv;
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- char *ignored;
- char drivestr[4];
- drivestr[0] = drive;
- drivestr[1] = ':';
- drivestr[2] = '.';;
- drivestr[3] = '\0';
- if (!GetFullPathName(drivestr, sizeof(path), path, &ignored))
- return apr_get_os_error();
- }
-#endif
- if (!(flags & APR_FILEPATH_NATIVE)) {
- for (*rootpath = path; **rootpath; ++*rootpath) {
- if (**rootpath == '\\')
- **rootpath = '/';
- }
- }
- *rootpath = apr_pstrdup(p, path);
- return APR_SUCCESS;
-}
-
-
-apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t *ignored;
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- apr_wchar_t wroot[APR_PATH_MAX];
- /* ???: This needs review, apparently "\\?\d:." returns "\\?\d:"
- * as if that is useful for anything.
- */
- if (rv = utf8_to_unicode_path(wroot, sizeof(wroot)
- / sizeof(apr_wchar_t), root))
- return rv;
- if (!GetFullPathNameW(wroot, sizeof(wpath) / sizeof(apr_wchar_t), wpath, &ignored))
- return apr_get_os_error();
-
- /* Borrow wroot as a char buffer (twice as big as necessary)
- */
- if ((rv = unicode_to_utf8_path((char*)wroot, sizeof(wroot), wpath)))
- return rv;
- *rootpath = apr_pstrdup(p, (char*)wroot);
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- char path[APR_PATH_MAX];
- char *ignored;
- if (!GetFullPathName(root, sizeof(path), path, &ignored))
- return apr_get_os_error();
- *rootpath = apr_pstrdup(p, path);
- }
-#endif
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags,
- apr_pool_t *p)
-{
- char path[APR_PATH_MAX];
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- if (!GetCurrentDirectoryW(sizeof(wpath) / sizeof(apr_wchar_t), wpath))
- return apr_get_os_error();
- if ((rv = unicode_to_utf8_path(path, sizeof(path), wpath)))
- return rv;
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- if (!GetCurrentDirectory(sizeof(path), path))
- return apr_get_os_error();
- }
-#endif
- if (!(flags & APR_FILEPATH_NATIVE)) {
- for (*rootpath = path; **rootpath; ++*rootpath) {
- if (**rootpath == '\\')
- **rootpath = '/';
- }
- }
- *rootpath = apr_pstrdup(p, path);
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_filepath_set(const char *rootpath,
- apr_pool_t *p)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- if (rv = utf8_to_unicode_path(wpath, sizeof(wpath)
- / sizeof(apr_wchar_t), rootpath))
- return rv;
- if (!SetCurrentDirectoryW(wpath))
- return apr_get_os_error();
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- if (!SetCurrentDirectory(rootpath))
- return apr_get_os_error();
- }
-#endif
- return APR_SUCCESS;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/flock.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/flock.c
deleted file mode 100644
index e08e08a7..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/flock.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_file_io.h"
-
-APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type)
-{
-#ifdef _WIN32_WCE
- /* The File locking is unsuported on WCE */
- return APR_ENOTIMPL;
-#else
- const DWORD len = 0xffffffff;
- DWORD flags;
-
- flags = ((type & APR_FLOCK_NONBLOCK) ? LOCKFILE_FAIL_IMMEDIATELY : 0)
- + (((type & APR_FLOCK_TYPEMASK) == APR_FLOCK_SHARED)
- ? 0 : LOCKFILE_EXCLUSIVE_LOCK);
- if (apr_os_level >= APR_WIN_NT) {
- /* Syntax is correct, len is passed for LengthLow and LengthHigh*/
- OVERLAPPED offset;
- memset (&offset, 0, sizeof(offset));
- if (!LockFileEx(thefile->filehand, flags, 0, len, len, &offset))
- return apr_get_os_error();
- }
- else {
- /* On Win9x, LockFile() never blocks. Hack in a crufty poll.
- *
- * Note that this hack exposes threads to being unserviced forever,
- * in the situation that the given lock has low availability.
- * When implemented in the kernel, LockFile will typically use
- * FIFO or round robin distribution to ensure all threads get
- * one crack at the lock; but in this case we can't emulate that.
- *
- * However Win9x are barely maintainable anyways, if the user does
- * choose to build to them, this is the best we can do.
- */
- while (!LockFile(thefile->filehand, 0, 0, len, 0)) {
- DWORD err = GetLastError();
- if ((err == ERROR_LOCK_VIOLATION) && !(type & APR_FLOCK_NONBLOCK))
- {
- Sleep(500); /* pause for a half second */
- continue; /* ... and then poll again */
- }
- return APR_FROM_OS_ERROR(err);
- }
- }
-
- return APR_SUCCESS;
-#endif /* !defined(_WIN32_WCE) */
-}
-
-APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- DWORD len = 0xffffffff;
-
- if (apr_os_level >= APR_WIN_NT) {
- /* Syntax is correct, len is passed for LengthLow and LengthHigh*/
- OVERLAPPED offset;
- memset (&offset, 0, sizeof(offset));
- if (!UnlockFileEx(thefile->filehand, 0, len, len, &offset))
- return apr_get_os_error();
- }
- else {
- if (!UnlockFile(thefile->filehand, 0, 0, len, 0))
- return apr_get_os_error();
- }
-
- return APR_SUCCESS;
-#endif /* !defined(_WIN32_WCE) */
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/open.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/open.c
deleted file mode 100644
index a60fba26..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/open.c
+++ /dev/null
@@ -1,628 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_private.h"
-#include "apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_portable.h"
-#include "apr_thread_mutex.h"
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <winbase.h>
-#include <string.h>
-#if APR_HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#include "apr_arch_misc.h"
-#include "apr_arch_inherit.h"
-#include <io.h>
-
-#if APR_HAS_UNICODE_FS
-apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen,
- const char* srcstr)
-{
- /* TODO: The computations could preconvert the string to determine
- * the true size of the retstr, but that's a memory over speed
- * tradeoff that isn't appropriate this early in development.
- *
- * Allocate the maximum string length based on leading 4
- * characters of \\?\ (allowing nearly unlimited path lengths)
- * plus the trailing null, then transform /'s into \\'s since
- * the \\?\ form doesn't allow '/' path seperators.
- *
- * Note that the \\?\ form only works for local drive paths, and
- * \\?\UNC\ is needed UNC paths.
- */
- int srcremains = strlen(srcstr) + 1;
- apr_wchar_t *t = retstr;
- apr_status_t rv;
-
- /* This is correct, we don't twist the filename if it is will
- * definately be shorter than 248 characters. It merits some
- * performance testing to see if this has any effect, but there
- * seem to be applications that get confused by the resulting
- * Unicode \\?\ style file names, especially if they use argv[0]
- * or call the Win32 API functions such as GetModuleName, etc.
- * Not every application is prepared to handle such names.
- *
- * Note also this is shorter than MAX_PATH, as directory paths
- * are actually limited to 248 characters.
- *
- * Note that a utf-8 name can never result in more wide chars
- * than the original number of utf-8 narrow chars.
- */
- if (srcremains > 248) {
- if (srcstr[1] == ':' && (srcstr[2] == '/' || srcstr[2] == '\\')) {
- wcscpy (retstr, L"\\\\?\\");
- retlen -= 4;
- t += 4;
- }
- else if ((srcstr[0] == '/' || srcstr[0] == '\\')
- && (srcstr[1] == '/' || srcstr[1] == '\\')
- && (srcstr[2] != '?')) {
- /* Skip the slashes */
- srcstr += 2;
- srcremains -= 2;
- wcscpy (retstr, L"\\\\?\\UNC\\");
- retlen -= 8;
- t += 8;
- }
- }
-
- if (rv = apr_conv_utf8_to_ucs2(srcstr, &srcremains, t, &retlen)) {
- return (rv == APR_INCOMPLETE) ? APR_EINVAL : rv;
- }
- if (srcremains) {
- return APR_ENAMETOOLONG;
- }
- for (; *t; ++t)
- if (*t == L'/')
- *t = L'\\';
- return APR_SUCCESS;
-}
-
-apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen,
- const apr_wchar_t* srcstr)
-{
- /* Skip the leading 4 characters if the path begins \\?\, or substitute
- * // for the \\?\UNC\ path prefix, allocating the maximum string
- * length based on the remaining string, plus the trailing null.
- * then transform \\'s back into /'s since the \\?\ form never
- * allows '/' path seperators, and APR always uses '/'s.
- */
- int srcremains = wcslen(srcstr) + 1;
- apr_status_t rv;
- char *t = retstr;
- if (srcstr[0] == L'\\' && srcstr[1] == L'\\' &&
- srcstr[2] == L'?' && srcstr[3] == L'\\') {
- if (srcstr[4] == L'U' && srcstr[5] == L'N' &&
- srcstr[6] == L'C' && srcstr[7] == L'\\') {
- srcremains -= 8;
- srcstr += 8;
- retstr[0] = '\\';
- retstr[1] = '\\';
- retlen -= 2;
- t += 2;
- }
- else {
- srcremains -= 4;
- srcstr += 4;
- }
- }
-
- if (rv = apr_conv_ucs2_to_utf8(srcstr, &srcremains, t, &retlen)) {
- return rv;
- }
- if (srcremains) {
- return APR_ENAMETOOLONG;
- }
- return APR_SUCCESS;
-}
-#endif
-
-void *res_name_from_filename(const char *file, int global, apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t *wpre, *wfile, *ch;
- apr_size_t n = strlen(file) + 1;
- apr_size_t r, d;
- apr_status_t rv;
-
- if (apr_os_level >= APR_WIN_2000) {
- if (global)
- wpre = L"Global\\";
- else
- wpre = L"Local\\";
- }
- else
- wpre = L"";
- r = wcslen(wpre);
-
- if (n > 256 - r) {
- file += n - 256 - r;
- n = 256;
- /* skip utf8 continuation bytes */
- while ((*file & 0xC0) == 0x80) {
- ++file;
- --n;
- }
- }
- wfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t));
- wcscpy(wfile, wpre);
- d = n;
- if (rv = apr_conv_utf8_to_ucs2(file, &n, wfile + r, &d)) {
- return NULL;
- }
- for (ch = wfile + r; *ch; ++ch) {
- if (*ch == ':' || *ch == '/' || *ch == '\\')
- *ch = '_';
- }
- return wfile;
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- char *nfile, *ch;
- apr_size_t n = strlen(file) + 1;
-
-#if !APR_HAS_UNICODE_FS
- apr_status_t rv;
- apr_size_t r, d;
- char *pre;
-
- if (apr_os_level >= APR_WIN_2000) {
- if (global)
- pre = "Global\\";
- else
- pre = "Local\\";
- }
- else
- pre = "";
- r = strlen(pre);
-
- if (n > 256 - r) {
- file += n - 256 - r;
- n = 256;
- }
- nfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t));
- memcpy(nfile, pre, r);
- memcpy(nfile + r, file, n);
-#else
- const apr_size_t r = 0;
- if (n > 256) {
- file += n - 256;
- n = 256;
- }
- nfile = apr_pmemdup(pool, file, n);
-#endif
- for (ch = nfile + r; *ch; ++ch) {
- if (*ch == ':' || *ch == '/' || *ch == '\\')
- *ch = '_';
- }
- return nfile;
- }
-#endif
-}
-
-
-apr_status_t file_cleanup(void *thefile)
-{
- apr_file_t *file = thefile;
- apr_status_t flush_rv = APR_SUCCESS;
-
- if (file->filehand != INVALID_HANDLE_VALUE) {
-
- if (file->buffered) {
- /* XXX: flush here is not mutex protected */
- flush_rv = apr_file_flush((apr_file_t *)thefile);
- }
-
- /* In order to avoid later segfaults with handle 'reuse',
- * we must protect against the case that a dup2'ed handle
- * is being closed, and invalidate the corresponding StdHandle
- * We also tell msvcrt when stdhandles are closed.
- */
- if (file->flags & APR_STD_FLAGS)
- {
- if ((file->flags & APR_STD_FLAGS) == APR_STDERR_FLAG) {
- _close(2);
- SetStdHandle(STD_ERROR_HANDLE, INVALID_HANDLE_VALUE);
- }
- else if ((file->flags & APR_STD_FLAGS) == APR_STDOUT_FLAG) {
- _close(1);
- SetStdHandle(STD_OUTPUT_HANDLE, INVALID_HANDLE_VALUE);
- }
- else if ((file->flags & APR_STD_FLAGS) == APR_STDIN_FLAG) {
- _close(0);
- SetStdHandle(STD_INPUT_HANDLE, INVALID_HANDLE_VALUE);
- }
- }
- else
- CloseHandle(file->filehand);
-
- file->filehand = INVALID_HANDLE_VALUE;
- }
- if (file->pOverlapped && file->pOverlapped->hEvent) {
- CloseHandle(file->pOverlapped->hEvent);
- file->pOverlapped = NULL;
- }
- return flush_rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname,
- apr_int32_t flag, apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- HANDLE handle = INVALID_HANDLE_VALUE;
- DWORD oflags = 0;
- DWORD createflags = 0;
- DWORD attributes = 0;
- DWORD sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE;
- apr_status_t rv;
-
- if (flag & APR_READ) {
- oflags |= GENERIC_READ;
- }
- if (flag & APR_WRITE) {
- oflags |= GENERIC_WRITE;
- }
- if (flag & APR_WRITEATTRS) {
- oflags |= FILE_WRITE_ATTRIBUTES;
- }
-
- if (apr_os_level >= APR_WIN_NT)
- sharemode |= FILE_SHARE_DELETE;
-
- if (flag & APR_CREATE) {
- if (flag & APR_EXCL) {
- /* only create new if file does not already exist */
- createflags = CREATE_NEW;
- } else if (flag & APR_TRUNCATE) {
- /* truncate existing file or create new */
- createflags = CREATE_ALWAYS;
- } else {
- /* open existing but create if necessary */
- createflags = OPEN_ALWAYS;
- }
- } else if (flag & APR_TRUNCATE) {
- /* only truncate if file already exists */
- createflags = TRUNCATE_EXISTING;
- } else {
- /* only open if file already exists */
- createflags = OPEN_EXISTING;
- }
-
- if ((flag & APR_EXCL) && !(flag & APR_CREATE)) {
- return APR_EACCES;
- }
-
- if (flag & APR_DELONCLOSE) {
- attributes |= FILE_FLAG_DELETE_ON_CLOSE;
- }
-
- if (flag & APR_OPENLINK) {
- attributes |= FILE_FLAG_OPEN_REPARSE_POINT;
- }
-
- /* Without READ or WRITE, we fail unless apr called apr_file_open
- * internally with the private APR_OPENINFO flag.
- *
- * With the APR_OPENINFO flag on NT, use the option flag
- * FILE_FLAG_BACKUP_SEMANTICS to allow us to open directories.
- * See the static resolve_ident() fn in file_io/win32/filestat.c
- */
- if (!(flag & (APR_READ | APR_WRITE))) {
- if (flag & APR_OPENINFO) {
- if (apr_os_level >= APR_WIN_NT) {
- attributes |= FILE_FLAG_BACKUP_SEMANTICS;
- }
- }
- else {
- return APR_EACCES;
- }
- if (flag & APR_READCONTROL)
- oflags |= READ_CONTROL;
- }
-
- if (flag & APR_XTHREAD) {
- /* This win32 specific feature is required
- * to allow multiple threads to work with the file.
- */
- attributes |= FILE_FLAG_OVERLAPPED;
- }
-
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t wfname[APR_PATH_MAX];
-
- if (flag & APR_SENDFILE_ENABLED) {
- /* This feature is required to enable sendfile operations
- * against the file on Win32. Also implies APR_XTHREAD.
- */
- flag |= APR_XTHREAD;
- attributes |= FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED;
- }
-
- if (rv = utf8_to_unicode_path(wfname, sizeof(wfname)
- / sizeof(apr_wchar_t), fname))
- return rv;
- handle = CreateFileW(wfname, oflags, sharemode,
- NULL, createflags, attributes, 0);
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI {
- handle = CreateFileA(fname, oflags, sharemode,
- NULL, createflags, attributes, 0);
- if (flag & APR_SENDFILE_ENABLED) {
- /* This feature is not supported on this platform.
- */
- flag &= ~APR_SENDFILE_ENABLED;
- }
-
- }
-#endif
- if (handle == INVALID_HANDLE_VALUE) {
- return apr_get_os_error();
- }
-
- (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t));
- (*new)->pool = pool;
- (*new)->filehand = handle;
- (*new)->fname = apr_pstrdup(pool, fname);
- (*new)->flags = flag;
- (*new)->timeout = -1;
- (*new)->ungetchar = -1;
-
- if (flag & APR_APPEND) {
- (*new)->append = 1;
- SetFilePointer((*new)->filehand, 0, NULL, FILE_END);
- }
- if (flag & APR_BUFFERED) {
- (*new)->buffered = 1;
- (*new)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE);
- }
- /* Need the mutex to handled buffered and O_APPEND style file i/o */
- if ((*new)->buffered || (*new)->append) {
- rv = apr_thread_mutex_create(&(*new)->mutex,
- APR_THREAD_MUTEX_DEFAULT, pool);
- if (rv) {
- if (file_cleanup(*new) == APR_SUCCESS) {
- apr_pool_cleanup_kill(pool, *new, file_cleanup);
- }
- return rv;
- }
- }
-
- if (!(flag & APR_FILE_NOCLEANUP)) {
- apr_pool_cleanup_register((*new)->pool, (void *)(*new), file_cleanup,
- apr_pool_cleanup_null);
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file)
-{
- apr_status_t stat;
- if ((stat = file_cleanup(file)) == APR_SUCCESS) {
- apr_pool_cleanup_kill(file->pool, file, file_cleanup);
-
- if (file->mutex) {
- apr_thread_mutex_destroy(file->mutex);
- }
-
- return APR_SUCCESS;
- }
- return stat;
-}
-
-APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool)
-{
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- {
- apr_wchar_t wpath[APR_PATH_MAX];
- apr_status_t rv;
- if (rv = utf8_to_unicode_path(wpath, sizeof(wpath)
- / sizeof(apr_wchar_t), path)) {
- return rv;
- }
- if (DeleteFileW(wpath))
- return APR_SUCCESS;
- }
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- if (DeleteFile(path))
- return APR_SUCCESS;
-#endif
- return apr_get_os_error();
-}
-
-APR_DECLARE(apr_status_t) apr_file_rename(const char *frompath,
- const char *topath,
- apr_pool_t *pool)
-{
- IF_WIN_OS_IS_UNICODE
- {
-#if APR_HAS_UNICODE_FS
- apr_wchar_t wfrompath[APR_PATH_MAX], wtopath[APR_PATH_MAX];
- apr_status_t rv;
- if (rv = utf8_to_unicode_path(wfrompath, sizeof(wfrompath)
- / sizeof(apr_wchar_t), frompath)) {
- return rv;
- }
- if (rv = utf8_to_unicode_path(wtopath, sizeof(wtopath)
- / sizeof(apr_wchar_t), topath)) {
- return rv;
- }
-#ifndef _WIN32_WCE
- if (MoveFileExW(wfrompath, wtopath, MOVEFILE_REPLACE_EXISTING |
- MOVEFILE_COPY_ALLOWED))
-#else
- if (MoveFileW(wfrompath, wtopath))
-#endif
- return APR_SUCCESS;
-#else
- if (MoveFileEx(frompath, topath, MOVEFILE_REPLACE_EXISTING |
- MOVEFILE_COPY_ALLOWED))
- return APR_SUCCESS;
-#endif
- }
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- {
- /* Windows 95 and 98 do not support MoveFileEx, so we'll use
- * the old MoveFile function. However, MoveFile requires that
- * the new file not already exist...so we have to delete that
- * file if it does. Perhaps we should back up the to-be-deleted
- * file in case something happens?
- */
- HANDLE handle = INVALID_HANDLE_VALUE;
-
- if ((handle = CreateFile(topath, GENERIC_WRITE, 0, 0,
- OPEN_EXISTING, 0, 0 )) != INVALID_HANDLE_VALUE )
- {
- CloseHandle(handle);
- if (!DeleteFile(topath))
- return apr_get_os_error();
- }
- if (MoveFile(frompath, topath))
- return APR_SUCCESS;
- }
-#endif
- return apr_get_os_error();
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile,
- apr_file_t *file)
-{
- *thefile = file->filehand;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file,
- apr_os_file_t *thefile,
- apr_int32_t flags,
- apr_pool_t *pool)
-{
- (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->filehand = *thefile;
- (*file)->ungetchar = -1; /* no char avail */
- (*file)->timeout = -1;
- (*file)->flags = flags;
-
- if (flags & APR_APPEND) {
- (*file)->append = 1;
- }
- if (flags & APR_BUFFERED) {
- (*file)->buffered = 1;
- (*file)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE);
- }
-
- if ((*file)->append || (*file)->buffered) {
- apr_status_t rv;
- rv = apr_thread_mutex_create(&(*file)->mutex,
- APR_THREAD_MUTEX_DEFAULT, pool);
- if (rv) {
- if (file_cleanup(*file) == APR_SUCCESS) {
- apr_pool_cleanup_kill(pool, *file, file_cleanup);
- }
- return rv;
- }
- }
-
- /* XXX... we pcalloc above so all others are zeroed.
- * Should we be testing if thefile is a handle to
- * a PIPE and set up the mechanics appropriately?
- *
- * (*file)->pipe;
- */
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr)
-{
- if (fptr->eof_hit == 1) {
- return APR_EOF;
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- apr_os_file_t file_handle;
-
- apr_set_os_error(APR_SUCCESS);
- file_handle = GetStdHandle(STD_ERROR_HANDLE);
- if (!file_handle)
- file_handle = INVALID_HANDLE_VALUE;
-
- return apr_os_file_put(thefile, &file_handle,
- APR_WRITE | APR_STDERR_FLAG, pool);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- apr_os_file_t file_handle;
-
- apr_set_os_error(APR_SUCCESS);
- file_handle = GetStdHandle(STD_OUTPUT_HANDLE);
- if (!file_handle)
- file_handle = INVALID_HANDLE_VALUE;
-
- return apr_os_file_put(thefile, &file_handle,
- APR_WRITE | APR_STDOUT_FLAG, pool);
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- apr_os_file_t file_handle;
-
- apr_set_os_error(APR_SUCCESS);
- file_handle = GetStdHandle(STD_INPUT_HANDLE);
- if (!file_handle)
- file_handle = INVALID_HANDLE_VALUE;
-
- return apr_os_file_put(thefile, &file_handle,
- APR_READ | APR_STDIN_FLAG, pool);
-#endif
-}
-
-APR_POOL_IMPLEMENT_ACCESSOR(file);
-
-APR_IMPLEMENT_INHERIT_SET(file, flags, pool, file_cleanup)
-
-APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, file_cleanup)
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/pipe.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/pipe.c
deleted file mode 100644
index 78d6b096..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/pipe.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "win32/apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <string.h>
-#include <stdio.h>
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#include "apr_arch_misc.h"
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
-{
- /* Always OK to unset timeouts */
- if (timeout == -1) {
- thepipe->timeout = timeout;
- return APR_SUCCESS;
- }
- if (!thepipe->pipe) {
- return APR_ENOTIMPL;
- }
- if (timeout && !(thepipe->pOverlapped)) {
- /* Cannot be nonzero if a pipe was opened blocking
- */
- return APR_EINVAL;
- }
- thepipe->timeout = timeout;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
-{
- /* Always OK to get the timeout (even if it's unset ... -1) */
- *timeout = thepipe->timeout;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *p)
-{
- /* Unix creates full blocking pipes. */
- return apr_create_nt_pipe(in, out, APR_FULL_BLOCK, p);
-}
-
-/* apr_create_nt_pipe()
- * An internal (for now) APR function used by apr_proc_create()
- * when setting up pipes to communicate with the child process.
- * apr_create_nt_pipe() allows setting the blocking mode of each end of
- * the pipe when the pipe is created (rather than after the pipe is created).
- * A pipe handle must be opened in full async i/o mode in order to
- * emulate Unix non-blocking pipes with timeouts.
- *
- * In general, we don't want to enable child side pipe handles for async i/o.
- * This prevents us from enabling both ends of the pipe for async i/o in
- * apr_file_pipe_create.
- *
- * Why not use NamedPipes on NT which support setting pipe state to
- * non-blocking? On NT, even though you can set a pipe non-blocking,
- * there is no clean way to set event driven non-zero timeouts (e.g select(),
- * WaitForSinglelObject, et. al. will not detect pipe i/o). On NT, you
- * have to poll the pipe to detect i/o on a non-blocking pipe.
- */
-apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out,
- apr_int32_t blocking_mode,
- apr_pool_t *p)
-{
-#ifdef _WIN32_WCE
- return APR_ENOTIMPL;
-#else
- SECURITY_ATTRIBUTES sa;
- static unsigned long id = 0;
- DWORD dwPipeMode;
- DWORD dwOpenMode;
- char name[50];
-
- sa.nLength = sizeof(sa);
-
-#if APR_HAS_UNICODE_FS
- IF_WIN_OS_IS_UNICODE
- sa.bInheritHandle = FALSE;
-#endif
-#if APR_HAS_ANSI_FS
- ELSE_WIN_OS_IS_ANSI
- sa.bInheritHandle = TRUE;
-#endif
- sa.lpSecurityDescriptor = NULL;
-
- (*in) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
- (*in)->pool = p;
- (*in)->fname = NULL;
- (*in)->pipe = 1;
- (*in)->timeout = -1;
- (*in)->ungetchar = -1;
- (*in)->eof_hit = 0;
- (*in)->filePtr = 0;
- (*in)->bufpos = 0;
- (*in)->dataRead = 0;
- (*in)->direction = 0;
- (*in)->pOverlapped = NULL;
-
- (*out) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t));
- (*out)->pool = p;
- (*out)->fname = NULL;
- (*out)->pipe = 1;
- (*out)->timeout = -1;
- (*out)->ungetchar = -1;
- (*out)->eof_hit = 0;
- (*out)->filePtr = 0;
- (*out)->bufpos = 0;
- (*out)->dataRead = 0;
- (*out)->direction = 0;
- (*out)->pOverlapped = NULL;
-
- if (apr_os_level >= APR_WIN_NT) {
- /* Create the read end of the pipe */
- dwOpenMode = PIPE_ACCESS_INBOUND;
- if (blocking_mode == APR_WRITE_BLOCK /* READ_NONBLOCK */
- || blocking_mode == APR_FULL_NONBLOCK) {
- dwOpenMode |= FILE_FLAG_OVERLAPPED;
- (*in)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED));
- (*in)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
- }
-
- dwPipeMode = 0;
-
- sprintf(name, "\\\\.\\pipe\\apr-pipe-%u.%lu", getpid(), id++);
-
- (*in)->filehand = CreateNamedPipe(name,
- dwOpenMode,
- dwPipeMode,
- 1, //nMaxInstances,
- 0, //nOutBufferSize,
- 65536, //nInBufferSize,
- 1, //nDefaultTimeOut,
- &sa);
-
- /* Create the write end of the pipe */
- dwOpenMode = FILE_ATTRIBUTE_NORMAL;
- if (blocking_mode == APR_READ_BLOCK /* WRITE_NONBLOCK */
- || blocking_mode == APR_FULL_NONBLOCK) {
- dwOpenMode |= FILE_FLAG_OVERLAPPED;
- (*out)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED));
- (*out)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
- }
-
- (*out)->filehand = CreateFile(name,
- GENERIC_WRITE, // access mode
- 0, // share mode
- &sa, // Security attributes
- OPEN_EXISTING, // dwCreationDisposition
- dwOpenMode, // Pipe attributes
- NULL); // handle to template file
- }
- else {
- /* Pipes on Win9* are blocking. Live with it. */
- if (!CreatePipe(&(*in)->filehand, &(*out)->filehand, &sa, 65536)) {
- return apr_get_os_error();
- }
- }
-
- apr_pool_cleanup_register((*in)->pool, (void *)(*in), file_cleanup,
- apr_pool_cleanup_null);
- apr_pool_cleanup_register((*out)->pool, (void *)(*out), file_cleanup,
- apr_pool_cleanup_null);
- return APR_SUCCESS;
-#endif /* _WIN32_WCE */
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename,
- apr_fileperms_t perm,
- apr_pool_t *pool)
-{
- /* Not yet implemented, interface not suitable.
- * Win32 requires the named pipe to be *opened* at the time it's
- * created, and to do so, blocking or non blocking must be elected.
- */
- return APR_ENOTIMPL;
-}
-
-
-/* XXX: Problem; we need to choose between blocking and nonblocking based
- * on how *thefile was opened, and we don't have that information :-/
- * Hack; assume a blocking socket, since the most common use for the fn
- * would be to handle stdio-style or blocking pipes. Win32 doesn't have
- * select() blocking for pipes anyways :(
- */
-APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
- apr_os_file_t *thefile,
- int register_cleanup,
- apr_pool_t *pool)
-{
- (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
- (*file)->pool = pool;
- (*file)->pipe = 1;
- (*file)->timeout = -1;
- (*file)->ungetchar = -1;
- (*file)->filehand = *thefile;
-
- if (register_cleanup) {
- apr_pool_cleanup_register(pool, *file, file_cleanup,
- apr_pool_cleanup_null);
- }
-
- return APR_SUCCESS;
-}
-
-
-APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
- apr_os_file_t *thefile,
- apr_pool_t *pool)
-{
- return apr_os_pipe_put_ex(file, thefile, 0, pool);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/readwrite.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/readwrite.c
deleted file mode 100644
index 5291830a..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/readwrite.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "win32/apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include "apr_general.h"
-#include "apr_strings.h"
-#include "apr_lib.h"
-#include "apr_errno.h"
-#include <malloc.h>
-#include "apr_arch_atime.h"
-#include "apr_arch_misc.h"
-
-/*
- * read_with_timeout()
- * Uses async i/o to emulate unix non-blocking i/o with timeouts.
- */
-static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t len, apr_size_t *nbytes)
-{
- apr_status_t rv;
- *nbytes = 0;
-
- /* Handle the zero timeout non-blocking case */
- if (file->timeout == 0) {
- /* Peek at the pipe. If there is no data available, return APR_EAGAIN.
- * If data is available, go ahead and read it.
- */
- if (file->pipe) {
- DWORD bytes;
- if (!PeekNamedPipe(file->filehand, NULL, 0, NULL, &bytes, NULL)) {
- rv = apr_get_os_error();
- if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) {
- rv = APR_EOF;
- }
- return rv;
- }
- else {
- if (bytes == 0) {
- return APR_EAGAIN;
- }
- if (len > bytes) {
- len = bytes;
- }
- }
- }
- else {
- /* ToDo: Handle zero timeout non-blocking file i/o
- * This is not needed until an APR application needs to
- * timeout file i/o (which means setting file i/o non-blocking)
- */
- }
- }
-
- if (file->pOverlapped && !file->pipe) {
- file->pOverlapped->Offset = (DWORD)file->filePtr;
- file->pOverlapped->OffsetHigh = (DWORD)(file->filePtr >> 32);
- }
-
- rv = ReadFile(file->filehand, buf, len, nbytes, file->pOverlapped);
-
- if (!rv) {
- rv = apr_get_os_error();
- if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) {
- /* Wait for the pending i/o */
- if (file->timeout > 0) {
- /* timeout in milliseconds... */
- rv = WaitForSingleObject(file->pOverlapped->hEvent,
- (DWORD)(file->timeout/1000));
- }
- else if (file->timeout == -1) {
- rv = WaitForSingleObject(file->pOverlapped->hEvent, INFINITE);
- }
- switch (rv) {
- case WAIT_OBJECT_0:
- GetOverlappedResult(file->filehand, file->pOverlapped,
- nbytes, TRUE);
- rv = APR_SUCCESS;
- break;
-
- case WAIT_TIMEOUT:
- rv = APR_TIMEUP;
- break;
-
- case WAIT_FAILED:
- rv = apr_get_os_error();
- break;
-
- default:
- break;
- }
-
- if (rv != APR_SUCCESS) {
- if (apr_os_level >= APR_WIN_98) {
- CancelIo(file->filehand);
- }
- }
- }
- else if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) {
- /* Assume ERROR_BROKEN_PIPE signals an EOF reading from a pipe */
- rv = APR_EOF;
- } else if (rv == APR_FROM_OS_ERROR(ERROR_HANDLE_EOF)) {
- /* Did we hit EOF reading from the handle? */
- rv = APR_EOF;
- }
- } else {
- /* OK and 0 bytes read ==> end of file */
- if (*nbytes == 0)
- rv = APR_EOF;
- else
- rv = APR_SUCCESS;
- }
- if (rv == APR_SUCCESS && file->pOverlapped && !file->pipe) {
- file->filePtr += *nbytes;
- }
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *len)
-{
- apr_status_t rv;
- DWORD bytes_read = 0;
-
- if (*len <= 0) {
- *len = 0;
- return APR_SUCCESS;
- }
-
- /* If the file is open for xthread support, allocate and
- * initialize the overlapped and io completion event (hEvent).
- * Threads should NOT share an apr_file_t or its hEvent.
- */
- if ((thefile->flags & APR_XTHREAD) && !thefile->pOverlapped ) {
- thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool,
- sizeof(OVERLAPPED));
- thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (!thefile->pOverlapped->hEvent) {
- rv = apr_get_os_error();
- return rv;
- }
- }
-
- /* Handle the ungetchar if there is one */
- if (thefile->ungetchar != -1) {
- bytes_read = 1;
- *(char *)buf = (char)thefile->ungetchar;
- buf = (char *)buf + 1;
- (*len)--;
- thefile->ungetchar = -1;
- if (*len == 0) {
- *len = bytes_read;
- return APR_SUCCESS;
- }
- }
- if (thefile->buffered) {
- char *pos = (char *)buf;
- apr_size_t blocksize;
- apr_size_t size = *len;
-
- apr_thread_mutex_lock(thefile->mutex);
-
- if (thefile->direction == 1) {
- rv = apr_file_flush(thefile);
- if (rv != APR_SUCCESS) {
- apr_thread_mutex_unlock(thefile->mutex);
- return rv;
- }
- thefile->bufpos = 0;
- thefile->direction = 0;
- thefile->dataRead = 0;
- }
-
- rv = 0;
- while (rv == 0 && size > 0) {
- if (thefile->bufpos >= thefile->dataRead) {
- apr_size_t read;
- rv = read_with_timeout(thefile, thefile->buffer,
- APR_FILE_BUFSIZE, &read);
- if (read == 0) {
- if (rv == APR_EOF)
- thefile->eof_hit = TRUE;
- break;
- }
- else {
- thefile->dataRead = read;
- thefile->filePtr += thefile->dataRead;
- thefile->bufpos = 0;
- }
- }
-
- blocksize = size > thefile->dataRead - thefile->bufpos ? thefile->dataRead - thefile->bufpos : size;
- memcpy(pos, thefile->buffer + thefile->bufpos, blocksize);
- thefile->bufpos += blocksize;
- pos += blocksize;
- size -= blocksize;
- }
-
- *len = pos - (char *)buf;
- if (*len) {
- rv = APR_SUCCESS;
- }
- apr_thread_mutex_unlock(thefile->mutex);
- } else {
- /* Unbuffered i/o */
- apr_size_t nbytes;
- rv = read_with_timeout(thefile, buf, *len, &nbytes);
- if (rv == APR_EOF)
- thefile->eof_hit = TRUE;
- *len = nbytes;
- }
-
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)
-{
- apr_status_t rv;
- DWORD bwrote;
-
- /* If the file is open for xthread support, allocate and
- * initialize the overlapped and io completion event (hEvent).
- * Threads should NOT share an apr_file_t or its hEvent.
- */
- if ((thefile->flags & APR_XTHREAD) && !thefile->pOverlapped ) {
- thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool,
- sizeof(OVERLAPPED));
- thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (!thefile->pOverlapped->hEvent) {
- rv = apr_get_os_error();
- return rv;
- }
- }
-
- if (thefile->buffered) {
- char *pos = (char *)buf;
- apr_size_t blocksize;
- apr_size_t size = *nbytes;
-
- apr_thread_mutex_lock(thefile->mutex);
-
- if (thefile->direction == 0) {
- // Position file pointer for writing at the offset we are logically reading from
- apr_off_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
- DWORD offlo = (DWORD)offset;
- DWORD offhi = (DWORD)(offset >> 32);
- if (offset != thefile->filePtr)
- SetFilePointer(thefile->filehand, offlo, &offhi, FILE_BEGIN);
- thefile->bufpos = thefile->dataRead = 0;
- thefile->direction = 1;
- }
-
- rv = 0;
- while (rv == 0 && size > 0) {
- if (thefile->bufpos == APR_FILE_BUFSIZE) // write buffer is full
- rv = apr_file_flush(thefile);
-
- blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ? APR_FILE_BUFSIZE - thefile->bufpos : size;
- memcpy(thefile->buffer + thefile->bufpos, pos, blocksize);
- thefile->bufpos += blocksize;
- pos += blocksize;
- size -= blocksize;
- }
-
- apr_thread_mutex_unlock(thefile->mutex);
- return rv;
- } else {
- if (!thefile->pipe) {
- apr_off_t offset = 0;
- apr_status_t rc;
- if (thefile->append) {
- /* apr_file_lock will mutex the file across processes.
- * The call to apr_thread_mutex_lock is added to avoid
- * a race condition between LockFile and WriteFile
- * that occasionally leads to deadlocked threads.
- */
- apr_thread_mutex_lock(thefile->mutex);
- rc = apr_file_lock(thefile, APR_FLOCK_EXCLUSIVE);
- if (rc != APR_SUCCESS) {
- apr_thread_mutex_unlock(thefile->mutex);
- return rc;
- }
- rc = apr_file_seek(thefile, APR_END, &offset);
- if (rc != APR_SUCCESS) {
- apr_thread_mutex_unlock(thefile->mutex);
- return rc;
- }
- }
- if (thefile->pOverlapped) {
- thefile->pOverlapped->Offset = (DWORD)thefile->filePtr;
- thefile->pOverlapped->OffsetHigh = (DWORD)(thefile->filePtr >> 32);
- }
- rv = WriteFile(thefile->filehand, buf, *nbytes, &bwrote,
- thefile->pOverlapped);
- if (thefile->append) {
- apr_file_unlock(thefile);
- apr_thread_mutex_unlock(thefile->mutex);
- }
- }
- else {
- rv = WriteFile(thefile->filehand, buf, *nbytes, &bwrote,
- thefile->pOverlapped);
- }
- if (rv) {
- *nbytes = bwrote;
- rv = APR_SUCCESS;
- }
- else {
- (*nbytes) = 0;
- rv = apr_get_os_error();
- if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) {
-
- DWORD timeout_ms;
-
- if (thefile->timeout == 0) {
- timeout_ms = 0;
- }
- else if (thefile->timeout < 0) {
- timeout_ms = INFINITE;
- }
- else {
- timeout_ms = (DWORD)(thefile->timeout / 1000);
- }
-
- rv = WaitForSingleObject(thefile->pOverlapped->hEvent, timeout_ms);
- switch (rv) {
- case WAIT_OBJECT_0:
- GetOverlappedResult(thefile->filehand, thefile->pOverlapped, nbytes, TRUE);
- rv = APR_SUCCESS;
- break;
- case WAIT_TIMEOUT:
- rv = APR_TIMEUP;
- break;
- case WAIT_FAILED:
- rv = apr_get_os_error();
- break;
- default:
- break;
- }
- if (rv != APR_SUCCESS) {
- if (apr_os_level >= APR_WIN_98)
- CancelIo(thefile->filehand);
- }
- }
- }
- if (rv == APR_SUCCESS && thefile->pOverlapped && !thefile->pipe) {
- thefile->filePtr += *nbytes;
- }
- }
- return rv;
-}
-/* ToDo: Write for it anyway and test the oslevel!
- * Too bad WriteFileGather() is not supported on 95&98 (or NT prior to SP2)
- */
-APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile,
- const struct iovec *vec,
- apr_size_t nvec,
- apr_size_t *nbytes)
-{
- apr_status_t rv = APR_SUCCESS;
- apr_size_t i;
- DWORD bwrote = 0;
- char *buf;
-
- *nbytes = 0;
- for (i = 0; i < nvec; i++) {
- buf = vec[i].iov_base;
- bwrote = vec[i].iov_len;
- rv = apr_file_write(thefile, buf, &bwrote);
- *nbytes += bwrote;
- if (rv != APR_SUCCESS) {
- break;
- }
- }
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile)
-{
- DWORD len = 1;
-
- return apr_file_write(thefile, &ch, &len);
-}
-
-APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile)
-{
- thefile->ungetchar = (unsigned char) ch;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile)
-{
- apr_status_t rc;
- int bread;
-
- bread = 1;
- rc = apr_file_read(thefile, ch, &bread);
-
- if (rc) {
- return rc;
- }
-
- if (bread == 0) {
- thefile->eof_hit = TRUE;
- return APR_EOF;
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile)
-{
- DWORD len = strlen(str);
-
- return apr_file_write(thefile, str, &len);
-}
-
-APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile)
-{
- apr_size_t readlen;
- apr_status_t rv = APR_SUCCESS;
- int i;
-
- for (i = 0; i < len-1; i++) {
- readlen = 1;
- rv = apr_file_read(thefile, str+i, &readlen);
-
- if (rv != APR_SUCCESS && rv != APR_EOF)
- return rv;
-
- if (readlen == 0) {
- /* If we have bytes, defer APR_EOF to the next call */
- if (i > 0)
- rv = APR_SUCCESS;
- break;
- }
-
- if (str[i] == '\n') {
- i++; /* don't clobber this char below */
- break;
- }
- }
- str[i] = 0;
- return rv;
-}
-
-APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile)
-{
- if (thefile->buffered) {
- DWORD written = 0;
- apr_status_t rc = 0;
-
- if (thefile->direction == 1 && thefile->bufpos) {
- if (!WriteFile(thefile->filehand, thefile->buffer, thefile->bufpos, &written, NULL))
- rc = apr_get_os_error();
- thefile->filePtr += written;
-
- if (rc == 0)
- thefile->bufpos = 0;
- }
-
- return rc;
- }
-
- /* There isn't anything to do if we aren't buffering the output
- * so just return success.
- */
- return APR_SUCCESS;
-}
-
-struct apr_file_printf_data {
- apr_vformatter_buff_t vbuff;
- apr_file_t *fptr;
- char *buf;
-};
-
-static int file_printf_flush(apr_vformatter_buff_t *buff)
-{
- struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff;
-
- if (apr_file_write_full(data->fptr, data->buf,
- data->vbuff.curpos - data->buf, NULL)) {
- return -1;
- }
-
- data->vbuff.curpos = data->buf;
- return 0;
-}
-
-APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr,
- const char *format, ...)
-{
- struct apr_file_printf_data data;
- va_list ap;
- int count;
-
- data.buf = malloc(HUGE_STRING_LEN);
- if (data.buf == NULL) {
- return 0;
- }
- data.vbuff.curpos = data.buf;
- data.vbuff.endpos = data.buf + HUGE_STRING_LEN;
- data.fptr = fptr;
- va_start(ap, format);
- count = apr_vformatter(file_printf_flush,
- (apr_vformatter_buff_t *)&data, format, ap);
- /* apr_vformatter does not call flush for the last bits */
- if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data);
-
- va_end(ap);
-
- free(data.buf);
- return count;
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/seek.c b/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/seek.c
deleted file mode 100644
index 3a291485..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/file_io/win32/seek.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "win32/apr_arch_file_io.h"
-#include "apr_file_io.h"
-#include <errno.h>
-#include <string.h>
-
-static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos )
-{
- apr_off_t newbufpos;
- apr_status_t rv;
- DWORD rc;
-
- if (thefile->direction == 1) {
- /* XXX: flush here is not mutex protected */
- rv = apr_file_flush(thefile);
- if (rv != APR_SUCCESS)
- return rv;
- thefile->bufpos = thefile->direction = thefile->dataRead = 0;
- }
-
- newbufpos = pos - (thefile->filePtr - thefile->dataRead);
-
- if (newbufpos >= 0 && newbufpos <= thefile->dataRead) {
- thefile->bufpos = (apr_size_t)newbufpos;
- rv = APR_SUCCESS;
- } else {
- DWORD offlo = (DWORD)pos;
- DWORD offhi = (DWORD)(pos >> 32);
- rc = SetFilePointer(thefile->filehand, offlo, &offhi, FILE_BEGIN);
-
- if (rc == (DWORD)-1)
- /* A legal value, perhaps? MSDN implies prior SetLastError isn't
- * needed, googling for SetLastError SetFilePointer seems
- * to confirm this. INVALID_SET_FILE_POINTER is too recently
- * added for us to rely on it as a constant.
- */
- rv = apr_get_os_error();
- else
- rv = APR_SUCCESS;
-
- if (rv == APR_SUCCESS) {
- thefile->eof_hit = thefile->bufpos = thefile->dataRead = 0;
- thefile->filePtr = pos;
- }
- }
-
- return rv;
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset)
-{
- apr_finfo_t finfo;
- apr_status_t rc = APR_SUCCESS;
-
- thefile->eof_hit = 0;
-
- if (thefile->buffered) {
- switch (where) {
- case APR_SET:
- rc = setptr(thefile, *offset);
- break;
-
- case APR_CUR:
- rc = setptr(thefile, thefile->filePtr - thefile->dataRead
- + thefile->bufpos + *offset);
- break;
-
- case APR_END:
- rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile);
- if (rc == APR_SUCCESS)
- rc = setptr(thefile, finfo.size + *offset);
- break;
-
- default:
- return APR_EINVAL;
- }
-
- *offset = thefile->filePtr - thefile->dataRead + thefile->bufpos;
- return rc;
- }
- /* A file opened with APR_XTHREAD has been opened for overlapped i/o.
- * APR must explicitly track the file pointer in this case.
- */
- else if (thefile->pOverlapped || thefile->flags & APR_XTHREAD) {
- switch(where) {
- case APR_SET:
- thefile->filePtr = *offset;
- break;
-
- case APR_CUR:
- thefile->filePtr += *offset;
- break;
-
- case APR_END:
- rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile);
- if (rc == APR_SUCCESS && finfo.size + *offset >= 0)
- thefile->filePtr = finfo.size + *offset;
- break;
-
- default:
- return APR_EINVAL;
- }
- *offset = thefile->filePtr;
- return rc;
- }
- else {
- DWORD howmove;
- DWORD offlo = (DWORD)*offset;
- DWORD offhi = (DWORD)(*offset >> 32);
-
- switch(where) {
- case APR_SET:
- howmove = FILE_BEGIN; break;
- case APR_CUR:
- howmove = FILE_CURRENT; break;
- case APR_END:
- howmove = FILE_END; break;
- default:
- return APR_EINVAL;
- }
- offlo = SetFilePointer(thefile->filehand, (LONG)offlo,
- (LONG*)&offhi, howmove);
- if (offlo == 0xFFFFFFFF)
- rc = apr_get_os_error();
- else
- rc = APR_SUCCESS;
- /* Since we can land at 0xffffffff we will measure our APR_SUCCESS */
- if (rc == APR_SUCCESS)
- *offset = ((apr_off_t)offhi << 32) | offlo;
- return rc;
- }
-}
-
-
-APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *thefile, apr_off_t offset)
-{
- apr_status_t rv;
- DWORD offlo = (DWORD)offset;
- DWORD offhi = (DWORD)(offset >> 32);
- DWORD rc;
-
- rc = SetFilePointer(thefile->filehand, offlo, &offhi, FILE_BEGIN);
- if (rc == 0xFFFFFFFF)
- if ((rv = apr_get_os_error()) != APR_SUCCESS)
- return rv;
-
- if (!SetEndOfFile(thefile->filehand))
- return apr_get_os_error();
-
- if (thefile->buffered) {
- return setptr(thefile, offset);
- }
-
- return APR_SUCCESS;
-}