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_buffer(savename, buffer) ⇒ Object
- #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_buffer(savename, buffer) ⇒ Object
282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'ext/tarruby.c', line 282
static VALUE tarruby_append_buffer(VALUE self, VALUE savename, VALUE buffer) {
struct tarruby_tar *p_tar;
char *s_savename, *s_buffer;
int i_size;
Check_Type(savename, T_STRING);
Check_Type(buffer, T_STRING);
s_savename = RSTRING_PTR(savename);
strip_sep(s_savename);
s_buffer = RSTRING_PTR(buffer);
i_size = RSTRING_LEN(buffer);
Data_Get_Struct(self, struct tarruby_tar, p_tar);
if (tar_append_function(p_tar->tar, s_savename, i_size, (void *) &s_buffer, tarruby_append_buffer0) != 0) {
rb_raise(Error, "Append buffer failed: %s", strerror(errno));
}
return Qnil;
}
|
#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
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 |
# File 'ext/tarruby.c', line 304
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
611 612 613 614 615 616 617 |
# File 'ext/tarruby.c', line 611
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
602 603 604 605 606 607 608 |
# File 'ext/tarruby.c', line 602
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
485 486 487 488 489 |
# File 'ext/tarruby.c', line 485
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
506 507 508 509 510 |
# File 'ext/tarruby.c', line 506
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
513 514 515 516 517 |
# File 'ext/tarruby.c', line 513
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
620 621 622 623 624 625 626 |
# File 'ext/tarruby.c', line 620
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
464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 |
# File 'ext/tarruby.c', line 464
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
408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 |
# File 'ext/tarruby.c', line 408
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
359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 |
# File 'ext/tarruby.c', line 359
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
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 |
# File 'ext/tarruby.c', line 335
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
377 378 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 377
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
629 630 631 632 633 634 635 |
# File 'ext/tarruby.c', line 629
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
548 549 550 551 552 |
# File 'ext/tarruby.c', line 548
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
520 521 522 523 524 |
# File 'ext/tarruby.c', line 520
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
584 585 586 587 588 589 590 |
# File 'ext/tarruby.c', line 584
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
647 648 649 650 651 652 653 |
# File 'ext/tarruby.c', line 647
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
638 639 640 641 642 643 644 |
# File 'ext/tarruby.c', line 638
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
534 535 536 537 538 |
# File 'ext/tarruby.c', line 534
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
499 500 501 502 503 |
# File 'ext/tarruby.c', line 499
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
527 528 529 530 531 |
# File 'ext/tarruby.c', line 527
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
555 556 557 558 559 560 561 562 |
# File 'ext/tarruby.c', line 555
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
565 566 567 568 569 570 571 572 |
# File 'ext/tarruby.c', line 565
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
447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 |
# File 'ext/tarruby.c', line 447
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
575 576 577 578 579 580 581 |
# File 'ext/tarruby.c', line 575
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
492 493 494 495 496 |
# File 'ext/tarruby.c', line 492
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
593 594 595 596 597 598 599 |
# File 'ext/tarruby.c', line 593
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
541 542 543 544 545 |
# File 'ext/tarruby.c', line 541
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));
}
|