|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
"http://www.w3.org/TR/html4/loose.dtd">
|
|
Packit Service |
1d0348 |
<html>
|
|
Packit Service |
1d0348 |
<head>
|
|
Packit Service |
1d0348 |
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
|
Packit Service |
1d0348 |
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
|
Packit Service |
1d0348 |
<meta name="Content-Style" content="text/css">
|
|
Packit Service |
1d0348 |
<style type="text/css">
|
|
Packit Service |
1d0348 |
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
|
Packit Service |
1d0348 |
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
|
Packit Service |
1d0348 |
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
|
Packit Service |
1d0348 |
h1 { text-align: center }
|
|
Packit Service |
1d0348 |
</style>
|
|
Packit Service |
1d0348 |
<title></title>
|
|
Packit Service |
1d0348 |
</head>
|
|
Packit Service |
1d0348 |
<body>
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READ_DISK(3) BSD Library Functions Manual
|
|
Packit Service |
1d0348 |
ARCHIVE_READ_DISK(3)
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
NAME
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_new,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_behavior,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_logical,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_physical,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_hybrid,
|
|
Packit Service |
1d0348 |
archive_read_disk_entry_from_file,
|
|
Packit Service |
1d0348 |
archive_read_disk_gname,
|
|
Packit Service |
1d0348 |
archive_read_disk_uname,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_uname_lookup,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_gname_lookup,
|
|
Packit Service |
1d0348 |
archive_read_disk_set_standard_lookup —
|
|
Packit Service |
1d0348 |
functions for reading objects from disk
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
LIBRARY
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Streaming Archive Library
|
|
Packit Service |
1d0348 |
(libarchive, -larchive)
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
SYNOPSIS
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
#include
|
|
Packit Service |
1d0348 |
<archive.h>
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
struct
|
|
Packit Service |
1d0348 |
archive *
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_new(void);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_behavior(struct archive *,
|
|
Packit Service |
1d0348 |
int);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_logical(struct archive *);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_physical(struct archive *);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_hybrid(struct archive *);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
const char
|
|
Packit Service |
1d0348 |
*
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_gname(struct archive *,
|
|
Packit Service |
1d0348 |
gid_t);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
const char
|
|
Packit Service |
1d0348 |
*
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_uname(struct archive *,
|
|
Packit Service |
1d0348 |
uid_t);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_gname_lookup(struct archive *,
|
|
Packit Service |
1d0348 |
void *,
|
|
Packit Service |
1d0348 |
const char *(*lookup)(void *, gid_t),
|
|
Packit Service |
1d0348 |
void (*cleanup)(void *));
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_uname_lookup(struct archive *,
|
|
Packit Service |
1d0348 |
void *,
|
|
Packit Service |
1d0348 |
const char *(*lookup)(void *, uid_t),
|
|
Packit Service |
1d0348 |
void (*cleanup)(void *));
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_standard_lookup(struct archive *);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
int
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_entry_from_file(struct archive *,
|
|
Packit Service |
1d0348 |
struct archive_entry *, int fd,
|
|
Packit Service |
1d0348 |
const struct stat *);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
DESCRIPTION
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
These functions provide an API
|
|
Packit Service |
1d0348 |
for reading information about objects on disk. In
|
|
Packit Service |
1d0348 |
particular, they provide an interface for populating struct
|
|
Packit Service |
1d0348 |
archive_entry objects.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_new()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Allocates and initializes a
|
|
Packit Service |
1d0348 |
struct archive object suitable for reading object
|
|
Packit Service |
1d0348 |
information from disk.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_behavior()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Configures various behavior
|
|
Packit Service |
1d0348 |
options when reading entries from disk. The flags field
|
|
Packit Service |
1d0348 |
consists of a bitwise OR of one or more of the following
|
|
Packit Service |
1d0348 |
values:
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_HONOR_NODUMP
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Skip files and directories with
|
|
Packit Service |
1d0348 |
the nodump file attribute (file flag) set. By default, the
|
|
Packit Service |
1d0348 |
nodump file atrribute is ignored.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_MAC_COPYFILE
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Mac OS X specific. Read
|
|
Packit Service |
1d0348 |
metadata (ACLs and extended attributes) with copyfile(3). By
|
|
Packit Service |
1d0348 |
default, metadata is read using copyfile(3).
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_NO_ACL
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Do not read Access Control
|
|
Packit Service |
1d0348 |
Lists. By default, ACLs are read from disk.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_NO_FFLAGS
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Do not read file attributes
|
|
Packit Service |
1d0348 |
(file flags). By default, file attributes are read from
|
|
Packit Service |
1d0348 |
disk. See chattr(1) (Linux) or chflags(1) (FreeBSD, Mac OS
|
|
Packit Service |
1d0348 |
X) for more information on file attributes.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Do not traverse mount points.
|
|
Packit Service |
1d0348 |
By defaut, moint points are traversed.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_NO_XATTR
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Do not read extended file
|
|
Packit Service |
1d0348 |
attributes (xattrs). By default, extended file attributes
|
|
Packit Service |
1d0348 |
are read from disk. See xattr(7) (Linux), xattr(2) (Mac OS
|
|
Packit Service |
1d0348 |
X), or getextattr(8) (FreeBSD) for more information on
|
|
Packit Service |
1d0348 |
extended file attributes.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ARCHIVE_READDISK_RESTORE_ATIME
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Restore access time of
|
|
Packit Service |
1d0348 |
traversed files. By default, access time of traversed files
|
|
Packit Service |
1d0348 |
is not restored.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_logical(),
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_physical(),
|
|
Packit Service |
1d0348 |
archive_read_disk_set_symlink_hybrid()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
This sets the mode used for
|
|
Packit Service |
1d0348 |
handling symbolic links. The
|
|
Packit Service |
1d0348 |
’’logical’’ mode follows all
|
|
Packit Service |
1d0348 |
symbolic links. The ’’physical’’
|
|
Packit Service |
1d0348 |
mode does not follow any symbolic links. The
|
|
Packit Service |
1d0348 |
’’hybrid’’ mode currently behaves
|
|
Packit Service |
1d0348 |
identically to the ’’logical’’
|
|
Packit Service |
1d0348 |
mode.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_gname(),
|
|
Packit Service |
1d0348 |
archive_read_disk_uname()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Returns a user or group name
|
|
Packit Service |
1d0348 |
given a gid or uid value. By default, these always return a
|
|
Packit Service |
1d0348 |
NULL string.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_gname_lookup(),
|
|
Packit Service |
1d0348 |
archive_read_disk_set_uname_lookup()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
These allow you to override the
|
|
Packit Service |
1d0348 |
functions used for user and group name lookups. You may also
|
|
Packit Service |
1d0348 |
provide a void * pointer to a private data structure and a
|
|
Packit Service |
1d0348 |
cleanup function for that data. The cleanup function will be
|
|
Packit Service |
1d0348 |
invoked when the struct archive object is destroyed or when
|
|
Packit Service |
1d0348 |
new lookup functions are registered.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_set_standard_lookup()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
This convenience function
|
|
Packit Service |
1d0348 |
installs a standard set of user and group name lookup
|
|
Packit Service |
1d0348 |
functions. These functions use getpwuid(3) and getgrgid(3)
|
|
Packit Service |
1d0348 |
to convert ids to names, defaulting to NULL if the names
|
|
Packit Service |
1d0348 |
cannot be looked up. These functions also implement a simple
|
|
Packit Service |
1d0348 |
memory cache to reduce the number of calls to getpwuid(3)
|
|
Packit Service |
1d0348 |
and getgrgid(3).
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_entry_from_file()
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Populates a struct
|
|
Packit Service |
1d0348 |
archive_entry object with information about a particular
|
|
Packit Service |
1d0348 |
file. The archive_entry object must have already been
|
|
Packit Service |
1d0348 |
created with archive_entry_new(3) and at least one of the
|
|
Packit Service |
1d0348 |
source path or path fields must already be set. (If both are
|
|
Packit Service |
1d0348 |
set, the source path will be used.)
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Information is
|
|
Packit Service |
1d0348 |
read from disk using the path name from the struct
|
|
Packit Service |
1d0348 |
archive_entry object. If a file descriptor is provided, some
|
|
Packit Service |
1d0348 |
information will be obtained using that file descriptor, on
|
|
Packit Service |
1d0348 |
platforms that support the appropriate system calls.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
If a pointer to
|
|
Packit Service |
1d0348 |
a struct stat is provided, information from that structure
|
|
Packit Service |
1d0348 |
will be used instead of reading from the disk where
|
|
Packit Service |
1d0348 |
appropriate. This can provide performance benefits in
|
|
Packit Service |
1d0348 |
scenarios where struct stat information has already been
|
|
Packit Service |
1d0348 |
read from the disk as a side effect of some other operation.
|
|
Packit Service |
1d0348 |
(For example, directory traversal libraries often provide
|
|
Packit Service |
1d0348 |
this information.)
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Where
|
|
Packit Service |
1d0348 |
necessary, user and group ids are converted to user and
|
|
Packit Service |
1d0348 |
group names using the currently registered lookup functions
|
|
Packit Service |
1d0348 |
above. This affects the file ownership fields and ACL values
|
|
Packit Service |
1d0348 |
in the struct archive_entry object.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
More information about the
|
|
Packit Service |
1d0348 |
struct archive object and the overall design of the
|
|
Packit Service |
1d0348 |
library can be found in the libarchive(3) overview.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
EXAMPLE
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
The following illustrates basic
|
|
Packit Service |
1d0348 |
usage of the library by showing how to use it to copy an
|
|
Packit Service |
1d0348 |
item on disk into an archive.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
void
|
|
Packit Service |
1d0348 |
file_to_archive(struct archive *a, const char *name)
|
|
Packit Service |
1d0348 |
{
|
|
Packit Service |
1d0348 |
char buff[8192];
|
|
Packit Service |
1d0348 |
size_t bytes_read;
|
|
Packit Service |
1d0348 |
struct archive *ard;
|
|
Packit Service |
1d0348 |
struct archive_entry *entry;
|
|
Packit Service |
1d0348 |
int fd;
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ard =
|
|
Packit Service |
1d0348 |
archive_read_disk_new();
|
|
Packit Service |
1d0348 |
archive_read_disk_set_standard_lookup(ard);
|
|
Packit Service |
1d0348 |
entry = archive_entry_new();
|
|
Packit Service |
1d0348 |
fd = open(name, O_RDONLY);
|
|
Packit Service |
1d0348 |
if (fd < 0)
|
|
Packit Service |
1d0348 |
return;
|
|
Packit Service |
1d0348 |
archive_entry_copy_pathname(entry, name);
|
|
Packit Service |
1d0348 |
archive_read_disk_entry_from_file(ard, entry, fd, NULL);
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_write_header(a, entry);
|
|
Packit Service |
1d0348 |
while ((bytes_read = read(fd, buff, sizeof(buff))) > 0)
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_write_data(a, buff, bytes_read);
|
|
Packit Service |
1d0348 |
archive_write_finish_entry(a);
|
|
Packit Service |
1d0348 |
archive_read_free(ard);
|
|
Packit Service |
1d0348 |
archive_entry_free(entry);
|
|
Packit Service |
1d0348 |
}
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
RETURN VALUES
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Most functions return
|
|
Packit Service |
1d0348 |
ARCHIVE_OK (zero) on success, or one of several
|
|
Packit Service |
1d0348 |
negative error codes for errors. Specific error codes
|
|
Packit Service |
1d0348 |
include: ARCHIVE_RETRY for operations that might
|
|
Packit Service |
1d0348 |
succeed if retried, ARCHIVE_WARN for unusual
|
|
Packit Service |
1d0348 |
conditions that do not prevent further operations, and
|
|
Packit Service |
1d0348 |
ARCHIVE_FATAL for serious errors that make remaining
|
|
Packit Service |
1d0348 |
operations impossible.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_new()
|
|
Packit Service |
1d0348 |
returns a pointer to a newly-allocated struct archive object
|
|
Packit Service |
1d0348 |
or NULL if the allocation failed for any reason.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read_disk_gname()
|
|
Packit Service |
1d0348 |
and archive_read_disk_uname() return const char *
|
|
Packit Service |
1d0348 |
pointers to the textual name or NULL if the lookup failed
|
|
Packit Service |
1d0348 |
for any reason. The returned pointer points to internal
|
|
Packit Service |
1d0348 |
storage that may be reused on the next call to either of
|
|
Packit Service |
1d0348 |
these functions; callers should copy the string if they need
|
|
Packit Service |
1d0348 |
to continue accessing it.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
ERRORS
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
Detailed error codes and textual
|
|
Packit Service |
1d0348 |
descriptions are available from the archive_errno()
|
|
Packit Service |
1d0348 |
and archive_error_string() functions.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
SEE ALSO
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
archive_read(3),
|
|
Packit Service |
1d0348 |
archive_util(3), archive_write(3), archive_write_disk(3),
|
|
Packit Service |
1d0348 |
tar(1), libarchive(3)
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
HISTORY
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
The libarchive library
|
|
Packit Service |
1d0348 |
first appeared in FreeBSD 5.3. The
|
|
Packit Service |
1d0348 |
archive_read_disk interface was added to
|
|
Packit Service |
1d0348 |
libarchive 2.6 and first appeared in
|
|
Packit Service |
1d0348 |
FreeBSD 8.0.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
AUTHORS
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
The libarchive library
|
|
Packit Service |
1d0348 |
was written by Tim Kientzle
|
|
Packit Service |
1d0348 |
<kientzle@FreeBSD.org>.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
BUGS
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
The
|
|
Packit Service |
1d0348 |
’’standard’’ user name and group
|
|
Packit Service |
1d0348 |
name lookup functions are not the defaults because
|
|
Packit Service |
1d0348 |
getgrgid(3) and getpwuid(3) are sometimes too large for
|
|
Packit Service |
1d0348 |
particular applications. The current design allows the
|
|
Packit Service |
1d0348 |
application author to use a more compact implementation when
|
|
Packit Service |
1d0348 |
appropriate.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
The full list of
|
|
Packit Service |
1d0348 |
metadata read from disk by
|
|
Packit Service |
1d0348 |
archive_read_disk_entry_from_file() is necessarily
|
|
Packit Service |
1d0348 |
system-dependent.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
The
|
|
Packit Service |
1d0348 |
archive_read_disk_entry_from_file() function reads as
|
|
Packit Service |
1d0348 |
much information as it can from disk. Some method should be
|
|
Packit Service |
1d0348 |
provided to limit this so that clients who do not need ACLs,
|
|
Packit Service |
1d0348 |
for instance, can avoid the extra work needed to look up
|
|
Packit Service |
1d0348 |
such information.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
This API should
|
|
Packit Service |
1d0348 |
provide a set of methods for walking a directory tree. That
|
|
Packit Service |
1d0348 |
would make it a direct parallel of the archive_read(3) API.
|
|
Packit Service |
1d0348 |
When such methods are implemented, the
|
|
Packit Service |
1d0348 |
’’hybrid’’ symbolic link mode will
|
|
Packit Service |
1d0348 |
make sense.
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
BSD
|
|
Packit Service |
1d0348 |
April 3, 2017 BSD
|
|
Packit Service |
1d0348 |
|
|
Packit Service |
1d0348 |
</body>
|
|
Packit Service |
1d0348 |
</html>
|