Class: Tar
Defined Under Namespace
Classes: Error
Constant Summary collapse
- VERSION =
rb_str_new2(VERSION)
- GNU =
use GNU extensions
INT2NUM(TAR_GNU)
- VERBOSE =
output file info to stdout
INT2NUM(TAR_VERBOSE)
- NOOVERWRITE =
don’t overwrite existing files
INT2NUM(TAR_NOOVERWRITE)
- IGNORE_EOT =
ignore double zero blocks as EOF
INT2NUM(TAR_IGNORE_EOT)
- CHECK_MAGIC =
check magic in file header
INT2NUM(TAR_CHECK_MAGIC)
- CHECK_VERSION =
check version in file header
INT2NUM(TAR_CHECK_VERSION)
- IGNORE_CRC =
ignore CRC in file header
INT2NUM(TAR_IGNORE_CRC)
Class Method Summary collapse
- .bzopen(*args) ⇒ Object
- .gzopen(*args) ⇒ Object
-
.open(*args) ⇒ Object
ignore CRC in file header.
Instance Method Summary collapse
- #append_file(*args) ⇒ Object
- #append_tree(*args) ⇒ Object
- #blk? ⇒ Boolean
- #chr? ⇒ Boolean
- #close ⇒ Object
- #crc ⇒ Object
- #devmajor ⇒ Object
- #devminor ⇒ Object
- #dir? ⇒ Boolean
- #each ⇒ Object
- #extract_all(*args) ⇒ Object
- #extract_buffer ⇒ Object
- #extract_file(realname) ⇒ Object
- #extract_glob(*args) ⇒ Object
- #fifo? ⇒ Boolean
- #gid ⇒ Object
- #linkname ⇒ Object
- #lnk? ⇒ Boolean
- #longlink? ⇒ Boolean
- #longname? ⇒ Boolean
- #mode ⇒ Object
- #mtime ⇒ Object
- #pathname ⇒ Object
- #print ⇒ Object
- #print_long_ls ⇒ Object
- #read ⇒ Object
- #reg? ⇒ Boolean
- #size ⇒ Object
- #sym? ⇒ Boolean
- #uid ⇒ Object
Class Method Details
.bzopen(*args) ⇒ Object
243 244 245 |
# File 'ext/tarruby.c', line 243
static VALUE tarruby_s_bzopen(int argc, VALUE *argv, VALUE self) {
return tarruby_s_open0(argc, argv, self, &bztype);
}
|
.gzopen(*args) ⇒ Object
236 237 238 |
# File 'ext/tarruby.c', line 236
static VALUE tarruby_s_gzopen(int argc, VALUE *argv, VALUE self) {
return tarruby_s_open0(argc, argv, self, &gztype);
}
|
.open(*args) ⇒ Object
ignore CRC in file header
230 231 232 |
# File 'ext/tarruby.c', line 230
static VALUE tarruby_s_open(int argc, VALUE *argv, VALUE self) {
return tarruby_s_open0(argc, argv, self, NULL);
}
|
Instance Method Details
#append_file(*args) ⇒ Object
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'ext/tarruby.c', line 249
static VALUE tarruby_append_file(int argc, VALUE *argv, VALUE self) {
VALUE realname, savename;
struct tarruby_tar *p_tar;
char *s_realname, *s_savename = NULL;
rb_scan_args(argc, argv, "11", &realname, &savename);
Check_Type(realname, T_STRING);
s_realname = RSTRING_PTR(realname);
strip_sep(s_realname);
if (!NIL_P(savename)) {
Check_Type(savename, T_STRING);
s_savename = RSTRING_PTR(savename);
strip_sep(s_savename);
}
Data_Get_Struct(self, struct tarruby_tar, p_tar);
if (tar_append_file(p_tar->tar, s_realname, s_savename) != 0) {
rb_raise(Error, "Append file failed: %s", strerror(errno));
}
return Qnil;
}
|
#append_tree(*args) ⇒ Object
275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
# File 'ext/tarruby.c', line 275
static VALUE tarruby_append_tree(int argc, VALUE *argv, VALUE self) {
VALUE realdir, savedir;
struct tarruby_tar *p_tar;
char *s_realdir, *s_savedir = NULL;
int result = -1;
rb_scan_args(argc, argv, "11", &realdir, &savedir);
Check_Type(realdir, T_STRING);
s_realdir = RSTRING_PTR(realdir);
strip_sep(s_realdir);
if (!NIL_P(savedir)) {
Check_Type(savedir, T_STRING);
s_savedir = RSTRING_PTR(savedir);
strip_sep(s_savedir);
}
Data_Get_Struct(self, struct tarruby_tar, p_tar);
TRAP_BEG;
result = tar_append_tree(p_tar->tar, s_realdir, s_savedir);
TRAP_END;
if (result != 0) {
rb_raise(Error, "Append tree failed: %s", strerror(errno));
}
return Qnil;
}
|
#blk? ⇒ Boolean
582 583 584 585 586 587 588 |
# File 'ext/tarruby.c', line 582
static VALUE tarruby_is_blk(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISBLK(p_tar->tar) ? Qtrue : Qfalse;
}
|
#chr? ⇒ Boolean
573 574 575 576 577 578 579 |
# File 'ext/tarruby.c', line 573
static VALUE tarruby_is_chr(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISCHR(p_tar->tar) ? Qtrue : Qfalse;
}
|
#close ⇒ Object
188 189 190 |
# File 'ext/tarruby.c', line 188 static VALUE tarruby_close(VALUE self) { return tarruby_close0(self, 1); } |
#crc ⇒ Object
456 457 458 459 460 |
# File 'ext/tarruby.c', line 456
static VALUE tarruby_crc(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return INT2NUM(th_get_crc(p_tar->tar));
}
|
#devmajor ⇒ Object
477 478 479 480 481 |
# File 'ext/tarruby.c', line 477
static VALUE tarruby_devmajor(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return INT2NUM(th_get_devmajor(p_tar->tar));
}
|
#devminor ⇒ Object
484 485 486 487 488 |
# File 'ext/tarruby.c', line 484
static VALUE tarruby_devminor(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return INT2NUM(th_get_devminor(p_tar->tar));
}
|
#dir? ⇒ Boolean
591 592 593 594 595 596 597 |
# File 'ext/tarruby.c', line 591
static VALUE tarruby_is_dir(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISDIR(p_tar->tar) ? Qtrue : Qfalse;
}
|
#each ⇒ Object
435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 |
# File 'ext/tarruby.c', line 435
static VALUE tarruby_each(VALUE self) {
struct tarruby_tar *p_tar;
int i;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
tarruby_skip_regfile_if_not_extracted(p_tar);
while ((i = th_read(p_tar->tar)) == 0) {
p_tar->extracted = 0;
rb_yield(self);
tarruby_skip_regfile_if_not_extracted(p_tar);
}
if (i == -1) {
rb_raise(Error, "Read archive failed: %s", strerror(errno));
}
return Qnil;
}
|
#extract_all(*args) ⇒ Object
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 |
# File 'ext/tarruby.c', line 379
static VALUE tarruby_extract_all(int argc, VALUE *argv, VALUE self) {
VALUE prefix;
struct tarruby_tar *p_tar;
char *s_prefix = NULL;
int result = -1;
rb_scan_args(argc, argv, "01", &prefix);
if (!NIL_P(prefix)) {
Check_Type(prefix, T_STRING);
s_prefix = RSTRING_PTR(prefix);
}
Data_Get_Struct(self, struct tarruby_tar, p_tar);
TRAP_BEG;
result = tar_extract_all(p_tar->tar, s_prefix);
TRAP_END;
if (result != 0) {
rb_raise(Error, "Extract archive failed: %s", strerror(errno));
}
p_tar->extracted = 1;
return Qnil;
}
|
#extract_buffer ⇒ Object
330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 |
# File 'ext/tarruby.c', line 330
static VALUE tarruby_extract_buffer(VALUE self) {
VALUE buffer;
struct tarruby_tar *p_tar;
int i;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
buffer = rb_str_new("", 0);
if ((i = tar_extract_function(p_tar->tar, (void *) buffer, tarruby_extract_buffer0)) == -1) {
rb_raise(Error, "Extract buffer failed: %s", strerror(errno));
}
p_tar->extracted = 1;
return (i == 0) ? buffer : Qnil;
}
|
#extract_file(realname) ⇒ Object
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 |
# File 'ext/tarruby.c', line 306
static VALUE tarruby_extract_file(VALUE self, VALUE realname) {
struct tarruby_tar *p_tar;
char *s_realname;
Check_Type(realname, T_STRING);
s_realname = RSTRING_PTR(realname);
Data_Get_Struct(self, struct tarruby_tar, p_tar);
if (tar_extract_file(p_tar->tar, s_realname) != 0) {
rb_raise(Error, "Extract file failed: %s", strerror(errno));
}
p_tar->extracted = 1;
return Qnil;
}
|
#extract_glob(*args) ⇒ Object
348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 |
# File 'ext/tarruby.c', line 348
static VALUE tarruby_extract_glob(int argc, VALUE *argv, VALUE self) {
VALUE globname, prefix;
struct tarruby_tar *p_tar;
char *s_globname, *s_prefix = NULL;
int result = -1;
rb_scan_args(argc, argv, "11", &globname, &prefix);
Check_Type(globname, T_STRING);
s_globname = RSTRING_PTR(globname);
if (!NIL_P(prefix)) {
Check_Type(prefix, T_STRING);
s_prefix = RSTRING_PTR(prefix);
}
Data_Get_Struct(self, struct tarruby_tar, p_tar);
TRAP_BEG;
result = tar_extract_glob(p_tar->tar, s_globname, s_prefix);
TRAP_END;
if (result != 0) {
rb_raise(Error, "Extract archive failed: %s", strerror(errno));
}
p_tar->extracted = 1;
return Qnil;
}
|
#fifo? ⇒ Boolean
600 601 602 603 604 605 606 |
# File 'ext/tarruby.c', line 600
static VALUE tarruby_is_fifo(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISFIFO(p_tar->tar) ? Qtrue : Qfalse;
}
|
#gid ⇒ Object
519 520 521 522 523 |
# File 'ext/tarruby.c', line 519
static VALUE tarruby_gid(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return LONG2NUM(th_get_gid(p_tar->tar));
}
|
#linkname ⇒ Object
491 492 493 494 495 |
# File 'ext/tarruby.c', line 491
static VALUE tarruby_linkname(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return rb_str_new2(th_get_linkname(p_tar->tar));
}
|
#lnk? ⇒ Boolean
555 556 557 558 559 560 561 |
# File 'ext/tarruby.c', line 555
static VALUE tarruby_is_lnk(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISLNK(p_tar->tar) ? Qtrue : Qfalse;
}
|
#longlink? ⇒ Boolean
618 619 620 621 622 623 624 |
# File 'ext/tarruby.c', line 618
static VALUE tarruby_is_longlink(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISLONGLINK(p_tar->tar) ? Qtrue : Qfalse;
}
|
#longname? ⇒ Boolean
609 610 611 612 613 614 615 |
# File 'ext/tarruby.c', line 609
static VALUE tarruby_is_longname(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISLONGNAME(p_tar->tar) ? Qtrue : Qfalse;
}
|
#mode ⇒ Object
505 506 507 508 509 |
# File 'ext/tarruby.c', line 505
static VALUE tarruby_mode(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return LONG2NUM(th_get_mode(p_tar->tar));
}
|
#mtime ⇒ Object
470 471 472 473 474 |
# File 'ext/tarruby.c', line 470
static VALUE tarruby_mtime(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return INT2TIME(th_get_mtime(p_tar->tar));
}
|
#pathname ⇒ Object
498 499 500 501 502 |
# File 'ext/tarruby.c', line 498
static VALUE tarruby_pathname(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return rb_str_new2(th_get_pathname(p_tar->tar));
}
|
#print ⇒ Object
526 527 528 529 530 531 532 533 |
# File 'ext/tarruby.c', line 526
static VALUE tarruby_print(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
th_print(p_tar->tar);
return Qnil;
}
|
#print_long_ls ⇒ Object
536 537 538 539 540 541 542 543 |
# File 'ext/tarruby.c', line 536
static VALUE tarruby_print_long_ls(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
th_print_long_ls(p_tar->tar);
return Qnil;
}
|
#read ⇒ Object
418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 |
# File 'ext/tarruby.c', line 418
static VALUE tarruby_read(VALUE self) {
struct tarruby_tar *p_tar;
int i;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
tarruby_skip_regfile_if_not_extracted(p_tar);
if ((i = th_read(p_tar->tar)) == -1) {
rb_raise(Error, "Read archive failed: %s", strerror(errno));
}
p_tar->extracted = 0;
return (i == 0) ? Qtrue : Qfalse;
}
|
#reg? ⇒ Boolean
546 547 548 549 550 551 552 |
# File 'ext/tarruby.c', line 546
static VALUE tarruby_is_reg(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISREG(p_tar->tar) ? Qtrue : Qfalse;
}
|
#size ⇒ Object
463 464 465 466 467 |
# File 'ext/tarruby.c', line 463
static VALUE tarruby_size(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return INT2NUM(th_get_size(p_tar->tar));
}
|
#sym? ⇒ Boolean
564 565 566 567 568 569 570 |
# File 'ext/tarruby.c', line 564
static VALUE tarruby_is_sym(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return TH_ISSYM(p_tar->tar) ? Qtrue : Qfalse;
}
|
#uid ⇒ Object
512 513 514 515 516 |
# File 'ext/tarruby.c', line 512
static VALUE tarruby_uid(VALUE self) {
struct tarruby_tar *p_tar;
Data_Get_Struct(self, struct tarruby_tar, p_tar);
return LONG2NUM(th_get_uid(p_tar->tar));
}
|