# [PATCH] git-compat-util.h:rewrite skip_prefix() as loop

4 messages from 2014-03-01 to 2014-03-02. Participants: Siddharth Goel, Eric Sunshine.
Thread: https://gitlist.dev/t/36009

## Siddharth Goel, 2014-03-01 13:32

Subject: [PATCH] git-compat-util.h:rewrite skip_prefix() as loop
Message-ID: <1393680724-19983-1-git-send-email-siddharth98391@gmail.com>
URL: https://gitlist.dev/e/1393680724-19983-1-git-send-email-siddharth98391%40gmail.com

```
Rewrote skip_prefix() function so that prefix is scanned once.

Signed-off-by: Siddharth Goel <siddharth98391@gmail.com>
---
 git-compat-util.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/git-compat-util.h b/git-compat-util.h
index 614a5e9..550dce3 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -357,8 +357,11 @@ extern int suffixcmp(const char *str, const char *suffix);
 
 static inline const char *skip_prefix(const char *str, const char *prefix)
 {
-	size_t len = strlen(prefix);
-	return strncmp(str, prefix, len) ? NULL : str + len;
+	while (*prefix != '\0' && *str == *prefix) {
+		str++;
+		prefix++;
+	}
+	return (*prefix == '\0' ? str : NULL);
 }
 
 #if defined(NO_MMAP) || defined(USE_WIN32_MMAP)
-- 
1.9.0.138.g2de3478.dirty

```

## Siddharth Goel, 2014-03-02 03:22

Subject: Re: [PATCH] git-compat-util.h:rewrite skip_prefix() as loop
Message-ID: <CANQLRip4zpOuF=GUsuhsQtQ4z5Z9VtCHo8yBb6vL3npuMHHgZA@mail.gmail.com>
URL: https://gitlist.dev/e/CANQLRip4zpOuF%3DGUsuhsQtQ4z5Z9VtCHo8yBb6vL3npuMHHgZA%40mail.gmail.com
In-Reply-To: <1393680724-19983-1-git-send-email-siddharth98391@gmail.com>

```
To my surprise, git format-patch had removed the Git Notes that I had
put to my commit (regarding GSoC). I have written this patch as a part
of the GSoC 2014 MicroProject for Git. Going through the mail-chain I
observed that many students have attempted this Microproject. So is it
ok if I stick to this Microproject or should I go with another one?

On Sat, Mar 1, 2014 at 9:32 PM, Siddharth Goel <siddharth98391@gmail.com> wrote:
> Rewrote skip_prefix() function so that prefix is scanned once.
>
> Signed-off-by: Siddharth Goel <siddharth98391@gmail.com>
> ---
>  git-compat-util.h | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/git-compat-util.h b/git-compat-util.h
> index 614a5e9..550dce3 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -357,8 +357,11 @@ extern int suffixcmp(const char *str, const char *suffix);
>
>  static inline const char *skip_prefix(const char *str, const char *prefix)
>  {
> -       size_t len = strlen(prefix);
> -       return strncmp(str, prefix, len) ? NULL : str + len;
> +       while (*prefix != '\0' && *str == *prefix) {
> +               str++;
> +               prefix++;
> +       }
> +       return (*prefix == '\0' ? str : NULL);
>  }
>
>  #if defined(NO_MMAP) || defined(USE_WIN32_MMAP)
> --
> 1.9.0.138.g2de3478.dirty
>

```

## Eric Sunshine, 2014-03-02 05:00

Subject: Re: [PATCH] git-compat-util.h:rewrite skip_prefix() as loop
Message-ID: <CAPig+cRDHb9usJW2zC20zXXM_9KxuEQ+=dkFmghp9JiVPcL1_w@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcRDHb9usJW2zC20zXXM_9KxuEQ%2B%3DdkFmghp9JiVPcL1_w%40mail.gmail.com
In-Reply-To: <1393680724-19983-1-git-send-email-siddharth98391@gmail.com>

```
Thanks for the submission. Minor comments below to give you a taste of
what it's like to contribute to this project...

On Sat, Mar 1, 2014 at 8:32 AM, Siddharth Goel <siddharth98391@gmail.com> wrote:
> Rewrote skip_prefix() function so that prefix is scanned once.

Good description. In this project, use imperative tone, so say
"Rewrite skip_prefix()..." as you did in the subject. In fact, this
description is short enough and conveys sufficient information that it
could just be placed in the subject as the entire commit message.

    Subject: skip_prefix: rewrite so that prefix is scanned once

> Signed-off-by: Siddharth Goel <siddharth98391@gmail.com>
> ---
>  git-compat-util.h | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/git-compat-util.h b/git-compat-util.h
> index 614a5e9..550dce3 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -357,8 +357,11 @@ extern int suffixcmp(const char *str, const char *suffix);
>
>  static inline const char *skip_prefix(const char *str, const char *prefix)
>  {
> -       size_t len = strlen(prefix);
> -       return strncmp(str, prefix, len) ? NULL : str + len;
> +       while (*prefix != '\0' && *str == *prefix) {
> +               str++;
> +               prefix++;
> +       }
> +       return (*prefix == '\0' ? str : NULL);
>  }
>
>  #if defined(NO_MMAP) || defined(USE_WIN32_MMAP)
> --
> 1.9.0.138.g2de3478.dirty

```

## Eric Sunshine, 2014-03-02 05:02

Subject: Re: [PATCH] git-compat-util.h:rewrite skip_prefix() as loop
Message-ID: <CAPig+cRkRZkjTB4WpQTKxfAofC7iqn8HZvU03egQhMe0NJktpQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcRkRZkjTB4WpQTKxfAofC7iqn8HZvU03egQhMe0NJktpQ%40mail.gmail.com
In-Reply-To: <CANQLRip4zpOuF=GUsuhsQtQ4z5Z9VtCHo8yBb6vL3npuMHHgZA@mail.gmail.com>

```
On Sat, Mar 1, 2014 at 10:22 PM, Siddharth Goel
<siddharth98391@gmail.com> wrote:
> To my surprise, git format-patch had removed the Git Notes that I had
> put to my commit (regarding GSoC). I have written this patch as a part
> of the GSoC 2014 MicroProject for Git.

You probably wanted to use the --notes option with format-patch.

> Going through the mail-chain I
> observed that many students have attempted this Microproject. So is it
> ok if I stick to this Microproject or should I go with another one?

That's okay. The purpose of the miniprojects is for you to get a taste
of what it's like to contribute to this project and to understand what
will be expected of you as a GSoC student; and to give the GSoC
mentors a chance to judge your abilities and observe how you interact
with reviewers.

```
