File tree Expand file tree Collapse file tree 3 files changed +40
-0
lines changed
Expand file tree Collapse file tree 3 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -627,6 +627,7 @@ LIB_H += tree-walk.h
627627LIB_H += unpack-trees.h
628628LIB_H += userdiff.h
629629LIB_H += utf8.h
630+ LIB_H += varint.h
630631LIB_H += xdiff-interface.h
631632LIB_H += xdiff/xdiff.h
632633
@@ -752,6 +753,7 @@ LIB_OBJS += url.o
752753LIB_OBJS += usage.o
753754LIB_OBJS += userdiff.o
754755LIB_OBJS += utf8.o
756+ LIB_OBJS += varint.o
755757LIB_OBJS += walker.o
756758LIB_OBJS += wrapper.o
757759LIB_OBJS += write_or_die.o
Original file line number Diff line number Diff line change 1+ #include "varint.h"
2+
3+ uintmax_t decode_varint (const unsigned char * * bufp )
4+ {
5+ const unsigned char * buf = * bufp ;
6+ unsigned char c = * buf ++ ;
7+ uintmax_t val = c & 127 ;
8+ while (c & 128 ) {
9+ val += 1 ;
10+ if (!val || MSB (val , 7 ))
11+ return 0 ; /* overflow */
12+ c = * buf ++ ;
13+ val = (val << 7 ) + (c & 127 );
14+ }
15+ * bufp = buf ;
16+ return val ;
17+ }
18+
19+ int encode_varint (uintmax_t value , unsigned char * buf )
20+ {
21+ unsigned char varint [16 ];
22+ unsigned pos = sizeof (varint ) - 1 ;
23+ varint [pos ] = value & 127 ;
24+ while (value >>= 7 )
25+ varint [-- pos ] = 128 | (-- value & 127 );
26+ if (buf )
27+ memcpy (buf , varint + pos , sizeof (varint ) - pos );
28+ return sizeof (varint ) - pos ;
29+ }
Original file line number Diff line number Diff line change 1+ #ifndef VARINT_H
2+ #define VARINT_H
3+
4+ #include "git-compat-util.h"
5+
6+ extern int encode_varint (uintmax_t , unsigned char * );
7+ extern uintmax_t decode_varint (const unsigned char * * );
8+
9+ #endif /* VARINT_H */
You can’t perform that action at this time.
0 commit comments