@@ -23,7 +23,7 @@ git-pack-objects [{ -q | --progress | --all-progress }] \n\
23
23
struct object_entry {
24
24
unsigned char sha1 [20 ];
25
25
unsigned long size ; /* uncompressed size */
26
- unsigned long offset ; /* offset into the final pack file;
26
+ off_t offset ; /* offset into the final pack file;
27
27
* nonzero if already written.
28
28
*/
29
29
unsigned int depth ; /* delta depth */
@@ -35,7 +35,7 @@ struct object_entry {
35
35
#define in_pack_header_size delta_size /* only when reusing pack data */
36
36
struct object_entry * delta ; /* delta base object */
37
37
struct packed_git * in_pack ; /* already in pack */
38
- unsigned int in_pack_offset ;
38
+ off_t in_pack_offset ;
39
39
struct object_entry * delta_child ; /* deltified objects who bases me */
40
40
struct object_entry * delta_sibling ; /* other deltified objects who
41
41
* uses the same base as me
@@ -101,7 +101,7 @@ static int object_ix_hashsz;
101
101
* get the object sha1 from the main index.
102
102
*/
103
103
struct revindex_entry {
104
- unsigned int offset ;
104
+ off_t offset ;
105
105
unsigned int nr ;
106
106
};
107
107
struct pack_revindex {
@@ -183,7 +183,7 @@ static void prepare_pack_revindex(struct pack_revindex *rix)
183
183
}
184
184
185
185
static struct revindex_entry * find_packed_object (struct packed_git * p ,
186
- unsigned int ofs )
186
+ off_t ofs )
187
187
{
188
188
int num ;
189
189
int lo , hi ;
@@ -211,15 +211,14 @@ static struct revindex_entry * find_packed_object(struct packed_git *p,
211
211
die ("internal error: pack revindex corrupt" );
212
212
}
213
213
214
- static unsigned long find_packed_object_size (struct packed_git * p ,
215
- unsigned long ofs )
214
+ static off_t find_packed_object_size (struct packed_git * p , off_t ofs )
216
215
{
217
216
struct revindex_entry * entry = find_packed_object (p , ofs );
218
217
return entry [1 ].offset - ofs ;
219
218
}
220
219
221
220
static unsigned char * find_packed_object_name (struct packed_git * p ,
222
- unsigned long ofs )
221
+ off_t ofs )
223
222
{
224
223
struct revindex_entry * entry = find_packed_object (p , ofs );
225
224
return (unsigned char * )(p -> index_base + 256 ) + 24 * entry -> nr + 4 ;
@@ -276,8 +275,8 @@ static int encode_header(enum object_type type, unsigned long size, unsigned cha
276
275
*/
277
276
static int check_pack_inflate (struct packed_git * p ,
278
277
struct pack_window * * w_curs ,
279
- unsigned long offset ,
280
- unsigned long len ,
278
+ off_t offset ,
279
+ off_t len ,
281
280
unsigned long expect )
282
281
{
283
282
z_stream stream ;
@@ -303,16 +302,16 @@ static int check_pack_inflate(struct packed_git *p,
303
302
static void copy_pack_data (struct sha1file * f ,
304
303
struct packed_git * p ,
305
304
struct pack_window * * w_curs ,
306
- unsigned long offset ,
307
- unsigned long len )
305
+ off_t offset ,
306
+ off_t len )
308
307
{
309
308
unsigned char * in ;
310
309
unsigned int avail ;
311
310
312
311
while (len ) {
313
312
in = use_pack (p , w_curs , offset , & avail );
314
313
if (avail > len )
315
- avail = len ;
314
+ avail = ( unsigned int ) len ;
316
315
sha1write (f , in , avail );
317
316
offset += avail ;
318
317
len -= avail ;
@@ -369,14 +368,15 @@ static int revalidate_loose_object(struct object_entry *entry,
369
368
return check_loose_inflate (map , mapsize , size );
370
369
}
371
370
372
- static unsigned long write_object (struct sha1file * f ,
371
+ static off_t write_object (struct sha1file * f ,
373
372
struct object_entry * entry )
374
373
{
375
374
unsigned long size ;
376
375
enum object_type type ;
377
376
void * buf ;
378
377
unsigned char header [10 ];
379
- unsigned hdrlen , datalen ;
378
+ unsigned hdrlen ;
379
+ off_t datalen ;
380
380
enum object_type obj_type ;
381
381
int to_reuse = 0 ;
382
382
@@ -439,7 +439,7 @@ static unsigned long write_object(struct sha1file *f,
439
439
* encoding of the relative offset for the delta
440
440
* base from this object's position in the pack.
441
441
*/
442
- unsigned long ofs = entry -> offset - entry -> delta -> offset ;
442
+ off_t ofs = entry -> offset - entry -> delta -> offset ;
443
443
unsigned pos = sizeof (header ) - 1 ;
444
444
header [pos ] = ofs & 127 ;
445
445
while (ofs >>= 7 )
@@ -460,7 +460,7 @@ static unsigned long write_object(struct sha1file *f,
460
460
else {
461
461
struct packed_git * p = entry -> in_pack ;
462
462
struct pack_window * w_curs = NULL ;
463
- unsigned long offset ;
463
+ off_t offset ;
464
464
465
465
if (entry -> delta ) {
466
466
obj_type = (allow_ofs_delta && entry -> delta -> offset ) ?
@@ -470,7 +470,7 @@ static unsigned long write_object(struct sha1file *f,
470
470
hdrlen = encode_header (obj_type , entry -> size , header );
471
471
sha1write (f , header , hdrlen );
472
472
if (obj_type == OBJ_OFS_DELTA ) {
473
- unsigned long ofs = entry -> offset - entry -> delta -> offset ;
473
+ off_t ofs = entry -> offset - entry -> delta -> offset ;
474
474
unsigned pos = sizeof (header ) - 1 ;
475
475
header [pos ] = ofs & 127 ;
476
476
while (ofs >>= 7 )
@@ -498,9 +498,9 @@ static unsigned long write_object(struct sha1file *f,
498
498
return hdrlen + datalen ;
499
499
}
500
500
501
- static unsigned long write_one (struct sha1file * f ,
501
+ static off_t write_one (struct sha1file * f ,
502
502
struct object_entry * e ,
503
- unsigned long offset )
503
+ off_t offset )
504
504
{
505
505
if (e -> offset || e -> preferred_base )
506
506
/* offset starts from header size and cannot be zero
@@ -518,7 +518,7 @@ static void write_pack_file(void)
518
518
{
519
519
uint32_t i ;
520
520
struct sha1file * f ;
521
- unsigned long offset ;
521
+ off_t offset ;
522
522
struct pack_header hdr ;
523
523
unsigned last_percent = 999 ;
524
524
int do_progress = progress ;
@@ -671,13 +671,13 @@ static int add_object_entry(const unsigned char *sha1, unsigned hash, int exclud
671
671
uint32_t idx = nr_objects ;
672
672
struct object_entry * entry ;
673
673
struct packed_git * p ;
674
- unsigned int found_offset = 0 ;
674
+ off_t found_offset = 0 ;
675
675
struct packed_git * found_pack = NULL ;
676
676
int ix , status = 0 ;
677
677
678
678
if (!exclude ) {
679
679
for (p = packed_git ; p ; p = p -> next ) {
680
- unsigned long offset = find_pack_entry_one (sha1 , p );
680
+ off_t offset = find_pack_entry_one (sha1 , p );
681
681
if (offset ) {
682
682
if (incremental )
683
683
return 0 ;
@@ -978,17 +978,17 @@ static void check_object(struct object_entry *entry)
978
978
if (entry -> in_pack && !entry -> preferred_base ) {
979
979
struct packed_git * p = entry -> in_pack ;
980
980
struct pack_window * w_curs = NULL ;
981
- unsigned long left = p -> pack_size - entry -> in_pack_offset ;
982
981
unsigned long size , used ;
982
+ unsigned int avail ;
983
983
unsigned char * buf ;
984
984
struct object_entry * base_entry = NULL ;
985
985
986
- buf = use_pack (p , & w_curs , entry -> in_pack_offset , NULL );
986
+ buf = use_pack (p , & w_curs , entry -> in_pack_offset , & avail );
987
987
988
988
/* We want in_pack_type even if we do not reuse delta.
989
989
* There is no point not reusing non-delta representations.
990
990
*/
991
- used = unpack_object_header_gently (buf , left ,
991
+ used = unpack_object_header_gently (buf , avail ,
992
992
& entry -> in_pack_type , & size );
993
993
994
994
/* Check if it is delta, and the base is also an object
@@ -997,7 +997,7 @@ static void check_object(struct object_entry *entry)
997
997
*/
998
998
if (!no_reuse_delta ) {
999
999
unsigned char c , * base_name ;
1000
- unsigned long ofs ;
1000
+ off_t ofs ;
1001
1001
unsigned long used_0 ;
1002
1002
/* there is at least 20 bytes left in the pack */
1003
1003
switch (entry -> in_pack_type ) {
0 commit comments