Package: liblockfile
Version: 1.06.1
Severity: normal

liblockfile fails to build with glibc 2.4 (as used on Ubuntu), because
glibc 2.4 added an eaccess declaration to unistd.h which clashes with
liblockfile's own (completely different) function. A patch to rename
liblockfile's function to eaccess_write is attached. It doesn't affect
liblockfile's shared library ABI.

  https://launchpad.net/distros/ubuntu/+source/liblockfile/+bug/65837

Thanks,

-- 
Colin Watson                                       [EMAIL PROTECTED]
diff -Nru /tmp/SQHNGoUibB/liblockfile-1.06.1/dotlockfile.c 
/tmp/dgTpoXM4jc/liblockfile-1.06.1ubuntu1/dotlockfile.c
--- /tmp/SQHNGoUibB/liblockfile-1.06.1/dotlockfile.c    2003-05-15 
13:08:28.000000000 +0100
+++ /tmp/dgTpoXM4jc/liblockfile-1.06.1ubuntu1/dotlockfile.c     2006-10-13 
14:10:08.000000000 +0100
@@ -42,7 +42,7 @@
 extern int optind;
 #endif
 
-extern int eaccess(char *, gid_t, struct stat *);
+extern int eaccess_write(char *, gid_t, struct stat *);
 
 /*
  *     Sleep for an amout of time while regulary checking if
@@ -252,14 +252,14 @@
                return L_ERROR;
        }
        gid = getgid();
-       if (eaccess(dir, gid, &st) < 0) {
+       if (eaccess_write(dir, gid, &st) < 0) {
                if (errno == ENOENT) {
 enoent:
                        if (!quiet) fprintf(stderr,
                                "dotlockfile: %s: no such directory\n", dir);
                        return L_TMPLOCK;
                }
-               if ((r = eaccess(dir, getegid(), &st) < 0) && errno == ENOENT)
+               if ((r = eaccess_write(dir, getegid(), &st) < 0) && errno == 
ENOENT)
                        goto enoent;
                if (r < 0 || !ismaillock(lockfile, pwd->pw_name)) {
                        if (!quiet) fprintf(stderr,
@@ -272,7 +272,7 @@
        /*
         *      Now we should be able to chdir() to the lock directory.
         *      When we stat("."), it should be the same as at the
-        *      eaccess() check or someone played symlink() games on us.
+        *      eaccess_write() check or someone played symlink() games on us.
         */
        if (chdir(dir) < 0 || stat(".", &st2) < 0) {
                if (!quiet) fprintf(stderr,
diff -Nru /tmp/SQHNGoUibB/liblockfile-1.06.1/lockfile.c 
/tmp/dgTpoXM4jc/liblockfile-1.06.1ubuntu1/lockfile.c
--- /tmp/SQHNGoUibB/liblockfile-1.06.1/lockfile.c       2004-06-04 
16:14:21.000000000 +0100
+++ /tmp/dgTpoXM4jc/liblockfile-1.06.1ubuntu1/lockfile.c        2006-10-13 
14:09:24.000000000 +0100
@@ -54,7 +54,7 @@
 #ifdef LIB
 static
 #endif
-int eaccess(char *fn, gid_t gid, struct stat *st)
+int eaccess_write(char *fn, gid_t gid, struct stat *st)
 {
        struct stat     tmp;
        uid_t           uid = geteuid();
@@ -96,7 +96,7 @@
                *p = 0;
        else
                strcpy(dir, ".");
-       if (eaccess(dir, egid, NULL) >= 0) {
+       if (eaccess_write(dir, egid, NULL) >= 0) {
                free(dir);
                return 0;
        }
@@ -111,7 +111,7 @@
                        return 0;
                mailgid = st.st_gid;
        }
-       ret = eaccess(dir, mailgid, NULL) >= 0;
+       ret = eaccess_write(dir, mailgid, NULL) >= 0;
        free (dir);
        return ret;
 }

Reply via email to