threads / patch / 22045

patch, 2 partsMinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

Subject: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

## tl;dr

10 messages between Dec 29, 2009 and Dec 31, 2009. Diffs are folded; open one to read it.

replies: 9people: 4as markdown or json

Sebastian Schuberth· Dec 29, 2009, 01:18 UTC · lore
MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
 compat/mingw.h |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)
Show changes to compat/mingw.h +6 −5
diff --git a/compat/mingw.h b/compat/mingw.h
index b3d299f..af2f810 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -6,6 +6,7 @@
  */
 
 typedef int pid_t;
+typedef int uid_t;
 #define hstrerror strerror
 
 #define S_IFLNK    0120000 /* Symbolic link */
@@ -75,17 +76,17 @@ static inline int symlink(const char *oldpath, const char *newpath)
 { errno = ENOSYS; return -1; }
 static inline int fchmod(int fildes, mode_t mode)
 { errno = ENOSYS; return -1; }
-static inline int fork(void)
+static inline pid_t fork(void)
 { errno = ENOSYS; return -1; }
 static inline unsigned int alarm(unsigned int seconds)
 { return 0; }
 static inline int fsync(int fd)
 { return 0; }
-static inline int getppid(void)
+static inline pid_t getppid(void)
 { return 1; }
 static inline void sync(void)
 {}
-static inline int getuid()
+static inline uid_t getuid()
 { return 1; }
 static inline struct passwd *getpwnam(const char *name)
 { return NULL; }
@@ -117,7 +118,7 @@ static inline int mingw_unlink(const char *pathname)
 }
 #define unlink mingw_unlink
 
-static inline int waitpid(pid_t pid, int *status, unsigned options)
+static inline pid_t waitpid(pid_t pid, int *status, unsigned options)
 {
 	if (options == 0)
 		return _cwait(status, pid, 0);
@@ -158,7 +159,7 @@ int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
 struct tm *gmtime_r(const time_t *timep, struct tm *result);
 struct tm *localtime_r(const time_t *timep, struct tm *result);
 int getpagesize(void);	/* defined in MinGW's libgcc.a */
-struct passwd *getpwuid(int uid);
+struct passwd *getpwuid(uid_t uid);
 int setitimer(int type, struct itimerval *in, struct itimerval *out);
 int sigaction(int sig, struct sigaction *in, struct sigaction *out);
 int link(const char *oldpath, const char *newpath);
-- 
1.6.5.rc2.13.g1be2
Johannes Sixt· Dec 29, 2009, 21:09 UTC · re: Sebastian Schuberth · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

Sebastian Schuberth schrieb:
> MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility
Why this? Compatibility with what? What's the problem with the status quo?
-- Hannes
Sebastian Schuberth· Dec 30, 2009, 00:49 UTC · re: Johannes Sixt · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

On Tue, Dec 29, 2009 at 22:09, Johannes Sixt <j6t@kdbg.org> wrote:
>> MinGW: Use pid_t more consequently, introduce uid_t for greater
>> compatibility
>
> Why this? Compatibility with what? What's the problem with the status quo?

I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit. h2du depends on libpopt, and either of the two requires the uid_t type, I do not recall which. And while adding the missing uid_t, I felt it would be right to actually use uid_t / pid_t in the function prototypes.

-- 
Sebastian Schuberth
Erik Faye-Lund· Dec 30, 2009, 00:55 UTC · re: Sebastian Schuberth · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

On Wed, Dec 30, 2009 at 1:49 AM, Sebastian Schuberth <sschuberth@gmail.com> wrote:

Show 13 quoted lines
> On Tue, Dec 29, 2009 at 22:09, Johannes Sixt <j6t@kdbg.org> wrote:
>
>>> MinGW: Use pid_t more consequently, introduce uid_t for greater
>>> compatibility
>>
>> Why this? Compatibility with what? What's the problem with the status quo?
>
> I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit. h2du
> depends on libpopt, and either of the two requires the uid_t type, I
> do not recall which. And while adding the missing uid_t, I felt it
> would be right to actually use uid_t / pid_t in the function
> prototypes.
>

Perhaps I'm missing something here... why do you need to modify the git-sources in order to include an external tool?

-- 
Erik "kusma" Faye-Lund
Sebastian Schuberth· Dec 30, 2009, 01:16 UTC · re: Erik Faye-Lund · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

On Wed, Dec 30, 2009 at 01:55, Erik Faye-Lund <kusmabite@googlemail.com> wrote:
Show 10 quoted lines
>>> Why this? Compatibility with what? What's the problem with the status quo?
>>
>> I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit. h2du
>> depends on libpopt, and either of the two requires the uid_t type, I
>> do not recall which. And while adding the missing uid_t, I felt it
>> would be right to actually use uid_t / pid_t in the function
>> prototypes.
>
> Perhaps I'm missing something here... why do you need to modify the
> git-sources in order to include an external tool?

Because I'm building that external tool in the msysGit environment. As you know, the way we include external tools (like vim, unzip etc.) to the msysGit distribution is to create release.sh scripts that download the sources, apply patches, and build the tool. Patching the original hd2u sources to include compat/mingw.h was the best way that I saw to get some required symbols, with only two symbols missing, and those missing symbols are added by my patches.

Anyway, IMHO the correct declaration of e.g. getuid() is not "int getuid()", but "uid_t getuid()" etc. So even if the uid_t type was not required, it's a good change I think.

-- 
Sebastian Schuberth
Johannes Schindelin· Dec 30, 2009, 11:11 UTC · re: Sebastian Schuberth · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

Hi,
On Wed, 30 Dec 2009, Sebastian Schuberth wrote:
> Anyway, IMHO the correct declaration of e.g. getuid() is not "int 
> getuid()", but "uid_t getuid()" etc. So even if the uid_t type was not 
> required, it's a good change I think.

FWIW I concur with this reasoning. Even if in this particular case, we could work around the issue, it is basically a non-intrusive, minimal janitorial patch. Especially since the original author of the wrong signature concurs.

Ciao, Dscho

Johannes Sixt· Dec 31, 2009, 13:50 UTC · re: Sebastian Schuberth · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

Sebastian Schuberth schrieb:
Show 7 quoted lines
> On Tue, Dec 29, 2009 at 22:09, Johannes Sixt <j6t@kdbg.org> wrote:
> 
>>> MinGW: Use pid_t more consequently, introduce uid_t for greater
>>> compatibility
>> Why this? Compatibility with what? What's the problem with the status quo?
> 
> I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit.
We have dos2unix. What's wrong with it?
-- Hannes
Johannes Schindelin· Dec 31, 2009, 14:12 UTC · re: Johannes Sixt · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

Hi,
On Thu, 31 Dec 2009, Johannes Sixt wrote:
Show 10 quoted lines
> Sebastian Schuberth schrieb:
> > On Tue, Dec 29, 2009 at 22:09, Johannes Sixt <j6t@kdbg.org> wrote:
> > 
> > > > MinGW: Use pid_t more consequently, introduce uid_t for greater
> > > > compatibility
> > > Why this? Compatibility with what? What's the problem with the status quo?
> > 
> > I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit.
> 
> We have dos2unix. What's wrong with it?
hd2u can handle mixed line endings, and it has a dry run mode IIUC.

Ciao, Dscho

Sebastian Schuberth· Dec 31, 2009, 14:14 UTC · re: Johannes Schindelin · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

On Thu, Dec 31, 2009 at 15:12, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

Show 5 quoted lines
>> > I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit.
>>
>> We have dos2unix. What's wrong with it?
>
> hd2u can handle mixed line endings, and it has a dry run mode IIUC.

Right. One of the best features over dos2unix IMHO is that hd2u can detect line-endings (and any problems like mixed / stray line-endings) without actually modifying any files. This makes it a very nice tool to detect any line-ending issues in the working tree of cross-platform projects due to wrong autocrlf configurations.

-- 
Sebastian Schuberth
Johannes Schindelin· Dec 31, 2009, 14:20 UTC · re: Johannes Schindelin · lore

Re: [PATCH 1/2] MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility

Hi,
On Thu, 31 Dec 2009, Johannes Schindelin wrote:
Show 15 quoted lines
> On Thu, 31 Dec 2009, Johannes Sixt wrote:
> 
> > Sebastian Schuberth schrieb:
> > > On Tue, Dec 29, 2009 at 22:09, Johannes Sixt <j6t@kdbg.org> wrote:
> > > 
> > > > > MinGW: Use pid_t more consequently, introduce uid_t for greater 
> > > > > compatibility
> > > > Why this? Compatibility with what? What's the problem with the 
> > > > status quo?
> > > 
> > > I wanted to include Hany's Dos2Unix tool (hd2u) into msysGit.
> > 
> > We have dos2unix. What's wrong with it?
> 
> hd2u can handle mixed line endings, and it has a dry run mode IIUC.

Having said that, I strongly feel this issue is over-discussed. We'll just carry the necessary patches in 4msysgit.git and you can do what you want.

Ciao, Dscho

← back to recent threads