[PATCH v2 15/15] render: adapt for providing extra filter args for plain

Andy Green andy at warmcat.com
Tue Jun 19 05:34:16 CEST 2018



On 06/19/2018 03:25 AM, John Keeping wrote:
> On Mon, Jun 18, 2018 at 10:58:31AM +0800, Andy Green wrote:
>> This changes the render filter exec part to provide a second
>> and third argument, which are used by md2html to fix up the url
>> path for "plain" for the repo, eg, "/cgit/plain/" and
>> "?h=mybranch", as required by the modifications to md2html in
>> the previous patches.

>>   static void render_buffer(struct cgit_filter *render, const char *name,
>> -		char *buf, unsigned long size)
>> +			  char *buf, unsigned long size)
>>   {
>>   	char *filter_arg = xstrdup(name);
>> +	char *repo_url = cgit_repourl(ctx.repo->url);
>> +	struct strbuf sb_plain = STRBUF_INIT, sb_postfix = STRBUF_INIT;
>> +
>> +	strbuf_addf(&sb_plain, "%splain/", repo_url);
> 
> This doesn't always work (if we don't have cfg.virtual_root set it's
> wrong).

I see, thanks.

> The logic in ui-shared.c::reporevlink() does the right thing, and it
> might be possible to extract a helper function but we may just have to
> replicate it since that version generates the URL as an HTML attribute
> value.

OK... I studied it... first what's in repolink has some duplication of 
code that I added a patch to clean out.

In a second patch I added a helper cgit_repo_create_url() that does the 
core function without urlencode into a pair of strbufs, one for before 
any ? and one including the ? and anything after.  They can point to the 
same strbuf if the caller doesn't care.

-Andy


More information about the CGit mailing list