Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
f1d01851
Commit
f1d01851
authored
Jun 16, 2011
by
Vicent Marti
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oid: Uniformize ncmp methods
Drop redundant methods. The ncmp method is now public
parent
fa48608e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
38 additions
and
50 deletions
+38
-50
include/git2/oid.h
+11
-4
src/odb_loose.c
+7
-3
src/odb_pack.c
+3
-3
src/oid.c
+17
-23
src/oid.h
+0
-17
No files found.
include/git2/oid.h
View file @
f1d01851
...
...
@@ -55,6 +55,7 @@ typedef struct {
/**
* Parse a hex formatted object id into a git_oid.
*
* @param out oid structure the result is written into.
* @param str input hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
...
...
@@ -65,6 +66,7 @@ GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str);
/**
* Copy an already raw oid into a git_oid structure.
*
* @param out oid structure the result is written into.
* @param raw the raw input bytes to be copied.
*/
...
...
@@ -72,6 +74,7 @@ GIT_EXTERN(void) git_oid_fromraw(git_oid *out, const unsigned char *raw);
/**
* Format a git_oid into a hex string.
*
* @param str output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
* needed for an oid encoded in hex (40 bytes). Only the
...
...
@@ -83,7 +86,7 @@ GIT_EXTERN(void) git_oid_fmt(char *str, const git_oid *oid);
/**
* Format a git_oid into a loose-object path string.
*
<p>
*
* The resulting string is "aa/...", where "aa" is the first two
* hex digitis of the oid and "..." is the remaining 38 digits.
*
...
...
@@ -98,6 +101,7 @@ GIT_EXTERN(void) git_oid_pathfmt(char *str, const git_oid *oid);
/**
* Format a git_oid into a newly allocated c-string.
*
* @param oid the oid structure to format
* @return the c-string; NULL if memory is exhausted. Caller must
* deallocate the string with free().
...
...
@@ -106,7 +110,7 @@ GIT_EXTERN(char *) git_oid_allocfmt(const git_oid *oid);
/**
* Format a git_oid into a buffer as a hex format c-string.
*
<p>
*
* If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting
* oid c-string will be truncated to n-1 characters. If there are
* any input parameter errors (out == NULL, n == 0, oid == NULL),
...
...
@@ -123,6 +127,7 @@ GIT_EXTERN(char *) git_oid_to_string(char *out, size_t n, const git_oid *oid);
/**
* Copy an oid from one structure to another.
*
* @param out oid structure the result is written into.
* @param src oid structure to copy from.
*/
...
...
@@ -130,6 +135,7 @@ GIT_EXTERN(void) git_oid_cpy(git_oid *out, const git_oid *src);
/**
* Compare two oid structures.
*
* @param a first oid structure.
* @param b second oid structure.
* @return <0, 0, >0 if a < b, a == b, a > b.
...
...
@@ -139,12 +145,13 @@ GIT_EXTERN(int) git_oid_cmp(const git_oid *a, const git_oid *b);
/**
* Compare the first 'len' hexadecimal characters (packets of 4 bits)
* of two oid structures.
*
@param len the number of hex chars to compare
*
* @param a first oid structure.
* @param b second oid structure.
* @param len the number of hex chars to compare
* @return 0 in case of a match
*/
GIT_EXTERN
(
int
)
git_oid_ncmp
(
unsigned
int
len
,
git_oid
*
a
,
git_oid
*
b
);
GIT_EXTERN
(
int
)
git_oid_ncmp
(
const
git_oid
*
a
,
const
git_oid
*
b
,
unsigned
int
len
);
/**
* OID Shortener object
...
...
src/odb_loose.c
View file @
f1d01851
...
...
@@ -26,10 +26,10 @@
#include "common.h"
#include "git2/zlib.h"
#include "git2/object.h"
#include "git2/oid.h"
#include "fileops.h"
#include "hash.h"
#include "odb.h"
#include "oid.h"
#include "delta-apply.h"
#include "filebuf.h"
...
...
@@ -491,8 +491,12 @@ int fn_locate_object_short_oid(void *state, char *pathbuf) {
}
if
(
!
gitfo_exists
(
pathbuf
)
&&
gitfo_isdir
(
pathbuf
))
{
/* We are already in the directory matching the 2 first hex characters */
if
(
!
git_oid_ncmp_hex
(
sstate
->
short_oid_len
-
2
,
sstate
->
short_oid
+
2
,
(
unsigned
char
*
)
pathbuf
+
sstate
->
dir_len
))
{
/* We are already in the directory matching the 2 first hex characters,
* compare the first ncmp characters of the oids */
if
(
!
memcmp
(
sstate
->
short_oid
+
2
,
(
unsigned
char
*
)
pathbuf
+
sstate
->
dir_len
,
sstate
->
short_oid_len
-
2
))
{
if
(
!
sstate
->
found
)
{
sstate
->
res_oid
[
0
]
=
sstate
->
short_oid
[
0
];
sstate
->
res_oid
[
1
]
=
sstate
->
short_oid
[
1
];
...
...
src/odb_pack.c
View file @
f1d01851
...
...
@@ -26,10 +26,10 @@
#include "common.h"
#include "git2/zlib.h"
#include "git2/repository.h"
#include "git2/oid.h"
#include "fileops.h"
#include "hash.h"
#include "odb.h"
#include "oid.h"
#include "delta-apply.h"
#include "sha1_lookup.h"
...
...
@@ -1011,7 +1011,7 @@ static int pack_entry_find_offset(
if
(
pos
<
(
int
)
p
->
num_objects
)
{
current
=
index
+
pos
*
stride
;
if
(
!
git_oid_ncmp
_raw
(
len
,
short_oid
->
id
,
current
))
{
if
(
!
git_oid_ncmp
(
short_oid
,
(
const
git_oid
*
)
current
,
len
))
{
found
=
1
;
}
}
...
...
@@ -1021,7 +1021,7 @@ static int pack_entry_find_offset(
/* Check for ambiguousity */
const
unsigned
char
*
next
=
current
+
stride
;
if
(
!
git_oid_ncmp
_raw
(
len
,
short_oid
->
id
,
next
))
{
if
(
!
git_oid_ncmp
(
short_oid
,
(
const
git_oid
*
)
next
,
len
))
{
found
=
2
;
}
}
...
...
src/oid.c
View file @
f1d01851
...
...
@@ -172,30 +172,24 @@ int git_oid_cmp(const git_oid *a, const git_oid *b)
return
memcmp
(
a
->
id
,
b
->
id
,
sizeof
(
a
->
id
));
}
int
git_oid_ncmp_raw
(
unsigned
int
len
,
const
unsigned
char
*
a
,
const
unsigned
char
*
b
)
{
do
{
if
(
*
a
!=
*
b
)
return
1
;
a
++
;
b
++
;
len
-=
2
;
}
while
(
len
>
1
);
if
(
len
)
if
((
*
a
^
*
b
)
&
0xf0
)
return
1
;
return
0
;
}
int
git_oid_ncmp_hex
(
unsigned
int
len
,
const
unsigned
char
*
a
,
const
unsigned
char
*
b
)
{
return
memcmp
(
a
,
b
,
len
);
}
int
git_oid_ncmp
(
unsigned
int
len
,
git_oid
*
a
,
git_oid
*
b
)
int
git_oid_ncmp
(
const
git_oid
*
oid_a
,
const
git_oid
*
oid_b
,
unsigned
int
len
)
{
return
git_oid_ncmp_raw
(
len
,
a
->
id
,
b
->
id
);
const
unsigned
char
*
a
=
oid_a
->
id
;
const
unsigned
char
*
b
=
oid_b
->
id
;
do
{
if
(
*
a
!=
*
b
)
return
1
;
a
++
;
b
++
;
len
-=
2
;
}
while
(
len
>
1
);
if
(
len
)
if
((
*
a
^
*
b
)
&
0xf0
)
return
1
;
return
0
;
}
typedef
short
node_index
;
...
...
src/oid.h
deleted
100644 → 0
View file @
fa48608e
#ifndef INCLUDE_oid_h__
#define INCLUDE_oid_h__
/**
* Compare the first ('len'*4) bits of two raw formatted oids.
* This can be useful for internal use.
* Return 0 if they match.
*/
int
git_oid_ncmp_raw
(
unsigned
int
len
,
const
unsigned
char
*
a
,
const
unsigned
char
*
b
);
/**
* Compare the first 'len' characters of two hex formatted oids.
* Return 0 if they match.
*/
int
git_oid_ncmp_hex
(
unsigned
int
len
,
const
unsigned
char
*
a
,
const
unsigned
char
*
b
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment