Colm MacCárthaigh wrote:
> There is a 1.3.42 release candidate for testing, and voting, at;
>
>          http://people.apache.org/~colm/1.3.42/
>   

I just tried building on a fairly stock Ubuntu Karmic system and ran
into this compile error:

gcc -c  -I../os/unix -I../include   -DLINUX=22 -DHAVE_SET_DUMPABLE
-DUSE_HSREGEX -DNO_DL_NEEDED `../apaci` htpasswd.c
htpasswd.c:101: error: conflicting types for ‘getline’
/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here

So getline() is a system provided function here.

I used the top level configure with /bin/sh changed to /bin/bash as
mentioned elsewhere, no options.
On fixing this I found that htdigest.c and logrotate.c have the same
problem.

The obvious fix would be to namespace protect these getline
implementations, IE:

Index: src/support/htdigest.c
===================================================================
--- src/support/htdigest.c    (revision 897307)
+++ src/support/htdigest.c    (working copy)
@@ -71,7 +71,7 @@
     while ((line[y++] = line[x++]));
 }
 
-static int getline(char *s, int n, FILE *f)
+static int ap_getline(char *s, int n, FILE *f)
 {
     register int i = 0;
 
@@ -158,7 +158,7 @@
 {
     static char line[MAX_STRING_LEN];
 
-    while (!(getline(line, MAX_STRING_LEN, source))) { 
+    while (!(ap_getline(line, MAX_STRING_LEN, source))) { 
     putline(target, line);
     }
 }
@@ -216,7 +216,7 @@
     ap_cpystrn(realm, argv[2], sizeof(realm));
 
     found = 0;
-    while (!(getline(line, MAX_STRING_LEN, f))) {
+    while (!(ap_getline(line, MAX_STRING_LEN, f))) {
     if (found || (line[0] == '#') || (!line[0])) {
         putline(tfp, line);
         continue;
Index: src/support/logresolve.c
===================================================================
--- src/support/logresolve.c    (revision 897307)
+++ src/support/logresolve.c    (working copy)
@@ -71,7 +71,7 @@
 #endif /* !MPE && !WIN32*/
 
 static void cgethost(struct in_addr ipnum, char *string, int check);
-static int getline(char *s, int n);
+static int ap_getline(char *s, int n);
 static void stats(FILE *output);
 
 
@@ -278,7 +278,7 @@
  * gets a line from stdin
  */
 
-static int getline (char *s, int n)
+static int ap_getline (char *s, int n)
 {
     char *cp;
 
@@ -326,7 +326,7 @@
     for (i = 0; i < MAX_ERR + 2; i++)
     errors[i] = 0;
 
-    while (getline(line, MAXLINE)) {
+    while (ap_getline(line, MAXLINE)) {
     if (line[0] == '\0')
         continue;
     entries++;
Index: src/support/htpasswd.c
===================================================================
--- src/support/htpasswd.c    (revision 897307)
+++ src/support/htpasswd.c    (working copy)
@@ -98,7 +98,7 @@
  * Get a line of input from the user, not including any terminating
  * newline.
  */
-static int getline(char *s, int n, FILE *f)
+static int ap_getline(char *s, int n, FILE *f)
 {
     register int i = 0;
 
@@ -547,7 +547,7 @@
     char scratch[MAX_STRING_LEN];
 
     fpw = fopen(pwfilename, "r");
-    while (! (getline(line, sizeof(line), fpw))) {
+    while (! (ap_getline(line, sizeof(line), fpw))) {
         char *colon;
 
         if ((line[0] == '#') || (line[0] == '\0')) {

Reply via email to