From: noreply@... Date: 2005-05-13T07:57:34+09:00 Subject: [ ruby-Bugs-1903 ] prefer '#include ' over 'extern int errno' Bugs item #1903, was opened at 2005-05-12 15:50 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1903&group_id=426 Category: Core Group: None Status: Open Resolution: None Priority: 3 Submitted By: Chris Pressey (cpressey) Assigned to: Nobody (None) Summary: prefer '#include ' over 'extern int errno' Initial Comment: Several source files in the Ruby distribution declare extern int errno; in several places. This is bad style, since errno might not be declared that way. (In fact, it is not declared that way on DragonFlyBSD, which is how I discovered this; it fails to build because of a declaration clash.) The same source files do #include (which is the preferred way of declaring errno,) so the only fix needed is to remove the 'extern int errno' declarations. The patch given below removes these declarations. There may be (broken) platforms out there which still require an errno declaration, but I don't know what those platforms are; if this is desired, the proper fix would be to detect it in the autoconf script and do something like: #ifdef NEEDS_ERRNO_DECL extern int errno; #else #include #endif --- error.c.orig 2005-05-12 11:53:38.000000000 -0700 +++ error.c 2005-05-12 11:53:51.000000000 -0700 @@ -1108,7 +1108,6 @@ rb_sys_fail(mesg) const char *mesg; { - extern int errno; int n = errno; VALUE arg; --- process.c.orig 2005-05-12 12:07:57.000000000 -0700 +++ process.c 2005-05-12 12:08:47.000000000 -0700 @@ -2050,7 +2050,6 @@ p_uid_change_privilege(obj, id) VALUE obj, id; { - extern int errno; int uid; check_uid_switch(); @@ -2602,7 +2601,6 @@ p_gid_change_privilege(obj, id) VALUE obj, id; { - extern int errno; int gid; check_gid_switch(); @@ -3129,7 +3127,6 @@ p_uid_switch(obj) VALUE obj; { - extern int errno; int uid, euid; check_uid_switch(); @@ -3171,7 +3168,6 @@ p_uid_switch(obj) VALUE obj; { - extern int errno; int uid, euid; check_uid_switch(); @@ -3242,7 +3238,6 @@ p_gid_switch(obj) VALUE obj; { - extern int errno; int gid, egid; check_gid_switch(); @@ -3283,7 +3278,6 @@ p_gid_switch(obj) VALUE obj; { - extern int errno; int gid, egid; check_gid_switch(); --- ext/sdbm/_sdbm.c.orig 2005-05-12 15:21:49.000000000 -0700 +++ ext/sdbm/_sdbm.c 2005-05-12 15:22:10.000000000 -0700 @@ -101,13 +101,6 @@ #endif /* - * externals - */ -#if !defined sun && !defined MSDOS && !defined _WIN32 && !defined __CYGWIN__ -extern int errno; -#endif - -/* * forward */ static int getdbit proto((DBM *, long)); --- ext/pty/pty.c.orig 2005-05-12 12:54:55.000000000 -0700 +++ ext/pty/pty.c 2005-05-12 12:55:03.000000000 -0700 @@ -103,8 +103,6 @@ static char SlaveName[DEVICELEN]; -extern int errno; - #ifndef HAVE_SETEUID # ifdef HAVE_SETREUID # define seteuid(e) setreuid(-1, (e)) ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1903&group_id=426