You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Dean Gaudet <dg...@arctic.org> on 1997/09/02 08:12:11 UTC
Re: [PATCHES] various portability things...
On Wed, 27 Aug 1997, Martin Kraemer wrote:
> Here's a list of unrelated patches which you might want to comment
> on... (Or is my compiler just too picky? Only by applying these
> patches could I make it most of apache's modules _without_ warnings)
>
> Martin
>
> **** In SVR4, many machines have B_ERROR defined. This gives me lots
> **** of warnings when it gets redefined:
>
> Index: main/buff.h
> ===================================================================
> RCS file: /home/cvs/apachen/src/main/buff.h,v
> retrieving revision 1.3.0.1
> diff -u -r1.3.0.1 buff.h
> --- buff.h 1997/08/21 14:35:55 1.3.0.1
> +++ buff.h 1997/08/27 09:28:38
> @@ -69,6 +69,9 @@
> #define B_RDERR (16)
> /* A write error has occurred */
> #define B_WRERR (32)
> +#ifdef B_ERROR /* in SVR4: sometimes defined in /usr/include/sys/buf.h */
> +#undef B_ERROR
> +#endif
> #define B_ERROR (48)
> /* Use chunked writing */
> #define B_CHUNK (64)
I'd actually favour renaming all of these to BUFF_* ... but the above
is fine with me as an interim.
> **** On my SVR4 platform (and I assume on many others as well),
> **** the size argument is size_t, not the (apache default of) int:
> Index: main/conf.h
> ===================================================================
> RCS file: /home/cvs/apachen/src/main/conf.h,v
> retrieving revision 1.5
> diff -u -r1.5 conf.h
> --- conf.h 1997/08/25 12:13:19 1.5
> +++ conf.h 1997/08/27 09:28:38
> @@ -368,6 +368,9 @@
> #define JMP_BUF sigjmp_buf
> /* A lot of SVR4 systems need this */
> #define USE_FCNTL_SERIALIZED_ACCEPT
> +#ifdef SNI /* SINIX/ReliantUNIX, probably other SVR4's as well */
> +#define NET_SIZE_T size_t
> +#endif /*SNI*/
>
> #elif defined(UW)
> #define NO_LINGCLOSE
+1 on #define NET_SIZE_T size_t for all svr4s.
I've learned a little more about this particular issue. POSIX.something
dictated that the network functions (like accept) that pass back a length
through a pointer would use size_t for that length. Sane people pointed
out that size_t is usually 64 bits on a 64-bit box, and int is only
32-bit, so this new POSIX requirement would break any program written in
the BSD-style (where the length is an int). Subsequently a type socklen_t
was created, and it is used for the length pointers ... so we might want
to change the define from NET_SIZE_T to SOCKLEN_T.
>
> **** another attempt to resolve the size_t vs. int conflict:
> **** (BTW: what about the portability of the in_addr_t type?
> **** In the proxy module, test for (inet_addr() == -1) give me
> **** some warnings, too.)
> Index: main/util_script.c
> ===================================================================
> RCS file: /home/cvs/apachen/src/main/util_script.c,v
> retrieving revision 1.3.0.1
> diff -u -r1.3.0.1 util_script.c
> --- util_script.c 1997/08/21 14:36:01 1.3.0.1
> +++ util_script.c 1997/08/27 09:28:39
> @@ -439,7 +439,7 @@
> API_EXPORT(void) send_size(size_t size, request_rec *r) {
> char ss[20];
>
> - if(size == -1)
> + if(size == (size_t)-1)
> strcpy(ss, " -");
> else if(!size)
> strcpy(ss, " 0k");
I doubt that in_addr_t is portable.
I can't tell where send_size is called with a negative size. It doesn't
ever seem to be ...
>
> **** Another unused variable which could be eliminated:
> Index: modules/proxy/proxy_util.c
> ===================================================================
> RCS file: /home/cvs/apachen/src/modules/proxy/proxy_util.c,v
> retrieving revision 1.4
> diff -u -r1.4 proxy_util.c
> --- proxy_util.c 1997/08/25 08:26:50 1.4
> +++ proxy_util.c 1997/08/27 09:28:40
> @@ -110,7 +110,7 @@
> char *
> proxy_canonenc(pool *p, const char *x, int len, enum enctype t, int isenc)
> {
> - int i, j, ispath, ch;
> + int i, j, ch;
> char *y;
> const char *allowed; /* characters which should not be encoded */
> const char *reserved; /* characters which much not be en/de-coded */
> @@ -133,7 +133,6 @@
> else reserved = "";
>
> y = palloc(p, 3*len+1);
> - ispath = (t == enc_path);
>
> for (i=0, j=0; i < len; i++, j++)
> {
>
+1
Dean