On Sun, Dec 03, 2000 at 08:21:35AM -0800, [EMAIL PROTECTED] wrote:
> 
> > This still doesn't work.  It turns out that neither BEOS nor
> > __POWER_PC__ is defined at the point in Subversion that this gets used
> > and likely not in other APR-using apps either.  So, new patch, using
> > HAVE_isascii, which doesn't require including apr_private.h, despite
> > Ryan's worry.  Also, defining it before using it is helpful. :-)
> 
> Well, David already committed a very good patch, but I'll comment anyway
> :-)
> 
> I had gone to bed before the rest of this stuff was discussed, so
> obviously I didn't get to comment last night.  
> 
> I just search all of the include directory, and the only place
> HAVE_isascii is defined is apr_private.h.in, so I can't see how
> we could check HAVE_isascii without that file.
 
My guess is, as Greg suggested, that it just wasn't defined, and
therefore was treated as false.  Which gives the desired behavior on
Be/PPC, but not anywhere else. Good to see we now have this done
right.

As for the tests, there were a bunch of type mismatches, virtually all
related to the signedness of character strings.  Then there was the
function apr_socket_from_file, which wasn't implemented on BeOS at
all.  So I copied the function exactly from the Unix implementation,
and that worked.  

After that, the only proble was testdso, which is a dynamically loaded
binary.  Naturally the syntax didn't translate well, so I just
commented it out entirely.  However, this mean that I couldn't run
most of the tests.  So, the upshot is, here's the test results:

User data is working ok
Testing file functions.
        Opening file.......OK
        Checking file.......OK
OK
        Moving to start of file.......OK
        This platform supports files_like_sockets
                Making file look like a socket.......OK
Select caused an error
                Checking for incoming data......../testfile failed

Here are the patches:

First, all the casts.  Greg, feel free to do this correctly.  

RCS file: /home/cvspublic/apr/test/client.c,v
retrieving revision 1.21
diff -u -r1.21 client.c
--- test//client.c      2000/11/21 19:15:27     1.21
+++ test//client.c      2000/12/03 17:26:23
@@ -150,7 +150,7 @@
 
     fprintf(stdout, "\tClient:  Trying to send data over socket.......");
     length = STRLEN;
-    if (apr_send(sock, datasend, &length) != APR_SUCCESS) {
+    if (apr_send(sock, datasend, (unsigned long *)&length) != APR_SUCCESS) {
         apr_close_socket(sock);
         fprintf(stderr, "Problem sending data\n");
         exit(-1);
@@ -170,7 +170,7 @@
     length = STRLEN; 
     fprintf(stdout, "\tClient:  Trying to receive data over socket.......");
 
-    if ((stat = apr_recv(sock, datarecv, &length)) != APR_SUCCESS) {
+    if ((stat = apr_recv(sock, datarecv, (unsigned long *)&length)) != 
APR_SUCCESS) {
         apr_close_socket(sock);
         fprintf(stderr, "Problem receiving data: %s (%d)\n", 
                apr_strerror(stat, msgbuf, sizeof(msgbuf)), stat);
Index: test//server.c
===================================================================
RCS file: /home/cvspublic/apr/test/server.c,v
retrieving revision 1.22
diff -u -r1.22 server.c
--- test//server.c      2000/12/03 06:50:31     1.22
+++ test//server.c      2000/12/03 17:26:28
@@ -213,7 +213,7 @@
 
     length = STRLEN;
     fprintf(stdout, "\tServer:  Trying to recv data from socket.......");
-    if (apr_recv(sock2, datasend, &length) != APR_SUCCESS) {
+    if (apr_recv(sock2, datasend, (unsigned long *)&length) != APR_SUCCESS) {
         apr_close_socket(sock);
         apr_close_socket(sock2);
         fprintf(stderr, "Problem recving data\n");
@@ -229,7 +229,7 @@
 
     length = STRLEN;
     fprintf(stdout, "\tServer:  Sending data over socket.......");
-    if (apr_send(sock2, datarecv, &length) != APR_SUCCESS) {
+    if (apr_send(sock2, datarecv, (unsigned long *)&length) != APR_SUCCESS) {
         apr_close_socket(sock);
         apr_close_socket(sock2);
         fprintf(stderr, "Problem sending data\n");
Index: test//testfile.c
===================================================================
RCS file: /home/cvspublic/apr/test/testfile.c,v
retrieving revision 1.18
diff -u -r1.18 testfile.c
--- test//testfile.c    2000/11/15 21:46:38     1.18
+++ test//testfile.c    2000/12/03 17:26:42
@@ -124,10 +124,10 @@
         fprintf(stdout, "OK\n");
     }
 
-    fprintf(stdout, "\tWriting to file.......");
+    printf((const char *)stdout, "\tWriting to file.......");
     
     nbytes = (apr_ssize_t)strlen("this is a test");
-    if (apr_write(thefile, "this is a test", &nbytes) != APR_SUCCESS) {
+    if (apr_write(thefile, "this is a test", (unsigned long *)&nbytes) != 
APR_SUCCESS) {
         perror("something's wrong");
         exit(-1);
     }
@@ -177,7 +177,7 @@
     fprintf(stdout, "\tReading from the file.......");
     nbytes = (apr_ssize_t)strlen("this is a test");
     buf = (char *)apr_palloc(context, nbytes + 1);
-    if (apr_read(thefile, buf, &nbytes) != APR_SUCCESS) {
+    if (apr_read(thefile, buf, (unsigned long *)&nbytes) != APR_SUCCESS) {
         perror("something's wrong");
         exit(-1);
     }
@@ -297,7 +297,7 @@
     }
 
     bytes = strlen("Another test!!!");
-    apr_write(file, "Another test!!", &bytes); 
+    apr_write(file, "Another test!!", (unsigned long *)&bytes); 
        apr_close(file);
 
     fprintf(stdout, "\tOpening Directory.......");
@@ -345,7 +345,7 @@
     fprintf(stdout, "OK\n");
 
     fprintf(stdout, "\t\tFile size.......");
-    apr_dir_entry_size(&bytes, temp);
+    apr_dir_entry_size((unsigned long *)&bytes, temp);
     if (bytes != (apr_ssize_t)strlen("Another test!!!")) {
         fprintf(stderr, "Got wrong file size %d\n", bytes);
         return -1;
@@ -405,14 +405,14 @@
         exit(1);
     }
     nbytes = 4;
-    rv = apr_write(f, "abc\n", &nbytes);
+    rv = apr_write(f, "abc\n", (unsigned long *)&nbytes);
     assert(!rv && nbytes == 4);
     memset(buf, 'a', sizeof buf);
     nbytes = sizeof buf;
-    rv = apr_write(f, buf, &nbytes);
+    rv = apr_write(f, buf, (unsigned long *)&nbytes);
     assert(!rv && nbytes == sizeof buf);
     nbytes = 2;
-    rv = apr_write(f, "\n\n", &nbytes);
+    rv = apr_write(f, "\n\n", (unsigned long *)&nbytes);
     assert(!rv && nbytes == 2);
     rv = apr_close(f);
     assert(!rv);
@@ -433,7 +433,7 @@
   }
   else {
       nbytes = 1;
-      rv = apr_read(f, bytes + 1, &nbytes);
+      rv = apr_read(f, bytes + 1, (unsigned long *)&nbytes);
       assert(nbytes == 1);
   }
   assert(!rv);
@@ -522,7 +522,7 @@
     /* get APR_EOF with apr_read
      */
     nbytes = sizeof buf;
-    rv = apr_read(f, buf, &nbytes);
+    rv = apr_read(f, buf, (unsigned long *)&nbytes);
     assert(rv == APR_EOF);
     rv = apr_close(f);
     assert(!rv);
@@ -545,7 +545,7 @@
     }
     nbytes = APR_BUFFERSIZE;
     memset(buf, 0xFE, nbytes);
-    rv = apr_write(f, buf, &nbytes);
+    rv = apr_write(f, buf, (unsigned long *)&nbytes);
     assert(!rv && nbytes == APR_BUFFERSIZE);
     rv = apr_close(f);
     assert(!rv);
@@ -554,7 +554,7 @@
     rv = apr_open(&f, fname, APR_READ | extra_flags, 0, p);
     assert(!rv);
     nbytes = sizeof buf;
-    rv = apr_read(f, buf, &nbytes);
+    rv = apr_read(f, buf, (unsigned long *)&nbytes);
     assert(!rv);
     assert(nbytes == APR_BUFFERSIZE);
     rv = apr_close(f);
Index: test//testproc.c
===================================================================
RCS file: /home/cvspublic/apr/test/testproc.c,v
retrieving revision 1.21
diff -u -r1.21 testproc.c
--- test//testproc.c    2000/11/29 00:25:23     1.21
+++ test//testproc.c    2000/12/03 17:26:42
@@ -149,7 +149,7 @@
 
     length = 256;
     fprintf(stdout, "Writing the data to child.......");
-    if (apr_write(testfile, teststr, &length) == APR_SUCCESS) {
+    if (apr_write(testfile, teststr, (unsigned long *)&length) == APR_SUCCESS) 
{
         fprintf(stdout,"OK\n");
     }
     else fprintf(stderr, "Write failed.\n");
@@ -161,7 +161,7 @@
     length = 256;
     fprintf(stdout, "Checking the data read from pipe to child.......");
     buf = apr_pcalloc(context, length);
-    if (apr_read(testfile, buf, &length) == APR_SUCCESS) {
+    if (apr_read(testfile, buf, (unsigned long *)&length) == APR_SUCCESS) {
         if (!strcmp(buf, teststr))
             fprintf(stdout,"OK\n");
         else fprintf(stderr, "Uh-Oh\n");


Then the stuff in poll.c.  I don't know if this is the right way to do
it, but it did at least sort of work.  

Index: network_io/beos//poll.c
===================================================================
RCS file: /home/cvspublic/apr/network_io/beos/poll.c,v
retrieving revision 1.23
diff -u -r1.23 poll.c
--- network_io/beos//poll.c     2000/11/18 16:53:18     1.23
+++ network_io/beos//poll.c     2000/12/03 17:28:27
@@ -57,6 +57,7 @@
 #include "../unix/poll.c"
 #else
 #include "networkio.h"
+#include "fileio.h"
 
 /*  BeOS R4 doesn't have a poll function, but R5 will have 
  *  so for the time being we try our best with an implementaion that 
@@ -207,5 +208,20 @@
 {
     return apr_set_userdata(data, key, cleanup, pollfd->cntxt);
 }
+
+#if APR_FILES_AS_SOCKETS
+/* I'm not sure if this needs to return an apr_status_t or not, but
+ * for right now, we'll leave it this way, and change it later if
+ * necessary.
+ */
+apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file)
+{
+    (*newsock) = apr_pcalloc(file->cntxt, sizeof(**newsock));
+    (*newsock)->socketdes = file->filedes;
+    (*newsock)->cntxt = file->cntxt;
+    return APR_SUCCESS;
+}
+#endif
+
 
 #endif /* BEOS_BONE */

           
        sam th               
        [EMAIL PROTECTED]
        http://www.abisource.com/~sam/
        GnuPG Key:  
        http://www.abisource.com/~sam/key

Attachment: pgpDquiqJPWBb.pgp
Description: PGP signature

Reply via email to