From: Erik Faye-Lund <kusmabite@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, msysgit@googlegroups.com, j6t@kdbg.org,
avarab@gmail.com, sunshine@sunshineco.com
Subject: Re: [PATCH v4 15/15] daemon: opt-out on features that require posix
Date: Thu, 14 Oct 2010 13:02:10 +0200 [thread overview]
Message-ID: <AANLkTi=N+4QokkiGmN+S17=7=QsgKWUXrsF0vZ_6Zt2H@mail.gmail.com> (raw)
In-Reply-To: <7vhbgphf25.fsf@alter.siamese.dyndns.org>
On Thu, Oct 14, 2010 at 1:02 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Erik Faye-Lund <kusmabite@gmail.com> writes:
>
>> Windows does not supply the POSIX-functions fork(), setuuid(), setgid(),
>> setsid() and initgroups(). Disable support for --user, --group and
>> --detach if the NO_POSIX_GOODIES flag is set.
>>
>> MinGW doesn't have prototypes and headers for inet_ntop and inet_pton,
>> so include our implementation instead. MSVC does have, so avoid doing
>> so there.
>>
>> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
>> ---
>> diff --git a/daemon.c b/daemon.c
>> index 9b97b58..aa580f6 100644
>> --- a/daemon.c
>> +++ b/daemon.c
>> @@ -965,7 +969,12 @@ static void store_pid(const char *path)
>> die_errno("failed to write pid file '%s'", path);
>> }
>>
>> -static int serve(struct string_list *listen_addr, int listen_port, struct passwd *pass, gid_t gid)
>> +#ifndef NO_POSIX_GOODIES
>> +static struct passwd *pass;
>> +static gid_t gid;
>> +#endif
>> +
>> +static int serve(struct string_list *listen_addr, int listen_port)
>> {
>> struct socketlist socklist = { NULL, 0, 0 };
>>
>
> This is ugly. Why did you need to make the arguments file-scope static?
>
To avoid having different signatures for the serve-function dependent
on NO_POSIX_GOODIES.
Do you have any other suggestions on how to do this? Perhaps I should
just move the logic in serve() to the end of main()? It's the only
call-site for the function, and would remove the need for a function
prototype all-together...
>> @@ -974,10 +983,12 @@ static int serve(struct string_list *listen_addr, int listen_port, struct passwd
>> die("unable to allocate any listen sockets on port %u",
>> listen_port);
>>
>> +#ifndef NO_POSIX_GOODIES
>> if (pass && gid &&
>> (initgroups(pass->pw_name, gid) || setgid (gid) ||
>> setuid(pass->pw_uid)))
>> die("cannot drop privileges");
>> +#endif
>
> It would be cleaner to make a helper (e.g. "drop-privileges") that is a
> no-op on NO_POSIX_GOODIES platform, and call that without #ifdef here.
>
Sure, makes sense.
> The same aversion to too many #ifdef's apply to the rest of the patch.
>
I can remove some of them, like keeping the variables in main()
around, even though they'll be constant. That might cause some
compile-time warnings, though.
next prev parent reply other threads:[~2010-10-14 11:02 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-11 21:50 [PATCH v4 00/15] daemon-win32 Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 01/15] mingw: add network-wrappers for daemon Erik Faye-Lund
2010-10-11 22:07 ` Jonathan Nieder
2010-10-11 21:50 ` [PATCH v4 02/15] mingw: implement syslog Erik Faye-Lund
2010-10-11 22:11 ` Jonathan Nieder
2010-10-11 22:28 ` Erik Faye-Lund
2010-10-11 22:37 ` Jonathan Nieder
2010-10-13 12:36 ` Erik Faye-Lund
2010-10-13 19:23 ` Eric Sunshine
2010-10-13 21:17 ` [msysGit] " Pat Thoyts
2010-10-14 0:47 ` Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 03/15] compat: add inet_pton and inet_ntop prototypes Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 04/15] inet_ntop: fix a couple of old-style decls Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 05/15] mingw: use real pid Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 06/15] mingw: support waitpid with pid > 0 and WNOHANG Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 07/15] mingw: add kill emulation Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 08/15] daemon: use run-command api for async serving Erik Faye-Lund
2010-10-13 22:47 ` Junio C Hamano
2010-10-14 10:18 ` Erik Faye-Lund
2010-10-17 4:43 ` Junio C Hamano
2010-10-11 21:50 ` [PATCH v4 09/15] daemon: use full buffered mode for stderr Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 10/15] Improve the mingw getaddrinfo stub to handle more use cases Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 11/15] daemon: report connection from root-process Erik Faye-Lund
2010-10-13 22:55 ` Junio C Hamano
2010-10-14 10:50 ` Erik Faye-Lund
2010-10-17 4:43 ` Junio C Hamano
2010-10-17 10:18 ` Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 12/15] mingw: import poll-emulation from gnulib Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 13/15] mingw: use " Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 14/15] daemon: use socklen_t Erik Faye-Lund
2010-10-11 21:50 ` [PATCH v4 15/15] daemon: opt-out on features that require posix Erik Faye-Lund
2010-10-13 23:02 ` Junio C Hamano
2010-10-14 11:02 ` Erik Faye-Lund [this message]
2010-10-15 21:16 ` Junio C Hamano
2010-10-18 12:05 ` Erik Faye-Lund
2010-10-18 16:31 ` Jonathan Nieder
2010-10-18 18:13 ` Andreas Schwab
2010-10-18 18:42 ` empty structs Jonathan Nieder
2010-10-21 21:16 ` [PATCH v4 15/15] daemon: opt-out on features that require posix Erik Faye-Lund
2010-10-21 22:00 ` Erik Faye-Lund
2010-10-21 22:03 ` Jonathan Nieder
2010-10-21 22:04 ` Erik Faye-Lund
2010-10-21 23:17 ` Junio C Hamano
2010-10-18 19:26 ` Junio C Hamano
2010-10-21 20:37 ` Erik Faye-Lund
2010-10-21 20:39 ` Jonathan Nieder
2010-10-21 20:54 ` Erik Faye-Lund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='AANLkTi=N+4QokkiGmN+S17=7=QsgKWUXrsF0vZ_6Zt2H@mail.gmail.com' \
--to=kusmabite@gmail.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=msysgit@googlegroups.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).