You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@hyperreal.org on 1999/05/26 15:47:05 UTC
cvs commit: apache-apr/include apr_file_io.h apr_thread_proc.h
rbb 99/05/26 06:47:04
Modified: apr/file_io/unix pipe.c readwrite.c
apr/test testfile.c testproc.c testsock.c
apr/threadproc/unix proc.c
include apr_file_io.h apr_thread_proc.h
Log:
The process test works with these changes. Next up is the socket test.
Revision Changes Path
1.10 +10 -7 apache-apr/apr/file_io/unix/pipe.c
Index: pipe.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/file_io/unix/pipe.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- pipe.c 1999/05/25 03:14:15 1.9
+++ pipe.c 1999/05/26 13:46:54 1.10
@@ -56,13 +56,14 @@
#include "fileio.h"
#include "apr_file_io.h"
#include "apr_general.h"
+#include "apr_lib.h"
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
-ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t *in, struct file_t *out)
+ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t **in, struct file_t **out)
{
int filedes[2];
@@ -70,13 +71,15 @@
return errno;
}
- in->cntxt = cont;
- in->filedes = filedes[0];
- in->fname = strdup("PIPE");
+ (*in) = (struct file_t *)ap_palloc(cont->pool, sizeof(struct file_t));
+ (*in)->cntxt = cont;
+ (*in)->filedes = filedes[0];
+ (*in)->fname = ap_pstrdup(cont->pool, "PIPE");
- out->cntxt = cont;
- out->filedes = filedes[1];
- out->fname = strdup("PIPE");
+ (*out) = (struct file_t *)ap_palloc(cont->pool, sizeof(struct file_t));
+ (*out)->cntxt = cont;
+ (*out)->filedes = filedes[1];
+ (*out)->fname = ap_pstrdup(cont->pool, "PIPE");
return APR_SUCCESS;
}
1.12 +7 -6 apache-apr/apr/file_io/unix/readwrite.c
Index: readwrite.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/file_io/unix/readwrite.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- readwrite.c 1999/05/25 03:14:15 1.11
+++ readwrite.c 1999/05/26 13:46:55 1.12
@@ -71,7 +71,6 @@
return APR_EBADF;
}
- buf = ap_palloc(thefile->cntxt->pool, *nbytes);
rv = read(thefile->filedes, buf, *nbytes);
*nbytes = rv;
@@ -90,11 +89,13 @@
rv = write(thefile->filedes, buf, *nbytes);
- if (stat(thefile->fname, &info) == 0) {
- thefile->size = info.st_size;
- thefile->atime = info.st_atime;
- thefile->mtime = info.st_mtime;
- thefile->ctime = info.st_ctime;
+ if (strcmp(thefile->fname, "PIPE")) {
+ if (stat(thefile->fname, &info) == 0) {
+ thefile->size = info.st_size;
+ thefile->atime = info.st_atime;
+ thefile->mtime = info.st_mtime;
+ thefile->ctime = info.st_ctime;
+ }
}
*nbytes = rv;
return APR_SUCCESS;
1.22 +1 -0 apache-apr/apr/test/testfile.c
Index: testfile.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/test/testfile.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- testfile.c 1999/05/25 03:22:07 1.21
+++ testfile.c 1999/05/26 13:46:58 1.22
@@ -134,6 +134,7 @@
fprintf(stdout, "\tReading from the file.......");
nbytes = (ap_ssize_t)strlen("this is a test");
+ buf = (char *)ap_palloc(context->pool, nbytes + 1);
if (ap_read(thefile, buf, &nbytes) != APR_SUCCESS) {
perror("something's wrong");
exit(-1);
1.7 +14 -16 apache-apr/apr/test/testproc.c
Index: testproc.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/test/testproc.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- testproc.c 1999/05/25 17:03:54 1.6
+++ testproc.c 1999/05/26 13:46:58 1.7
@@ -56,6 +56,7 @@
#include "apr_thread_proc.h"
#include "apr_errno.h"
#include "apr_general.h"
+#include "apr_lib.h"
#include "errno.h"
#include <unistd.h>
#include <stdio.h>
@@ -70,21 +71,19 @@
ap_context_t *context;
ap_proc_t *newproc;
ap_procattr_t *attr;
- ap_file_t *testfile;
+ ap_file_t *testfile, *f2;
ap_ssize_t rv, length;
+ ap_status_t stat;
char *buf;
char *args[3];
- char *teststr = "Whooo Hoooo\n";
+ char *teststr;
- fprintf(stdout, "Creating context.......");
- if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
- fprintf(stderr, "Could not create context\n");
- exit(-1);
- }
- fprintf(stdout, "OK\n");
+ ap_create_context(NULL, NULL, &context);
+
+ teststr = ap_pstrdup(context->pool, "Whooo Hoooo\n");
if (argc > 1) {
- write(STDOUT_FILENO, teststr, strlen(teststr));
+ fprintf(stdout, "%s", teststr);
exit(1);
}
fprintf(stdout, "Creating procattr.......");
@@ -95,7 +94,7 @@
fprintf(stdout, "OK.\n");
fprintf(stdout, "Setting attr pipes, all three.......");
- if (ap_setprocattr_io(attr, 1, 1, 1) != APR_SUCCESS) {
+ if (ap_setprocattr_io(attr, 1, 1, 0) != APR_SUCCESS) {
fprintf(stderr, "Could not set pipes attr\n");
exit(-1);
}
@@ -115,10 +114,10 @@
}
fprintf(stdout, "OK.\n");
- args[0] = strdup("testproc");
- args[1] = strdup("-X");
+ args[0] = ap_pstrdup(context->pool, "testproc");
+ args[1] = ap_pstrdup(context->pool, "-X");
args[2] = NULL;
-
+
fprintf(stdout, "Createing a new process.......");
if (ap_create_process(context, "../testproc", args, NULL, attr, &newproc) != APR_SUCCESS) {
fprintf(stderr, "Could not create the new process\n");
@@ -132,12 +131,11 @@
exit(-1);
}
fprintf(stdout, "OK.\n");
-
+
length = 256;
fprintf(stdout, "Checking the data read from pipe to child.......");
+ buf = ap_palloc(context->pool, length);
if (ap_read(testfile, buf, &length) == APR_SUCCESS) {
- fprintf(stdout, "%s %s\n", buf, teststr);
- fprintf(stdout, "%d %d\n", strlen(buf), strlen(teststr));
if (!strcmp(buf, teststr))
fprintf(stdout,"OK\n");
else fprintf(stderr, "Uh-Oh\n");
1.10 +7 -7 apache-apr/apr/test/testsock.c
Index: testsock.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/test/testsock.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- testsock.c 1999/05/25 17:03:54 1.9
+++ testsock.c 1999/05/26 13:46:58 1.10
@@ -74,7 +74,7 @@
fprintf(stdout, "Creating context.......");
if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
- fprintf(stderr, "Could not vreate context\n");
+ fprintf(stderr, "Could not create context\n");
exit(-1);
}
fprintf(stdout, "OK\n");
@@ -85,18 +85,18 @@
fprintf(stdout, "server and client by yourself.\n");
fprintf(stdout, "Creating children to run network tests.......\n");
- ap_createprocattr_init(context, &attr1);
- ap_createprocattr_init(context, &attr2);
+ s1 = ap_createprocattr_init(context, &attr1);
+ s2 = ap_createprocattr_init(context, &attr2);
- if (attr1 == NULL || attr2 == NULL) {
+ if (s1 != APR_SUCCESS || s2 != APR_SUCCESS) {
fprintf(stderr, "Problem creating proc attrs\n");
exit(-1);
}
- ap_create_process(context, "server", NULL, NULL, attr1, &proc1);
- ap_create_process(context, "client", NULL, NULL, attr2, &proc2);
+ s1 = ap_create_process(context, "server", NULL, NULL, attr1, &proc1);
+ s2 = ap_create_process(context, "client", NULL, NULL, attr2, &proc2);
- if (proc1 == NULL || proc2 == NULL) {
+ if (s1 != APR_SUCCESS || s2 != APR_SUCCESS) {
fprintf(stderr, "Problem spawning new process\n");
exit(-1);
}
1.14 +15 -36 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.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- proc.c 1999/05/25 17:04:02 1.13
+++ proc.c 1999/05/26 13:47:01 1.14
@@ -89,45 +89,20 @@
{
ap_status_t stat;
if (in) {
- attr->parent_in = (ap_file_t *)ap_palloc(attr->cntxt->pool,
- sizeof(ap_file_t));
- attr->child_in = (ap_file_t *)ap_palloc(attr->cntxt->pool,
- sizeof(ap_file_t));
- if ((attr->parent_in == NULL) || (attr->child_in == NULL)) {
- return APR_ENOMEM;
- }
-
- if ((stat = ap_create_pipe(attr->cntxt, attr->child_in,
- attr->parent_in)) != APR_SUCCESS) {
+ if ((stat = ap_create_pipe(attr->cntxt, &attr->child_in,
+ &attr->parent_in)) != APR_SUCCESS) {
return stat;
}
}
if (out) {
- attr->parent_out = (ap_file_t *)ap_palloc(attr->cntxt->pool,
- sizeof(ap_file_t));
- attr->child_out = (ap_file_t *)ap_palloc(attr->cntxt->pool,
- sizeof(ap_file_t));
-
- if ((attr->parent_out == NULL) || (attr->child_out == NULL)) {
- return APR_ENOMEM;
- }
-
- if ((stat = ap_create_pipe(attr->cntxt, attr->parent_out,
- attr->child_out)) != APR_SUCCESS) {
+ if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_out,
+ &attr->child_out)) != APR_SUCCESS) {
return stat;
}
}
if (err) {
- attr->parent_err = (ap_file_t *)ap_palloc(attr->cntxt->pool,
- sizeof(ap_file_t));
- attr->child_err = (ap_file_t *)ap_palloc(attr->cntxt->pool,
- sizeof(ap_file_t));
- if ((attr->parent_err == NULL) || (attr->child_err == NULL)) {
- return APR_ENOMEM;
- }
-
- if ((stat = ap_create_pipe(attr->cntxt, attr->parent_err,
- attr->child_err)) != APR_SUCCESS) {
+ if ((stat = ap_create_pipe(attr->cntxt, &attr->parent_err,
+ &attr->child_err)) != APR_SUCCESS) {
return stat;
}
}
@@ -151,20 +126,22 @@
return APR_SUCCESS;
}
-ap_status_t ap_fork(struct proc_t *proc)
+ap_status_t ap_fork(ap_context_t *cont, struct proc_t **proc)
{
int pid;
+
+ (*proc) = ap_palloc(cont->pool, sizeof(struct proc_t));
if ((pid = fork()) < 0) {
return errno;
}
else if (pid == 0) {
- proc->pid = pid;
- proc->attr = NULL;
+ (*proc)->pid = pid;
+ (*proc)->attr = NULL;
return APR_INCHILD;
}
- proc->pid = pid;
- proc->attr = NULL;
+ (*proc)->pid = pid;
+ (*proc)->attr = NULL;
return APR_INPARENT;
}
@@ -180,6 +157,8 @@
if ((*new) == NULL) {
return APR_ENOMEM;
}
+
+ (*new)->cntxt = cont;
if (((*new)->pid = fork()) < 0) {
return errno;
1.31 +1 -1 apache-apr/include/apr_file_io.h
Index: apr_file_io.h
===================================================================
RCS file: /home/cvs/apache-apr/include/apr_file_io.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- apr_file_io.h 1999/05/25 03:14:20 1.30
+++ apr_file_io.h 1999/05/26 13:47:03 1.31
@@ -124,7 +124,7 @@
ap_status_t ap_make_dir(ap_context_t *, const char *, ap_fileperms_t);
ap_status_t ap_remove_dir(ap_context_t *, const char *);
-ap_status_t ap_create_pipe(ap_context_t *, ap_file_t *, ap_file_t *);
+ap_status_t ap_create_pipe(ap_context_t *, ap_file_t **, ap_file_t **);
ap_status_t ap_create_namedpipe(ap_context_t *, char *, ap_fileperms_t, char **);
/*accessor and general file_io functions. */
1.13 +1 -1 apache-apr/include/apr_thread_proc.h
Index: apr_thread_proc.h
===================================================================
RCS file: /home/cvs/apache-apr/include/apr_thread_proc.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- apr_thread_proc.h 1999/05/25 17:04:09 1.12
+++ apr_thread_proc.h 1999/05/26 13:47:03 1.13
@@ -112,7 +112,7 @@
ap_status_t ap_get_childout(ap_proc_t *, ap_file_t **);
ap_status_t ap_get_childerr(ap_proc_t *, ap_file_t **);
-ap_status_t ap_fork(ap_proc_t *);
+ap_status_t ap_fork(ap_context_t *, ap_proc_t **);
ap_status_t ap_create_process(ap_context_t *, char *, char *const [], char **,
ap_procattr_t *, ap_proc_t **);
ap_status_t ap_wait_proc(ap_proc_t *, ap_wait_how_e);