Bugs item #3317, was opened at 2006-01-24 15:33 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=3317&group_id=426 Category: Core Group: None Status: Open Resolution: None Priority: 3 Submitted By: Marcus Rueckert (darix) Assigned to: Nobody (None) Summary: trouble due ruby redefining posix function eaccess Initial Comment: ruby redefines eaccess in intern.h [[[ $ grep eaccess intern.h int eaccess _((const char*, int)); ]]] that wasnt a problem as long the ruby definition matched the glibc definition. for the upcoming glibc 2.4 the definition of eaccess() was changed a bit. the relevant snippet from the unistd.h [1] [[[ /* Test for access to NAME using the effective UID and GID (as normal file operations use). */ extern int euidaccess (__const char *__name, int __type) __THROW __nonnull ((1)); /* An alias for `euidaccess', used by some other systems. */ extern int eaccess (__const char *__name, int __type) __THROW __nonnull ((1)); ]]] [1] http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/posix/unistd.h?rev=1.143&content-type=text/x-cvsweb-markup&cvsroot=glibc if a program now includes unistd and ruby.h you get the following error: /usr/include/unistd.h:266: error: declaration of 'int eaccess(const char*, int) throw ()' throws different exceptions /usr/lib/ruby/1.8/i586-linux/intern.h:223: error: from previous declaration 'int eaccess(const char*, int)' from the code it seems the ruby version is not as strict as the glibc version. would it be enough to rename the ruby internal function to rb_eaccess and refactor all calls from eaccess to rb_eaccess? ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=3317&group_id=426