Re: [GSoC][PATCH 1/6] dir: create function count_slashes

2017-06-20 Thread Stefan Beller
On Mon, Jun 19, 2017 at 2:50 PM, Prathamesh Chavan  wrote:
> Similar functions exist in apply.c and builtin/show-branch.c for
> counting the number of slashes in a string. Also in the later
> patches, we introduce a third caller for the same. Hence, we unify
> it now by cleaning the existing functions and declaring a common
> function count_slashes in dir.h and implementing it in dir.c to
> remove this code duplication.
>
> Mentored-by: Christian Couder 
> Mentored-by: Stefan Beller 
> Signed-off-by: Junio C Hamano 
> Signed-off-by: Prathamesh Chavan 
> Signed-off-by: Junio C Hamano 
> ---
> The complete build report of this is available at:
> https://travis-ci.org/pratham-pc/git/builds/
> Branch: All-patch-series
> Build #111

This patch was sent separately a couple days ago, see
the latest "What's cooking in git.git" (Jun 2017, #05; Mon, 19)
https://public-inbox.org/git/xmqqh8zbspm7@gitster.mtv.corp.google.com/

  * pc/dir-count-slashes (2017-06-12) 1 commit
(merged to 'next' on 2017-06-19 at 57351a2771)
   + dir: create function count_slashes()

   Three instances of the same helper function have been consolidated
   to one.

   Will merge to 'master'.

so if you pull Junios git and rebase on top of his master branch
this should be already included there. (In that case there is no need
for you to carry this patch. It is just cumbersome for you and might
confuse Junio, which patches exactly to apply)

Thanks,
Stefan


[GSoC][PATCH 1/6] dir: create function count_slashes

2017-06-19 Thread Prathamesh Chavan
Similar functions exist in apply.c and builtin/show-branch.c for
counting the number of slashes in a string. Also in the later
patches, we introduce a third caller for the same. Hence, we unify
it now by cleaning the existing functions and declaring a common
function count_slashes in dir.h and implementing it in dir.c to
remove this code duplication.

Mentored-by: Christian Couder 
Mentored-by: Stefan Beller 
Signed-off-by: Junio C Hamano 
Signed-off-by: Prathamesh Chavan 
Signed-off-by: Junio C Hamano 
---
The complete build report of this is available at:
https://travis-ci.org/pratham-pc/git/builds/
Branch: All-patch-series
Build #111

 apply.c   | 11 ---
 builtin/show-branch.c | 13 +++--
 dir.c |  9 +
 dir.h |  3 +++
 4 files changed, 15 insertions(+), 21 deletions(-)

diff --git a/apply.c b/apply.c
index c49cef063..121e53406 100644
--- a/apply.c
+++ b/apply.c
@@ -762,17 +762,6 @@ static char *find_name_traditional(struct apply_state 
*state,
return find_name_common(state, line, def, p_value, line + len, 0);
 }
 
-static int count_slashes(const char *cp)
-{
-   int cnt = 0;
-   char ch;
-
-   while ((ch = *cp++))
-   if (ch == '/')
-   cnt++;
-   return cnt;
-}
-
 /*
  * Given the string after "--- " or "+++ ", guess the appropriate
  * p_value for the given patch.
diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 4a6cc6f49..3636a0559 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -5,6 +5,7 @@
 #include "color.h"
 #include "argv-array.h"
 #include "parse-options.h"
+#include "dir.h"
 
 static const char* show_branch_usage[] = {
 N_("git show-branch [-a | --all] [-r | --remotes] [--topo-order | 
--date-order]\n"
@@ -421,14 +422,6 @@ static int append_tag_ref(const char *refname, const 
struct object_id *oid,
 
 static const char *match_ref_pattern = NULL;
 static int match_ref_slash = 0;
-static int count_slash(const char *s)
-{
-   int cnt = 0;
-   while (*s)
-   if (*s++ == '/')
-   cnt++;
-   return cnt;
-}
 
 static int append_matching_ref(const char *refname, const struct object_id 
*oid,
   int flag, void *cb_data)
@@ -438,7 +431,7 @@ static int append_matching_ref(const char *refname, const 
struct object_id *oid,
 * refs/tags/v0.99.9a and friends.
 */
const char *tail;
-   int slash = count_slash(refname);
+   int slash = count_slashes(refname);
for (tail = refname; *tail && match_ref_slash < slash; )
if (*tail++ == '/')
slash--;
@@ -529,7 +522,7 @@ static void append_one_rev(const char *av)
int saved_matches = ref_name_cnt;
 
match_ref_pattern = av;
-   match_ref_slash = count_slash(av);
+   match_ref_slash = count_slashes(av);
for_each_ref(append_matching_ref, NULL);
if (saved_matches == ref_name_cnt &&
ref_name_cnt < MAX_REVS)
diff --git a/dir.c b/dir.c
index 9efcf1eab..4a953c16a 100644
--- a/dir.c
+++ b/dir.c
@@ -52,6 +52,15 @@ static enum path_treatment read_directory_recursive(struct 
dir_struct *dir,
 static int get_dtype(struct dirent *de, struct index_state *istate,
 const char *path, int len);
 
+int count_slashes(const char *s)
+{
+   int cnt = 0;
+   while (*s)
+   if (*s++ == '/')
+   cnt++;
+   return cnt;
+}
+
 int fspathcmp(const char *a, const char *b)
 {
return ignore_case ? strcasecmp(a, b) : strcmp(a, b);
diff --git a/dir.h b/dir.h
index a89c13e27..e3717055d 100644
--- a/dir.h
+++ b/dir.h
@@ -197,6 +197,9 @@ struct dir_struct {
unsigned unmanaged_exclude_files;
 };
 
+/*Count the number of slashes for string s*/
+extern int count_slashes(const char *s);
+
 /*
  * The ordering of these constants is significant, with
  * higher-numbered match types signifying "closer" (i.e. more
-- 
2.13.0