Re: [PATCH v5] commit.c: use skip_prefix() instead of starts_with()

2014-03-21 Thread Michael Haggerty
On 03/04/2014 11:07 PM, Tanay Abhra wrote:
 In record_author_date()  parse_gpg_output(), the callers of
 starts_with() not just want to know if the string starts with the
 prefix, but also can benefit from knowing the string that follows
 the prefix.
 
 By using skip_prefix(), we can do both at the same time.
 
 Helped-by: Max Horn m...@quendi.de
 Helped-by: Junio C Hamano gits...@pobox.com
 Helped-by: Michael Haggerty mhag...@alum.mit.edu
 Signed-off-by: Tanay Abhra tanay...@gmail.com
 ---
 Patch V5 Minor revision of indentation
 Patch V4  Identation improved, removed useless comment. [1]
   Thanks to Junio C Hamano and Max Horn.
 [1] http://article.gmane.org/gmane.comp.version-control.git/243388
 
 Patch V3 Variable naming improved, removed assignments inside conditionals.
 Thanks to Junio C Hamano and Max Horn.
 
 Patch V2 Corrected email formatting ,reapplied the implementation according 
 to suggestions.
 Thanks to Michael Haggerty.
 
 This is in respect to GSoC microproject #10.
 
 In record_author_date(), extra and useless calls to strlen due to using 
 starts_with()
 were removed by using skip_prefix(). Extra variable ident_line was used as 
 buf is used in
 for loop update check.
 
 Other usages 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 starts_with() in line 1116 was left as it is, as strlen values were pre 
 computed as
 global variables, and replacing may hamper the clarity.
 The starts_with() in line 1196 was replaced as it abstracts way the 
 skip_prefix part by
 directly using the function.
 Also skip_prefix() is inline when compared to starts_with().
 
 ---
  commit.c | 14 ++
  1 file changed, 6 insertions(+), 8 deletions(-)
 
 diff --git a/commit.c b/commit.c
 index 6bf4fe0..d37675c 100644
 --- a/commit.c
 +++ b/commit.c
 @@ -548,7 +548,7 @@ define_commit_slab(author_date_slab, unsigned long);
  static void record_author_date(struct author_date_slab *author_date,
  struct commit *commit)
  {
 - const char *buf, *line_end;
 + const char *buf, *line_end, *ident_line;
   char *buffer = NULL;
   struct ident_split ident;
   char *date_end;
 @@ -566,14 +566,14 @@ 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 )) {
 + ident_line = skip_prefix(buf, author );
 + if (!ident_line) {
   if (!line_end[0] || line_end[1] == '\n')
   return; /* end of header */
   continue;
   }
   if (split_ident_line(ident,
 -  buf + strlen(author ),
 -  line_end - (buf + strlen(author ))) ||
 +  ident_line, line_end - ident_line) ||
   !ident.date_begin || !ident.date_end)
   goto fail_exit; /* malformed author line */
   break;
 @@ -1193,10 +1193,8 @@ static void parse_gpg_output(struct signature_check 
 *sigc)
   for (i = 0; i  ARRAY_SIZE(sigcheck_gpg_status); i++) {
   const char *found, *next;
  
 - if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {
 - /* At the very beginning of the buffer */
 - found = buf + strlen(sigcheck_gpg_status[i].check + 1);
 - } else {
 + found = skip_prefix(buf, sigcheck_gpg_status[i].check + 1);
 + if(!found) {

Nit: There should be a space between if and the opening parenthesis.

   found = strstr(buf, sigcheck_gpg_status[i].check);
   if (!found)
   continue;
 

Michael

-- 
Michael Haggerty
mhag...@alum.mit.edu
http://softwareswirl.blogspot.com/
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5] commit.c: use skip_prefix() instead of starts_with()

2014-03-21 Thread Michael Haggerty
On 03/21/2014 04:48 PM, Michael Haggerty wrote:
 On 03/04/2014 11:07 PM, Tanay Abhra wrote:
 [...]
 +found = skip_prefix(buf, sigcheck_gpg_status[i].check + 1);
 +if(!found) {
 
 Nit: There should be a space between if and the opening parenthesis.

Oops, I see I am too late.  Junio must have fixed this when queuing the
patch.

Michael

-- 
Michael Haggerty
mhag...@alum.mit.edu
http://softwareswirl.blogspot.com/
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2014-03-04 Thread Tanay Abhra
In record_author_date()  parse_gpg_output(), the callers of
starts_with() not just want to know if the string starts with the
prefix, but also can benefit from knowing the string that follows
the prefix.

By using skip_prefix(), we can do both at the same time.

Helped-by: Max Horn m...@quendi.de
Helped-by: Junio C Hamano gits...@pobox.com
Helped-by: Michael Haggerty mhag...@alum.mit.edu
Signed-off-by: Tanay Abhra tanay...@gmail.com
---
Patch V5 Minor revision of indentation
Patch V4  Identation improved, removed useless comment. [1]
Thanks to Junio C Hamano and Max Horn.
[1] http://article.gmane.org/gmane.comp.version-control.git/243388

Patch V3 Variable naming improved, removed assignments inside conditionals.
Thanks to Junio C Hamano and Max Horn.

Patch V2 Corrected email formatting ,reapplied the implementation according to 
suggestions.
Thanks to Michael Haggerty.

This is in respect to GSoC microproject #10.

In record_author_date(), extra and useless calls to strlen due to using 
starts_with()
were removed by using skip_prefix(). Extra variable ident_line was used as 
buf is used in
for loop update check.

Other usages 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 starts_with() in line 1116 was left as it is, as strlen values were pre 
computed as
global variables, and replacing may hamper the clarity.
The starts_with() in line 1196 was replaced as it abstracts way the skip_prefix 
part by
directly using the function.
Also skip_prefix() is inline when compared to starts_with().

---
 commit.c | 14 ++
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/commit.c b/commit.c
index 6bf4fe0..d37675c 100644
--- a/commit.c
+++ b/commit.c
@@ -548,7 +548,7 @@ define_commit_slab(author_date_slab, unsigned long);
 static void record_author_date(struct author_date_slab *author_date,
   struct commit *commit)
 {
-   const char *buf, *line_end;
+   const char *buf, *line_end, *ident_line;
char *buffer = NULL;
struct ident_split ident;
char *date_end;
@@ -566,14 +566,14 @@ 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 )) {
+   ident_line = skip_prefix(buf, author );
+   if (!ident_line) {
if (!line_end[0] || line_end[1] == '\n')
return; /* end of header */
continue;
}
if (split_ident_line(ident,
-buf + strlen(author ),
-line_end - (buf + strlen(author ))) ||
+ident_line, line_end - ident_line) ||
!ident.date_begin || !ident.date_end)
goto fail_exit; /* malformed author line */
break;
@@ -1193,10 +1193,8 @@ static void parse_gpg_output(struct signature_check 
*sigc)
for (i = 0; i  ARRAY_SIZE(sigcheck_gpg_status); i++) {
const char *found, *next;
 
-   if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {
-   /* At the very beginning of the buffer */
-   found = buf + strlen(sigcheck_gpg_status[i].check + 1);
-   } else {
+   found = skip_prefix(buf, sigcheck_gpg_status[i].check + 1);
+   if(!found) {
found = strstr(buf, sigcheck_gpg_status[i].check);
if (!found)
continue;
-- 
1.9.0

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html