threads / patch / 36009

patchgit-compat-util.h:rewrite skip_prefix() as loop

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

## tl;dr

4 messages between Mar 1, 2014 and Mar 2, 2014. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Siddharth Goel· Mar 1, 2014, 13:32 UTC · lore
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(-)
Show changes to git-compat-util.h +5 −2
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· Mar 2, 2014, 03:22 UTC · re: Siddharth Goel · lore

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

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:
Show 28 quoted lines
> 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· Mar 2, 2014, 05:02 UTC · re: Siddharth Goel · lore

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

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.

Eric Sunshine· Mar 2, 2014, 05:00 UTC · re: Siddharth Goel · lore

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

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
Show 25 quoted lines
> 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

← back to recent threads