On Fri, Nov 27, 2009 at 9:14 PM, Johannes Sixt <j6t@xxxxxxxx> wrote: > On Freitag, 27. November 2009, Erik Faye-Lund wrote: >> What do you find confusing about it? The idea is to use a provided >> bi-directional fd instead of a pipe if async->out is non-zero. The >> currently defined rules for async is that async->out must be zero >> (since the structure should be zero-initialized). > > It is just the code structure that is confusing. It should be > > if (async->out) { > /* fd was provided */ > do all that is needed in this case > } else { > /* fd was requested */ > do all for this other case > } > /* nothing to do anymore here */ > > (Of course, this should only replace the part that is cited above, not the > whole function.) > OK. I've reimplemented the change for the next round, taking this into account. >> Indeed it does. Do we want to extend it to support a set of >> unidirectional channels instead? > > Yes, I think so. We could pass a regular int fd[2] array around with the clear > definition that both can be closed independently, i.e. one must be a dup() of > the other. struct async would also have such an array. > OK. This has been included for the next round. Instead of an array, I've tried to be consistent with start_command, and used two variables, "in" and "out". > Speaking of dup(): The underlying function is DuplicateHandle(), and its > documentation says: > > "You should not use DuplicateHandle to duplicate handles to the following > objects: ... o Sockets. ... use WSADuplicateSocket." > > But then the docs of WSADuplicateSocket() talk only about duplicating a socket > to a separate process. Perhaps DuplicateHandle() of a socket within the same > process Just Works? > It seems the rest of the Windows-world depends on DuplicateHandle() working for sockets, so I'm not too worried. I can't find anything documentation(1) for _dup, and I don't think we have our own dup()-implementation. (1) http://msdn.microsoft.com/en-us/library/8syseb29(VS.71).aspx -- Erik "kusma" Faye-Lund -- 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