tarruby 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.txt +99 -0
- data/ext/extconf.rb +19 -0
- data/ext/libtar/COPYRIGHT +35 -0
- data/ext/libtar/ChangeLog +243 -0
- data/ext/libtar/ChangeLog-1.0.x +141 -0
- data/ext/libtar/INSTALL +183 -0
- data/ext/libtar/Makefile.in +51 -0
- data/ext/libtar/README +121 -0
- data/ext/libtar/TODO +10 -0
- data/ext/libtar/autoconf/ac_path_generic.m4 +136 -0
- data/ext/libtar/autoconf/aclocal.m4 +199 -0
- data/ext/libtar/autoconf/encap.m4 +133 -0
- data/ext/libtar/autoconf/install-sh +251 -0
- data/ext/libtar/autom4te.cache/output.0 +8102 -0
- data/ext/libtar/autom4te.cache/requests +112 -0
- data/ext/libtar/autom4te.cache/traces.0 +382 -0
- data/ext/libtar/compat/ChangeLog +31 -0
- data/ext/libtar/compat/README +12 -0
- data/ext/libtar/compat/TODO +4 -0
- data/ext/libtar/compat/basename.c +91 -0
- data/ext/libtar/compat/compat.h +260 -0
- data/ext/libtar/compat/dirname.c +96 -0
- data/ext/libtar/compat/fnmatch.c +237 -0
- data/ext/libtar/compat/gethostbyname_r.c +41 -0
- data/ext/libtar/compat/gethostname.c +36 -0
- data/ext/libtar/compat/getservbyname_r.c +41 -0
- data/ext/libtar/compat/glob.c +898 -0
- data/ext/libtar/compat/inet_aton.c +27 -0
- data/ext/libtar/compat/module.ac +591 -0
- data/ext/libtar/compat/snprintf.c +788 -0
- data/ext/libtar/compat/strdup.c +62 -0
- data/ext/libtar/compat/strlcat.c +72 -0
- data/ext/libtar/compat/strlcpy.c +68 -0
- data/ext/libtar/compat/strmode.c +199 -0
- data/ext/libtar/compat/strrstr.c +40 -0
- data/ext/libtar/compat/strsep.c +87 -0
- data/ext/libtar/config.h.in +187 -0
- data/ext/libtar/configure +8102 -0
- data/ext/libtar/configure.ac +114 -0
- data/ext/libtar/doc/Makefile.in +152 -0
- data/ext/libtar/doc/tar_append_file.3 +50 -0
- data/ext/libtar/doc/tar_block_read.3 +24 -0
- data/ext/libtar/doc/tar_extract_all.3 +43 -0
- data/ext/libtar/doc/tar_extract_file.3 +84 -0
- data/ext/libtar/doc/tar_open.3 +97 -0
- data/ext/libtar/doc/th_get_pathname.3 +63 -0
- data/ext/libtar/doc/th_print_long_ls.3 +22 -0
- data/ext/libtar/doc/th_read.3 +34 -0
- data/ext/libtar/doc/th_set_from_stat.3 +45 -0
- data/ext/libtar/lib/Makefile.in +92 -0
- data/ext/libtar/lib/append.c +272 -0
- data/ext/libtar/lib/block.c +384 -0
- data/ext/libtar/lib/decode.c +130 -0
- data/ext/libtar/lib/encode.c +237 -0
- data/ext/libtar/lib/extract.c +656 -0
- data/ext/libtar/lib/handle.c +150 -0
- data/ext/libtar/lib/internal.h +46 -0
- data/ext/libtar/lib/libtar.h +311 -0
- data/ext/libtar/lib/output.c +146 -0
- data/ext/libtar/lib/util.c +153 -0
- data/ext/libtar/lib/wrapper.c +175 -0
- data/ext/libtar/libtar/Makefile.in +73 -0
- data/ext/libtar/libtar/libtar.c +363 -0
- data/ext/libtar/listhash/ChangeLog +15 -0
- data/ext/libtar/listhash/TODO +21 -0
- data/ext/libtar/listhash/hash.c.in +344 -0
- data/ext/libtar/listhash/hash_new.3.in +74 -0
- data/ext/libtar/listhash/list.c.in +458 -0
- data/ext/libtar/listhash/list_new.3.in +86 -0
- data/ext/libtar/listhash/listhash.h.in +196 -0
- data/ext/libtar/listhash/module.ac +21 -0
- data/ext/libtar/win32/config.h +190 -0
- data/ext/libtar/win32/dirent.c +115 -0
- data/ext/libtar/win32/dirent.h +24 -0
- data/ext/libtar/win32/grp.h +4 -0
- data/ext/libtar/win32/listhash/libtar_hash.c +344 -0
- data/ext/libtar/win32/listhash/libtar_list.c +458 -0
- data/ext/libtar/win32/listhash/libtar_listhash.h +196 -0
- data/ext/libtar/win32/pwd.h +4 -0
- data/ext/libtar/win32/sys/param.h +8 -0
- data/ext/libtar/win32/tar.h +35 -0
- data/ext/libtar/win32/utime.h +6 -0
- data/ext/libtar/win32/win32/types.h +10 -0
- data/ext/tarruby.c +648 -0
- metadata +150 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
dnl ### Normal initialization. ######################################
|
2
|
+
AC_INIT([libtar], [1.2.11])
|
3
|
+
AC_PREREQ([2.57])
|
4
|
+
AC_CONFIG_AUX_DIR([autoconf])
|
5
|
+
AC_CONFIG_HEADERS([config.h])
|
6
|
+
AC_COPYRIGHT([[
|
7
|
+
Copyright (c) 1998-2003 University of Illinois Board of Trustees
|
8
|
+
Copyright (c) 1998-2003 Mark D. Roth
|
9
|
+
All rights reserved.
|
10
|
+
]])
|
11
|
+
AC_CONFIG_SRCDIR([lib/libtar.h])
|
12
|
+
ENCAP_PKG([], [postinstall-encap])
|
13
|
+
|
14
|
+
|
15
|
+
dnl ### Load subdirectory modules. ##################################
|
16
|
+
PSG_MODULE([compat])
|
17
|
+
PSG_MODULE([listhash], [libtar])
|
18
|
+
|
19
|
+
|
20
|
+
dnl ### Set some option defaults. ###################################
|
21
|
+
if test -z "$CFLAGS"; then
|
22
|
+
CFLAGS="-O"
|
23
|
+
fi
|
24
|
+
MKDIR="mkdir -p -m 755"
|
25
|
+
AC_SUBST([MKDIR])
|
26
|
+
|
27
|
+
|
28
|
+
dnl ### Check for compiler et al. ###################################
|
29
|
+
AC_PROG_CC
|
30
|
+
AC_PROG_RANLIB
|
31
|
+
AC_PROG_INSTALL
|
32
|
+
AC_PROG_LN_S
|
33
|
+
AC_PROG_MAKE_SET
|
34
|
+
|
35
|
+
|
36
|
+
dnl ### Compiler characteristics. ##################################
|
37
|
+
AC_AIX
|
38
|
+
AC_C_CONST
|
39
|
+
|
40
|
+
|
41
|
+
dnl ### Checks for header files. ###################################
|
42
|
+
AC_HEADER_STDC
|
43
|
+
AC_CHECK_HEADERS([unistd.h])
|
44
|
+
AC_HEADER_MAJOR
|
45
|
+
PSG_REPLACE_TYPE([major_t], [unsigned int], [
|
46
|
+
#include <sys/types.h>
|
47
|
+
#ifdef MAJOR_IN_MKDEV
|
48
|
+
# include <sys/mkdev.h>
|
49
|
+
#else
|
50
|
+
# ifdef MAJOR_IN_SYSMACROS
|
51
|
+
# include <sys/sysmacros.h>
|
52
|
+
# endif
|
53
|
+
#endif
|
54
|
+
])
|
55
|
+
PSG_REPLACE_TYPE([minor_t], [unsigned int], [
|
56
|
+
#include <sys/types.h>
|
57
|
+
#ifdef MAJOR_IN_MKDEV
|
58
|
+
# include <sys/mkdev.h>
|
59
|
+
#else
|
60
|
+
# ifdef MAJOR_IN_SYSMACROS
|
61
|
+
# include <sys/sysmacros.h>
|
62
|
+
# endif
|
63
|
+
#endif
|
64
|
+
])
|
65
|
+
PSG_REPLACE_TYPE([dev_t], [unsigned long], [
|
66
|
+
#include <sys/types.h>
|
67
|
+
#ifdef MAJOR_IN_MKDEV
|
68
|
+
# include <sys/mkdev.h>
|
69
|
+
#else
|
70
|
+
# ifdef MAJOR_IN_SYSMACROS
|
71
|
+
# include <sys/sysmacros.h>
|
72
|
+
# endif
|
73
|
+
#endif
|
74
|
+
])
|
75
|
+
PSG_REPLACE_TYPE([socklen_t], [unsigned long], [
|
76
|
+
#include <sys/types.h>
|
77
|
+
#include <sys/socket.h>
|
78
|
+
])
|
79
|
+
PSG_REPLACE_TYPE([uint64_t], [long long])
|
80
|
+
AC_TYPE_MODE_T
|
81
|
+
AC_TYPE_OFF_T
|
82
|
+
AC_TYPE_SIZE_T
|
83
|
+
AC_TYPE_UID_T
|
84
|
+
PSG_REPLACE_TYPE([nlink_t], [unsigned short])
|
85
|
+
|
86
|
+
|
87
|
+
dnl ### Check for needed functions. ################################
|
88
|
+
COMPAT_FUNC_BASENAME
|
89
|
+
COMPAT_FUNC_DIRNAME
|
90
|
+
COMPAT_FUNC_FNMATCH
|
91
|
+
AC_CHECK_FUNCS([lchown])
|
92
|
+
COMPAT_FUNC_MAKEDEV
|
93
|
+
COMPAT_FUNC_SNPRINTF
|
94
|
+
COMPAT_FUNC_STRDUP
|
95
|
+
AC_FUNC_STRFTIME
|
96
|
+
COMPAT_FUNC_STRLCPY
|
97
|
+
COMPAT_FUNC_STRMODE
|
98
|
+
COMPAT_FUNC_STRSEP
|
99
|
+
|
100
|
+
|
101
|
+
dnl ### Check for libraries. #######################################
|
102
|
+
AC_ARG_WITH([zlib],
|
103
|
+
[ --without-zlib Use external gzip binary instead of zlib],
|
104
|
+
[],
|
105
|
+
[with_zlib=yes])
|
106
|
+
if test "$with_zlib" = "yes"; then
|
107
|
+
AC_CHECK_LIB([z], [gzread])
|
108
|
+
fi
|
109
|
+
|
110
|
+
|
111
|
+
dnl ### Create output files. #######################################
|
112
|
+
AC_CONFIG_FILES([Makefile lib/Makefile libtar/Makefile doc/Makefile])
|
113
|
+
AC_OUTPUT
|
114
|
+
|
@@ -0,0 +1,152 @@
|
|
1
|
+
# @configure_input@
|
2
|
+
|
3
|
+
### Path settings
|
4
|
+
srcdir = @srcdir@
|
5
|
+
top_srcdir = @top_srcdir@
|
6
|
+
prefix = @prefix@
|
7
|
+
exec_prefix = @exec_prefix@
|
8
|
+
bindir = @bindir@
|
9
|
+
mandir = @mandir@
|
10
|
+
libdir = @libdir@
|
11
|
+
includedir = @includedir@
|
12
|
+
|
13
|
+
PACKAGE_NAME = @PACKAGE_NAME@
|
14
|
+
PACKAGE_VERSION = @PACKAGE_VERSION@
|
15
|
+
|
16
|
+
@ENCAP_DEFS@
|
17
|
+
|
18
|
+
### Installation programs and flags
|
19
|
+
INSTALL = @INSTALL@
|
20
|
+
INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
|
21
|
+
INSTALL_DATA = @INSTALL_DATA@
|
22
|
+
LN_S = @LN_S@
|
23
|
+
MKDIR = @MKDIR@
|
24
|
+
@SET_MAKE@
|
25
|
+
|
26
|
+
|
27
|
+
### Makefile rules - no user-servicable parts below
|
28
|
+
|
29
|
+
TAR_OPEN_SO = tar_fdopen \
|
30
|
+
tar_fd \
|
31
|
+
tar_close
|
32
|
+
TAR_APPEND_FILE_SO = tar_append_eof \
|
33
|
+
tar_append_regfile
|
34
|
+
TAR_BLOCK_READ_SO = tar_block_write
|
35
|
+
TH_READ_SO = th_write
|
36
|
+
TH_SET_FROM_STAT_SO = th_finish \
|
37
|
+
th_set_device \
|
38
|
+
th_set_group \
|
39
|
+
th_set_link \
|
40
|
+
th_set_mode \
|
41
|
+
th_set_path \
|
42
|
+
th_set_type \
|
43
|
+
th_set_user
|
44
|
+
TAR_EXTRACT_FILE_SO = tar_extract_blockdev \
|
45
|
+
tar_extract_chardev \
|
46
|
+
tar_extract_dir \
|
47
|
+
tar_extract_fifo \
|
48
|
+
tar_extract_hardlink \
|
49
|
+
tar_extract_regfile \
|
50
|
+
tar_extract_symlink \
|
51
|
+
tar_skip_regfile \
|
52
|
+
tar_set_file_perms
|
53
|
+
TH_GET_PATHNAME_SO = TH_ISBLK \
|
54
|
+
TH_ISCHR \
|
55
|
+
TH_ISDIR \
|
56
|
+
TH_ISFIFO \
|
57
|
+
TH_ISLNK \
|
58
|
+
TH_ISLONGLINK \
|
59
|
+
TH_ISLONGNAME \
|
60
|
+
TH_ISREG \
|
61
|
+
TH_ISSYM \
|
62
|
+
th_get_crc \
|
63
|
+
th_get_devmajor \
|
64
|
+
th_get_devminor \
|
65
|
+
th_get_gid \
|
66
|
+
th_get_linkname \
|
67
|
+
th_get_mode \
|
68
|
+
th_get_mtime \
|
69
|
+
th_get_size \
|
70
|
+
th_get_uid
|
71
|
+
TH_PRINT_LONG_LS_SO = th_print
|
72
|
+
TAR_EXTRACT_ALL_SO = tar_extract_glob \
|
73
|
+
tar_append_tree
|
74
|
+
@LISTHASH_PREFIX@_HASH_NEW_SO = \
|
75
|
+
@LISTHASH_PREFIX@_hash_free \
|
76
|
+
@LISTHASH_PREFIX@_hash_next \
|
77
|
+
@LISTHASH_PREFIX@_hash_prev \
|
78
|
+
@LISTHASH_PREFIX@_hash_search \
|
79
|
+
@LISTHASH_PREFIX@_hash_add \
|
80
|
+
@LISTHASH_PREFIX@_hash_getkey \
|
81
|
+
@LISTHASH_PREFIX@_hash_del
|
82
|
+
@LISTHASH_PREFIX@_LIST_NEW_SO = \
|
83
|
+
@LISTHASH_PREFIX@_list_free \
|
84
|
+
@LISTHASH_PREFIX@_list_next \
|
85
|
+
@LISTHASH_PREFIX@_list_prev \
|
86
|
+
@LISTHASH_PREFIX@_list_search \
|
87
|
+
@LISTHASH_PREFIX@_list_add \
|
88
|
+
@LISTHASH_PREFIX@_list_add_str \
|
89
|
+
@LISTHASH_PREFIX@_list_del \
|
90
|
+
@LISTHASH_PREFIX@_list_dup \
|
91
|
+
@LISTHASH_PREFIX@_list_merge
|
92
|
+
|
93
|
+
DISTCLEANFILES = ../listhash/@LISTHASH_PREFIX@_hash_new.3 \
|
94
|
+
../listhash/@LISTHASH_PREFIX@_list_new.3
|
95
|
+
|
96
|
+
|
97
|
+
all:
|
98
|
+
|
99
|
+
.PHONY: clean distclean install
|
100
|
+
|
101
|
+
clean:
|
102
|
+
|
103
|
+
distclean: clean
|
104
|
+
rm -f Makefile ${DISTCLEANFILES}
|
105
|
+
|
106
|
+
install: all
|
107
|
+
${MKDIR} ${DESTDIR}${mandir}/man3
|
108
|
+
${INSTALL_DATA} ${srcdir}/tar_open.3 ${DESTDIR}${mandir}/man3
|
109
|
+
for i in ${TAR_OPEN_SO}; do \
|
110
|
+
echo ".so man3/tar_open.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
111
|
+
done
|
112
|
+
${INSTALL_DATA} ${srcdir}/tar_append_file.3 ${DESTDIR}${mandir}/man3
|
113
|
+
for i in ${TAR_APPEND_FILE_SO}; do \
|
114
|
+
echo ".so man3/tar_append_file.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
115
|
+
done
|
116
|
+
${INSTALL_DATA} ${srcdir}/tar_block_read.3 ${DESTDIR}${mandir}/man3
|
117
|
+
for i in ${TAR_BLOCK_READ_SO}; do \
|
118
|
+
echo ".so man3/tar_block_read.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
119
|
+
done
|
120
|
+
${INSTALL_DATA} ${srcdir}/th_read.3 ${DESTDIR}${mandir}/man3
|
121
|
+
for i in ${TH_READ_SO}; do \
|
122
|
+
echo ".so man3/th_read.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
123
|
+
done
|
124
|
+
${INSTALL_DATA} ${srcdir}/th_set_from_stat.3 ${DESTDIR}${mandir}/man3
|
125
|
+
for i in ${TH_SET_FROM_STAT_SO}; do \
|
126
|
+
echo ".so man3/th_set_from_stat.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
127
|
+
done
|
128
|
+
${INSTALL_DATA} ${srcdir}/tar_extract_file.3 ${DESTDIR}${mandir}/man3
|
129
|
+
for i in ${TAR_EXTRACT_FILE_SO}; do \
|
130
|
+
echo ".so man3/tar_extract_file.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
131
|
+
done
|
132
|
+
${INSTALL_DATA} ${srcdir}/th_get_pathname.3 ${DESTDIR}${mandir}/man3
|
133
|
+
for i in ${TH_GET_PATHNAME_SO}; do \
|
134
|
+
echo ".so man3/th_get_pathname.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
135
|
+
done
|
136
|
+
${INSTALL_DATA} ${srcdir}/th_print_long_ls.3 ${DESTDIR}${mandir}/man3
|
137
|
+
for i in ${TH_PRINT_LONG_LS_SO}; do \
|
138
|
+
echo ".so man3/th_print_long_ls.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
139
|
+
done
|
140
|
+
${INSTALL_DATA} ${srcdir}/tar_extract_all.3 ${DESTDIR}${mandir}/man3
|
141
|
+
for i in ${TAR_EXTRACT_ALL_SO}; do \
|
142
|
+
echo ".so man3/tar_extract_all.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
143
|
+
done
|
144
|
+
${INSTALL_DATA} ../listhash/@LISTHASH_PREFIX@_hash_new.3 ${DESTDIR}${mandir}/man3
|
145
|
+
for i in ${@LISTHASH_PREFIX@_HASH_NEW_SO}; do \
|
146
|
+
echo ".so man3/@LISTHASH_PREFIX@_hash_new.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
147
|
+
done
|
148
|
+
${INSTALL_DATA} ../listhash/@LISTHASH_PREFIX@_list_new.3 ${DESTDIR}${mandir}/man3
|
149
|
+
for i in ${@LISTHASH_PREFIX@_LIST_NEW_SO}; do \
|
150
|
+
echo ".so man3/@LISTHASH_PREFIX@_list_new.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
|
151
|
+
done
|
152
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
.TH tar_append_file 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
tar_append_file, tar_append_eof, tar_append_regfile \- append data to tar archives
|
4
|
+
.SH SYNOPSIS
|
5
|
+
.B #include <libtar.h>
|
6
|
+
.P
|
7
|
+
.BI "int tar_append_file(TAR *" t ", char *" realname ","
|
8
|
+
.BI "char *" savename ");"
|
9
|
+
|
10
|
+
.BI "int tar_append_regfile(TAR *" t ", char *" realname ");"
|
11
|
+
|
12
|
+
.BI "int tar_append_eof(TAR *" t ");"
|
13
|
+
.SH VERSION
|
14
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
15
|
+
.SH DESCRIPTION
|
16
|
+
The \fBtar_append_file\fP() function creates a tar file header block
|
17
|
+
describing the file named by the \fIrealname\fP argument, but with
|
18
|
+
the encoded filename of \fIsavename\fP. It then sets the current
|
19
|
+
header associated with the \fITAR\fP handle \fIt\fP to the newly created
|
20
|
+
header block, and writes this block to the tar archive associated with
|
21
|
+
\fIt\fP. If the file named by \fIrealname\fP is a regular file (and
|
22
|
+
is not encoded as a hard link), \fBtar_append_file\fP() will call
|
23
|
+
\fBtar_append_regfile\fP() to append the contents of the file.
|
24
|
+
|
25
|
+
The \fBtar_append_regfile\fP() function appends the contents of a regular
|
26
|
+
file to the tar archive associated with \fIt\fP. Since this function is
|
27
|
+
called by \fBtar_append_file\fP(), it should only be necessary for
|
28
|
+
applications that construct and write the tar file header on their own.
|
29
|
+
|
30
|
+
The \fBtar_append_eof\fP() function writes an EOF marker (two blocks of
|
31
|
+
all zeros) to the tar file associated with \fIt\fP.
|
32
|
+
.SH RETURN VALUES
|
33
|
+
On successful completion, these functions will return 0. On failure,
|
34
|
+
they will return -1 and set \fIerrno\fP to an appropriate value.
|
35
|
+
.SH ERRORS
|
36
|
+
The \fBtar_append_*\fP() functions will fail if:
|
37
|
+
.IP \fBEINVAL\fP
|
38
|
+
Less than \fBT_BLOCKSIZE\fP bytes were written to the tar archive.
|
39
|
+
.IP \fBEINVAL\fP
|
40
|
+
Less than \fBT_BLOCKSIZE\fP bytes were read from the \fIrealname\fP file.
|
41
|
+
.PP
|
42
|
+
They may also fail if any of the following functions fail: \fBlstat\fP(),
|
43
|
+
\fBmalloc\fP(), \fBopen\fP(), \fBread\fP(), \fBth_write\fP(), or the
|
44
|
+
write function for the file type associated with the \fITAR\fP handle
|
45
|
+
\fIt\fP.
|
46
|
+
.SH SEE ALSO
|
47
|
+
.BR read (2),
|
48
|
+
.BR open (2),
|
49
|
+
.BR lstat (2),
|
50
|
+
.BR th_write (3)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.TH tar_block_read 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
tar_block_read, tar_block_write \- macros to call read and write functions
|
4
|
+
for the correct tar archive type
|
5
|
+
.SH SYNOPSIS
|
6
|
+
.B #include <libtar.h>
|
7
|
+
.P
|
8
|
+
.BI "int tar_block_read(TAR *" t ", char *" buf ");"
|
9
|
+
|
10
|
+
.BI "int tar_block_write(TAR *" t ", char *" buf ");"
|
11
|
+
.SH VERSION
|
12
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
13
|
+
.SH DESCRIPTION
|
14
|
+
The \fBtar_block_read\fP() and \fBtar_block_write\fP() macros call
|
15
|
+
the read and write functions for the tar archive type associated with the
|
16
|
+
\fITAR\fP handle \fIt\fP. This type is set when the \fITAR\fP handle
|
17
|
+
is created using \fBtar_open\fP().
|
18
|
+
.SH RETURN VALUE
|
19
|
+
These macros return the same values as the corresponding read and write
|
20
|
+
functions.
|
21
|
+
.SH SEE ALSO
|
22
|
+
.BR read (2),
|
23
|
+
.BR write (2),
|
24
|
+
.BR tar_open (3)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
.TH tar_extract_all 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
tar_extract_all, tar_extract_glob, tar_append_tree \- high-level tar
|
4
|
+
archive manipulation functions
|
5
|
+
.SH SYNOPSIS
|
6
|
+
.B #include <libtar.h>
|
7
|
+
.P
|
8
|
+
.BI "int tar_extract_all(TAR *" t ", char *" prefix ");"
|
9
|
+
|
10
|
+
.BI "int tar_extract_glob(TAR *" t ", char *" globname ","
|
11
|
+
.BI "char *" prefix ");"
|
12
|
+
|
13
|
+
.BI "int tar_append_tree(TAR *" t ", char *" realdir ","
|
14
|
+
.BI "char *" savedir ");"
|
15
|
+
.SH VERSION
|
16
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
17
|
+
.SH DESCRIPTION
|
18
|
+
The \fBtar_extract_all\fP() function extracts all files from the tar
|
19
|
+
archive associated with the \fITAR\fP handle \fIt\fP into the path
|
20
|
+
named by the \fIprefix\fP argument.
|
21
|
+
|
22
|
+
The \fBtar_extract_glob\fP() function extracts all files matching
|
23
|
+
the given \fIglob\fP pattern from the tar archive associated with the
|
24
|
+
\fITAR\fP handle \fIt\fP into the path named by the \fIprefix\fP argument.
|
25
|
+
|
26
|
+
The \fBtar_append_tree\fP() function appends all files from the
|
27
|
+
directory tree named by \fIrealdir\fP to the tar archive associated with
|
28
|
+
the \fITAR\fP handle \fIt\fP. The pathnames stored in the tar archive
|
29
|
+
are modified by replacing \fIrealdir\fP with \fIsavedir\fP, so that the
|
30
|
+
files will be extracted into \fIsavedir\fP.
|
31
|
+
.SH RETURN VALUES
|
32
|
+
On successful completion, these functions will return 0. On failure,
|
33
|
+
they will return -1 and set \fIerrno\fP to an appropriate value.
|
34
|
+
.SH ERRORS
|
35
|
+
These functions will fail under the same conditions that the
|
36
|
+
\fBtar_skip_regfile\fP(), \fBtar_extract_regfile\fP(), \fBopendir\fP(),
|
37
|
+
\fBlstat\fP(), or \fBtar_append_file\fP() functions fail.
|
38
|
+
.SH SEE ALSO
|
39
|
+
.BR opendir (2),
|
40
|
+
.BR lstat (2),
|
41
|
+
.BR tar_skip_regfile (3),
|
42
|
+
.BR tar_extract_regfile (3),
|
43
|
+
.BR tar_append_file (3)
|
@@ -0,0 +1,84 @@
|
|
1
|
+
.TH tar_extract_file 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
tar_extract_file, tar_extract_regfile, tar_extract_hardlink,
|
4
|
+
tar_extract_symlink, tar_extract_chardev, tar_extract_blockdev,
|
5
|
+
tar_extract_dir, tar_extract_fifo, tar_skip_regfile, tar_set_file_perms \-
|
6
|
+
extract files from a tar archive
|
7
|
+
.SH SYNOPSIS
|
8
|
+
.B #include <libtar.h>
|
9
|
+
.P
|
10
|
+
.BI "int tar_extract_file(TAR *" t ", char *" realname ");"
|
11
|
+
|
12
|
+
.BI "int tar_extract_regfile(TAR *" t ", char *" realname ");"
|
13
|
+
|
14
|
+
.BI "int tar_skip_regfile(TAR *" t ");"
|
15
|
+
|
16
|
+
.BI "int tar_extract_dir(TAR *" t ", char *" realname ");"
|
17
|
+
|
18
|
+
.BI "int tar_extract_hardlink(TAR *" t ", char *" realname ");"
|
19
|
+
|
20
|
+
.BI "int tar_extract_symlink(TAR *" t ", char *" realname ");"
|
21
|
+
|
22
|
+
.BI "int tar_extract_blockdev(TAR *" t ", char *" realname ");"
|
23
|
+
|
24
|
+
.BI "int tar_extract_chardev(TAR *" t ", char *" realname ");"
|
25
|
+
|
26
|
+
.BI "int tar_extract_fifo(TAR *" t ", char *" realname ");"
|
27
|
+
|
28
|
+
.BI "int tar_set_file_perms(TAR *" t ", char *" realname ");"
|
29
|
+
.SH VERSION
|
30
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
31
|
+
.SH DESCRIPTION
|
32
|
+
The \fBtar_extract_file\fP() function acts as a front-end to the other
|
33
|
+
\fBtar_extract_*\fP() functions. It checks the current tar header
|
34
|
+
associated with the \fITAR\fP handle \fIt\fP (which must be initialized
|
35
|
+
first by calling \fBth_read\fP()) to determine what kind of file the
|
36
|
+
header refers to. It then calls the appropriate \fBtar_extract_*\fP()
|
37
|
+
function to extract that kind of file.
|
38
|
+
|
39
|
+
The \fBtar_skip_regfile\fP() function skips over the
|
40
|
+
file content blocks and positions the file pointer at the expected
|
41
|
+
location of the next tar header block.
|
42
|
+
|
43
|
+
The \fBtar_set_file_perms\fP() function sets the attributes of the
|
44
|
+
extracted file to match the encoded values. This includes the file's
|
45
|
+
modification time, mode, owner, and group. This function is automatically
|
46
|
+
called by \fBtar_extract_file\fP(), but applications which call the
|
47
|
+
other \fBtar_extract_*\fP() functions directly will need to call
|
48
|
+
\fBtar_set_file_perms\fP() manually if this behavior is desired.
|
49
|
+
.SH RETURN VALUES
|
50
|
+
On successful completion, the functions documented here will
|
51
|
+
return 0. On failure, they will return -1 and set \fIerrno\fP to an
|
52
|
+
appropriate value.
|
53
|
+
|
54
|
+
The \fBtar_extract_dir\fP() function will return 1 if the directory
|
55
|
+
already exists.
|
56
|
+
.SH ERRORS
|
57
|
+
The \fBtar_extract_file\fP() function will fail if:
|
58
|
+
.IP \fBEEXIST\fP
|
59
|
+
If the \fBO_NOOVERWRITE\fP flag is set and the file already exists.
|
60
|
+
.PP
|
61
|
+
The \fBtar_extract_*\fP() functions will fail if:
|
62
|
+
.IP \fBEINVAL\fP
|
63
|
+
An entry could not be added to the internal file hash.
|
64
|
+
.IP \fBEINVAL\fP
|
65
|
+
Less than \fBT_BLOCKSIZE\fP bytes were read from the tar archive.
|
66
|
+
.IP \fBEINVAL\fP
|
67
|
+
The current file header associated with \fIt\fP refers to a kind of file
|
68
|
+
other than the one which the called function knows about.
|
69
|
+
.PP
|
70
|
+
They may also fail if any of the following functions fail: \fBmkdir\fP(),
|
71
|
+
\fBwrite\fP(), \fBlink\fP(), \fBsymlink\fP(), \fBmknod\fP(), \fBmkfifo\fP(),
|
72
|
+
\fButime\fP(), \fBchown\fP(), \fBlchown\fP(), \fBchmod\fP(), or \fBlstat\fP().
|
73
|
+
.SH SEE ALSO
|
74
|
+
.BR mkdir (2),
|
75
|
+
.BR write (2),
|
76
|
+
.BR link (2),
|
77
|
+
.BR symlink (2),
|
78
|
+
.BR mknod (2),
|
79
|
+
.BR mkfifo (2),
|
80
|
+
.BR utime (2),
|
81
|
+
.BR chown (2),
|
82
|
+
.BR lchown (2),
|
83
|
+
.BR chmod (2),
|
84
|
+
.BR lstat (2)
|
@@ -0,0 +1,97 @@
|
|
1
|
+
.TH tar_open 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
tar_open, tar_close \- access a tar archive via a handle
|
4
|
+
.SH SYNOPSIS
|
5
|
+
.B #include <libtar.h>
|
6
|
+
.P
|
7
|
+
.BI "int tar_open(TAR **" t ", char *" pathname ","
|
8
|
+
.BI "tartype_t *" type ", int " oflags ","
|
9
|
+
.BI "int " mode ", int " options ");"
|
10
|
+
|
11
|
+
.BI "int tar_fdopen(TAR **" t ", int " fd ","
|
12
|
+
.BI "char *" pathname ", tartype_t *" type ","
|
13
|
+
.BI "int " oflags ", int " mode ","
|
14
|
+
.BI "int " options ");"
|
15
|
+
|
16
|
+
.BI "int tar_fd(TAR *" t");"
|
17
|
+
|
18
|
+
.BI "int tar_close(TAR *" t");"
|
19
|
+
.SH VERSION
|
20
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
21
|
+
.SH DESCRIPTION
|
22
|
+
The \fBtar_open\fP() function opens a tar archive file corresponding to
|
23
|
+
the filename named by the \fIpathname\fP argument. The \fIoflags\fP
|
24
|
+
argument must be either \fBO_RDONLY\fP or \fBO_WRONLY\fP.
|
25
|
+
|
26
|
+
The \fItype\fP argument specifies the access methods for the given file
|
27
|
+
type. The \fItartype_t\fP structure has members named \fIopenfunc\fP,
|
28
|
+
\fIclosefunc\fP, \fIreadfunc\fP() and \fIwritefunc\fP(), which are
|
29
|
+
pointers to the functions for opening, closing, reading, and writing
|
30
|
+
the file, respectively. If \fItype\fP is \fINULL\fP, the file type
|
31
|
+
defaults to a normal file, and the standard \fIopen\fP(), \fIclose\fP(),
|
32
|
+
\fIread\fP(), and \fIwrite\fP() functions are used.
|
33
|
+
|
34
|
+
The \fIoptions\fP argument is a logical-or'ed combination of zero or more
|
35
|
+
of the following:
|
36
|
+
.IP \fBTAR_GNU\fP
|
37
|
+
Use GNU extensions.
|
38
|
+
.IP \fBTAR_VERBOSE\fP
|
39
|
+
Send status messages to \fIstdout\fP.
|
40
|
+
.IP \fBTAR_NOOVERWRITE\fP
|
41
|
+
Do not overwrite pre-existing files.
|
42
|
+
.IP \fBTAR_IGNORE_EOT\fP
|
43
|
+
Skip all-zero blocks instead of treating them as EOT.
|
44
|
+
.IP \fBTAR_IGNORE_MAGIC\fP
|
45
|
+
Do not validate the magic field in file headers.
|
46
|
+
.IP \fBTAR_CHECK_VERSION\fP
|
47
|
+
Check the version field in file headers. (This field is normally ignored.)
|
48
|
+
.IP \fBTAR_IGNORE_CRC\fP
|
49
|
+
Do not validate the CRC of file headers.
|
50
|
+
.PP
|
51
|
+
|
52
|
+
The \fBtar_open\fP() function allocates memory for a \fITAR\fP handle,
|
53
|
+
and a pointer to the allocated memory is saved in the location specified
|
54
|
+
by \fIt\fP. The \fITAR\fP handle may be passed to other \fIlibtar\fP
|
55
|
+
calls to modify the opened tar archive. The \fITAR\fP handle maintains
|
56
|
+
all of the information about the open tar archive, including the archive
|
57
|
+
\fItype\fP, \fIoptions\fP, and \fIoflags\fP selected when \fBtar_open\fP()
|
58
|
+
was called.
|
59
|
+
|
60
|
+
The \fITAR\fP handle generated by \fBtar_open\fP() contains a file header
|
61
|
+
structure. When reading a tar archive, this structure contains the last
|
62
|
+
file header read from the tar archive. When writing a tar archive,
|
63
|
+
this structure is used as a staging area to construct the next file
|
64
|
+
header to be written to the archive. In addition, the \fITAR\fP handle
|
65
|
+
contains a hash table which is used to keep track of the device and
|
66
|
+
inode information for each file which gets written to the tar archive.
|
67
|
+
This is used to detect hard links, so that files do not need to be
|
68
|
+
duplicated in the archive.
|
69
|
+
|
70
|
+
The \fBtar_fdopen\fP() function is identical to the \fBtar_open\fP() function,
|
71
|
+
except that \fIfd\fP is used as the previously-opened file descriptor for
|
72
|
+
the tar file instead of calling \fItype->openfunc\fP() to open the file.
|
73
|
+
|
74
|
+
The \fBtar_fd\fP() function returns the file descriptor associated with
|
75
|
+
the \fITAR\fP handle \fIt\fP.
|
76
|
+
|
77
|
+
The \fBtar_close\fP() function closes the file descriptor associated
|
78
|
+
with the \fITAR\fP handle \fIt\fP and frees all dynamically-allocated
|
79
|
+
memory.
|
80
|
+
.SH RETURN VALUE
|
81
|
+
The \fBtar_open\fP(), \fBtar_fdopen\fP(), and \fBtar_close\fP() functions
|
82
|
+
return 0 on success. On failure, they return -1 and set \fIerrno\fP.
|
83
|
+
|
84
|
+
The \fBtar_fd\fP() function returns the file descriptor associated with
|
85
|
+
the \fITAR\fP handle \fIt\fP.
|
86
|
+
.SH ERRORS
|
87
|
+
\fBtar_open\fP() will fail if:
|
88
|
+
.IP \fBEINVAL\fP
|
89
|
+
The \fIoflags\fP argument was something other than \fBO_RDONLY\fP or \fBO_WRONLY\fP.
|
90
|
+
.PP
|
91
|
+
In addition, \fBtar_open\fP() and \fBtar_close\fP() may fail if it
|
92
|
+
cannot allocate memory using \fBcalloc\fP(), or if the
|
93
|
+
open or close functions for the specified tar archive \fItype\fP fail.
|
94
|
+
.SH SEE ALSO
|
95
|
+
.BR open (2),
|
96
|
+
.BR close (2),
|
97
|
+
.BR calloc (3)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
.TH th_get_pathname 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
th_get_pathname, th_get_uid, th_get_gid, th_get_mode, th_get_crc, th_get_size, th_get_mtime, th_get_devmajor, th_get_devminor, th_get_linkname \- extract individual fields of a tar header
|
4
|
+
|
5
|
+
TH_ISREG, TH_ISLNK, TH_ISSYM, TH_ISCHR, TH_ISBLK, TH_ISDIR, TH_ISFIFO \- determine what kind of file a tar header refers to
|
6
|
+
|
7
|
+
TH_ISLONGNAME, TH_ISLONGLINK \- determine whether the GNU extensions are in use
|
8
|
+
.SH SYNOPSIS
|
9
|
+
.B #include <libtar.h>
|
10
|
+
.P
|
11
|
+
.BI "char *th_get_linkname(TAR *" t ");"
|
12
|
+
|
13
|
+
.BI "char *th_get_pathname(TAR *" t ");"
|
14
|
+
|
15
|
+
.BI "mode_t th_get_mode(TAR *" t ");"
|
16
|
+
|
17
|
+
.BI "uid_t th_get_uid(TAR *" t ");"
|
18
|
+
|
19
|
+
.BI "gid_t th_get_gid(TAR *" t ");"
|
20
|
+
|
21
|
+
.BI "int th_get_crc(TAR *" t ");"
|
22
|
+
|
23
|
+
.BI "off_t th_get_size(TAR *" t ");"
|
24
|
+
|
25
|
+
.BI "time_t th_get_mtime(TAR *" t ");"
|
26
|
+
|
27
|
+
.BI "major_t th_get_devmajor(TAR *" t ");"
|
28
|
+
|
29
|
+
.BI "minor_t th_get_devminor(TAR *" t ");"
|
30
|
+
|
31
|
+
.BI "int TH_ISREG(TAR *" t ");"
|
32
|
+
|
33
|
+
.BI "int TH_ISLNK(TAR *" t ");"
|
34
|
+
|
35
|
+
.BI "int TH_ISSYM(TAR *" t ");"
|
36
|
+
|
37
|
+
.BI "int TH_ISCHR(TAR *" t ");"
|
38
|
+
|
39
|
+
.BI "int TH_ISBLK(TAR *" t ");"
|
40
|
+
|
41
|
+
.BI "int TH_ISDIR(TAR *" t ");"
|
42
|
+
|
43
|
+
.BI "int TH_ISFIFO(TAR *" t ");"
|
44
|
+
|
45
|
+
.BI "int TH_ISLONGNAME(TAR *" t ");"
|
46
|
+
|
47
|
+
.BI "int TH_ISLONGLINK(TAR *" t ");"
|
48
|
+
.SH VERSION
|
49
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
50
|
+
.SH DESCRIPTION
|
51
|
+
The \fBth_get_*\fP() functions extract individual fields from the current
|
52
|
+
tar header associated with the \fITAR\fP handle \fIt\fP.
|
53
|
+
|
54
|
+
The \fBTH_IS*\fP() macros are used to evaluate what kind of file is
|
55
|
+
pointed to by the current tar header associated with the \fITAR\fP
|
56
|
+
handle \fIt\fP.
|
57
|
+
|
58
|
+
The \fBTH_ISLONGNAME\fP() and \fBTH_ISLONGLINK\fP() macros evaluate
|
59
|
+
whether or not the GNU extensions are used by the current tar header
|
60
|
+
associated with the \fITAR\fP handle \fIt\fP. This is only relevant
|
61
|
+
if the \fBTAR_GNU\fP option was used when \fItar_open\fP() was called.
|
62
|
+
.SH SEE ALSO
|
63
|
+
.BR tar_open (3)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.TH th_print_long_ls 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
th_print, th_print_long_ls \- print out information about a tar file header
|
4
|
+
.SH SYNOPSIS
|
5
|
+
.B #include <libtar.h>
|
6
|
+
.P
|
7
|
+
.BI "void th_print_long_ls(TAR *" t ");"
|
8
|
+
|
9
|
+
.BI "void th_print(TAR *" t ");"
|
10
|
+
.SH VERSION
|
11
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
12
|
+
.SH DESCRIPTION
|
13
|
+
The \fBth_print_long_ls\fP() function prints a line to \fIstdout\fP which
|
14
|
+
describes the file pointed to by the current file header associated with
|
15
|
+
the \fITAR\fP handle \fIt\fP. The output is similar to that of "ls -l".
|
16
|
+
|
17
|
+
The \fBth_print\fP() function prints the value of each field of the
|
18
|
+
current file header associated with the \fITAR\fP handle \fIt\fP to
|
19
|
+
\fIstdout\fP. This is mainly used for debugging purposes.
|
20
|
+
.SH SEE ALSO
|
21
|
+
.BR tar_open (3),
|
22
|
+
.BR th_read (3)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
.TH th_read 3 "Jan 2001" "University of Illinois" "C Library Calls"
|
2
|
+
.SH NAME
|
3
|
+
th_read, th_write \- read and write a file header block from a tar archive
|
4
|
+
.SH SYNOPSIS
|
5
|
+
.B #include <libtar.h>
|
6
|
+
.P
|
7
|
+
.BI "int th_read(TAR *" t ");"
|
8
|
+
|
9
|
+
.BI "int th_write(TAR *" t ");"
|
10
|
+
.SH VERSION
|
11
|
+
This man page documents version 1.2 of \fBlibtar\fP.
|
12
|
+
.SH DESCRIPTION
|
13
|
+
The \fBth_read\fP() function reads the next block from the tar archive
|
14
|
+
associated with the \fITAR\fP handle \fIt\fP. It then sets the
|
15
|
+
current tar header associated with \fIt\fP to the contents of the block
|
16
|
+
read.
|
17
|
+
|
18
|
+
The \fBth_write\fP() function writes the contents of the current
|
19
|
+
tar header associated with \fIt\fP to the tar archive associated
|
20
|
+
with \fIt\fP.
|
21
|
+
.SH RETURN VALUE
|
22
|
+
On successful completion, \fBth_read\fP() and \fBth_write\fP() will
|
23
|
+
return 0. On failure, they will return -1 and set \fIerrno\fP to an
|
24
|
+
appropriate value.
|
25
|
+
|
26
|
+
On \fIEOF\fP, \fBth_read\fP() will return 1.
|
27
|
+
.SH ERRORS
|
28
|
+
\fBth_read\fP() and \fBth_write\fP() will fail if:
|
29
|
+
.IP \fBEINVAL\fP
|
30
|
+
Less than \fBT_BLOCKSIZE\fP blocks were read or written.
|
31
|
+
.PP
|
32
|
+
.SH SEE ALSO
|
33
|
+
.BR tar_block_read (3),
|
34
|
+
.BR tar_block_write (3)
|