Skip to content

Commit

Permalink
[PATCH] diffcore-pickaxe: switch to "counting" behaviour.
Browse files Browse the repository at this point in the history
Instead of finding old/new pair that one side has and the
other side does not have the specified string, find old/new pair
that contains the specified string as a substring different
number of times.  This would still not catch a case where you
introduce two static variable declarations and remove two static
function definitions from a file with -S"static", but would make
it behave a bit more intuitively.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Junio C Hamano authored and Linus Torvalds committed Jul 24, 2005
1 parent 399144f commit 2002eed
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions diffcore-pickaxe.c
Expand Up @@ -5,19 +5,30 @@
#include "diff.h"
#include "diffcore.h"

static int contains(struct diff_filespec *one,
const char *needle, unsigned long len)
static unsigned int contains(struct diff_filespec *one,
const char *needle, unsigned long len)
{
unsigned int cnt;
unsigned long offset, sz;
const char *data;
if (diff_populate_filespec(one, 0))
return 0;

sz = one->size;
data = one->data;
for (offset = 0; offset + len <= sz; offset++)
if (!strncmp(needle, data + offset, len))
return 1;
return 0;
cnt = 0;

/* Yes, I've heard of strstr(), but the thing is *data may
* not be NUL terminated. Sue me.
*/
for (offset = 0; offset + len <= sz; offset++) {
/* we count non-overlapping occurrences of needle */
if (!memcmp(needle, data + offset, len)) {
offset += len - 1;
cnt++;
}
}
return cnt;
}

void diffcore_pickaxe(const char *needle, int opts)
Expand Down

0 comments on commit 2002eed

Please sign in to comment.