dgaudet 97/07/20 20:37:54
Modified: src CHANGES Configure PORTING conf.h dummy.c http_main.c src/modules/proxy proxy_ftp.c Log: Linux porting tweaks for glibc based systems. Linux tweaks to find db libraries. Added NET_SIZE_T for handling size_t * args to some functions. Revision Changes Path 1.357 +8 -0 apache/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.356 retrieving revision 1.357 diff -C3 -r1.356 -r1.357 *** CHANGES 1997/07/20 23:45:45 1.356 --- CHANGES 1997/07/21 03:37:47 1.357 *************** *** 1,5 **** --- 1,13 ---- Changes with Apache 1.3 + *) PORT: Some architectures use size_t for various lengths in network + functions such as accept(), and getsockname(). The definition + NET_SIZE_T is used to control this. [Dean Gaudet] + + *) PORT: Linux: Attempt to detect glibc based systems and include crypt.h + and -lcrypt. Test for various db libraries (dbm, ndbm, db) when + mod_auth_dbm or mod_auth_db are included. [Dean Gaudet] + *) PORT: QNX doesn't have initgroups() which support/suexec.c uses. [Igor N Kovalenko <[EMAIL PROTECTED]>] 1.114 +24 -12 apache/src/Configure Index: Configure =================================================================== RCS file: /export/home/cvs/apache/src/Configure,v retrieving revision 1.113 retrieving revision 1.114 diff -C3 -r1.113 -r1.114 *** Configure 1997/07/19 09:34:32 1.113 --- Configure 1997/07/21 03:37:48 1.114 *************** *** 279,300 **** CFLAGS="$CFLAGS -DIRIX" fi ;; - alpha-*-linux2) - DEF_WANTHSREGEX=yes - OS='Linux' - CFLAGS="$CFLAGS -DLINUX=2" - LIBS="$LIBS -lcrypt" - ;; - sparc-*-linux2) - DEF_WANTHSREGEX=yes - OS='Linux' - CFLAGS="$CFLAGS -DLINUX=2" - LIBS="$LIBS -lm" - ;; *-linux2) DEF_WANTHSREGEX=yes OS='Linux' CFLAGS="$CFLAGS -DLINUX=2" ;; *-linux1) DEF_WANTHSREGEX=yes --- 279,289 ---- CFLAGS="$CFLAGS -DIRIX" fi ;; *-linux2) DEF_WANTHSREGEX=yes OS='Linux' CFLAGS="$CFLAGS -DLINUX=2" + LIBS="$LIBS -lm" ;; *-linux1) DEF_WANTHSREGEX=yes *************** *** 684,697 **** --- 673,709 ---- # before we actually write LIBS to Makefile.config. # Punt for now... + case "$PLAT" in + *-linux*) + # newer systems using glibc 2.x need -lcrypt + if ./helpers/TestLib crypt; then + LIBS="$LIBS -lcrypt" + fi + # many systems have -ldb installed + DB_LIB="" + if ./helpers/TestLib db; then + DB_LIB="-ldb" + fi; + # many systems don't have -ldbm + DBM_LIB="" + if ./helpers/TestLib dbm; then + DBM_LIB="-ldbm" + elif ./helpers/TestLib ndbm; then + DBM_LIB="-lndbm" + fi + ;; + esac + # # Are they using dbm/db auth? If so, add DBM/DB library. # if grep mod_auth_dbm Makefile > /dev/null; then LIBS="$LIBS $DBM_LIB" + echo " + using $DBM_LIB for mod_auth_dbm" fi if grep mod_auth_db Makefile > /dev/null; then LIBS="$LIBS $DB_LIB" + echo " + using $DB_LIB for mod_auth_db" fi #################################################################### 1.8 +5 -0 apache/src/PORTING Index: PORTING =================================================================== RCS file: /export/home/cvs/apache/src/PORTING,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** PORTING 1997/07/07 14:34:24 1.7 --- PORTING 1997/07/21 03:37:48 1.8 *************** *** 245,250 **** --- 245,255 ---- Amount to move sbrk() breakpoint, if required, before attaching shared-memory segment. + NET_SIZE_T: + Some functions such as accept(), getsockname(), getpeername() take + an int *len on some architectures and a size_t *len on others. + If left undefined apache will default it to int. + ----------- Conclusion: ----------- 1.116 +14 -0 apache/src/conf.h Index: conf.h =================================================================== RCS file: /export/home/cvs/apache/src/conf.h,v retrieving revision 1.115 retrieving revision 1.116 diff -C3 -r1.115 -r1.116 *** conf.h 1997/07/16 00:41:20 1.115 --- conf.h 1997/07/21 03:37:48 1.116 *************** *** 259,264 **** --- 259,270 ---- #elif defined(LINUX) #if LINUX > 1 + #include <features.h> + #if defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 + /* it's a glibc host */ + #include <crypt.h> + #define NET_SIZE_T size_t + #endif #define HAVE_SHMGET #define HAVE_SYS_RESOURCE_H typedef int rlim_t; *************** *** 362,367 **** --- 368,374 ---- #define HAVE_SYS_RESOURCE_H #include <sys/time.h> #define _POSIX_SOURCE + #define NET_SIZE_T size_t #elif defined(DGUX) #define NO_KILLPG *************** *** 814,819 **** --- 821,833 ---- #define XtOffsetOf(s_type,field) offsetof(s_type,field) #else #define XtOffsetOf(s_type,field) XtOffset(s_type*,field) + #endif + + /* some architectures require size_t * pointers where others require int * + * pointers in functions such as accept(), getsockname(), getpeername() + */ + #ifndef NET_SIZE_T + #define NET_SIZE_T int #endif #ifdef SUNOS_LIB_PROTOTYPES 1.2 +1 -1 apache/src/dummy.c Index: dummy.c =================================================================== RCS file: /export/home/cvs/apache/src/dummy.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C3 -r1.1 -r1.2 *** dummy.c 1997/07/13 19:01:09 1.1 --- dummy.c 1997/07/21 03:37:49 1.2 *************** *** 1,3 **** ! void dummy() { } --- 1,3 ---- ! void main() { } 1.183 +6 -9 apache/src/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apache/src/http_main.c,v retrieving revision 1.182 retrieving revision 1.183 diff -C3 -r1.182 -r1.183 *** http_main.c 1997/07/20 04:05:56 1.182 --- http_main.c 1997/07/21 03:37:49 1.183 *************** *** 2084,2094 **** void child_main(int child_num_arg) { ! #if defined(UW) ! size_t clen; ! #else ! int clen; ! #endif struct sockaddr sa_server; struct sockaddr sa_client; listen_rec *lr; --- 2084,2090 ---- void child_main(int child_num_arg) { ! NET_SIZE_T clen; struct sockaddr sa_server; struct sockaddr sa_client; listen_rec *lr; *************** *** 2744,2749 **** --- 2740,2746 ---- request_rec *r; struct sockaddr sa_server, sa_client; BUFF *cio; + NET_SIZE_T l; open_logs(server_conf, pconf); set_group_privs(); *************** *** 2767,2782 **** } #endif ! c = sizeof(sa_client); ! if ((getpeername(fileno(stdin), &sa_client, &c)) < 0) { /* get peername will fail if the input isn't a socket */ perror("getpeername"); memset(&sa_client, '\0', sizeof(sa_client)); } ! c = sizeof(sa_server); ! if(getsockname(fileno(stdin), &sa_server, &c) < 0) { perror("getsockname"); fprintf(stderr, "Error getting local address\n"); exit(1); --- 2764,2779 ---- } #endif ! l = sizeof(sa_client); ! if ((getpeername(fileno(stdin), &sa_client, &l)) < 0) { /* get peername will fail if the input isn't a socket */ perror("getpeername"); memset(&sa_client, '\0', sizeof(sa_client)); } ! l = sizeof(sa_server); ! if(getsockname(fileno(stdin), &sa_server, &l) < 0) { perror("getsockname"); fprintf(stderr, "Error getting local address\n"); exit(1); 1.26 +10 -9 apache/src/modules/proxy/proxy_ftp.c Index: proxy_ftp.c =================================================================== RCS file: /export/home/cvs/apache/src/modules/proxy/proxy_ftp.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C3 -r1.25 -r1.26 *** proxy_ftp.c 1997/07/19 20:16:21 1.25 --- proxy_ftp.c 1997/07/21 03:37:53 1.26 *************** *** 402,409 **** BUFF *f, *cache; BUFF *data = NULL; pool *pool=r->pool; ! const int one=1; const long int zero=0L; void *sconf = r->server->module_config; proxy_server_conf *conf = --- 402,410 ---- BUFF *f, *cache; BUFF *data = NULL; pool *pool=r->pool; ! int one=1; const long int zero=0L; + NET_SIZE_T clen; void *sconf = r->server->module_config; proxy_server_conf *conf = *************** *** 498,505 **** } note_cleanups_for_socket(pool, sock); ! if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&one, ! sizeof(int)) == -1) { proxy_log_uerror("setsockopt", NULL, "proxy: error setting reuseaddr option", r->server); --- 499,506 ---- } note_cleanups_for_socket(pool, sock); ! if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, ! sizeof(one)) == -1) { proxy_log_uerror("setsockopt", NULL, "proxy: error setting reuseaddr option", r->server); *************** *** 742,749 **** if (!pasvmode) /* set up data connection */ { ! len = sizeof(struct sockaddr_in); ! if (getsockname(sock, (struct sockaddr *)&server, &len) < 0) { proxy_log_uerror("getsockname", NULL, "proxy: error getting socket address", r->server); --- 743,750 ---- if (!pasvmode) /* set up data connection */ { ! clen = sizeof(struct sockaddr_in); ! if (getsockname(sock, (struct sockaddr *)&server, &clen) < 0) { proxy_log_uerror("getsockname", NULL, "proxy: error getting socket address", r->server); *************** *** 763,770 **** } note_cleanups_for_fd(pool, dsock); ! if (setsockopt(dsock, SOL_SOCKET, SO_REUSEADDR, (const char *)&one, ! sizeof(int)) == -1) { proxy_log_uerror("setsockopt", NULL, "proxy: error setting reuseaddr option", r->server); --- 764,771 ---- } note_cleanups_for_fd(pool, dsock); ! if (setsockopt(dsock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, ! sizeof(one)) == -1) { proxy_log_uerror("setsockopt", NULL, "proxy: error setting reuseaddr option", r->server); *************** *** 932,939 **** if (!pasvmode) /* wait for connection */ { hard_timeout ("proxy ftp data connect", r); ! len = sizeof(struct sockaddr_in); ! do csd = accept(dsock, (struct sockaddr *)&server, &len); while (csd == -1 && errno == EINTR); if (csd == -1) { --- 933,940 ---- if (!pasvmode) /* wait for connection */ { hard_timeout ("proxy ftp data connect", r); ! clen = sizeof(struct sockaddr_in); ! do csd = accept(dsock, (struct sockaddr *)&server, &clen); while (csd == -1 && errno == EINTR); if (csd == -1) {