From: Shawn O. Pearce Date: Fri, 04 Dec 2009 17:55:45 GMT Subject: Re: [RFC PATCH v2 1/8] Pass unknown protocols to external protocol handlers Message-ID: <20091204175545.GC1483@spearce.org> In-Reply-To: <1259942168-24869-4-git-send-email-ilari.liusvaara@elisanet.fi> Ilari Liusvaara wrote: > Change URL handling to allow external protocol handlers to implement > new protocols without the '::' syntax if helper name does not conflict > with any built-in protocol. > > foo:// now invokes git-remote-foo with foo:// URL. ... Uh, great, but... > @@ -30,6 +50,7 @@ static struct child_process *get_helper(struct transport *transport) > const char **refspecs = NULL; > int refspec_nr = 0; > int refspec_alloc = 0; > + int duped; > > if (data->helper) > return data->helper; ... > + /* Open the output as FILE* so strbuf_getline() can be used. > + Do this with duped fd because fclose() will close the fd, > + and stuff like disowning will require the fd to remain. > + > + Set the stream to unbuffered because some reads are critical > + in sense that any overreading will cause deadlocks. > + */ > + if((duped = dup(helper->out)) < 0) > + die_errno("Can't dup helper output fd"); > + data->out = xfdopen(duped, "r"); > + setvbuf(data->out, NULL, _IONBF, 0); > + This is an entirely unrelated change. Please split it into its own commit so its easier to review, test, blah blah blah. -- Shawn.