mirror of
https://git.proxmox.com/git/libgit2
synced 2025-10-18 17:13:37 +00:00
Add git_path_icmp to case-insensitive path cmp
This adds git_path_icmp to complement git_path_cmp.
This commit is contained in:
parent
851ad65081
commit
23594c1dae
24
src/path.c
24
src/path.c
@ -701,6 +701,30 @@ int git_path_cmp(
|
||||
return (c1 < c2) ? -1 : (c1 > c2) ? 1 : 0;
|
||||
}
|
||||
|
||||
int git_path_icmp(
|
||||
const char *name1, size_t len1, int isdir1,
|
||||
const char *name2, size_t len2, int isdir2)
|
||||
{
|
||||
unsigned char c1, c2;
|
||||
size_t len = len1 < len2 ? len1 : len2;
|
||||
int cmp;
|
||||
|
||||
cmp = strncasecmp(name1, name2, len);
|
||||
if (cmp)
|
||||
return cmp;
|
||||
|
||||
c1 = name1[len];
|
||||
c2 = name2[len];
|
||||
|
||||
if (c1 == '\0' && isdir1)
|
||||
c1 = '/';
|
||||
|
||||
if (c2 == '\0' && isdir2)
|
||||
c2 = '/';
|
||||
|
||||
return (c1 < c2) ? -1 : (c1 > c2) ? 1 : 0;
|
||||
}
|
||||
|
||||
int git_path_direach(
|
||||
git_buf *path,
|
||||
int (*fn)(void *, git_buf *),
|
||||
|
@ -261,12 +261,17 @@ extern int git_path_direach(
|
||||
void *state);
|
||||
|
||||
/**
|
||||
* Sort function to order two paths.
|
||||
* Sort function to order two paths
|
||||
*/
|
||||
extern int git_path_cmp(
|
||||
const char *name1, size_t len1, int isdir1,
|
||||
const char *name2, size_t len2, int isdir2);
|
||||
|
||||
/** Path sort function that is case insensitive */
|
||||
extern int git_path_icmp(
|
||||
const char *name1, size_t len1, int isdir1,
|
||||
const char *name2, size_t len2, int isdir2);
|
||||
|
||||
/**
|
||||
* Invoke callback up path directory by directory until the ceiling is
|
||||
* reached (inclusive of a final call at the root_path).
|
||||
|
Loading…
Reference in New Issue
Block a user