Paul Eggert <egg...@cs.ucla.edu> writes: > Yes, that must be it. I installed the attached into gzip master on Savannah; > does it fix things for you?
That fixes the compilation of gzip.c, but of course causes a link failure since it leaves two calls to function do_chown() that is no longer defined. The hack I used to build the Debian gzip 1.9-1 upload I did last night is to conditionally add two bogus typedefs and elide the function content if __MINGW32__ is defined. So far, that seems to work ok. My patch is attached to this email. It does feel like an "ugly" approach, but I just got confused trying to unwind how the configure code which learns there are no *chown() functions in the mingw environment didn't actually cause the right things to happen in the build. Since apparently I'm the first person to stumble over this since you added do_chown shortly after the gzip 1.6 release, I doubt it's worth much more time from either of us to come up with a "cleaner" patch... Feel free to use some or all of my patch, but I am also happy to update may packaging for Debian if you choose to put more time in this and develop a better solution. Regards, Bdale
--- gzip-1.9/gzip.c 2018-01-07 13:05:21.000000000 +0800 +++ /tmp/gzip.c 2018-07-29 14:37:00.228844928 +0800 @@ -1910,6 +1910,11 @@ return OK; } +#ifdef __MINGW32__ +typedef int uid_t; +typedef int gid_t; +#endif + /* Change the owner and group of a file. FD is a file descriptor for the file and NAME its name. Change it to user UID and to group GID. If UID or GID is -1, though, do not change the corresponding user @@ -1917,13 +1922,15 @@ static void do_chown (int fd, char const *name, uid_t uid, gid_t gid) { -#ifndef NO_CHOWN +#ifndef __MINGW32__ +#ifndef NO_CHOWN # if HAVE_FCHOWN ignore_value (fchown (fd, uid, gid)); # else ignore_value (chown (name, uid, gid)); # endif #endif +#endif } /* ========================================================================
signature.asc
Description: PGP signature