# [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()

4 messages from 2014-03-01 to 2014-03-03. Participants: Tanay Abhra, Michael Haggerty, Junio C Hamano, Eric Sunshine.
Thread: https://gitlist.dev/t/36012

## Tanay Abhra, 2014-03-01 19:48

Subject: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()
Message-ID: <1393703299-7977-1-git-send-email-tanayabh@gmail.com>
URL: https://gitlist.dev/e/1393703299-7977-1-git-send-email-tanayabh%40gmail.com

```

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
---
 commit.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/commit.c b/commit.c
index 6bf4fe0..c954ecb 100644
--- a/commit.c
+++ b/commit.c
@@ -566,7 +566,7 @@ static void record_author_date(struct author_date_slab *author_date,
 	     buf;
 	     buf = line_end + 1) {
 		line_end = strchrnul(buf, '\n');
-		if (!starts_with(buf, "author ")) {
+		if (!skip_prefix(buf, "author ")) {
 			if (!line_end[0] || line_end[1] == '\n')
 				return; /* end of header */
 			continue;
-- 
1.7.9.5

Hello,

This is my patch for the GSoC microproject #10:

Rewrite commit.c:record_author_date() to use skip_prefix(). 
Are there other places in this file where skip_prefix() would be more 
readable than starts_with()?

Since skip_prefix() and starts_with() implement the same functionality with different
return values, they can be interchanged easily.

Other usage of starts_with() in the same file can be found with

$ grep -n starts_with commit.c

1116:		else if (starts_with(line, gpg_sig_header) &&
1196:		if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {

I have a query,should I tackle a bug from the mailing lists or research about the proposal 
and present a rough draft?

Cheers,
Tanay Abhra.

```

## Michael Haggerty, 2014-03-03 08:58

Subject: Re: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()
Message-ID: <53144450.3080006@alum.mit.edu>
URL: https://gitlist.dev/e/53144450.3080006%40alum.mit.edu
In-Reply-To: <1393703299-7977-1-git-send-email-tanayabh@gmail.com>

```
The format of this email is wrong.  The non-commit-message notes should
come between the "---" line (<- note, there are three minus signs here)
and the patch itself.

On 03/01/2014 08:48 PM, Tanay Abhra wrote:
> Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
> ---
>  commit.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/commit.c b/commit.c
> index 6bf4fe0..c954ecb 100644
> --- a/commit.c
> +++ b/commit.c
> @@ -566,7 +566,7 @@ static void record_author_date(struct author_date_slab *author_date,
>  	     buf;
>  	     buf = line_end + 1) {
>  		line_end = strchrnul(buf, '\n');
> -		if (!starts_with(buf, "author ")) {
> +		if (!skip_prefix(buf, "author ")) {

If this is the only change, there is not much point, is there?  How does
this help?  Perhaps there is some way to take advantage of the
difference between starts_with() and skip_prefix() to simplify the rest
of the function?

>  			if (!line_end[0] || line_end[1] == '\n')
>  				return; /* end of header */
>  			continue;
> -- 
> 1.7.9.5
> 
> Hello,
> 
> This is my patch for the GSoC microproject #10:
> 
> Rewrite commit.c:record_author_date() to use skip_prefix(). 
> Are there other places in this file where skip_prefix() would be more 
> readable than starts_with()?
> 
> Since skip_prefix() and starts_with() implement the same functionality with different
> return values, they can be interchanged easily.
> 
> Other usage of starts_with() in the same file can be found with
> 
> $ grep -n starts_with commit.c
> 
> 1116:		else if (starts_with(line, gpg_sig_header) &&
> 1196:		if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {

The rhetorical question that was part of this microproject was meant to
inspire you to actually *FIX* the other spots, at least if the change
makes sense.

> I have a query,should I tackle a bug from the mailing lists or research about the proposal 
> and present a rough draft?

My suggestion is that you follow up on this microproject until it is
perfect before worrying too much about the next step.

Michael

-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/

```

## Junio C Hamano, 2014-03-03 18:40

Subject: Re: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()
Message-ID: <xmqqmwh7qg6v.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqqmwh7qg6v.fsf%40gitster.dls.corp.google.com
In-Reply-To: <53144450.3080006@alum.mit.edu>

```
Michael Haggerty <mhagger@alum.mit.edu> writes:

>> -		if (!starts_with(buf, "author ")) {
>> +		if (!skip_prefix(buf, "author ")) {
>
> If this is the only change, there is not much point, is there?  How does
> this help?  Perhaps there is some way to take advantage of the
> difference between starts_with() and skip_prefix() to simplify the rest
> of the function?

I admit I lost track, but wasn't there a discussion to use
starts_with/ends_with when appropriate (namely, the caller is
absolutely not interested in what the remainder of the string is
after skipping the prefix), moving away from skip_prefix()?  Isn't
this change going in the wrong direction?

```

## Eric Sunshine, 2014-03-03 19:52

Subject: Re: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()
Message-ID: <CAPig+cQrnKRDo88qq=3Ujjjwv0rn4H+eovAeAnmODUDPr00m8g@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcQrnKRDo88qq%3D3Ujjjwv0rn4H%2BeovAeAnmODUDPr00m8g%40mail.gmail.com
In-Reply-To: <xmqqmwh7qg6v.fsf@gitster.dls.corp.google.com>

```
On Mon, Mar 3, 2014 at 1:40 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Michael Haggerty <mhagger@alum.mit.edu> writes:
>
>>> -            if (!starts_with(buf, "author ")) {
>>> +            if (!skip_prefix(buf, "author ")) {
>>
>> If this is the only change, there is not much point, is there?  How does
>> this help?  Perhaps there is some way to take advantage of the
>> difference between starts_with() and skip_prefix() to simplify the rest
>> of the function?
>
> I admit I lost track, but wasn't there a discussion to use
> starts_with/ends_with when appropriate (namely, the caller is
> absolutely not interested in what the remainder of the string is
> after skipping the prefix), moving away from skip_prefix()?  Isn't
> this change going in the wrong direction?

Yes, it would be going in the wrong direction if this was all there
was to it, but the particular GSoC microproject [1] which inspired
this (incomplete) submission expects that the potential student will
dig deeper and discover how skip_prefix() can be used to achieve
greater simplification in record_author_date() and in other places in
the same file.

[1]: https://github.com/git/git.github.io/blob/master/SoC-2014-Microprojects.md

```
