rbb 99/07/06 10:01:44
Modified: apr/file_io/unix dir.c open.c
apr/locks/unix locks.c
apr/network_io/unix sockets.c
apr/threadproc/unix proc.c thread.c threadpriv.c
apr/time/unix time.c
include apr_portable.h
Log:
Change the routines to go from APR to platform specific types to mimic the
rest of the APR calls. Add routines to go the other direction.
Revision Changes Path
1.16 +21 -2 apache-apr/apr/file_io/unix/dir.c
Index: dir.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/file_io/unix/dir.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- dir.c 1999/07/02 17:46:38 1.15
+++ dir.c 1999/07/06 17:01:38 1.16
@@ -280,8 +280,27 @@
return APR_SUCCESS;
}
-ap_os_dir_t *ap_get_os_dir(struct dir_t *dir)
+ap_status_t ap_get_os_dir(struct dir_t *dir, ap_os_dir_t *thedir)
{
- return dir->dirstruct;
+ if (dir == NULL) {
+ return APR_ENODIR;
+ }
+ thedir = dir->dirstruct;
+ return APR_SUCCESS;
}
+
+ap_status_t ap_put_os_dir(ap_context_t *cont, struct dir_t **dir,
+ ap_os_dir_t *thedir)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*dir) == NULL) {
+ (*dir) = (struct dir_t *)ap_palloc(cont, sizeof(struct dir_t));
+ (*dir)->cntxt = cont;
+ }
+ (*dir)->dirstruct = thedir;
+ return APR_SUCCESS;
+}
+
1.30 +20 -2 apache-apr/apr/file_io/unix/open.c
Index: open.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/file_io/unix/open.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- open.c 1999/07/02 17:46:39 1.29
+++ open.c 1999/07/06 17:01:39 1.30
@@ -191,8 +191,26 @@
}
}
-ap_os_file_t *ap_get_os_file(struct file_t *file)
+ap_status_t ap_get_os_file(struct file_t *file, ap_os_file_t *thefile)
{
- return &(file->filedes);
+ if (file == NULL) {
+ return APR_ENOFILE;
+ }
+ thefile = &(file->filedes);
+ return APR_SUCCESS;
}
+
+ap_status_t ap_put_os_file(ap_context_t *cont, struct file_t **file,
+ ap_os_file_t *thefile)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*file) == NULL) {
+ (*file) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t));
+ (*file)->cntxt = cont;
+ }
+ (*file)->filedes = *thefile;
+ return APR_SUCCESS;
+}
1.12 +29 -7 apache-apr/apr/locks/unix/locks.c
Index: locks.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/locks/unix/locks.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- locks.c 1999/07/02 17:46:40 1.11
+++ locks.c 1999/07/06 17:01:39 1.12
@@ -177,12 +177,11 @@
}
}
-ap_os_lock_t *ap_get_os_lock_t(struct lock_t *lock)
+ap_status_t ap_get_os_lock(struct lock_t *lock, ap_os_lock_t *oslock)
{
- ap_os_lock_t *oslock;
-
- oslock = (ap_os_lock_t *)malloc(sizeof(ap_os_lock_t));
-
+ if (lock == NULL) {
+ return APR_ENOLOCK;
+ }
oslock->crossproc = lock->interproc;
#if defined (USE_SYSVSEM_SERIALIZE)
oslock->op_on = lock->op_on;
@@ -195,7 +194,30 @@
oslock->intraproc = lock->intraproc;
#endif
- return oslock;
+ return APR_SUCCESS;
}
-
+ap_status_t ap_put_os_lock(ap_context_t *cont, struct lock_t **lock,
+ ap_os_lock_t *thelock)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*lock) == NULL) {
+ (*lock) = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t));
+ (*lock)->cntxt = cont;
+ }
+ (*lock)->interproc = thelock->crossproc;
+#if defined (USE_SYSVSEM_SERIALIZE)
+ (*lock)->op_on = thelock->op_on;
+ (*lock)->op_off = thelock->op_off;
+#elif defined (USE_FCNTL_SERIALIZE)
+ (*lock)->lock_it = thelock->lock_it;
+ (*lock)->unlock_it = thelock->unlock_it;
+#endif
+#if defined (USE_PTHREAD_SERIALIZE)
+ (*lock)->intraproc = thelock->intraproc;
+#endif
+ return APR_SUCCESS;
+}
+
1.22 +20 -2 apache-apr/apr/network_io/unix/sockets.c
Index: sockets.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/network_io/unix/sockets.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- sockets.c 1999/07/02 17:46:42 1.21
+++ sockets.c 1999/07/06 17:01:40 1.22
@@ -242,8 +242,26 @@
}
}
-ap_os_sock_t *ap_get_os_sock(struct socket_t *sock)
+ap_status_t ap_get_os_sock(struct socket_t *sock, ap_os_sock_t *thesock)
{
- return &(sock->socketdes);
+ if (sock == NULL) {
+ return APR_ENOSOCKET;
+ }
+ thesock = &(sock->socketdes);
+ return APR_SUCCESS;
+}
+
+ap_status_t ap_put_os_sock(ap_context_t *cont, struct socket_t **sock,
+ ap_os_sock_t *thesock)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*sock) == NULL) {
+ (*sock) = (struct socket_t *)ap_palloc(cont, sizeof(struct
socket_t));
+ (*sock)->cntxt = cont;
+ }
+ (*sock)->socketdes = *thesock;
+ return APR_SUCCESS;
}
1.20 +20 -2 apache-apr/apr/threadproc/unix/proc.c
Index: proc.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/threadproc/unix/proc.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- proc.c 1999/07/02 17:46:43 1.19
+++ proc.c 1999/07/06 17:01:41 1.20
@@ -282,8 +282,26 @@
return errno;
}
-ap_os_proc_t *ap_get_os_proc(ap_proc_t *proc)
+ap_status_t ap_get_os_proc(ap_proc_t *proc, ap_os_proc_t *theproc)
{
- return &(proc->pid);
+ if (proc == NULL) {
+ return APR_ENOPROC;
+ }
+ theproc = &(proc->pid);
+ return APR_SUCCESS;
}
+
+ap_status_t ap_put_os_proc(ap_context_t *cont, struct proc_t **proc,
+ ap_os_proc_t *theproc)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*proc) == NULL) {
+ (*proc) = (struct proc_t *)ap_palloc(cont, sizeof(struct proc_t));
+ (*proc)->cntxt = cont;
+ }
+ (*proc)->pid = *theproc;
+ return APR_SUCCESS;
+}
1.11 +20 -2 apache-apr/apr/threadproc/unix/thread.c
Index: thread.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/threadproc/unix/thread.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- thread.c 1999/07/02 17:46:43 1.10
+++ thread.c 1999/07/06 17:01:41 1.11
@@ -204,8 +204,26 @@
}
}
-ap_os_thread_t *ap_get_os_thread(struct thread_t *thd)
+ap_status_t ap_get_os_thread(struct thread_t *thd, ap_os_thread_t *thethd)
{
- return thd->td;
+ if (thd == NULL) {
+ return APR_ENOTHREAD;
+ }
+ thethd = thd->td;
+ return APR_SUCCESS;
+}
+
+ap_status_t ap_put_os_thread(ap_context_t *cont, struct thread_t **thd,
+ ap_os_thread_t *thethd)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*thd) == NULL) {
+ (*thd) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t));
+ (*thd)->cntxt = cont;
+ }
+ (*thd)->td = thethd;
+ return APR_SUCCESS;
}
1.9 +20 -2 apache-apr/apr/threadproc/unix/threadpriv.c
Index: threadpriv.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/threadproc/unix/threadpriv.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- threadpriv.c 1999/07/02 17:46:43 1.8
+++ threadpriv.c 1999/07/06 17:01:41 1.9
@@ -137,8 +137,26 @@
}
}
-ap_os_threadkey_t *ap_get_os_threadkey(ap_key_t *key)
+ap_status_t ap_get_os_threadkey(struct threadkey_t *key, ap_os_threadkey_t
*thekey)
{
- return key->key;
+ if (key == NULL) {
+ return APR_ENOFILE;
+ }
+ thekey = &(key->key);
+ return APR_SUCCESS;
}
+
+ap_status_t ap_put_os_threadkey(ap_context_t *cont, struct threadkey_t **key,
+ ap_os_threadkey_t *thekey)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if ((*key) == NULL) {
+ (*key) = (struct threadkey_t *)ap_palloc(cont, sizeof(struct
threadkey_t));
+ (*key)->cntxt = cont;
+ }
+ (*key)->key = *thekey;
+ return APR_SUCCESS;
+}
1.7 +20 -2 apache-apr/apr/time/unix/time.c
Index: time.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/time/unix/time.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- time.c 1999/07/02 17:46:44 1.6
+++ time.c 1999/07/06 17:01:42 1.7
@@ -134,11 +134,29 @@
return APR_SUCCESS;
}
-ap_os_time_t *ap_get_os_time(struct atime_t *thetime)
+ap_status_t ap_get_os_time(struct atime_t *thetime, ap_os_time_t *atime)
{
+ if (thetime == NULL) {
+ return APR_ENOTIME;
+ }
if (thetime->currtime == -1) {
ap_implode_time(thetime);
+ }
+ atime = &(thetime->currtime);
+ return APR_SUCCESS;
+}
+
+ap_status_t ap_put_os_time(ap_context_t *cont, struct atime_t **thetime,
+ ap_os_time_t *atime)
+{
+ if (cont == NULL) {
+ return APR_ENOCONT;
+ }
+ if (thetime == NULL) {
+ (*thetime) = (struct atime_t *)ap_palloc(cont, sizeof(struct
atime_t));
+ (*thetime)->cntxt = cont;
}
- return &(thetime->currtime);
+ (*thetime)->currtime = *atime;
+ return APR_SUCCESS;
}
1.3 +20 -8 apache-apr/include/apr_portable.h
Index: apr_portable.h
===================================================================
RCS file: /home/cvs/apache-apr/include/apr_portable.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- apr_portable.h 1999/07/02 19:09:29 1.2
+++ apr_portable.h 1999/07/06 17:01:43 1.3
@@ -65,6 +65,9 @@
#include "apr_errno.h"
#include "apr_lock.h"
#include "apr_time.h"
+#ifdef HAVE_DIR_H
+#include <dir.h>
+#endif
#ifdef HAVE_PTHREAD_H
#include <pthread.h>
#endif
@@ -126,13 +129,22 @@
typedef pthread_key_t ap_os_threadkey_t;
typedef time_t ap_os_time_t;
#endif
+
+ap_status_t ap_get_os_file(ap_file_t *, ap_os_file_t *);
+ap_status_t ap_get_os_dir(ap_dir_t *, ap_os_dir_t *);
+ap_status_t ap_get_os_sock(ap_socket_t *, ap_os_sock_t *);
+ap_status_t ap_get_os_lock(ap_lock_t *, ap_os_lock_t *);
+ap_status_t ap_get_os_thread(ap_thread_t *, ap_os_thread_t *);
+ap_status_t ap_get_os_proc(ap_proc_t *, ap_os_proc_t *);
+ap_status_t ap_get_os_time(ap_time_t *, ap_os_time_t *);
+ap_status_t ap_get_os_threadkey(ap_key_t *, ap_os_threadkey_t *);
-ap_os_file_t *ap_get_os_file(ap_file_t *);
-ap_os_dir_t *ap_get_os_dir(ap_dir_t *);
-ap_os_sock_t *ap_get_os_sock(ap_socket_t *);
-ap_os_lock_t *ap_get_os_lock(ap_lock_t *);
-ap_os_thread_t *ap_get_os_thread(ap_thread_t *);
-ap_os_proc_t *ap_get_os_proc(ap_proc_t *);
-ap_os_time_t *ap_get_os_time(ap_time_t *);
-ap_os_threadkey_t *ap_get_os_threadkey(ap_key_t *);
+ap_status_t ap_put_os_file(ap_context_t *, ap_file_t **, ap_os_file_t *);
+ap_status_t ap_put_os_dir(ap_context_t *, ap_dir_t **, ap_os_dir_t *);
+ap_status_t ap_put_os_sock(ap_context_t *, ap_socket_t **, ap_os_sock_t *);
+ap_status_t ap_put_os_lock(ap_context_t *, ap_lock_t **, ap_os_lock_t *);
+ap_status_t ap_put_os_thread(ap_context_t *, ap_thread_t **, ap_os_thread_t
*);
+ap_status_t ap_put_os_proc(ap_context_t *, ap_proc_t **, ap_os_proc_t *);
+ap_status_t ap_put_os_time(ap_context_t *, ap_time_t **, ap_os_time_t *);
+ap_status_t ap_put_os_threadkey(ap_context_t *, ap_key_t **,
ap_os_threadkey_t *);