Re: [PATCH] compat/mingw: stubs for getpgid() and tcgetpgrp()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Junio,

On 2015-04-15 20:48, Junio C Hamano wrote:
> Johannes Sixt <j6t@xxxxxxxx> writes:
> 
>> Windows does not have process groups. It is, therefore, the simplest
>> to pretend that each process is in its own process group.
>>
>> While here, move the getppid() stub from its old location (between
>> two sync related functions) next to the two new functions.
>>
>> Signed-off-by: Johannes Sixt <j6t@xxxxxxxx>
>> ---
> 
> Thanks for a quick update.
> 
> The patch should do for now, but I suspect that it may give us a
> better abstraction to make the "is_foreground_fd(int fd)" or even
> "is_foreground(void)" the public API that would be implemented as
> 
> 	int we_are_in_the_foreground(void)
>         {
> 		return getpgid(0) == tcgetpgrp(fileno(stderr));
> 	}
> 
> in POSIX and Windows can implement entirely differently.

I really like it. We already require a couple of workarounds to be able to use `mintty` (which is a replacement terminal emulator that is more flexible than the default Windows terminal window, but it comes at the price that most Win32 programs think they are not running interactively inside a `mintty` session). I would really like to avoid having to finagle some really ugly code into `getpgid()` to make that test work.

In general, I find it rewarding not only from a portability point of view, but *especially* from a readability one if the code contains functions that are named semantically, i.e. they describe *why* they are called, not *how* they answer the question.

In this case, I would prefer the `is_foreground_fd(int fd)` one, but I am sure I can make the other signature work for us, too.

Ciao,
Dscho
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]