This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: several more bugs found by coreutils
On Feb 2 07:05, Eric Blake wrote:
> > On Feb 1 20:58, Erik Blake wrote:
>
> Eric, not Erik.
Hups. I'm wondering how that could happen. I didn't change the
address manually. Weird. Sorry 'bout that, anyway.
> > include/pwd.h is a newlib file. However, I was pretty happy that pw_uid
> > and pw_gid were defined as int, when we changed uids and gids from 16 to
> > 32 bits. It was the one file which wasn't necessary to change.
>
> Is it worth introducing two definitions in cygwin, guarded by
> __CYGWIN_USE_BIG_TYPES__, as is done elsewhere (for example sys/dirent.h)?
> Or how about something like the following to ensure that pw_comment
> remains at the same offset regardless of whether sizeof(uid_t) == sizeof(int):
>
> struct passwd {
> char *pw_name;
> char *pw_passwd;
> union {
> int __filler;
> uid_t upw_uid;
> } u;
> /* etc. */
> };
> #define pw_uid u.upw_uid;
Urgh. That's ugly, IMHO. Basically, uid_t should be used always.
For the sake of a questionable backward compatibility, it might be
worth to do something like this:
#if defined (__CYGWIN__) && !defined (__CYGWIN_USE_BIG_TYPES__)
#define __pw_uid_t int
#endif
#ifndef __pw_uid_t
#define __pw_uid_t uid_t;
#endif
struct passwd {
char *pw_name;
char *pw_passwd;
__pw_uid_t pw_uid;
__pw_gid_t pw_gid;
[etc].
Would that be ok, Jeff?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader mailto:cygwin@cygwin.com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/