Branch Coverage

lib/Archive/Ar/Libarchive.xs
Criterion Covered Total %
branch 160 402 39.8


line true false branch
75 2 0 if(ar->opt_chown)
77 2 0 if(ar->opt_same_perms)
86 80 0 if(entry->data != NULL)
95 4 106 if(ar->error != NULL)
97 4 106 if(ar->longmess != NULL)
104 76 110 while(entry != NULL)
124 87 3 while(entry != NULL)
126 47 40 if(!strcmp(archive_entry_pathname(entry->entry), filename))
140 0 3 if(r != ARCHIVE_OK)
142 0 0 _error(ar,archive_error_string(disk));
0 0 _error(ar,archive_error_string(disk));
0 0 _error(ar,archive_error_string(disk));
144 3 0 else if(archive_entry_size(entry->entry) > 0)
147 0 3 if(r != ARCHIVE_OK)
148 0 0 _error(ar, archive_error_string(disk));
0 0 _error(ar, archive_error_string(disk));
0 0 _error(ar, archive_error_string(disk));
149 0 3 if(r < ARCHIVE_WARN)
154 0 3 if(r != ARCHIVE_OK)
155 0 0 _error(ar, archive_error_string(disk));
0 0 _error(ar, archive_error_string(disk));
0 0 _error(ar, archive_error_string(disk));
157 0 3 if(r < ARCHIVE_WARN)
175 0 30 PUSHMARK(SP);
176 0 30 XPUSHs(sv_2mortal(newSViv(PTR2IV((void*)archive))));
185 30 0 if(status == ARCHIVE_OK)
187 30 0 *buffer = (void*) SvPV(sv_buffer, len);
191 30 0 FREETMPS;
194 30 0 if(status == ARCHIVE_OK)
195 30 0 return len == 1 ? 0 : len;
210 0 9 PUSHMARK(SP);
211 0 9 XPUSHs(sv_2mortal(newSViv(PTR2IV((void*)archive))));
212 0 9 XPUSHs(sv_2mortal(newSVpvn(buffer, length)));
222 9 0 FREETMPS;
241 3 9 if(ar->opt_type == ARCHIVE_AR_GNU)
246 7 3 for(entry = ar->first; entry != NULL; entry = entry->next)
248 1 6 if(entry->is_symbol_table)
251 3 3 if(len > 15)
258 3 0 if(size > 0)
268 0 3 if(r < ARCHIVE_OK)
270 0 0 _error(ar, archive_error_string(archive));
0 0 _error(ar, archive_error_string(archive));
0 0 _error(ar, archive_error_string(archive));
271 0 0 if(r != ARCHIVE_WARN)
279 7 3 for(entry = ar->first; entry != NULL; entry = entry->next)
286 3 4 if(len > 15)
298 0 3 if(r < ARCHIVE_OK)
300 0 0 _error(ar, archive_error_string(archive));
0 0 _error(ar, archive_error_string(archive));
0 0 _error(ar, archive_error_string(archive));
301 0 0 if(r != ARCHIVE_WARN)
302 3 0 return 0;
308 23 12 for(entry = ar->first; entry != NULL; entry = entry->next)
312 1 22 if(entry->is_symbol_table)
318 6 17 if(ar->opt_type == ARCHIVE_AR_COMMON)
322 1 5 if(len > 15)
332 21 2 r = archive_write_header(archive, short_entry != NULL ? short_entry : entry->entry);
333 0 23 if(r < ARCHIVE_OK)
335 0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
336 0 0 if(r != ARCHIVE_WARN)
340 0 23 if(r < ARCHIVE_OK)
342 0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
343 0 0 if(r != ARCHIVE_WARN)
347 2 21 if(short_entry != NULL)
384 25 63 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
0 25 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
389 4 59 if(!strcmp(name, "//"))
395 2 57 if(!strcmp(name, "/"))
397 1 1 if(ar->opt_symbols == NULL)
399 1 0 archive_entry_copy_pathname(entry, SvPV_nolen(ar->opt_symbols));
405 49 9 if(ar->opt_type == ARCHIVE_AR_COMMON)
407 1 48 switch(archive_format(archive))
414 0 58 if(r == ARCHIVE_WARN)
416 0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
419 25 0 else if(r == ARCHIVE_EOF)
430 0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
442 0 58 if(r == ARCHIVE_WARN)
444 0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
446 0 58 else if(r < ARCHIVE_OK && r != ARCHIVE_EOF)
0 0 else if(r < ARCHIVE_OK && r != ARCHIVE_EOF)
449 0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
0 0 _error(ar,archive_error_string(archive));
458 25 33 if(ar->first == NULL)
469 0 25 PERL_MATH_INT64_LOAD_OR_CROAK;
496 3 3 if(!strcmp(name, "warn"))
497 3 0 RETVAL = self->opt_warn = SvIV(value);
498 0 3 else if(!strcmp(name, "chmod"))
499 0 0 RETVAL = self->opt_chmod = SvIV(value);
500 0 3 else if(!strcmp(name, "same_perms"))
501 0 0 RETVAL = self->opt_same_perms = SvIV(value);
502 0 3 else if(!strcmp(name, "chown"))
503 0 0 RETVAL = self->opt_chown = SvIV(value);
504 2 1 else if(!strcmp(name, "type"))
505 2 0 RETVAL = self->opt_type = SvIV(value);
506 1 0 else if(!strcmp(name, "symbols"))
518 7 1 if(!strcmp(name, "warn"))
520 0 1 else if(!strcmp(name, "chmod"))
522 0 1 else if(!strcmp(name, "same_perms"))
524 0 1 else if(!strcmp(name, "chown"))
526 1 0 else if(!strcmp(name, "type"))
528 1 0 if(self->opt_type == ARCHIVE_AR_UNDEF)
544 0 4 if(self->error != NULL)
546 0 4 if(self->longmess != NULL)
555 1 4 if(self->error == NULL)
557 3 1 if(items >= 2 && SvTRUE(ST(1)))
3 0 if(items >= 2 && SvTRUE(ST(1)))
0 3 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 3 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 3 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
3 0 if(items >= 2 && SvTRUE(ST(1)))
3 0 if(items >= 2 && SvTRUE(ST(1)))
1 2 if(items >= 2 && SvTRUE(ST(1)))
0 1 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
2 1 if(items >= 2 && SvTRUE(ST(1)))
0 0 if(items >= 2 && SvTRUE(ST(1)))
577 0 10 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
0 0 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
579 0 10 if(r == ARCHIVE_WARN)
580 0 0 _error(self, archive_error_string(archive));
0 0 _error(self, archive_error_string(archive));
0 0 _error(self, archive_error_string(archive));
585 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
611 0 15 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
0 0 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
613 0 15 if(r == ARCHIVE_WARN)
614 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
619 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
641 1 2 if(self->opt_type == ARCHIVE_AR_BSD)
645 0 3 if(r != ARCHIVE_OK)
646 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
648 0 3 if(r != ARCHIVE_OK)
649 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
650 0 3 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
0 0 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
669 1 8 if(self->opt_type == ARCHIVE_AR_BSD)
673 0 9 if(r != ARCHIVE_OK)
674 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
677 0 9 if(r != ARCHIVE_OK)
678 0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
0 0 _error(self,archive_error_string(archive));
679 0 9 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
0 0 if(r == ARCHIVE_OK || r == ARCHIVE_WARN)
701 4 2 if(!strcmp(archive_entry_pathname((*entry)->entry),pathname))
709 0 2 if((*entry)->next == NULL)
733 16 22 while(*entry != NULL)
749 0 22 if(self->opt_symbols != NULL && !strcmp(SvPV_nolen(self->opt_symbols), filename))
0 0 if(self->opt_symbols != NULL && !strcmp(SvPV_nolen(self->opt_symbols), filename))
0 0 if(self->opt_symbols != NULL && !strcmp(SvPV_nolen(self->opt_symbols), filename))
752 22 0 buffer = SvPV(data, (*entry)->data_size);
769 51 22 for(entry = self->first; entry != NULL; entry = entry->next)
797 31 2 if(entry != NULL)
827 0 6 if(entry == NULL)
842 3 0 if(entry != NULL)
859 2 1 while(entry != NULL)
861 0 2 if(ar_entry_extract(self, entry, disk) == 0)
872 1 0 if(ok)
890 0 1 if(entry == NULL)
902 1 0 if(ok)
925 3 1 if(ar_find_by_name(self, filename))
948 1 0 if(entry != NULL)
970 2 0 if(entry != NULL)
972 2 0 if(uid >= 0)
974 1 1 if(SvOK(gid) && SvIV(gid) >= 0)
1 0 if(SvOK(gid) && SvIV(gid) >= 0)
0 1 if(SvOK(gid) && SvIV(gid) >= 0)
1 0 if(SvOK(gid) && SvIV(gid) >= 0)
1 0 if(SvOK(gid) && SvIV(gid) >= 0)
976 1 0 archive_entry_set_gid(entry->entry, SvIV(gid));