delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/02/08/14:18:31

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <42091065.8000606@redhat.com>
Date: Tue, 08 Feb 2005 14:17:57 -0500
From: Jeff Johnston <jjohnstn AT redhat DOT com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1
MIME-Version: 1.0
To: newlib AT sources DOT redhat DOT com, cygwin AT cygwin DOT com
Subject: Re: several more bugs found by coreutils
References: <020120052058 DOT 2301 DOT 41FFED5A000D5EEC000008FD22007614380A050E040D0C079D0A AT comcast DOT net> <20050202100718 DOT GA7767 AT cygbert DOT vinschen DOT de> <20050208174211 DOT GA3178 AT cygbert DOT vinschen DOT de>
In-Reply-To: <20050208174211.GA3178@cygbert.vinschen.de>

Corinna Vinschen wrote:
> On Feb  2 11:07, Corinna Vinschen wrote:
> 
>>On Feb  1 20:58, Erik Blake wrote:
>>
>>>Further coreutils-5.3.0 debugging turned up more POSIX bugs in cygwin:
>>>
>>><pwd.h> defines struct passwd with the pw_uid and pw_gid members as ints, although POSIX requires uid_t and gid_t.
>>>http://www.opengroup.org/onlinepubs/009695399/basedefs/dirent.h.html
>>
>>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.
>>
>>We could just redefine struct passwd to use uid_t and gid_t, but this
>>would break (very very very very unlikely) builds of Cygwin using
>>sources of versions before 1.5.0.  In other words, old Cygwin sources
>>using 16 bit uids/gids would go down hell.
>>
>>Personally, I think I can live with that, but I would like to hear if
>>there's any good reason to build historic versions (say, b20) with a
>>recent newlib.
>>
>>
>>><sys/time.h> defines utimes with non-const second parameter, although POSIX requires it to be const; likewise for utime in <utime.h> (deferred to <sys/utime.h>).  Additionally, both utimes() and utime() are required to touch file ctime on success.
>>>http://www.opengroup.org/onlinepubs/009695399/functions/utimes.html
>>>[snip]
>>
>>That should be easy to change in sys/time.h.
>>As far as the implementation of utime/utimes is affected, I already
>>changed it to set st_ctime.
> 
> 
> I have attached a patch to newlib this time.  Thinking about that
> for a while, I'm pretty sure that it doesn't make sense to build
> old 32 bit versions of Cygwin with recent newlib versions.  So I'm
> opting for having a clean pwd.h.
> 
> The below patch changes the definitions of struct passwd and utimes(2)
> according to SUSv3.
>

Looks fine.  Please go ahead.

-- Jeff J.

> 
> Corinna
> 
> 	* libc/include/pwd.h (struct passwd): Change pw_uid and pw_gid
> 	members to uid_t and gid_t according to SUSv3.
> 	* libc/include/sys/time.h (utimes):  Change second parameter
> 	to const according to SUSv3.
> 
> Index: libc/include/pwd.h
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/include/pwd.h,v
> retrieving revision 1.2
> diff -p -u -r1.2 pwd.h
> --- libc/include/pwd.h	9 Mar 2003 21:08:51 -0000	1.2
> +++ libc/include/pwd.h	8 Feb 2005 17:37:22 -0000
> @@ -50,8 +50,8 @@ extern "C" {
>  struct passwd {
>  	char	*pw_name;		/* user name */
>  	char	*pw_passwd;		/* encrypted password */
> -	int	pw_uid;			/* user uid */
> -	int	pw_gid;			/* user gid */
> +	uid_t	pw_uid;			/* user uid */
> +	gid_t	pw_gid;			/* user gid */
>  	char	*pw_comment;		/* comment */
>  	char	*pw_gecos;		/* Honeywell login info */
>  	char	*pw_dir;		/* home directory */
> Index: libc/include/sys/time.h
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/include/sys/time.h,v
> retrieving revision 1.4
> diff -p -u -r1.4 time.h
> --- libc/include/sys/time.h	21 Apr 2001 03:22:47 -0000	1.4
> +++ libc/include/sys/time.h	8 Feb 2005 17:37:22 -0000
> @@ -72,7 +72,7 @@ struct  itimerval {
>  
>  int _EXFUN(gettimeofday, (struct timeval *__p, struct timezone *__z));
>  int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *));
> -int _EXFUN(utimes, (const char *__path, struct timeval *__tvp));
> +int _EXFUN(utimes, (const char *__path, const struct timeval *__tvp));
>  int _EXFUN(getitimer, (int __which, struct itimerval *__value));
>  int _EXFUN(setitimer, (int __which, const struct itimerval *__value,
>  					struct itimerval *__ovalue));
> 


--
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019