tar -zxvf HPE_StoreOpen_Software_3.4.2_Source_Z7550-02501.tar.gz

This commit is contained in:
Redvers Davies
2019-11-29 17:04:03 -05:00
commit f909474d71
276 changed files with 143017 additions and 0 deletions

82
BUILDING.linux Normal file
View File

@@ -0,0 +1,82 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
Building HPE-SOS from source code
=======================================================================
1. Unpack the archive source file to a suitable location, for example
/usr/local/src/ :
$ gunzip HPE-SOS_SOURCE.tar.gz
$ tar xf HPE-SOS_SOURCE.tar
2. Required Software packages - HPE StoreOpen Software 3.4.2 requires the
following software packages on Linux. Make sure that these packages
are installed on the target computer.
1. libicu 50.1.2
2. libicu-devel 50.1.2
3. fuse 2.8.5 or higher (kernel and shared library modules)
4. fuse-libs 2.8.5 or higher
5. libxml2-2.7.6
6. e2fsprogs 1.41
For example:
$ rpm -q icu libicu-devel fuse fuse-libs fuse-devel
icu-50.1.2
libicu-devel-50.1.2
fuse-2.8.5-1
fuse-libs-2.8.5-1
fuse-devel-2.8.5-1
If any of the packages are not installed, then you must add them
from the installation DVD or other repository.
Note that further packages may need to be installed, depending on your
current system configuration. These may include uuid (part of the
e2fsprogs package) and libxml2.
3. Run the configure script
$ cd hpe-sos_3.4.2
$ ./configure
This will check for various dependencies; you must correct any problems
before you can proceed.
4. Build the package
$ make
5. Copy the compiled files to the correct locations
$ make install
The executables (ltfs, mkltfs, ltfsck) are placed in /usr/local/bin/
The supporting dynamic files are placed under /usr/local/lib/
6. On some systems it may be necessary to tell the linker/loader how to
locate the required dynamic library files. There are several ways
of doing this:
a) Add /usr/local/lib/ to the environment variable LD_LIBRARY_PATH
or
b) (As root) Add /usr/local/lib/ to the file /etc/ld.so.conf, and
then execute ldconfig
Refer to the man pages for ld.so and ldconfig for further details.
7. That's it! Refer to the README file for details of how to use LTFS.

65
BUILDING.macosx Normal file
View File

@@ -0,0 +1,65 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
Building HPE-SOS from source code (Mac OS X)
=======================================================================
1. Unpack the archive source file to a suitable location:
$ gunzip HPE-SOS_SOURCE.tar.gz
$ tar xf HPE-SOS_SOURCE.tar
2. Ensure that the following packages have been installed:
Apple Developer Tools
OSXFUSE (Refer to HPE Data Agile BURA Compatibility Matrix
at www.hpe.com/storage/BURACompatibility
for OSXFUSE version information)
ICU 50.1.2
3. Run the LTFS build script:
$ cd hpe-sos_3.4.2
$ ./build_osx_package.sh
If no errors are reported then the build was successful.
Do not use the configure script or Makefile; these are intended for
use on Linux platforms. The supplied build_osx_package.sh script
performs the steps needed to build on the Mac OS X platform.
4. The build process produces an installable package in the directory
hpe-sos_3.4.2/distribution/
Open that directory in Finder and select the HPEStoreOpenSoftware.pkg
The installation files will be copied to the directory
/Library/Frameworks/LTFS.framework/Versions/Current/
and symbolic links for the executables (mkltfs, ltfs, ltfsck, unltfs)
are created in /usr/local/bin/
5. That's it! Refer to the README file for details of how to use LTFS.
6. To uninstall LTFS, you need to delete the symbolic links in
/usr/local/bin/ for the executables (mkltfs, ltfs, ltfsck, unltfs)
and then delete the directory /Library/Frameworks/LTFS.framework
Execute the command:
pkgutil --forget com.hpe.ltfs
to cause the Package Manager subsystem to remove references to LTFS.

510
COPYING.LIB Normal file
View File

@@ -0,0 +1,510 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations
below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
^L
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it
becomes a de-facto standard. To achieve this, non-free programs must
be allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
^L
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control
compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
^L
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
^L
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least
three years, to give the same user the materials specified in
Subsection 6a, above, for a charge no more than the cost of
performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
^L
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
^L
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
^L
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
^L
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms
of the ordinary General Public License).
To apply these terms, attach the following notices to the library.
It is safest to attach them to the start of each source file to most
effectively convey the exclusion of warranty; and each file should
have at least the "copyright" line and a pointer to where the full
notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the library,
if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James
Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

573
README Normal file
View File

@@ -0,0 +1,573 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
The HPE LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
This file is part of the HPE Linear Tape File System package. HPE LTFS is
free software; you can redistribute it and/or modify it under the terms
of the GNU Lesser General Public License as published by the Free Software
Foundation, version 2.1 of the License.
HPE LTFS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
or download the license from <http://www.gnu.org/licenses/>.
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
HPE-SOS usage
=======================================================================
1. Build and/or install the HPE-SOS application
Installation instuctions are in INSTALLING.linux / INSTALLING.macosx
Information on how to build from source are in BUILDING.linux /
BUILDING.macosx / Building.windows
2. Ensure that /usr/local/bin/ is in your command search path
For example:
$ export PATH="$PATH:/usr/local/bin"
3. Format the tape cartridge in LTFS format
For Linux:
$ mkltfs -d /dev/st0
For Mac OS X:
$ mkltfs -d 0
Usage: mkltfs <options>
Available options are:
-d, --device=<name> Tape device (required)
-f, --force Force to format medium
-s, --tape-serial=<id> Tape serial number (6 alphanumeric ASCII characters)
-n, --volume-name=<name> Tape volume name (LTFS VOLUME by default)
-r, --rules=<rules> Rules for choosing files to write to the
index partition.
The syntax of the rule argument is:
size=1M
size=1M/name=pattern
size=1M/name=pattern1:pattern2:pattern3
A file is written to the index partition if it is
no larger than the given size AND matches at least
one of the name patterns (if specified). The size
argument accepts K, M, and G suffixes. Name
patterns might contain the special characters
'?' (match any single character) and '*' (match
zero or more characters).
--no-override Disallow mount-time data placement policy changes
-w, --wipe Restore the LTFS medium to an unpartitioned medium
(format to a legacy scratch medium)
-q, --quiet Suppress progress information and general messages
-t, --trace Enable function call tracing
--syslogtrace Enable diagnostic output to stderr and syslog
-V, --version Version information
-h, --help This help
-p, --advanced-help Full help, including advanced options
-g, --interactive Interactive mode
-i, --config=<file> Use the specified configuration file
(default: /usr/local/etc/ltfs.conf)
-e, --backend=<name> Use the specified tape device backend
(default: ltotape)
-b, --blocksize=<num> Set the LTFS record size (default: 524288)
-c, --no-compression Disable compression on the volume
-k, --keep-capacity Keep the tape medium's total capacity proportion
-x, --fulltrace Enable full function call tracing (slow)
--long-wipe Unformat the medium and erase any data on the tape
by overwriting with special data pattern.
This operation takes over 3 hours. Once you start,
you cannot interrupt it.
LTFS17085I Plugin: Loading "ltotape" driver
LTOTAPE backend options:
-o log_directory=<dir> log snapshot directory (default=/var/log)
-o nosizelimit remove 512kB limit (NOT RECOMMENDED)
Usage example:
mkltfs --device=/dev/nst0 --rules="size=100K"
mkltfs --device=/dev/nst0 --rules="size=1M/name=*.jpg"
mkltfs --device=/dev/nst0 --rules="size=1M/name=*.jpg:*.png"
4. Mount the formatted tape cartridge
$ mkdir /mnt/lto5
$ ltfs /mnt/lto5
ltfs options:
usage: ltfs mountpoint [options]
general options:
-o opt,[opt...] mount options
-h --help print help
-V --version print version
FUSE options:
-d -o debug enable debug output (implies -f)
-f foreground operation
-s disable multi-threaded operation
-o allow_other allow access to other users
-o allow_root allow access to root
-o nonempty allow mounts over non-empty file/dir
-o default_permissions enable permission checking by kernel
-o fsname=NAME set filesystem name
-o subtype=NAME set filesystem type
-o large_read issue large read requests (2.4 only)
-o max_read=N set maximum size of read requests
-o hard_remove immediate removal (don't hide files)
-o use_ino let filesystem set inode numbers
-o readdir_ino try to fill in d_ino in readdir
-o direct_io use direct I/O
-o kernel_cache cache files in kernel
-o [no]auto_cache enable caching based on modification times (off)
-o umask=M set file permissions (octal)
-o uid=N set file owner
-o gid=N set file group
-o entry_timeout=T cache timeout for names (1.0s)
-o negative_timeout=T cache timeout for deleted names (0.0s)
-o attr_timeout=T cache timeout for attributes (1.0s)
-o ac_attr_timeout=T auto cache timeout for attributes (attr_timeout)
-o intr allow requests to be interrupted
-o intr_signal=NUM signal to send on interrupt (10)
-o modules=M1[:M2...] names of modules to push onto filesystem stack
-o max_write=N set maximum size of write requests
-o max_readahead=N set maximum readahead
-o async_read perform reads asynchronously (default)
-o sync_read perform reads synchronously
-o atomic_o_trunc enable atomic open+truncate support
-o big_writes enable larger than 4kB writes
-o no_remote_lock disable remote file locking
Module options:
[subdir]
-o subdir=DIR prepend this directory to all paths (mandatory)
-o [no]rellinks transform absolute symlinks to relative
[iconv]
-o from_code=CHARSET original encoding of file names (default: UTF-8)
-o to_code=CHARSET new encoding of the file names (default: UTF-8)
LTFS options:
-o config_file=<file> Configuration file
(default: /usr/local/etc/ltfs.conf)
-o work_directory=<dir> LTFS work directory (default: /tmp/ltfs)
-o atime Update index if only access times have changed
-o noatime Do not update index if only access times have
changed (default)
-o tape_backend=<name> tape backend to use (default: ltotape)
-o iosched_backend=<name> I/O scheduler implementation to use
(default: unified, use "none" to disable)
-o umask=<mode> Override default permission mask
(3 octal digits, default: 000)
-o fmask=<mode> Override file permission mask
(3 octal digits, default: 000)
-o dmask=<mode> Override directory permission mask
(3 octal digits, default: 000)
-o min_pool_size=<num> Minimum write cache pool size. Cache objects
are 1 MB each (default: 25)
-o max_pool_size=<num> Maximum write cache pool size. Cache objects
are 1 MB each (default: 50)
-o rules=<rules> Rules for choosing files to write to the
index partition.
The syntax of the rule argument is:
size=1M
size=1M/name=pattern
size=1M/name=pattern1:pattern2:pattern3
A file is written to the index partition if
it is no larger than the given size AND
matches at least one of the name patterns (if
specified). The size argument accepts K, M,
and G suffixes. Name patterns might contain
the special characters '?' (match any single
character) and '*' (match zero or more
characters).
-o quiet Disable informational messages (same as
verbose=1)
-o trace Enable diagnostic output (same as verbose=3)
-o syslogtrace Enable diagnostic output to stderr and syslog
(same as verbose=303)
-o fulltrace Enable full call tracing (same as verbose=4)
-o verbose=<num> Override output verbosity directly (default:2)
-o eject Eject the cartridge after unmount
-o noeject Do not eject the cartridge after unmount
(default)
-o sync_type=<type> Specify sync type (default: time@5)
<type> should be specified as follows:
time@min: LTFS attempts to write an index
every 'min' minutes. min should be a
decimal value from 1 to 10. A value of
0 is equivalent to
"-o sync_type=unmount"
(default: min=5)
close: LTFS attempts to write an index
when each file is closed. This is not
recommended for normal use.
unmount: LTFS attempts to write an index
only when the medium is unmounted
-o force_mount_no_eod Skip EOD existence check when mounting
(read-only mount)
Only use for a CM corrupted medium
-o rollback_mount=<gen> Attempt to mount on previous index generation
(read-only mount)
-o release_device Clear device reservation (should be specified
with -o devname
-o capture_index Capture latest index to the work directory at
unmount
-a Advanced help, including standard FUSE options
453e LTFS17085I Plugin: Loading "ltotape" driver
LTOTAPE backend options:
-o devname=<dev> tape device (default=/dev/nst0)
-o log_directory=<dir> log snapshot directory (default=/var/log)
-o nosizelimit remove 512kB limit (NOT RECOMMENDED)
5. Write files to the LTFS volume
For example:
$ cp -RL /home/user1 /mnt/lto5/
6. Unmount the tape cartridge
This flushes the data buffer of the file system to the tape cartridge,
and prepares for eject.
$ umount /mnt/lto5
OR
$ fusermount -u /mnt/lto5 (Linux only)
7. If at some time in the future user wishes to remove the LTFS format from
the cartridge so that it can be reused for a different purpose, use
the unltfs utility. Note that this will IRRETRIEVABLY DESTROY all
contents of the cartridge, so use it only when you are sure that you
wish to erase the LTFS volume.
$ unltfs -d /dev/st0
unltfs options:
Usage: unltfs <options>
-d, --device=<name> specifies the tape drive to use
-y, --justdoit omits normal verification steps, reformats without
further prompting
-e --eject eject tape after operation completes successfully
-q, --quiet suppresses all progress output
-t, --trace displays detailed progress
-h, --help shows this help
-i, --config=<file> overrides the default config file
-b, --backend specifies a different tape backend subsystem
-x, --fulltrace displays debug information (verbose)
8. If the cartridge becomes inconsistent due to power failure, improper
unmount, or other exceptional conditions then the ltfsck utility can
be used to repair it / make it consistent again.
$ ltfsck /dev/st0
ltfsck options
Usage: ltfsck [options] filesys
filesys Device file for the tape drive
Available options are:
-g, --generation=<generation> Specify the generation to roll back
-r, --rollback Roll back to the point specified by -g
-n, --no-rollback Do not roll back. Verify the point specified
by -g (default)
-f, --full-recovery Recover extra data blocks into directory
_ltfs_lostandfound
-z, --deep-recovery Recover a cartridge with missing EOD
Some blocks might be erased, but recover to
final unmount point with an index version of
at least 2.0.0 or earlier. This option must
be used for a cartridge that cannot be
recovered by a normal repair)
-l, --list-rollback-points List rollback points
-m, --full-index-info Display full index information (works only
with the -l option)
-v, --traverse=<strategy> Set traverse mode for listing roll back
points. Strategy should be forward or
backward. (default: backward)
-j, --erase-history Erase history at rollback
-k, --keep-history Keep history at rollback (default)
-q, --quiet Suppress informational messages
-t, --trace Enable diagnostic output
--syslogtrace Enable diagnostic output to stderr and syslog
-V, --version Version information
-h, --help This help
-p, --advanced-help Full help, including advanced options
-i, --config=<file> Use the specified configuration file
(default: /usr/local/etc/ltfs.conf)
-e, --backend=<name> Override the default tape device backend
-x, --fulltrace Enable full function call tracing (slow)
--capture-index Capture index information to the current
directory (-g is effective for this option)
--salvage-rollback-points List the rollback points of a cartridge that
has no EOD
LTFS17085I Plugin: Loading "ltotape" driver
LTOTAPE backend options:
-o log_directory=<dir> log snapshot directory (default=/var/log)
-o nosizelimit remove 512kB limit (NOT RECOMMENDED)
Usage example:
ltfsck /dev/nst0
ltfsck --generation --rollback /dev/nst0
ltfsck --deep-recovery --full-recovery /dev/nst0
Changes from version v3.4.1 to 3.4.2:
=====================================
- Corrected issue switching in/out of append-only mode with LTO7/LTO8 drives
- Corrected issue with ltfscopy and md5sum verification
Changes from version v3.4.0 to 3.4.1:
=====================================
- Corrected issue affecting sending of library drive tickets to CVTL
- Corrected issue with truncation of barcodes
Changes from version v3.3.0 to 3.4.0:
=====================================
- Support append-only mode option flag for LTO7 & LTO8 drives
- Defect fixes
Changes from version v3.2.0 to 3.3.0:
=====================================
- Support for HPE LTO8 tape drives
- Support for SNIA 2.4 Percent Encoding
- Support for SNIA 2.4 Vol Avisory Locking
- Support for SNIA 2.4 Open for Write
- Defect fixes
Changes from version v3.1.0 to 3.2.0:
=====================================
- Support for Volume Advisory Locking
- Support for volume UUID
- Support for Windows Server 2016
- Support for macOS Sierra
- Support for capturing index by default (Windows and Mac Only)
- LTFSCOPY default behavior changed to prompt before overwriting files
- LTFSCOPY will preserve modification time with new option '-t'
- Added support for HPE Archive Manager tape identification and mounting the same as read only
- Defect fixes
Changes from version v3.0.0 to 3.1.0:
=====================================
- Hewlett Packard Enterprise Branding
Changes from version v2.3.0 to 3.0.0:
=====================================
- Support for HP LTO-7 Ultrium SAS standalone tape drives
- LTFS Configurator displays messages indicating the progress of the mount operation
- LTFS Configurator supports custom names for tape drives
- CartridgeBrowser utility supports search based on file attribute values
Changes from version v2.2.1 to 2.3.0:
=====================================
- Added multidrive support for windows
- Added support for icons and label to indicate the status of the cartridge in windows
- Added support for search option within Cartridge Browser
- Added new utility "LTFS Smart copy" for efficient data transfer from cartridge and content data verification for files on the cartridge.
- Implemented ability to list rollback points of a cartridge without EOD marker (--salvage-rollback-points)
- Installation in Linux (RHEL)is now using RPM package.
- LTFS is built with ICU version 50.1.2
- Added support for RHEL 7.0
- Added support for MacOSX 10.10
- Removed support for SLES
- Defect fixes
Changes from version v2.2.0 to 2.2.1:
=====================================
- Added 'interactive mode' for mkltfs utility.
- The default 'mkltfs' behavior modified to avoid user confirmation.
- The '--quite' option in 'mkltfs' and 'unltfs' utilities now does not imply '--force'
Changes from version v2.1.1 to 2.2.0:
=====================================
- Added support for LTFS Spec Version 2.2.0
- Added support for MAM Barcode attribute
- Added support for ICU version 4.8.1.1
- Added support for RHEL 6.5 and RHEL 5.10
- Added support for Windows 2012 R2 and Windows 8.1
- Removed support for MacOSX 10.6
- Defects fixed in Windows and Mac GUI
- Defects fixed in Windows and Mac Installer
- Defects fixed in LTFS core application
Changes from version v2.1.0 to 2.1.1:
======================================
- Error fixes in windows installer to support upgrade
- Fix to accept the index rules correctly when supplied using the LTFSConfigurator
- Fix in ltfsck when run with --deep-recovery option
- Fix to mount full tapes as read-only
- Fix to clear the EWSTATE flag when a full tape is rolled back with --erase-history option
- Fixed memory leaks
Changes from version v2.0.0 to 2.1.0:
======================================
- Enhanced LTFS driver for small file support(Improve file creation/listing time
when a directory has many small files)
- Improved Wizards and Configuration tool for Windows GUI
- Cartridge utilities can be run directly from LTFSconfigurator
- Default volume name is LTFS_VOLUME
- Enhanced support for LTO CM attributes
- Added support LTFS format specifications 2.1.0
- Added support for symbolic link for Linux and Mac
- Added support for rollback mount/read-only mount
- Added support to save the current index as a xml file on unmount or when 'ltfsck' is run.
- Application can run in background now in Mac.
- Rollback of index is now possible only by specifying the generation number of the index,
rollback using timespec of the index is disabled.
- Implemented signal handlers to handle kill/interrupt signals and unmount the volume even when
the mount is being done.
- Tape can be unformatted by specifying -w option to mkltfs
Changes from version v1.2.2 to v2.0.0:
======================================
- Added support for LTO6 tape drives
- Set the Application Format Version MAM attribute when formatting a volume
- Added support for four new virtual extended attributes (VEA's):
ltfs.softwareProduct, ltfs.softwareVendor, ltfs.softwareVersion,
ltfs.softwareFormatSpec
- Improved the handling of a cartridge that was not unmounted properly
- Improved the process for storing a file on the index partition when the
data placement policy is specified
- Modified to update the change time of a file or directory when the VEA
ltfs.modifyTime is written
- Fixed the problem that ltfs.mediaStorageAlert VEA is cleared when another
VEA is read
- Fixed a problem in ltfsck when trying to list rollback points and a corrupt
index is encountered
- Added a check for a write-protected cartridge in mkltfs
Changes from version v1.2.0 to v1.2.2:
======================================
- Added the unltfs utility
- Added "-o nosizelimit" option to ltfs
- Improved message reporting for advisory conditions that previously were
being reported as error conditions
- Installer on Mac OS X now tries to create the logfile directory if it
doesn't already exist
- Mac OS X package now includes an application to simplify the management
of an LTFS volume
Changes from version v1.1.0 to v1.2.0:
======================================
- Conforms with new LTFS Format Specification 2.0.0
- Backward compatibility with Version 1.0 formated tapes, and built-in
automatic migration mechanism to Version 2.0.0 format
- Improved the parsing and handling of the index information
- Supports standardized virtual extended attribute (VEA) names.
VEA names used in previous release of LTFS become obsolete and
no longer available.
- See Important Note below
- Enhanced the ability to recover the tapes in inconsistent state,
which was caused by unexpected power outage.
- Added a new function to flush the in-memory user data to the tape medium
at pre-defined timing; either sync at file close or sync periodically.
The default behaviour is now to sync the index every five minutes.
- Changed the command line syntax of ltfs and mkltfs command for
specifying the data placement rules
- Check for incompatible media and report problems in a helpful way
- Various minor corrections and updates
Important Note:
===============
Earlier versions of the HPE LTFS application supported the original 1.0 LTFS
format specification; version v1.2.0 and later supports the updated 2.0.0 LTFS
format specification. LTFS volumes created with application v1.2.0 will not
be readable in older versions of the LTFS application, as shown in the
following table:
Cartridge written by Cartridge written by Cartridge written by
LTFS application v1.1.0 or earlier v1.2.0 or later v2.1.0 or later
-------------------- ---------------------- ---------------------- -----------------------
v1.1.0 or earlier Read/Write ok Cannot be mounted N/A
v1.2.0 or later Readable ok; will Read/Write ok N/A
automatically be
converted to new
format if written
v2.1.0 or later Readable ok; will Readable ok; will Read/Write ok
automatically be automatically be
converted to new converted to new
format if written format if written
HPE recommends that all instances of HPE LTFS should be updated to latest version
to avoid these compatibility issues.
If for some reason it is important to maintain cartridges readable by
previous versions of the HPE LTFS application, care should be taken to avoid
writing to those cartridges with the new version of the application. This
may be accomplished by mounting the volume as read-only, or by using the
cartridge write-protect tab to prevent cartridge updates. However this
should be regarded as a temporary measure until all the application instances
can be updated to latest version.
Limitations:
============
1. When the tape cartridge is almost full, further write operations will
be prevented. The free space on the tape (e.g. from the df command)
will indicate that there is still some capacity available, but that
is reserved for updating the index when the tape is unmounted.
2. Future mounts of a cartridge that is almost full (has passed the
point at which "early warning" is reported) will mount as Read Only,
to prevent further modifications which may not fit on tape. This
status is cleared when a cartridge is reformatted (using mkltfs) or
when the volume is rolled back erasing history (using ltfsck).
3. (Mac OS X) LTFS does not support moving a folder within LTFS.
Any attempt to move a folder in such a manner will result in an
"operation not permitted" error, and the operation will be ignored.
The user can still move a file within LTFS, and the user can also move
a folder from LTFS to non-LTFS file system or vice versa.
4. (Mac OS X) Mac OS X's Spotlight will not display the files
on LTFS as a result of search.

42
ltfs/Makefile.am Executable file
View File

@@ -0,0 +1,42 @@
#
# %Z% %I% %W% %G% %U%
#
# ZZ_Copyright_BEGIN
#
#
# Licensed Materials - Property of IBM
#
# IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
#
# Copyright IBM Corp. 2010, 2014
#
# This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
# (formally known as IBM Linear Tape File System)
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
# you can redistribute it and/or modify it under the terms of the GNU Lesser
# General Public License as published by the Free Software Foundation,
# version 2.1 of the License.
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# or download the license from <http://www.gnu.org/licenses/>.
#
#
# ZZ_Copyright_END
#
###############################################################################
#
# Copyright (C) 2012 OSR Open Systems Resources, Inc.
#
###############################################################################
nobase_pkginclude_HEADERS = config.h
SUBDIRS = messages src conf init.d

828
ltfs/Makefile.in Normal file
View File

@@ -0,0 +1,828 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#
# %Z% %I% %W% %G% %U%
#
# ZZ_Copyright_BEGIN
#
#
# Licensed Materials - Property of IBM
#
# IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
#
# Copyright IBM Corp. 2010, 2014
#
# This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
# (formally known as IBM Linear Tape File System)
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
# you can redistribute it and/or modify it under the terms of the GNU Lesser
# General Public License as published by the Free Software Foundation,
# version 2.1 of the License.
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# or download the license from <http://www.gnu.org/licenses/>.
#
#
# ZZ_Copyright_END
#
###############################################################################
#
# Copyright (C) 2012 OSR Open Systems Resources, Inc.
#
###############################################################################
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = .
DIST_COMMON = $(am__configure_deps) $(nobase_pkginclude_HEADERS) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(top_srcdir)/configure \
build-aux/compile build-aux/config.guess build-aux/config.sub \
build-aux/depcomp build-aux/install-sh build-aux/ltmain.sh \
build-aux/missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(pkgincludedir)"
HEADERS = $(nobase_pkginclude_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir dist dist-all distcheck
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d "$(distdir)" \
|| { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr "$(distdir)"; }; }
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CRC_OPTIMIZE = @CRC_OPTIMIZE@
CYGPATH_W = @CYGPATH_W@
DEFAULT_DRIVER = @DEFAULT_DRIVER@
DEFAULT_IOSCHED = @DEFAULT_IOSCHED@
DEFAULT_KMI = @DEFAULT_KMI@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FUSE_MODULE_CFLAGS = @FUSE_MODULE_CFLAGS@
FUSE_MODULE_LIBS = @FUSE_MODULE_LIBS@
GENRB = @GENRB@
GREP = @GREP@
ICU_MODULE_CFLAGS = @ICU_MODULE_CFLAGS@
ICU_MODULE_LIBS = @ICU_MODULE_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML2_MODULE_CFLAGS = @LIBXML2_MODULE_CFLAGS@
LIBXML2_MODULE_LIBS = @LIBXML2_MODULE_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKGDATA = @PKGDATA@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
UUID_MODULE_CFLAGS = @UUID_MODULE_CFLAGS@
UUID_MODULE_LIBS = @UUID_MODULE_LIBS@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
nobase_pkginclude_HEADERS = config.h
SUBDIRS = messages src conf init.d
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool config.lt
install-nobase_pkgincludeHEADERS: $(nobase_pkginclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(nobase_pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
$(am__nobase_list) | while read dir files; do \
xfiles=; for file in $$files; do \
if test -f "$$file"; then xfiles="$$xfiles $$file"; \
else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
test -z "$$xfiles" || { \
test "x$$dir" = x. || { \
echo "$(MKDIR_P) '$(DESTDIR)$(pkgincludedir)/$$dir'"; \
$(MKDIR_P) "$(DESTDIR)$(pkgincludedir)/$$dir"; }; \
echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(pkgincludedir)/$$dir'"; \
$(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(pkgincludedir)/$$dir" || exit $$?; }; \
done
uninstall-nobase_pkgincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(nobase_pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod u+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@$(am__cd) '$(distuninstallcheck_dir)' \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(HEADERS) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am: install-nobase_pkgincludeHEADERS
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-nobase_pkgincludeHEADERS
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
ctags-recursive install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-generic distclean-hdr \
distclean-libtool distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-nobase_pkgincludeHEADERS install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-nobase_pkgincludeHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

9056
ltfs/aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

192
ltfs/assemble-framework.sh Executable file
View File

@@ -0,0 +1,192 @@
#!/bin/sh
#
# %Z% %I% %W% %G% %U%
#
# ZZ_Copyright_BEGIN
#
#
# Licensed Materials - Property of IBM
#
# IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
#
# Copyright IBM Corp. 2010, 2014
#
# This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
# (formally known as IBM Linear Tape File System)
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
# you can redistribute it and/or modify it under the terms of the GNU Lesser
# General Public License as published by the Free Software Foundation,
# version 2.1 of the License.
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# or download the license from <http://www.gnu.org/licenses/>.
#
#
# ZZ_Copyright_END
#
#############################################################################
#
# FILE NAME: assemble-framework.sh
#
# DESCRIPTION: Automates assembly of OS X framework
# skeleton for LTFS.
#
# AUTHOR: Michael A. Richmond
# IBM Almaden Research Center
# mar@almaden.ibm.com
#
#############################################################################
BASEDIR=`pwd`
DIRNAME=`dirname $0`
PROJECT_NAME=LTFS
PROJECT_VERSION=3.4.2
FRAMEWORK_NAME=${PROJECT_NAME}.framework
OUTPUT_DIR=distribution
BUNDLE_IDENTIFIER=com.hpe.ltfs
BUNDLE_REGION=English
BUNDLE_EXECUTABLE=ltfs
##########################################################################
##########################################################################
# Create folders for framework in current directory
create_framework_structure()
{
umask 00
mkdir Versions
mkdir Versions/${PROJECT_VERSION}
ln -s ${PROJECT_VERSION} Versions/Current
mkdir Versions/${PROJECT_VERSION}/Headers
ln -s Versions/Current/Headers Headers
mkdir Versions/Current/Resources
ln -s Versions/Current/Resources Resources
# Prefix for project install...
mkdir Versions/Current/usr
mkdir Versions/Current/usr/lib
ln -s Versions/Current/usr/lib Libraries
}
create_infoplist()
{
packageName=$1
packageVersion=$2
bundleName=$3
bundleIdentifier=$4
bundleDevelopmentRegion=$5
bundleExecutable=$6
cat > Resources/Info.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>${bundleDevelopmentRegion}</string>
<key>CFBundleExecutable</key>
<string>${bundleExecutable}</string>
<key>CFBundleGetInfoString</key>
<string>${packageName} ${packageVersion}</string>
<key>CFBundleIdentifier</key>
<string>${bundleIdentifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${bundleName}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>${packageVersion}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${packageVersion}</string>
</dict>
</plist>
EOF
}
print_usage()
{
echo "usage: "`basename $0`" [clean|distclean]"
echo ""
echo " This script assembles the skeleton for an OS X framework."
echo ""
echo " The 'clean' option cleans up any previously built"
echo " framework."
echo ""
}
##########################################################################
##########################################################################
if [ $# -ne 0 ]; then
case ${1} in
clean)
cd ${BASEDIR}
\rm -rf ${OUTPUT_DIR}
exit 0
;;
*)
print_usage
cd ${BASEDIR}
exit 1
;;
esac
fi
##
## create working directory...
##
cd ${BASEDIR}
mkdir ${OUTPUT_DIR}
##
## create framework structure...
##
cd ${BASEDIR}/${OUTPUT_DIR}
mkdir ${FRAMEWORK_NAME}
cd ${FRAMEWORK_NAME}
create_framework_structure
##
## Create Info.plist...
##
cd ${BASEDIR}/${OUTPUT_DIR}/${FRAMEWORK_NAME}
create_infoplist "${PROJECT_NAME}" "${PROJECT_VERSION}" "${PROJECT_NAME}" "${BUNDLE_IDENTIFIER}" "${BUNDLE_REGION}" "${BUNDLE_EXECUTABLE}"
##
## Set permissions...
##
cd ${BASEDIR}/${OUTPUT_DIR}/${FRAMEWORK_NAME}
find . -type d |xargs chmod a+rx
cd ${BASEDIR}

143
ltfs/build-aux/compile Normal file
View File

@@ -0,0 +1,143 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2009-10-06.20; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
# Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand `-c -o'.
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file `INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
esac
ofile=
cfile=
eat=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we strip `-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

1501
ltfs/build-aux/config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

1705
ltfs/build-aux/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

630
ltfs/build-aux/depcomp Executable file
View File

@@ -0,0 +1,630 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
# Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u="sed s,\\\\\\\\,/,g"
depmode=msvisualcpp
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

520
ltfs/build-aux/install-sh Executable file
View File

@@ -0,0 +1,520 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2009-04-28.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

8406
ltfs/build-aux/ltmain.sh Executable file

File diff suppressed because it is too large Load Diff

376
ltfs/build-aux/missing Executable file
View File

@@ -0,0 +1,376 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
# 2008, 2009 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
\`g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# normalize program name to check for.
program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program). This is about non-GNU programs, so use $1 not
# $program.
case $1 in
lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
tar*)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $program in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te*)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison*|yacc*)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex*|flex*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit $?
fi
;;
makeinfo*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar*)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

132
ltfs/build_package_linux.sh Executable file
View File

@@ -0,0 +1,132 @@
#! /bin/bash
#############################################################################
#
# FILE NAME: build_package_linux.sh
#
# DESCRIPTION: Automates build of LTFS for linux.
#
# AUTHOR: Murali
#
#############################################################################
#
# (C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
#
#############################################################################
LTFS_CODE_DIRECTORY=""
LTFS_NAME=""
LTFS_VERSION=""
LTFS_SOURCE_NAME=""
LTFS_RELEASE=""
LTFS_SPEC_NAME="ltfs.spec"
#RPM directories
RPM_SOURCES_DIR=""
RPM_SPECS_DIR=""
RPM_SRPMS_DIR=""
RPM_RPMS_DIR=""
RPM_ARCH_NAME=""
function initialize_global_variables() {
# Check whether rpm installed or not
temp=`rpm -q rpm`
if [ $? -ne 0 ] ; then
RET_VAL=$?
echo -e "RPM not installed !!"
exit $EXIT_VALUE
fi
if [[ "$temp" =~ "not installed" ]]; then
echo "RPM Not Found";
else
echo "Initializing the RPM global variables...";
RPM_SOURCES_DIR=`rpm -E %{_sourcedir}`
RPM_SPECS_DIR=`rpm -E %{_specdir}`
RPM_SRPMS_DIR=`rpm -E %{_srcrpmdir}`
RPM_RPMS_DIR=`rpm -E %{_rpmdir}`
RPM_ARCH_NAME=`uname -m`
LTFS_CODE_DIRECTORY=`pwd`
LTFS_NAME=`grep Name: $LTFS_SPEC_NAME | awk '{print $2}'`
LTFS_VERSION=`grep Version: $LTFS_SPEC_NAME | awk '{print $2}'`
LTFS_SOURCE_NAME=`grep Source0: $LTFS_SPEC_NAME | awk '{print $2}'`
LTFS_RELEASE=`grep Release: $LTFS_SPEC_NAME | awk '{print $2}'`
fi
}
function build_ltfs() {
echo "Building ltfs..."
cd ../
temp_dir=`pwd`
if [ -d "$temp_dir/$LTFS_NAME-$LTFS_VERSION" ]; then
rm -rf $temp_dir/$LTFS_NAME-$LTFS_VERSION
fi
if [ -d "$temp_dir/$LTFS_SOURCE_NAME" ]; then
rm -rf $temp_dir/$LTFS_SOURCE_NAME
fi
cp -rf $LTFS_CODE_DIRECTORY $LTFS_NAME-$LTFS_VERSION
tar -zcvf $LTFS_SOURCE_NAME $LTFS_NAME-$LTFS_VERSION
mkdir -p $RPM_SOURCES_DIR
cp -f $LTFS_SOURCE_NAME $RPM_SOURCES_DIR
cd $LTFS_CODE_DIRECTORY
rpmbuild -ba $LTFS_SPEC_NAME
if [ $? -ne 0 ] ; then
RET_VAL=$?
echo -e "RPM build failed !!"
exit $EXIT_VALUE
fi
}
function copy_ltfs_build() {
echo "Copying the ltfs binary rpm..."
if [ -d "$LTFS_CODE_DIRECTORY/build" ]; then
rm -rf $LTFS_CODE_DIRECTORY/build
fi
mkdir -p $LTFS_CODE_DIRECTORY/build
cp $RPM_RPMS_DIR/$RPM_ARCH_NAME/$LTFS_NAME-$LTFS_VERSION-$LTFS_RELEASE.$RPM_ARCH_NAME.rpm $LTFS_CODE_DIRECTORY/build
cp $RPM_SRPMS_DIR/$LTFS_NAME-$LTFS_VERSION-$LTFS_RELEASE.src.rpm $LTFS_CODE_DIRECTORY/build
}
function packaging_binaries() {
echo "Producing binary tarball"
cd $LTFS_CODE_DIRECTORY/build
mkdir binary_package
cd binary_package
cp ../../doc/COPYING.LIB .
cp ../../doc/INSTALLING.linux .
cp ../../doc/README .
cp ../$LTFS_NAME-$LTFS_VERSION-$LTFS_RELEASE.$RPM_ARCH_NAME.rpm .
tar -cvzf $LTFS_NAME-$LTFS_VERSION-BINARIES-RHEL.$RPM_ARCH_NAME.tar.gz COPYING.LIB INSTALLING.linux README $LTFS_NAME-$LTFS_VERSION-$LTFS_RELEASE.$RPM_ARCH_NAME.rpm
}
function packaging_source() {
echo "Producing source tarball"
cd $LTFS_CODE_DIRECTORY/build
mkdir source_package
cd source_package
svn export https://csvnsdc-pro.sdc.hpecorp.net:18490/svn/swd-hpltfs/trunk/ltfs ltfs
cp ../../doc/COPYING.LIB .
cp ../../doc/BUILDING.linux .
cp ../../doc/BUILDING.macosx .
cp ../../doc/README .
tar -cvzf $LTFS_NAME-$LTFS_VERSION-SOURCE.tar.gz COPYING.LIB BUILDING.linux BUILDING.macosx README ltfs
}
function Main() {
initialize_global_variables
build_ltfs
copy_ltfs_build
packaging_binaries
packaging_source
}
Main $@

394
ltfs/build_package_osx.sh Executable file
View File

@@ -0,0 +1,394 @@
#!/bin/sh
#
# %Z% %I% %W% %G% %U%
#
# ZZ_Copyright_BEGIN
#
#
# Licensed Materials - Property of IBM
#
# IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
#
# Copyright IBM Corp. 2010, 2014
#
# This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
# (formally known as IBM Linear Tape File System)
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
# you can redistribute it and/or modify it under the terms of the GNU Lesser
# General Public License as published by the Free Software Foundation,
# version 2.1 of the License.
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# or download the license from <http://www.gnu.org/licenses/>.
#
#
# ZZ_Copyright_END
#
#############################################################################
#
# FILE NAME: build_package_osx.sh
#
# DESCRIPTION: Automates build of LTFS for OS X.
#
# AUTHOR: Michael A. Richmond
# IBM Almaden Research Center
# mar@almaden.ibm.com
#
#############################################################################
#
# (C) Copyright 201 - 2017 Hewlett Packard Enterprise Development LP
#
# Changes to support building for HPE environment
# - ltotape backend; clean ltfs.conf; add unltfs utility
#
#############################################################################
#DEBUG_FLAGS="-DDEBUG -DTRACE"
#DEBUG_FLAGS="-DDEBUG"
DEBUG_FLAGS=""
ICU4C_FRAMEWORK_DIR=/Library/Frameworks/ICU.framework
MACFUSE_FRAME_WORK_DIR=/Library/Frameworks/MacFUSE.framework
OSXFUSE_FRAME_WORK_DIR=/Library/Frameworks/OSXFUSE.framework
FUSE="NONE";
#
# LTFS version
#
LTFS_FRAMEWORK=LTFS.framework
LTFS_FRAMEWORK_EXECUTABLE=LTFS
LTFS_VERSION=3.4.2
OUTPUT_DIR_NAME=distribution
BASEDIR=`pwd`
#
# Final install path
#
LTFS_INSTALL_PREFIX=/Library/Frameworks/${LTFS_FRAMEWORK}/Versions/Current/usr
LTFS_CONF_PREFIX=/Library/Frameworks/${LTFS_FRAMEWORK}/Versions/Current/etc
LTFS_FRAMEWORK_DIR=${BASEDIR}/${OUTPUT_DIR_NAME}/${LTFS_FRAMEWORK}
LTFS_BUILD_OUTPUT_DIR=${LTFS_FRAMEWORK_DIR}/Versions/Current/usr
LTFS_SRC_DIR=${BASEDIR}/src
LTFS_CONF_DIR=${BASEDIR}/conf
TARBALL_VERSION=`echo ${LTFS_VERSION} | tr '.' '_'`
LTFS_TARBALL=ltfs-iokit-bin-v${TARBALL_VERSION}.tar.gz
if [ "x${GNUMAKE}" = "x" ]; then
GNUMAKE=/usr/bin/gnumake
fi
###############################################################################
###############################################################################
check_prereqs()
{
# ICU4C
if [ ! -e ${ICU4C_FRAMEWORK_DIR} ]; then
echo "error: prerequiste 'ICU' is not installed in '${ICU4C_FRAMEWORK_DIR}'."
exit 1
else
for i in `ls -l ${ICU4C_FRAMEWORK_DIR}/Versions | grep Current`; do
VERSION=$i
done
echo "info: prerequiste 'ICU ${VERSION}' is installed in '${ICU4C_FRAMEWORK_DIR}'."
fi
# MacFUSE
if [ -e ${MACFUSE_FRAME_WORK_DIR} ] &&
[ -e /usr/local/include/fuse.h ] &&
[ -e /usr/local/lib/libfuse.dylib ] &&
[ -e /usr/local/lib/libfuse_ino64.dylib ]; then
echo "info: prerequiste 'MacFUSE' is installed."
FUSE="MACFUSE"
fi
# OSXFUSE
if [ -e ${OSXFUSE_FRAME_WORK_DIR} ] &&
[ -e /usr/local/include/osxfuse/fuse.h ] &&
[ -e /usr/local/lib/libosxfuse.dylib ] &&
[ -e /usr/local/lib/libosxfuse_i64.dylib ]; then
echo "info: prerequiste 'OSXFUSE $i' is installed."
FUSE="OSXFUSE"
fi
if [ "x$FUSE" = "xNONE" ]; then
echo "error: prerequiste 'MacFUSE or OSXFUSE' is not installed in '/Library/Frameworks/'."
exit 1
fi
}
PWD=`pwd`
if [ $# -ne 0 ]; then
if [ "${1}" == "clean" ]; then
echo "Cleaning up the ltfs build folder in"
echo "${OUTPUT_DIR_NAME}"
cd ${BASEDIR}
/bin/rm -rf ${OUTPUT_DIR_NAME}
##
## Added for HPE-SOS
##
cd ${BASEDIR}/conf
${GNUMAKE} -f Makefile.osx clean-local
cd ${BASEDIR}/messages
${GNUMAKE} -f Makefile.osx clean-local
cd ${LTFS_SRC_DIR}
${GNUMAKE} -f Makefile.osx clean
exit 0
else
echo "usage: build_osx_package.sh [clean]"
echo ""
echo " This script builds the LTFS system from source and produces"
echo " a tar.gz file in the directory '${OUTPUT_DIR_NAME}'."
echo ""
echo " The 'clean' option cleans up the source and object trees."
exit 1
fi
fi
##
## create working directory...
##
cd ${BASEDIR}
if [ -e ${OUTPUT_DIR_NAME} ]; then
echo "error: Output directory '${OUTPUT_DIR_NAME}' already exists."
echo " Please use '"`basename $0`" clean' to remove previous build output."
echo ""
exit 1
fi
mkdir ${OUTPUT_DIR_NAME}
echo ""
echo "Checking pre-requisites..."
check_prereqs
#
# Create framework skeleton
#
echo ""
echo "Creating framework skeleton..."
cd ${BASEDIR}
./assemble-framework.sh
if [ $? != "0" ]; then
echo "Encountered problem assembling framework skeleton."
exit 1
fi
#
# Create unix directory tree in framework
#
echo ""
echo "Creating output folders in '${OUTPUT_DIR_NAME}..."
cd ${LTFS_BUILD_OUTPUT_DIR}
mkdir -p bin
mkdir -p lib/ltfs
mkdir -p share/ltfs
#
# Compile code
#
echo ""
echo "Building message library..."
cd ${BASEDIR}/messages
${GNUMAKE} -f Makefile.osx clean-local && \
${GNUMAKE} -f Makefile.osx
if [ $? != "0" ]; then
echo "Encountered problem building message library."
exit 1
fi
echo ""
echo "Building binaries..."
cd ${LTFS_SRC_DIR}
${GNUMAKE} -f Makefile.osx clean && \
if [ "x${FUSE}" = "MACFUSE" ]; then
${GNUMAKE} -f Makefile.osx CONFDIR="${LTFS_CONF_PREFIX}" FUSE=MACFUSE PREFIX="${LTFS_INSTALL_PREFIX}" DEBUG="${DEBUG_FLAGS}"
else
${GNUMAKE} -f Makefile.osx CONFDIR="${LTFS_CONF_PREFIX}" FUSE=OSXFUSE PREFIX="${LTFS_INSTALL_PREFIX}" DEBUG="${DEBUG_FLAGS}"
fi
if [ $? != "0" ]; then
echo "Encountered problem during build."
exit 1
fi
#
# Copy binaries to output folder
#
echo ""
echo "Copying binaries to output folders..."
cd ${LTFS_SRC_DIR}
BIN_FILES="ltfs mkltfs ltfsck unltfs"
for f in ${BIN_FILES}
do
echo "Copying ${f} to ${BASEDIR}/${OUTPUT_DIR_NAME}${LTFS_INSTALL_PREFIX}/bin/"
cp ${LTFS_SRC_DIR}/${f} ${LTFS_BUILD_OUTPUT_DIR}/bin
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
done
cp ${LTFS_SRC_DIR}/libltfs.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
cp -R ${LTFS_SRC_DIR}/libiosched-unified.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
cp -R ${LTFS_SRC_DIR}/libiosched-fcfs.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
cp -R ${LTFS_SRC_DIR}/libkmi-flatfile.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
cp -R ${LTFS_SRC_DIR}/libkmi-simple.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
#cp -R ${LTFS_SRC_DIR}/libdriver-iokit.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
#if [ $? != "0" ]; then
# echo "Encountered problem copying files."
# exit 1
#fi
#cp -R ${LTFS_SRC_DIR}/libdriver-file.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
#if [ $? != "0" ]; then
# echo "Encountered problem copying files."
# exit 1
#fi
#cp -R ${LTFS_SRC_DIR}/libdriver-itdtimg.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
#if [ $? != "0" ]; then
# echo "Encountered problem copying files."
# exit 1
#fi
cp -R ${LTFS_SRC_DIR}/libdriver-ltotape.${LTFS_VERSION}.dylib ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
if [ $? != "0" ]; then
echo "Encountered problem copying files."
exit 1
fi
umask 00
cd ${LTFS_BUILD_OUTPUT_DIR}/lib
ln -fs libltfs.${LTFS_VERSION}.dylib libltfs.dylib
cd ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
ln -fs libdriver-iokit.${LTFS_VERSION}.dylib libdriver-iokit.dylib
ln -fs libdriver-file.${LTFS_VERSION}.dylib libdriver-file.dylib
ln -fs libdriver-ltotape.${LTFS_VERSION}.dylib libdriver-ltotape.dylib
#ln -fs libdriver-itdtimg.${LTFS_VERSION}.dylib libdriver-itdtimg.dylib
cd ${LTFS_BUILD_OUTPUT_DIR}/lib/ltfs
ln -fs libiosched-unified.${LTFS_VERSION}.dylib libiosched-unified.dylib
ln -fs libiosched-fcfs.${LTFS_VERSION}.dylib libiosched-fcfs.dylib
ln -fs libkmi-flatfile.${LTFS_VERSION}.dylib libkmi-flatfile.dylib
ln -fs libkmi-simple.${LTFS_VERSION}.dylib libkmi-simple.dylib
# Set up framework executatble
cd ${LTFS_FRAMEWORK_DIR}
ln -fs Versions/Current/usr/lib/libltfs.${LTFS_VERSION}.dylib ${LTFS_FRAMEWORK_EXECUTABLE}
#
# Copy over documentation
#
echo ""
echo "Copying documentation..."
cd ${LTFS_BUILD_OUTPUT_DIR}/share/ltfs
mkdir doc
cp -R ${BASEDIR}/doc/[A-z]* ./doc/
#
# Copy over header files
#
echo ""
echo "Copying header files..."
cd ${LTFS_BUILD_OUTPUT_DIR}
mkdir -p include/ltfs/arch
HEADER_FILES="ltfsprintf.h"
for f in ${HEADER_FILES}
do
cp ${BASEDIR}/src/${f} ${LTFS_BUILD_OUTPUT_DIR}/include/ltfs/${f}
done
HEADER_FILES="ltfs.h ltfs_types.h queue.h tape_ops.h plugin.h config_file.h ltfs_error.h"
for f in ${HEADER_FILES}
do
cp ${BASEDIR}/src/libltfs/${f} ${LTFS_BUILD_OUTPUT_DIR}/INCLUDE/LTFS/${f}
done
cd ${LTFS_FRAMEWORK_DIR}/Versions/Current/Headers
ln -s ../usr/include/ltfs ltfs
#
# Create and copy over configuration file
#
echo ""
echo "Copying configuration file..."
cd ${LTFS_CONF_DIR}
${GNUMAKE} -f Makefile.osx clean-local && \
${GNUMAKE} LIBDIR=${LTFS_INSTALL_PREFIX}/lib DEFAULT_DRIVER=ltotape DEFAULT_IOSCHED=unified DEFAULT_KMI=none CONFDIR="${LTFS_CONF_PREFIX}" -f Makefile.osx
mkdir -p ${LTFS_FRAMEWORK_DIR}/Versions/Current/etc
cp ${LTFS_CONF_DIR}/ltfs.conf ${LTFS_FRAMEWORK_DIR}/Versions/Current/etc/ltfs.conf
cp ${LTFS_CONF_DIR}/ltfs.conf.local ${LTFS_FRAMEWORK_DIR}/Versions/Current/etc/ltfs.conf.local
##
## Set permissions...
##
echo ""
echo "Setting permissions..."
cd ${LTFS_BUILD_OUTPUT_DIR}
find bin -type f | xargs chmod a+rx
find lib -type f | xargs chmod a+rx
find lib -type d | xargs chmod a+rx
find share -type d | xargs chmod a+rx
find share -type f | xargs chmod a+r
find include -type d | xargs chmod a+rx
find include -type f | xargs chmod a+r
##
## Building OS X .pkg install package
##
cd ${BASEDIR}/${OUTPUT_DIR_NAME}
PACKAGE_MAKER=/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
${PACKAGE_MAKER} -d ${BASEDIR}/osx_installer/LTFS.pmdoc -v -i com.hpe.ltfs -o ${BASEDIR}/${OUTPUT_DIR_NAME}/HPEStoreOpenSoftware.pkg
cd ${BASEDIR}
echo "Build complete"

22
ltfs/conf/Makefile.am Normal file
View File

@@ -0,0 +1,22 @@
dist_sysconf_DATA = ltfs.conf
ltfs.conf: ltfs.conf.linux
rm -f ltfs.conf
sed -e "s!__LIBDIR__!@libdir@!" ltfs.conf.linux >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_DRIVER__!$(DEFAULT_DRIVER)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_IOSCHED__!$(DEFAULT_IOSCHED)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_KMI__!$(DEFAULT_KMI)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__CONFDIR__!@sysconfdir@!" ltfs.conf.tmp >ltfs.conf
rm ltfs.conf.tmp
install-data-local:
if [ ! -f "$(sysconfdir)/ltfs.conf.local" ]; then \
cp ltfs.conf.local "$(sysconfdir)/ltfs.conf.local"; \
fi
clean-local:
rm -f ltfs.conf

441
ltfs/conf/Makefile.in Normal file
View File

@@ -0,0 +1,441 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = conf
DIST_COMMON = $(dist_sysconf_DATA) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(sysconfdir)"
DATA = $(dist_sysconf_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CRC_OPTIMIZE = @CRC_OPTIMIZE@
CYGPATH_W = @CYGPATH_W@
DEFAULT_DRIVER = @DEFAULT_DRIVER@
DEFAULT_IOSCHED = @DEFAULT_IOSCHED@
DEFAULT_KMI = @DEFAULT_KMI@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FUSE_MODULE_CFLAGS = @FUSE_MODULE_CFLAGS@
FUSE_MODULE_LIBS = @FUSE_MODULE_LIBS@
GENRB = @GENRB@
GREP = @GREP@
ICU_MODULE_CFLAGS = @ICU_MODULE_CFLAGS@
ICU_MODULE_LIBS = @ICU_MODULE_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML2_MODULE_CFLAGS = @LIBXML2_MODULE_CFLAGS@
LIBXML2_MODULE_LIBS = @LIBXML2_MODULE_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKGDATA = @PKGDATA@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
UUID_MODULE_CFLAGS = @UUID_MODULE_CFLAGS@
UUID_MODULE_LIBS = @UUID_MODULE_LIBS@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
dist_sysconf_DATA = ltfs.conf
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign conf/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign conf/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-dist_sysconfDATA: $(dist_sysconf_DATA)
@$(NORMAL_INSTALL)
test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
@list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \
done
uninstall-dist_sysconfDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(sysconfdir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(sysconfdir)" && rm -f $$files
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(sysconfdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-data-local
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-dist_sysconfDATA
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-dist_sysconfDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
clean-local distclean distclean-generic distclean-libtool \
distdir dvi dvi-am html html-am info info-am install \
install-am install-data install-data-am install-data-local \
install-dist_sysconfDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-dist_sysconfDATA
ltfs.conf: ltfs.conf.linux
rm -f ltfs.conf
sed -e "s!__LIBDIR__!@libdir@!" ltfs.conf.linux >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_DRIVER__!$(DEFAULT_DRIVER)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_IOSCHED__!$(DEFAULT_IOSCHED)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_KMI__!$(DEFAULT_KMI)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__CONFDIR__!@sysconfdir@!" ltfs.conf.tmp >ltfs.conf
rm ltfs.conf.tmp
install-data-local:
if [ ! -f "$(sysconfdir)/ltfs.conf.local" ]; then \
cp ltfs.conf.local "$(sysconfdir)/ltfs.conf.local"; \
fi
clean-local:
rm -f ltfs.conf
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

15
ltfs/conf/Makefile.osx Normal file
View File

@@ -0,0 +1,15 @@
ltfs.conf: ltfs.conf.osx
rm -f ltfs.conf
sed -e "s!__LIBDIR__!$(LIBDIR)!" ltfs.conf.osx >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_DRIVER__!$(DEFAULT_DRIVER)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_IOSCHED__!$(DEFAULT_IOSCHED)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__DEFAULT_KMI__!$(DEFAULT_KMI)!" ltfs.conf.tmp >ltfs.conf
mv ltfs.conf ltfs.conf.tmp
sed -e "s!__CONFDIR__!$(CONFDIR)!" ltfs.conf.tmp >ltfs.conf
rm ltfs.conf.tmp
clean-local:
rm -f ltfs.conf

42
ltfs/conf/ltfs.conf.linux Normal file
View File

@@ -0,0 +1,42 @@
# Automatically generated LTFS configuration file for Linux.
# Edit this file to add or remove tape driver plugins and I/O
# schedulers or to change default settings.
#
# To make configuration changes that will persist across software
# updates, edit ltfs.conf.local instead of this file.
# Tape device plugins
# Syntax: plugin driver PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin driver ltotape __LIBDIR__/ltfs/libdriver-ltotape.so
# plugin driver ibmtape __LIBDIR__/ltfs/libdriver-ibmtape.so
# plugin driver file __LIBDIR__/ltfs/libdriver-file.so
# plugin driver itdtimg __LIBDIR__/ltfs/libdriver-itdtimg.so
# I/O scheduler plugins
# Syntax: plugin iosched PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin iosched unified __LIBDIR__/ltfs/libiosched-unified.so
plugin iosched fcfs __LIBDIR__/ltfs/libiosched-fcfs.so
# Key Manager Interface plugins
# Syntax: plugin kmi PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin kmi flatfile __LIBDIR__/ltfs/libkmi-flatfile.so
plugin kmi simple __LIBDIR__/ltfs/libkmi-simple.so
# Default plugins
# Syntax: default PLUGIN-TYPE PLUGIN-NAME
# The PLUGIN-NAME must be one of those defined using a "driver", "iosched" or "kmi" line.
# For a PLUGIN-TYPE of iosched, the special "none" name may be used to indicate that
# no I/O scheduler should be used by default.
default driver __DEFAULT_DRIVER__
default iosched __DEFAULT_IOSCHED__
default kmi __DEFAULT_KMI__
# Default mount options
# Syntax: option MODE MOUNT-OPTION
# Include the local settings file. That file is not overwritten when a newer
# version of LTFS is installed.
include __CONFDIR__/ltfs.conf.local

21
ltfs/conf/ltfs.conf.local Normal file
View File

@@ -0,0 +1,21 @@
#
# This file is the local configuration file for LTFS
#
# The default LTFS configuration file includes this file.
# Any directives that are placed here will be kept across software updates.
#
# Lines that begin with "##" show default settings.
# Lines that begin with "###" show example settings.
################################################################################
# Configuration example of sync timing
# Sync the index of a mounted cartridge every 5 minutes. The sync interval for
# this sync type is configured in minutes.
##option single-drive sync_type=time@5
# Sync the index of a cartridge when the cartridge is unmounted
###option single-drive sync_type=unmount
# Sync the index of a cartridge when a file in the cartridge is closed
###option single-drive sync_type=close

40
ltfs/conf/ltfs.conf.osx Normal file
View File

@@ -0,0 +1,40 @@
# Automatically generated LTFS configuration file for Mac OS X.
# Edit this file to add or remove tape driver plugins and I/O
# schedulers or to change default settings.
# Tape device plugins
# Syntax: plugin driver PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin driver ltotape __LIBDIR__/ltfs/libdriver-ltotape.dylib
# plugin driver iokit __LIBDIR__/ltfs/libdriver-iokit.dylib
# plugin driver file __LIBDIR__/ltfs/libdriver-file.dylib
# plugin driver itdtimg __LIBDIR__/ltfs/libdriver-itdtimg.dylib
# I/O scheduler plugins
# Syntax: plugin iosched PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin iosched unified __LIBDIR__/ltfs/libiosched-unified.dylib
plugin iosched fcfs __LIBDIR__/ltfs/libiosched-fcfs.dylib
# Key Manager Interface plugins
# Syntax: plugin kmi PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin kmi flatfile __LIBDIR__/ltfs/libkmi-flatfile.dylib
plugin kmi simple __LIBDIR__/ltfs/libkmi-simple.dylib
# Default plugins
# Syntax: default PLUGIN-TYPE PLUGIN-NAME
# The PLUGIN-NAME must be one of those defined using a "driver" or "iosched" line.
# For a PLUGIN-TYPE of iosched, the special "none" name may be used to indicate that
# no I/O scheduler should be used by default.
default driver __DEFAULT_DRIVER__
default iosched __DEFAULT_IOSCHED__
default kmi __DEFAULT_KMI__
# Default mount options
# Syntax: option MODE MOUNT-OPTION
option single-drive -s
# Include the local settings file. That file is not overwritten when a newer
# version of LTFS is installed.
include __CONFDIR__/ltfs.conf.local

View File

@@ -0,0 +1,40 @@
# Automatically generated LTFS configuration file for Windows.
# Edit this file to add or remove tape driver plugins and I/O
# schedulers or to change default settings.
#
# To make configuration changes that will persist across software
# updates, edit ltfs.conf.local instead of this file.
# Tape device plugins
# Syntax: plugin driver PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin driver ltotape_win HPE_Rep_Charlibdriver-ltotape-win.dll
# I/O scheduler plugins
# Syntax: plugin iosched PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
plugin iosched unified HPE_Rep_Charlibiosched-unified.dll
plugin iosched fcfs HPE_Rep_Charlibiosched-fcfs.dll
# Key Manager Interface plugins
# Syntax: plugin kmi PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
# plugin kmi flatfile SYSTEM_FOLDERltfs\libkmi-flatfile.dll
# plugin kmi simple SYSTEM_FOLDERltfs\libkmi-simple.dll
# Default plugins
# Syntax: default PLUGIN-TYPE PLUGIN-NAME
# The PLUGIN-NAME must be one of those defined using a "driver", "iosched" or "kmi" line.
# For a PLUGIN-TYPE of iosched, the special "none" name may be used to indicate that
# no I/O scheduler should be used by default.
default driver ltotape_win
default iosched unified
default kmi none
# Default mount options
# Syntax: option MODE MOUNT-OPTION
# option single-drive scsi_append_only_mode=off
# Include the local settings file. That file is not overwritten when a newer
# version of LTFS is installed.
# include SYSTEM_FOLDERltfs\ltfs.conf.local

223
ltfs/config.h.in Normal file
View File

@@ -0,0 +1,223 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
to 0 otherwise. */
#undef HAVE_MALLOC
/* Define to 1 if you have the `memchr' function. */
#undef HAVE_MEMCHR
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `memset' function. */
#undef HAVE_MEMSET
/* Define to 1 if you have the `mkdir' function. */
#undef HAVE_MKDIR
/* Define to 1 if you have the `rmdir' function. */
#undef HAVE_RMDIR
/* Define to 1 if stdbool.h conforms to C99. */
#undef HAVE_STDBOOL_H
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strndup' function. */
#undef HAVE_STRNDUP
/* Define to 1 if you have the `strrchr' function. */
#undef HAVE_STRRCHR
/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR
/* Define to 1 if `st_blksize' is member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLKSIZE
/* Define to 1 if `st_blocks' is member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS
/* Define to 1 if `st_rdev' is member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_RDEV
/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
`HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
#undef HAVE_ST_BLOCKS
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define to 1 if you have the <sys/mount.h> header file. */
#undef HAVE_SYS_MOUNT_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if the system has the type `_Bool'. */
#undef HAVE__BOOL
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* The size of `time_t', as computed by sizeof. */
#undef SIZEOF_TIME_T
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Enable threading extensions on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
/* Enable general extensions on Solaris. */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif
/* Version number of package */
#undef VERSION
/* Define to 1 if on MINIX. */
#undef _MINIX
/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
#undef _POSIX_1_SOURCE
/* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
#define below would cause a syntax error. */
#undef _UINT32_T
/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
#define below would cause a syntax error. */
#undef _UINT64_T
/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
#define below would cause a syntax error. */
#undef _UINT8_T
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define to rpl_malloc if the replacement function should be used. */
#undef malloc
/* Define to `int' if <sys/types.h> does not define. */
#undef mode_t
/* Define to `long int' if <sys/types.h> does not define. */
#undef off_t
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
/* Define to `int' if <sys/types.h> does not define. */
#undef ssize_t
/* Define to the type of an unsigned integer type of width exactly 16 bits if
such a type exists and the standard includes do not define it. */
#undef uint16_t
/* Define to the type of an unsigned integer type of width exactly 32 bits if
such a type exists and the standard includes do not define it. */
#undef uint32_t
/* Define to the type of an unsigned integer type of width exactly 64 bits if
such a type exists and the standard includes do not define it. */
#undef uint64_t
/* Define to the type of an unsigned integer type of width exactly 8 bits if
such a type exists and the standard includes do not define it. */
#undef uint8_t

17159
ltfs/configure vendored Executable file

File diff suppressed because it is too large Load Diff

295
ltfs/configure.ac Normal file
View File

@@ -0,0 +1,295 @@
;;
;; %Z% %I% %W% %G% %U%
;;
;; ZZ_Copyright_BEGIN
;;
;;
;; Licensed Materials - Property of IBM
;;
;; IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
;;
;; Copyright IBM Corp. 2010, 2014
;;
;; This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
;; (formally known as IBM Linear Tape File System)
;;
;; The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
;; you can redistribute it and/or modify it under the terms of the GNU Lesser
;; General Public License as published by the Free Software Foundation,
;; version 2.1 of the License.
;;
;; The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
;; hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
;; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
;; See the GNU Lesser General Public License for more details.
;;
;; You should have received a copy of the GNU Lesser General Public
;; License along with this library; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
;; or download the license from <http://www.gnu.org/licenses/>.
;;
;;
;; ZZ_Copyright_END
;;
;; (C) Copyright 2015 - 2017 Hewlett Packard Enterprise Development LP
;; 05/26/10 Added support for HPE Tape Backend
;; 06/14/10 Changed version to HPE nomenclature
;;
dnl
dnl LTFS configure.ac.
dnl
AC_INIT([LTFS],[3.4.2],[Hewlett Packard Enterprise Development LP])
AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CANONICAL_HOST
AC_CANONICAL_BUILD
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_CC_C99
AC_PROG_LIBTOOL
dnl
dnl Check for debug
dnl
AC_MSG_CHECKING([whether to compile in debug mode])
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],[compile with extra debugging output])],
[use_debug=$enableval],
[use_debug=no]
)
AC_MSG_RESULT([$use_debug])
dnl
dnl Check for max speed
dnl
AC_MSG_CHECKING([whether to enable optimizations])
AC_ARG_ENABLE([fast],
[AS_HELP_STRING([--enable-fast],[compile with optimization enabled])],
[use_fast=$enableval],
[use_fast=no]
)
AC_MSG_RESULT([$use_fast])
dnl
dnl Check for livelink enable
dnl
AC_MSG_CHECKING([whether to enable livelink mode support [default=yes] ])
AC_ARG_ENABLE([livelink],
[AS_HELP_STRING([--enable-livelink],[compile with livelink mode support [default=yes]])],
[livelink=$enableval],
[livelink=yes]
)
AC_MSG_RESULT([$livelink])
if test "x${use_fast}" != "xno"
then
if test "x${use_debug}" != "xno"
then
AC_MSG_ERROR([Cannot specify --enable-fast and --enable-debug at the same time.])
fi
fi
dnl
dnl Check for special environment variables
dnl
if test -z "$DEFAULT_DRIVER"
then
DEFAULT_DRIVER=ltotape
fi
if test -z "$DEFAULT_IOSCHED" ; then
DEFAULT_IOSCHED=unified
fi
if test -z "$DEFAULT_KMI" ; then
DEFAULT_KMI=none
fi
AC_ARG_VAR([DEFAULT_DRIVER], [default tape device plugin, e.g. ltotape])
AC_ARG_VAR([DEFAULT_IOSCHED], [default I/O scheduler plugin, e.g. unified])
AC_ARG_VAR([DEFAULT_KMI], [default key manager interface plugin, e.g. none])
dnl
dnl Check for pkg-config
dnl
if test -z "$PKG_CONFIG"
then
AC_PATH_PROG(PKG_CONFIG, pkg-config, [no])
fi
if test "x${PKG_CONFIG}" = "xno"
then
AC_MSG_ERROR([pkg-config was not found])
fi
dnl
dnl Check for genrb
dnl
AC_PATH_PROG(GENRB, genrb, no)
if test "x${GENRB}" = "xno"
then
AC_MSG_ERROR([genrb was not found])
fi
dnl
dnl Check for pkgdata
dnl
AC_PATH_PROG(PKGDATA, pkgdata, no)
if test "x${PKGDATA}" = "xno"
then
AC_MSG_ERROR([pkgdata was not found])
fi
dnl
dnl Check for FUSE, libuuid, and libxml2
dnl
PKG_CHECK_MODULES([FUSE_MODULE], [fuse >= 2.6.0])
PKG_CHECK_MODULES([UUID_MODULE], [uuid >= 1.36])
PKG_CHECK_MODULES([LIBXML2_MODULE], [libxml-2.0 >= 2.6.16])
dnl
dnl Check for ICU
dnl
ICU_MODULE_CFLAGS="`icu-config --cppflags 2> /dev/null`";
ICU_MODULE_LIBS="`icu-config --ldflags 2> /dev/null`";
if test -z "$ICU_MODULE_LIBS"
then
PKG_CHECK_MODULES([ICU_MODULE], [icu >= 0.21])
fi
dnl
dnl Check for SNMP
dnl
dnl SNMP_MODULE_CFLAGS="`net-snmp-config --cflags`";
dnl SNMP_MODULE_LIBS="`net-snmp-config --agent-libs` `net-snmp-config --libs`";
dnl if test -z "$SNMP_MODULE_LIBS"
dnl then
dnl PKG_CHECK_MODULES([SNMP_MODULE], [net-snmp >= 5.3])
dnl fi
dnl
dnl Check for headers, types, structures, compiler characteristics
dnl
AC_CHECK_HEADERS([fcntl.h limits.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/mount.h sys/time.h termios.h unistd.h])
AC_HEADER_STDBOOL
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UINT8_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_CHECK_SIZEOF([time_t])
AC_STRUCT_ST_BLOCKS
AC_CHECK_MEMBERS([struct stat.st_blksize])
AC_CHECK_MEMBERS([struct stat.st_rdev])
AC_C_INLINE
dnl
dnl Check for library functions
dnl
AC_FUNC_MALLOC
#AC_FUNC_MKTIME
AC_FUNC_STRNLEN
AC_CHECK_FUNCS([bzero memchr memset mkdir rmdir strcasecmp strdup strerror strndup strrchr strstr])
dnl
dnl Update flags
dnl Sets CFLAGS to force optimization and debugging options, which isn't quite kosher
dnl
dnl AM_CPPFLAGS="-D_GNU_SOURCE -I\$(top_srcdir)/src -DLTFS_CONFIG_FILE='\"${sysconfdir}/ltfs.conf\"' -DLTFS_BASE_DIR='\"${prefix}\"'"
dnl AM_CFLAGS="-Wall -Wsign-compare ${FUSE_MODULE_CFLAGS} ${UUID_MODULE_CFLAGS} ${LIBXML2_MODULE_CFLAGS} ${ICU_MODULE_CFLAGS} ${SNMP_MODULE_CFLAGS}"
AM_CPPFLAGS="-D_GNU_SOURCE -DHPE_BUILD -I\$(top_srcdir)/src -DLTFS_CONFIG_FILE='\"${sysconfdir}/ltfs.conf\"'"
AM_CFLAGS="-Wall -Wsign-compare ${FUSE_MODULE_CFLAGS} ${UUID_MODULE_CFLAGS} ${LIBXML2_MODULE_CFLAGS} ${ICU_MODULE_CFLAGS}"
if test "x$use_fast" = "xyes"
then
OPT_FLAGS="-O2 -g -fno-strict-aliasing"
else
OPT_FLAGS="-O0 -ggdb"
AM_CFLAGS="${AM_CFLAGS} -fkeep-inline-functions -rdynamic"
if test "x$use_debug" = "xyes"
then
AM_CPPFLAGS="${AM_CPPFLAGS} -DDEBUG -DTRACE"
fi
fi
if test "x$livelink" = "xno"
then
AM_CPPFLAGS="${AM_CPPFLAGS} -DPOSIXLINK_ONLY"
fi
dnl
dnl Specify CPU specific optimizer options for CRC calculation
dnl
AC_MSG_CHECKING([SSE4.2])
CRC_OPTIMIZE="-O2"
if test "x$GCC" = 'xyes'
then
GCC_VERSION=`$CC -dumpversion`
GCC_VERSION_MAJOR=$(echo $GCC_VERSION | cut -d'.' -f1)
GCC_VERSION_MINOR=$(echo $GCC_VERSION | cut -d'.' -f2)
SSE42=no
if test ${GCC_VERSION_MAJOR} -ge 4 -a ${GCC_VERSION_MINOR} -ge 3
then
SSE42=yes
fi
if test "x${SSE42}" = "xyes"
then
case x"$target_cpu" in
xx86_64)
AC_MSG_RESULT([yes, x86_64])
CRC_OPTIMIZE="-msse4.2 -O2 -D__SSE42__"
;;
xi*86)
AC_MSG_RESULT([yes, x86])
CRC_OPTIMIZE="-msse4.2 -O2 -D__SSE42__"
;;
*)
AC_MSG_RESULT([no, unsupported cpu])
;;
esac
else
AC_MSG_RESULT([no, gcc version])
fi
else
AC_MSG_RESULT([no, non-gcc])
fi
dnl
dnl Configure standard options
dnl
dnl AM_LDFLAGS="${AM_LDFLAGS} ${FUSE_MODULE_LIBS} ${UUID_MODULE_LIBS} ${LIBXML2_MODULE_LIBS} ${ICU_MODULE_LIBS} ${SNMP_MODULE_LIBS}"
AM_LDFLAGS="${AM_LDFLAGS} ${FUSE_MODULE_LIBS} ${UUID_MODULE_LIBS} ${LIBXML2_MODULE_LIBS} ${ICU_MODULE_LIBS}"
CFLAGS="${CFLAGS} ${OPT_FLAGS}"
dnl
dnl Define options
dnl
AC_SUBST(CFLAGS)
AC_SUBST(CRC_OPTIMIZE)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_CFLAGS)
AC_SUBST(AM_LDFLAGS)
dnl
dnl Output files
dnl
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
messages/Makefile
conf/Makefile
init.d/Makefile
src/Makefile
src/libltfs/Makefile
src/tape_drivers/linux/ltotape/Makefile
src/iosched/Makefile
src/kmi/Makefile
src/utils/Makefile
])
AC_OUTPUT

296
ltfs/configure.ac_Windows Normal file
View File

@@ -0,0 +1,296 @@
;;
;; %Z% %I% %W% %G% %U%
;;
;; ZZ_Copyright_BEGIN
;;
;;
;; Licensed Materials - Property of IBM
;;
;; IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
;;
;; Copyright IBM Corp. 2010, 2014
;;
;; This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
;; (formally known as IBM Linear Tape File System)
;;
;; The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
;; you can redistribute it and/or modify it under the terms of the GNU Lesser
;; General Public License as published by the Free Software Foundation,
;; version 2.1 of the License.
;;
;; The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
;; hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
;; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
;; See the GNU Lesser General Public License for more details.
;;
;; You should have received a copy of the GNU Lesser General Public
;; License along with this library; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
;; or download the license from <http://www.gnu.org/licenses/>.
;;
;;
;; ZZ_Copyright_END
;;
;; (C) Copyright 2015 - 2017 Hewlett Packard Enterprise Development LP
;; 05/26/10 Added support for HPE Tape Backend
;; 06/14/10 Changed version to HPE nomenclature
;;
dnl
dnl LTFS configure.ac.
dnl
AC_INIT([LTFS],[3.4.2],[Hewlett Packard Enterprise Development LP])
AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CANONICAL_HOST
AC_CANONICAL_BUILD
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_CC_C99
AC_PROG_LIBTOOL
LT_PROG_RC
dnl
dnl Check for debug
dnl
AC_MSG_CHECKING([whether to compile in debug mode])
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],[compile with extra debugging output])],
[use_debug=$enableval],
[use_debug=no]
)
AC_MSG_RESULT([$use_debug])
dnl
dnl Check for max speed
dnl
AC_MSG_CHECKING([whether to enable optimizations])
AC_ARG_ENABLE([fast],
[AS_HELP_STRING([--enable-fast],[compile with optimization enabled])],
[use_fast=$enableval],
[use_fast=no]
)
AC_MSG_RESULT([$use_fast])
dnl
dnl Check for livelink enable
dnl
AC_MSG_CHECKING([whether to enable livelink mode support [default=yes] ])
AC_ARG_ENABLE([livelink],
[AS_HELP_STRING([--enable-livelink],[compile with livelink mode support [default=yes]])],
[livelink=$enableval],
[livelink=yes]
)
AC_MSG_RESULT([$livelink])
if test "x${use_fast}" != "xno"
then
if test "x${use_debug}" != "xno"
then
AC_MSG_ERROR([Cannot specify --enable-fast and --enable-debug at the same time.])
fi
fi
dnl
dnl Check for special environment variables
dnl
if test -z "$DEFAULT_DRIVER"
then
DEFAULT_DRIVER=ltotape
fi
if test -z "$DEFAULT_IOSCHED" ; then
DEFAULT_IOSCHED=unified
fi
if test -z "$DEFAULT_KMI" ; then
DEFAULT_KMI=none
fi
AC_ARG_VAR([DEFAULT_DRIVER], [default tape device plugin, e.g. ltotape])
AC_ARG_VAR([DEFAULT_IOSCHED], [default I/O scheduler plugin, e.g. unified])
AC_ARG_VAR([DEFAULT_KMI], [default key manager interface plugin, e.g. none])
dnl
dnl Check for pkg-config
dnl
if test -z "$PKG_CONFIG"
then
AC_PATH_PROG(PKG_CONFIG, pkg-config, [no])
fi
if test "x${PKG_CONFIG}" = "xno"
then
AC_MSG_ERROR([pkg-config was not found])
fi
dnl
dnl Check for genrb
dnl
AC_PATH_PROG(GENRB, genrb, no)
if test "x${GENRB}" = "xno"
then
AC_MSG_ERROR([genrb was not found])
fi
dnl
dnl Check for pkgdata
dnl
AC_PATH_PROG(PKGDATA, pkgdata, no)
if test "x${PKGDATA}" = "xno"
then
AC_MSG_ERROR([pkgdata was not found])
fi
dnl
dnl Check for FUSE, libuuid, and libxml2
dnl
PKG_CHECK_MODULES([FUSE_MODULE], [fuse >= 2.6.0])
PKG_CHECK_MODULES([UUID_MODULE], [uuid >= 1.36])
PKG_CHECK_MODULES([LIBXML2_MODULE], [libxml-2.0 >= 2.6.16])
dnl
dnl Check for ICU
dnl
ICU_MODULE_CFLAGS="`icu-config --cppflags 2> /dev/null`";
ICU_MODULE_LIBS="`icu-config --ldflags 2> /dev/null`";
if test -z "$ICU_MODULE_LIBS"
then
PKG_CHECK_MODULES([ICU_MODULE], [icu >= 0.21])
fi
dnl
dnl Check for SNMP
dnl
dnl SNMP_MODULE_CFLAGS="`net-snmp-config --cflags`";
dnl SNMP_MODULE_LIBS="`net-snmp-config --agent-libs` `net-snmp-config --libs`";
dnl if test -z "$SNMP_MODULE_LIBS"
dnl then
dnl PKG_CHECK_MODULES([SNMP_MODULE], [net-snmp >= 5.3])
dnl fi
dnl
dnl Check for headers, types, structures, compiler characteristics
dnl
AC_CHECK_HEADERS([fcntl.h limits.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/mount.h sys/time.h termios.h unistd.h])
AC_HEADER_STDBOOL
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UINT8_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_CHECK_SIZEOF([time_t])
AC_STRUCT_ST_BLOCKS
AC_CHECK_MEMBERS([struct stat.st_blksize])
AC_CHECK_MEMBERS([struct stat.st_rdev])
AC_C_INLINE
dnl
dnl Check for library functions
dnl
AC_FUNC_MALLOC
#AC_FUNC_MKTIME
AC_FUNC_STRNLEN
AC_CHECK_FUNCS([bzero memchr memset mkdir rmdir strcasecmp strdup strerror strndup strrchr strstr])
dnl
dnl Update flags
dnl Sets CFLAGS to force optimization and debugging options, which isn't quite kosher
dnl
dnl AM_CPPFLAGS="-D_GNU_SOURCE -I\$(top_srcdir)/src -DLTFS_CONFIG_FILE='\"${sysconfdir}/ltfs.conf\"' -DLTFS_BASE_DIR='\"${prefix}\"'"
dnl AM_CFLAGS="-Wall -Wsign-compare ${FUSE_MODULE_CFLAGS} ${UUID_MODULE_CFLAGS} ${LIBXML2_MODULE_CFLAGS} ${ICU_MODULE_CFLAGS} ${SNMP_MODULE_CFLAGS}"
AM_CPPFLAGS="-D_GNU_SOURCE -DHPE_BUILD -I\$(top_srcdir)/src -DLTFS_CONFIG_FILE='\"${sysconfdir}/ltfs.conf\"'"
AM_CFLAGS="-Wall -Wsign-compare ${FUSE_MODULE_CFLAGS} ${UUID_MODULE_CFLAGS} ${LIBXML2_MODULE_CFLAGS} ${ICU_MODULE_CFLAGS}"
if test "x$use_fast" = "xyes"
then
OPT_FLAGS="-O2 -g -fno-strict-aliasing"
else
OPT_FLAGS="-O0 -ggdb"
AM_CFLAGS="${AM_CFLAGS} -fkeep-inline-functions"
if test "x$use_debug" = "xyes"
then
AM_CPPFLAGS="${AM_CPPFLAGS} -DDEBUG -DTRACE"
fi
fi
if test "x$livelink" = "xno"
then
AM_CPPFLAGS="${AM_CPPFLAGS} -DPOSIXLINK_ONLY"
fi
dnl
dnl Specify CPU specific optimizer options for CRC calculation
dnl
AC_MSG_CHECKING([SSE4.2])
CRC_OPTIMIZE="-O2"
if test "x$GCC" = 'xyes'
then
GCC_VERSION=`$CC -dumpversion`
GCC_VERSION_MAJOR=$(echo $GCC_VERSION | cut -d'.' -f1)
GCC_VERSION_MINOR=$(echo $GCC_VERSION | cut -d'.' -f2)
SSE42=no
if test ${GCC_VERSION_MAJOR} -ge 4 -a ${GCC_VERSION_MINOR} -ge 3
then
SSE42=yes
fi
if test "x${SSE42}" = "xyes"
then
case x"$target_cpu" in
xx86_64)
AC_MSG_RESULT([yes, x86_64])
CRC_OPTIMIZE="-msse4.2 -O2 -D__SSE42__"
;;
xi*86)
AC_MSG_RESULT([yes, x86])
CRC_OPTIMIZE="-msse4.2 -O2 -D__SSE42__"
;;
*)
AC_MSG_RESULT([no, unsupported cpu])
;;
esac
else
AC_MSG_RESULT([no, gcc version])
fi
else
AC_MSG_RESULT([no, non-gcc])
fi
dnl
dnl Configure standard options
dnl
dnl AM_LDFLAGS="${AM_LDFLAGS} ${FUSE_MODULE_LIBS} ${UUID_MODULE_LIBS} ${LIBXML2_MODULE_LIBS} ${ICU_MODULE_LIBS} ${SNMP_MODULE_LIBS}"
AM_LDFLAGS="${AM_LDFLAGS} ${FUSE_MODULE_LIBS} ${UUID_MODULE_LIBS} ${LIBXML2_MODULE_LIBS} ${ICU_MODULE_LIBS}"
CFLAGS="${CFLAGS} ${OPT_FLAGS}"
dnl
dnl Define options
dnl
AC_SUBST(CFLAGS)
AC_SUBST(CRC_OPTIMIZE)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_CFLAGS)
AC_SUBST(AM_LDFLAGS)
dnl
dnl Output files
dnl
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
messages/Makefile
conf/Makefile
init.d/Makefile
src/libltfs/Makefile
src/tape_drivers/windows/ltotape/Makefile
src/iosched/Makefile
src/kmi/Makefile
src/utils/Makefile
src/Makefile
])
AC_OUTPUT

82
ltfs/doc/BUILDING.linux Normal file
View File

@@ -0,0 +1,82 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
Building HPE-SOS from source code
=======================================================================
1. Unpack the archive source file to a suitable location, for example
/usr/local/src/ :
$ gunzip HPE-SOS_SOURCE.tar.gz
$ tar xf HPE-SOS_SOURCE.tar
2. Required Software packages - HPE StoreOpen Software 3.4.2 requires the
following software packages on Linux. Make sure that these packages
are installed on the target computer.
1. libicu 50.1.2
2. libicu-devel 50.1.2
3. fuse 2.8.5 or higher (kernel and shared library modules)
4. fuse-libs 2.8.5 or higher
5. libxml2-2.7.6
6. e2fsprogs 1.41
For example:
$ rpm -q icu libicu-devel fuse fuse-libs fuse-devel
icu-50.1.2
libicu-devel-50.1.2
fuse-2.8.5-1
fuse-libs-2.8.5-1
fuse-devel-2.8.5-1
If any of the packages are not installed, then you must add them
from the installation DVD or other repository.
Note that further packages may need to be installed, depending on your
current system configuration. These may include uuid (part of the
e2fsprogs package) and libxml2.
3. Run the configure script
$ cd hpe-sos_3.4.2
$ ./configure
This will check for various dependencies; you must correct any problems
before you can proceed.
4. Build the package
$ make
5. Copy the compiled files to the correct locations
$ make install
The executables (ltfs, mkltfs, ltfsck) are placed in /usr/local/bin/
The supporting dynamic files are placed under /usr/local/lib/
6. On some systems it may be necessary to tell the linker/loader how to
locate the required dynamic library files. There are several ways
of doing this:
a) Add /usr/local/lib/ to the environment variable LD_LIBRARY_PATH
or
b) (As root) Add /usr/local/lib/ to the file /etc/ld.so.conf, and
then execute ldconfig
Refer to the man pages for ld.so and ldconfig for further details.
7. That's it! Refer to the README file for details of how to use LTFS.

65
ltfs/doc/BUILDING.macosx Normal file
View File

@@ -0,0 +1,65 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
Building HPE-SOS from source code (Mac OS X)
=======================================================================
1. Unpack the archive source file to a suitable location:
$ gunzip HPE-SOS_SOURCE.tar.gz
$ tar xf HPE-SOS_SOURCE.tar
2. Ensure that the following packages have been installed:
Apple Developer Tools
OSXFUSE (Refer to HPE Data Agile BURA Compatibility Matrix
at www.hpe.com/storage/BURACompatibility
for OSXFUSE version information)
ICU 50.1.2
3. Run the LTFS build script:
$ cd hpe-sos_3.4.2
$ ./build_osx_package.sh
If no errors are reported then the build was successful.
Do not use the configure script or Makefile; these are intended for
use on Linux platforms. The supplied build_osx_package.sh script
performs the steps needed to build on the Mac OS X platform.
4. The build process produces an installable package in the directory
hpe-sos_3.4.2/distribution/
Open that directory in Finder and select the HPEStoreOpenSoftware.pkg
The installation files will be copied to the directory
/Library/Frameworks/LTFS.framework/Versions/Current/
and symbolic links for the executables (mkltfs, ltfs, ltfsck, unltfs)
are created in /usr/local/bin/
5. That's it! Refer to the README file for details of how to use LTFS.
6. To uninstall LTFS, you need to delete the symbolic links in
/usr/local/bin/ for the executables (mkltfs, ltfs, ltfsck, unltfs)
and then delete the directory /Library/Frameworks/LTFS.framework
Execute the command:
pkgutil --forget com.hpe.ltfs
to cause the Package Manager subsystem to remove references to LTFS.

210
ltfs/doc/BUILDING.windows Normal file
View File

@@ -0,0 +1,210 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of OSR,
Copyright (C) 2012 OSR Open Systems Resources, Inc.
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen/
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!====================!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! IMPORTANT NOTE !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!====================!!!!!!!!!!!!!!!!!!!!!!!!!!!!
To build LTFS on a Windows platform, there are a number of steps
which must be followed carefully to set up the required build
environment. The result is the complex build procedure set out below.
HPE cannot support customers who choose to attempt to build
their own version of LTFS for Windows.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!====================!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! IMPORTANT NOTE !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!====================!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=======================================================================
Building HPE-SOS from source code (Windows)
=======================================================================
1. Creating an LTFS Build Machine
----------------------------------
The following installation instructions are meant to be used with Windows 7 SP1
x64. While other versions of the O/S should also be sufficient for building the
code, it is critical that an x64 release of the O/S is used as the MinGW tools
do not support building x64 binaries from x86 hosts. However, x86 binaries can
be built on x64 hosts, thus an x64 version of the O/S can be used to build both
x86 and x64 binaries.
The build machine must have a copy of Microsoft Visual Studio 2010 Ultimate
installed.
The build procedure relies on three separate MinGW packages:
MinGW, MinGW64 Win64 Tools, and MinGW64 Win32 Tools.
These may be found here:
http://www.mingw.org
http://mingw-w64.sourceforge.net
MinGW is installed to provide a shell environment for use in building the code,
while the other packages are used as the actual build tool chains for x64 and
x86.
To install the MinGW packages:
a) Install MinGW to its default location, C:\MinGW. Be sure to install
all features of MinGW, including the MSYS environment.
b) Download the MinGW64 Win64 Tools and extract them to C:\MinGW\MinGW64
c) Download the MinGW64 Win32 Tools and extract them to C:\MinGW\MinGW64-32
d) Copy the provided MinGW overlay directory (located at
dependencies\mingw) over the directory C:\MinGW to place necessary
build files not provided by MinGW.
The LTFS for Windows source code has no binary dependencies on the FUSE package.
However, the include files provided with FUSE must be available for proper
compilation. Extract the following files from fuse-2.8.7.tar.gz (located in
dependencies\fuse directory) to C:\MinGW\inc.external:
Fuse.h Fuse_common.h Fuse_compat.h Fuse_opt.h
It is necessary to install the ICU library in order to support the existing
Linux build procedure in MinGW. Note that the ICU library files are also
required to be present at runtime. There are 64-bit and 32-bit versions of ICU
and they must be installed individually into the MinGW64 and MinGW64-32
environments. In addition, there is a common include directory that is to be
shared amongst both environments. ICU for Windows can be found here:
http://site.icu-project.org/download/48
64-bit icu Installation:
a) Extract contents of bin64 subdirectory of icu4c-50_1_2-Win64-msvc10.zip
to C:\MinGW\MinGW64\bin
b) Copy C:\MinGW\MinGW64\bin\icuuc50.dll to
C:\MinGW\MinGW64\x86_64-w64-mingw32\lib\libicuuc.dll
32-bit icu Installation:
a) Extract contents of bin subdirectory of icu4c-50_1_2-Win32-msvc10.zip to
C:\MinGW\MinGW64-32\bin
b) Copy C:\MinGW\MinGW64-32\bin\icuuc50.dll to
C:\MinGW\MinGW64-32\i686-w64-mingw32\lib\libicuuc.dll
Extract include subdirectory of either icu4c-50_1_2-Win32-msvc10.zip or
icu4c-50_1_2-Win64-msvc10.zip to C:\MinGW\inc.external. Note that the include
directory of both ZIP files should be identical.
It is necessary to install the LibXML library in order to support the existing
Linux build procedure in MinGW. Note that the LibXML library files are also
required to be present at runtime. LibXML source can be found here:
http://xmlsoft.org/.
a) Copy 64-bit libxml2.dll to C:\MinGW\MinGW64\x86_64-w64-mingw32\lib\libxml2.dll
b) Copy 32-bit libxml2.dll to C:\MinGW\MinGW64-32\i686-w64-mingw32\lib\libxml2.dll
c) Extract include subdirectory of libxml2-2.7.8.tar.gz to C:\MinGW\inc.external
d) Copy C:\MinGW\include\iconv.h to C:\MinGW\inc.external
It is necessary to install pkg-config in order to support the existing Linux
build procedure in MinGW. There are 64-bit and 32-bit versions of pkg-config
and they must be installed individually into the MinGW64 and MinGW64-32
environments. Pkg-config for Windows can be found here:
http://www.gtk.org/download/index.php
64-bit pkg-config Installation:
a) Extract pkg-config_0.23-2_win64.zip to C:\MinGW\MinGW64
b) Extract glib_2.26.1-1_win64.zip to C:\MinGW\MinGW64
c) Extract gettext-runtime_0.17-3_win64.zip to C:\MinGW\MinGW64
32-bit pkg-config Installation:
a) Extract pkg-config_0.23-3_win32.zip to C:\MinGW\MinGW64-32
b) Extract glib_2.26.1-1_win32.zip to C:\MinGW\MinGW64-32
c) Copy C:\MinGW\bin\libintl-8.dll to C:\MinGW\MinGW64-32\bin\intl.dll
It is necessary to install the pthreads library in order to support the existing
Linux build procedure in MinGW. Note that the pthreads library files are also
required to be present at runtime. There are 64-bit and 32-bit versions of
pthreads and they must be installed individually into the MinGW64 and MinGW64-32
environments. Be sure to delete any existing pthreads library files from the
MinGW64 and/or MinGW64-32 directories before extracting the required files to
avoid linking to an incorrect version of the pthreads library. When properly
linked, the resulting binaries have a dependency on pthreadGC2-w64.dll or
pthreadGC2-w32.dll. Pthreads for Windows can be found here:
http://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20(Win64%20hosted)/pthreads/
a) Extract pthreads-w64.zip to C:\MinGW\MinGW64
b) Extract pthreads-w32.zip to C:\MinGW\MinGW64-32
It is necessary to install the UMFSDK library in order to support the LTFS
for Windows build procedure in MinGW. Note that the UMFSDK library files are
also required to be present at runtime. The UMFSDK components are located in
dependencies\umfsdk\
a) Copy 64-bit FUSE4Win.dll to
C:\MinGW\MinGW64\x86_64-w64-mingw32\lib\libFUSE4Win.dll
b) Copy 32-bit FUSE4Win.dll to
C:\MinGW\MinGW64-32\i686-w64-mingw32\lib\libFUSE4Win.dll
c) Copy FUSE4Win_nonstd.h to C:\UMFSDK\Inc\
2. Building LTFS Binaries (64-bit)
----------------------------------
The following steps are performed from within a MinGW Shell environment.
They assume that the latest LTFS source tree is located in C:\LTFS and that
the Microsoft Visual Studio software has been installed in C:\MVS10
a. Change path to prioritize x64 build utilities:
export PATH=/C/MinGW/MinGW64/bin:/C/MVS10/VC/bin/amd64:$PATH
b. cd to /C/LTFS and execute the following command:
./configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 \
CFLAGS="-Dmingw_PLATFORM=1 -DHPE_mingw_BUILD=1 \
-I/C/MinGW/inc.external -I/C/UMFSDK/inc"
c. Build the source code by executing make.
If you get a libtool error during this step, run autoreconf and rebuild.
d. Resulting executable binary files are located in the .libs subdirectory of
each directory containing a Makefile. Do not use the binaries generated
outside of these directories as they are simply intermediate files.
3. Building LTFS Binaries (32-bit)
----------------------------------
a. Change path to prioritize x86 build utilities:
export PATH=/C/MinGW/MinGW64-32/bin:/C/MVS10/VC/bin:/C/MVS10/Common7/IDE:$PATH
b. cd to /C/LTFS and execute the following command:
./configure --host= i686-w64-mingw32 --build= i686-w64-mingw32 \
CFLAGS="-Dmingw_PLATFORM=1 -DHPE_mingw_BUILD=1 -I/C/MinGW/inc.external \
-I/C/UMFSDK/inc -D __MINGW_USE_VC2005_COMPAT=1"
c. Build the source code by executing make.
If you get a libtool error during this step, run autoreconf and rebuild.
d. Resulting executable binary files are located in the .libs subdirectory of
each directory containing a Makefile. Do not use the binaries generated
outside of these directories as they are simply intermediate files.

129
ltfs/doc/CODING_STYLE Normal file
View File

@@ -0,0 +1,129 @@
Naming conventions
------------------
- We don't use capital letters, except on defines and enumerators
(see below).
- Public APIs are always prefixed by the name of that module:
ltfs.c: ltfs_statfs(), ltfs_open(), ltfs_close(), ltfs_read()
fs.c: fs_resolve_dentry(), fs_set_name(), fs_set_creation_time()
Spaces, tabs and commas
-----------------------
When indenting the code, always use TABs with 4 spaces. Do not
replace TABs by spaces.
When writing arguments to a function or defining enums, also use
the following comma conventions:
call_function(arg1, arg2, arg3);
call_another_function(
very_long_argument1,
very_long_argument2,
very_long_argument3
);
enum very_cool_enumerator {
VERY_COOL_1,
VERY_COOL_2,
VERY_COOL_3,
};
Macros and defines
------------------
When defining wrappers around functions using macros do that
using lowercase characters. Defines always go in uppercase.
#define wrapper_around_some_function(x,y) \
...
#define LTFS_MAX_VALUE 2112
Functions
---------
Return type, function name and its parameters should go all
in a single line, except if the parameters are too long.
void ltfs_function(void *params)
{
}
void ltfs_function_with_many_parameters(void *params1,
void *params2, void *params3)
{
}
Conditional tests
-----------------
if (condition) {
line 1;
line 2;
} else
line 3;
if (another condition)
do this;
else
do that;
if (yet another condition) {
/*
* It's ok to open brackets when adding comments,
* just to make it clear where the scope ends.
* That can improve readability when comments
* span across multiple lines.
*/
do something else;
}
Loops
-----
for (x=start; x<end; ++x) {
body
}
Comments
--------
Please do not use C++ style comments (//), except when
temporarily commenting out a line of code. If too many
lines are being commented out consider using #if 0 instead
or, preferably, just remove that code completely.
For comments, always use the C style (/* comments */),
even if that's just a single line.
For documenting functions, please use the Doxygen-friendly
format below:
/**
* General comments about the function go here.
* @param var1 Describe what var1 does.
* @param var2 Describe what var2 does.
* @return Describe what's expected to be returned both on
* success and on error situation. Also, note that we
* tabulate with one extra space when the comments span
* multiple lines.
*/
int function(void *var1, void *var2)
{
}
Maximum line length
-------------------
Lines must not exceed 100 characters.

510
ltfs/doc/COPYING.LIB Normal file
View File

@@ -0,0 +1,510 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations
below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
^L
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it
becomes a de-facto standard. To achieve this, non-free programs must
be allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
^L
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control
compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
^L
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
^L
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least
three years, to give the same user the materials specified in
Subsection 6a, above, for a charge no more than the cost of
performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
^L
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
^L
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
^L
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
^L
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms
of the ordinary General Public License).
To apply these terms, attach the following notices to the library.
It is safest to attach them to the start of each source file to most
effectively convey the exclusion of warranty; and each file should
have at least the "copyright" line and a pointer to where the full
notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the library,
if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James
Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

88
ltfs/doc/INSTALLING.linux Normal file
View File

@@ -0,0 +1,88 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
Installing on Linux systems
=======================================================================
1. The below mentioned dependencies are required by HPE SOS to run
on supported Linux systems. These dependencies can be either
installed from their RPM packages or can be installed by compiling
the source. The dependency packages are not supplied with HPE SOS;
users will need to download from their respective web sites and
install them.
a. FUSE 2.8.5 or higher (http://fuse.sourceforge.net/)
b. ICU v50.1.2 (http://site.icu-project.org/download)
c. libxml2 v2.7 or higher
d. e2fsprogs 1.41 or higher
2. Before starting to install and use HPE-SOS, you must ensure that the
FUSE kernel module is present and loaded.
To check, execute the following command:
lsmod | grep fuse
If the module is not currently loaded, you can load it as follows:
modprobe fuse
If the module is not present on your system, you must first obtain
and install it. Details of how to do this are beyond the scope of
this document; refer to http://fuse.sourceforge.net/ for further
information.
3. Determine whether you want to use pre-compiled binaries or build
your own version of the LTFS application.
To build your own, download and unpack the file HPELTFS_SOURCE.tar.gz
then follow the instructions in ltfs/doc/BUILDING.linux
4. Download the file for your operating system platform:
(RHEL 6.x (x86 and x64) and RHEL 7.x (x64))
HPE-SOS_3.4.2_RHEL_x86_PKG.tar.gz (for x86 32-bit installations)
HPE-SOS_3.4.2_RHEL_x64_PKG.tar.gz (for x64 64-bit installations)
5. Unzip the package to extract the binaries for supported architectures:
For example:
tar -zxvf HPE-SOS_3.4.2_RHEL_x64_PKG.tar.gz
This will unpack the following files in the current directory:
a. hpe-sos-3.4.2-71.x86_64.rpm
b. INSTALLING.linux
c. COPYING.LIB
d. README
6. Install the hpe-sos-3.4.2-71.x86_64.rpm
For example:
rpm -ivh hpe-sos-3.4.2-71.x86_64.rpm
NOTE: If the dependencies are not yet installed, you can still install
HPE SOS using the command
rpm -ivh hpe-sos-3.4.2-71.x86_64.rpm --nodeps
The executables (ltfs, mkltfs, ltfsck, unltfs, ltfscopy) are placed in
/usr/local/bin/, a number of dynamic libraries in /usr/local/lib64/,
and also in a new subdirectory /usr/local/lib64/ltfs/
7. That's it! Refer to the README file for details of how
to use LTFS.
8. If at a later date you want to uninstall LTFS from your system, run
the command
rpm -e hpe-sos

View File

@@ -0,0 +1,65 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
The LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
Installing on Mac OS X systems
=======================================================================
1. Before starting to install and use LTFS, you must ensure that the
OSXFUSE module is present and loaded.
Refer to HPE Data Agile BURA Compatibility Matrix
www.hpe.com/storage/BURACompatibility for OSXFUSE version information
If the module is not present on your system, you must first
install it from the included package or from another source.
2. Determine whether you want to use the pre-compiled package or build
your own version of the LTFS application.
To build your own, download and unpack the file HPELTFS_SOURCE.tar.gz
then follow the instructions in ltfs/doc/BUILDING.macosx
3. To use pre-compiled binaries, download the file:
HPEStoreOpenSoftware.dmg
4. Install the ICU package first by double-clicking on the file
ICUFramework.pkg and following the instructions.
5. Now install the LTFS package by double-clicking on the file
HPE StoreOpen Software.pkg and following the instructions.
7. LTFS is now installed on your system and is ready to use.
The README file contains details of how to use LTFS on the command
line in a terminal window. The installation package also places an
"HPE StoreOpen Software" console application in your Applications
folder which can be used to simplify the tasks of preparing, formatting
and mounting an LTFS volume.
8. If at a later date you want to uninstall LTFS from your system,
delete /usr/local/bin/*ltfs* and then delete the tree under
/Library/Frameworks/LTFS.framework
The console application can be uninstalled by dragging it to the Trash.
Execute the command:
pkgutil --forget com.hpe.ltfs
to cause the Package Manager subsystem to remove references to LTFS.
To also delete the ICU package, delete the tree under
/Library/Frameworks/ICU.framework

699
ltfs/doc/NOTICES.txt Normal file
View File

@@ -0,0 +1,699 @@
NOTICES AND INFORMATION
IBM Linear Tape File System SDE for Linux Version 2.2
The IBM license agreement and any applicable information on the web
download page for IBM products refers Licensee to this file for details
concerning notices applicable to code included in the products listed
above ("the Program").
Notwithstanding the terms and conditions of any other agreement Licensee
may have with IBM or any of its related or affiliated entities
(collectively "IBM"), the third party code identified below is subject
to the terms and conditions of the IBM license agreement for the Program
and not the license terms that may be contained in the notices below.
The notices are provided for informational purposes.
Please note: This Notices file may identify information that is not used
by, or that was not shipped with, the Program as Licensee installed it.
IMPORTANT: IBM does not represent or warrant that the information in this
NOTICES file is accurate. Third party websites are independent of IBM and
IBM does not represent or warrant that the information on any third party
website referenced in this NOTICES file is accurate. IBM disclaims any
and all liability for errors and omissions or for any damages accruing
from the use of this NOTICES file or its contents, including without
limitation URLs or references to any third party websites.
@@@@@@@@@@@@
==========================================================================
queue.h version 8.5 from FreeBSD: The Program includes queue.h version
8.5 software from FreeBSD. IBM obtained the queue.h version 8.5
software under the terms and conditions of the following license:
***************************************************************************
/*-
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)queue.h 8.5 (Berkeley) 8/20/94
* $FreeBSD$
*/
=========================================================================
END OF queue.h version 8.5 NOTICES AND INFORMATION
=========================================================================
@@@@@@@@@@@@
============================================================================
uthash.h from uthash version 1.9.3: The Program includes uthash.h from
uthash version 1.9.3 software. IBM obtained the uthash.h from uthash version
1.9.3 software under the terms and conditions of the following license:
****************************************************************************
/*
Copyright (c) 2003-2010, Troy D. Hanson http://uthash.sourceforge.net
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
=================================================================
END OF uthash.h from uthash version 1.9.3 NOTICES AND INFORMATION
=================================================================
@@@@@@@@@@@@
===========================================================================
ICU4C version 4.8: The Program includes ICU4C version 4.8 software.
IBM obtained the ICU4C version 4.8 software under the terms and
conditions of the following licenses:
****************************************************************************
ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1995-2011 International Business Machines Corporation and others
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice appear
in all copies of the Software and that both the above copyright notice(s) and
this permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not be
used in advertising or otherwise to promote the sale, use or other dealings in
this Software without prior written authorization of the copyright holder.
--------------------------------------------------------------------------------
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
Unicode Data Files include all data files under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF
online code charts under the directory http://www.unicode.org/Public/.
Software includes any source code published in the Unicode Standard or under
the directories http://www.unicode.org/Public/,
http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/.
NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF
YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA
FILES OR SOFTWARE.
COPYRIGHT AND PERMISSION NOTICE
Copyright © 1991-2011 Unicode, Inc. All rights reserved. Distributed under
the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining a
copy of the Unicode data files and any associated documentation (the "Data
Files") or Unicode software and any associated documentation (the "Software")
to deal in the Data Files or Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute, and/or
sell copies of the Data Files or Software, and to permit persons to whom the
Data Files or Software are furnished to do so, provided that (a) the above
copyright notice(s) and this permission notice appear with all copies of the
Data Files or Software, (b) both the above copyright notice(s) and this
permission notice appear in associated documentation, and (c) there is clear
notice in each modified Data File or in the Software as well as in the
documentation associated with the Data File(s) or Software that the data or
software has been modified.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE
DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written authorization
of the copyright holder.
=========================================================================
END OF ICU4C version 4.8 NOTICES AND INFORMATION
=========================================================================
@@@@@@@@@@@@@@@@@@@@@@@
==============================================================================
InstallAnywhere 2010 SP1: The Program includes InstallAnywhere 2010 SP1
software. IBM obtained portions of the InstallAnywhere 2010 SP1 software
under the terms and conditions of the following licenses:
*************************************************************************
Apache Software License 1.1
The Program includes some or all of the following that IBM obtained under
the Apache License Version 1.1:.
· Regexp V1.2
/*
* The Apache Software License, Version 1.1
*
* Copyright © 2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* “This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/).”
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names “Apache” and “Apache Software Foundation” must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called “Apache”,
* nor may “Apache” appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS’’ AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* Portions of this software are based upon public domain software
* originally written at the National Center for Supercomputing Applications,
* University of Illinois, Urbana-Champaign.
*/
*************************************************************************
END OF Apache Software License 1.1 NOTICES AND INFORMATION
*************************************************************************
Apache License 2.0
The Program includes some or all of the following that IBM obtained under
the Apache License Version 2.0:
· Commons Codec 1.3
· ANT 1.6.2
/*
* Apache License
* Version 2.0, January 2004
* http://www.apache.org/licenses/
*
* TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
*
* 1. Definitions.
*
* "License" shall mean the terms and conditions for use, reproduction,
* and distribution as defined by Sections 1 through 9 of this document.
*
* "Licensor" shall mean the copyright owner or entity authorized by
* the copyright owner that is granting the License.
*
* "Legal Entity" shall mean the union of the acting entity and all
* other entities that control, are controlled by, or are under common
* control with that entity. For the purposes of this definition,
* "control" means (i) the power, direct or indirect, to cause the
* direction or management of such entity, whether by contract or
* otherwise, or (ii) ownership of fifty percent (50%) or more of the
* outstanding shares, or (iii) beneficial ownership of such entity.
*
* "You" (or "Your") shall mean an individual or Legal Entity
* exercising permissions granted by this License.
*
* "Source" form shall mean the preferred form for making modifications,
* including but not limited to software source code, documentation
* source, and configuration files.
*
* "Object" form shall mean any form resulting from mechanical
* transformation or translation of a Source form, including but
* not limited to compiled object code, generated documentation,
* and conversions to other media types.
*
* "Work" shall mean the work of authorship, whether in Source or
* Object form, made available under the License, as indicated by a
* copyright notice that is included in or attached to the work
* (an example is provided in the Appendix below).
*
* "Derivative Works" shall mean any work, whether in Source or Object
* form, that is based on (or derived from) the Work and for which the
* editorial revisions, annotations, elaborations, or other
* modifications represent, as a whole, an original work of authorship. For the
* purposes of this License, Derivative Works shall not include works that remain
* separable from, or merely link (or bind by name) to the interfaces
* of, the Work and Derivative Works thereof.
*
* "Contribution" shall mean any work of authorship, including
* the original version of the Work and any modifications or additions
* to that Work or Derivative Works thereof, that is intentionally
* submitted to Licensor for inclusion in the Work by the copyright
* owner or by an individual or Legal Entity authorized to submit on behalf of
* the copyright owner. For the purposes of this definition, "submitted"
* means any form of electronic, verbal, or written communication sent
* to the Licensor or its representatives, including but not limited to
* communication on electronic mailing lists, source code control
* systems,and issue tracking systems that are managed by, or on
* behalf of, the Licensor for the purpose of discussing and improving
* the Work, but excluding communication that is conspicuously marked
* or otherwise designated in writing by the copyright owner as
* "Not a Contribution."
*
* "Contributor" shall mean Licensor and any individual or Legal Entity
* on behalf of whom a Contribution has been received by Licensor and
* subsequently incorporated within the Work.
*
* 2. Grant of Copyright License. Subject to the terms and conditions of
* this License, each Contributor hereby grants to You a perpetual,
* worldwide, non-exclusive, no-charge, royalty-free, irrevocable
* copyright license to reproduce, prepare Derivative Works of,
* publicly display, publicly perform, sublicense, and distribute the
* Work and such Derivative Works in Source or Object form.
*
* 3. Grant of Patent License. Subject to the terms and conditions of
* this License, each Contributor hereby grants to You a perpetual,
* worldwide, non-exclusive, no-charge, royalty-free, irrevocable
* (except as stated in this section) patent license to make, have made,
* use, offer to sell, sell, import, and otherwise transfer the Work,
* where such license applies only to those patent claims licensable
* by such Contributor that are necessarily infringed by their
* Contribution(s) alone or by combination of their Contribution(s)
* with the Work to which such Contribution(s) was submitted. If You
* institute patent litigation against any entity (including a
* cross-claim or counterclaim in a lawsuit) alleging that the Work
* or a Contribution incorporated within the Work constitutes direct
* or contributory patent infringement, then any patent licenses
* granted to You under this License for that Work shall terminate
* as of the date such litigation is filed.
*
* 4. Redistribution. You may reproduce and distribute copies of the
* Work or Derivative Works thereof in any medium, with or without
* modifications, and in Source or Object form, provided that You
* meet the following conditions:
*
* (a) You must give any other recipients of the Work or
* Derivative Works a copy of this License; and
*
* (b) You must cause any modified files to carry prominent notices
* stating that You changed the files; and
*
* (c) You must retain, in the Source form of any Derivative Works
* that You distribute, all copyright, patent, trademark, and
* attribution notices from the Source form of the Work,
* excluding those notices that do not pertain to any part of
* the Derivative Works; and
*
* (d) If the Work includes a "NOTICE" text file as part of its
* distribution, then any Derivative Works that You distribute must
* include a readable copy of the attribution notices contained
* within such NOTICE file, excluding those notices that do not
* pertain to any part of the Derivative Works, in at least one
* of the following places: within a NOTICE text file distributed
* as part of the Derivative Works; within the Source form or
* documentation, if provided along with the Derivative Works; or,
* within a display generated by the Derivative Works, if and
* wherever such third-party notices normally appear. The contents
* of the NOTICE file are for informational purposes only and
* do not modify the License. You may add Your own attribution
* notices within Derivative Works that You distribute, alongside
* or as an addendum to the NOTICE text from the Work, provided
* that such additional attribution notices cannot be construed
* as modifying the License.
*
* You may add Your own copyright statement to Your modifications and
* may provide additional or different license terms and conditions
* for use, reproduction, or distribution of Your modifications, or
* for any such Derivative Works as a whole, provided Your use,
* reproduction, and distribution of the Work otherwise complies with
* the conditions stated in this License.
*
* 5. Submission of Contributions. Unless You explicitly state otherwise,
* any Contribution intentionally submitted for inclusion in the Work
* by You to the Licensor shall be under the terms and conditions of
* this License, without any additional terms or conditions.
* Notwithstanding the above, nothing herein shall supersede or modify
* the terms of any separate license agreement you may have executed
* with Licensor regarding such Contributions.
*
* 6. Trademarks. This License does not grant permission to use the trade
* names, trademarks, service marks, or product names of the Licensor,
* except as required for reasonable and customary use in describing the
* origin of the Work and reproducing the content of the NOTICE file.
*
* 7. Disclaimer of Warranty. Unless required by applicable law or
* agreed to in writing, Licensor provides the Work (and each
* Contributor provides its Contributions) on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied, including, without limitation, any warranties or conditions
* of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
* PARTICULAR PURPOSE. You are solely responsible for determining the
* appropriateness of using or redistributing the Work and assume any
* risks associated with Your exercise of permissions under this
* License.
*
* 8. Limitation of Liability. In no event and under no legal theory,
* whether in tort (including negligence), contract, or otherwise,
* unless required by applicable law (such as deliberate and grossly
* negligent acts) or agreed to in writing, shall any Contributor be
* liable to You for damages, including any direct, indirect, special,
* incidental, or consequential damages of any character arising as a
* result of this License or out of the use or inability to use the
* Work (including but not limited to damages for loss of goodwill,
* work stoppage, computer failure or malfunction, or any and all
* other commercial damages or losses), even if such Contributor
* has been advised of the possibility of such damages.
*
* 9. Accepting Warranty or Additional Liability. While redistributing
* the Work or Derivative Works thereof, You may choose to offer,
* and charge a fee for, acceptance of support, warranty, indemnity,
* or other liability obligations and/or rights consistent with this
* License. However, in accepting such obligations, You may act only
* on Your own behalf and on Your sole responsibility, not on behalf
* of any other Contributor, and only if You agree to indemnify,
* defend, and hold each Contributor harmless for any liability
* incurred by, or claims asserted against, such Contributor by reason
* of your accepting any such warranty or additional liability.
*
* END OF TERMS AND CONDITIONS
*
* APPENDIX: How to apply the Apache License to your work.
*
* To apply the Apache License to your work, attach the following
* boilerplate notice, with the fields enclosed by brackets "[ ]"
* replaced with your own identifying information. (Don't include
* the brackets!) The text should be enclosed in the appropriate
* comment syntax for the file format. We also recommend that a
* file or class name and description of purpose be included on the
* same "printed page" as the copyright notice for easier
* identification within third-party archives.
*
* Copyright [yyyy] [name of copyright owner]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
*************************************************************************
END OF Apache License 2.0 NOTICES AND INFORMATION
*************************************************************************
BROWSERLAUNCHER CODE.
The Program includes the following BrowserLauncher software:
· BrowserLauncher V1.4b1
IBM® is required to provide you, as the recipient of such software, with a
copy of the following license from BrowserLauncher:
This code is Copyright 1999-2001 by Eric Albert (ejalbert@cs.stanford.edu)
and may be redistributed or modified in any form without restrictions as
long as the portion of this comment from this paragraph through the end of
the comment is not removed. The author requests that he be notified of any
application, applet, or other binary that makes use of this code, but that's
more out of curiosity than anything and is not required. This software
includes no warranty. The author is not repsonsible for any loss of data or
functionality or any adverse or unexpected effects of using this software.
Credits:
Steven Spencer, JavaWorld magazine
(http://www.javaworld.com/javaworld/javatips/jw-javatip66.html)
Thanks also to Ron B. Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum,
Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich,
and Ron Rabakukk
@author Eric Albert (ejalbert@cs.stanford.edu)
@version 1.4b1 (Released June 20, 2001)
*************************************************************************
END OF BROWSERLAUNCHER NOTICES AND INFORMATION
*************************************************************************
PNGIMAGE PRODUCER CODE. The Program includes the following PNGImage
Producer software:
· PNGImage Producer V0.88
IBM obtained the right to use the software under the following license
from PNGImage Producer:
// Copyright (c) 1997, Jason Marshall. All Rights Reserved
//
// The author makes no representations or warranties regarding the suitability,
// reliability or stability of this code. This code is provided AS IS. The
// author shall not be liable for any damages suffered as a result of using,
// modifying or redistributing this software or any derivitives thereof.
// Permission to use, reproduce, modify and/or (re)distribute this software is
// hereby granted.
*************************************************************************
END OF PNGIMAGE PRODUCER NOTICES AND INFORMATION
*************************************************************************
HSQL CODE. The Program includes the following HSQL Development Group
software:
· HSQLDB V1.7.1
IBM obtained the right to use the software under the following license
from the HSQL Development Group:
/* Copyright (c) 2001-2002, The HSQL Development Group
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the HSQL Development Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*************************************************************************
END OF HSQL NOTICES AND INFORMATION
*************************************************************************
ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1995-2010 International Business Machines Corporation
and others
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice appear
in all copies of the Software and that both the above copyright notice(s) and
this permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.
The source code for ICU is available on the Web from: http://www.icu-project.org/
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
Unicode Data Files include all data files under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
http://www.unicode.org/cldr/data/ . Unicode Software includes any source
code published in the Unicode Standard or under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
http://www.unicode.org/cldr/data/.
NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA
FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY
ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS
AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY,
DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
COPYRIGHT AND PERMISSION NOTICE
Copyright © 1991-2009 Unicode, Inc. All rights reserved. Distributed
under the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
(the "Data Files") or Unicode software and any associated documentation
(the "Software") to deal in the Data Files or Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish,
distribute, and/or sell copies of the Data Files or Software, and to permit
persons to whom the Data Files or Software are furnished to do so, provided
that (a) the above copyright notice(s)and this permission notice appear with
all copies of the Data Files or Software, (b) both the above copyright
notice(s) and this permission notice appear in associated documentation,
and (c) there is clear notice in each modified Data File or in the Software
as well as in the documentation associated with the Data File(s) or Software
that the data or software has been modified.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS,WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written authorization
of the copyright holder.
*************************************************************************
END OF ICU NOTICES AND INFORMATION
*************************************************************************
IBM Public License
The Program includes some or all of the following that IBM obtained under
the IBM Public License (source code available via the indicated URL):
JTOPEN V5.1.1 (http://sourceforge.net/projects/jt400/)
*************************************************************************
END OF JTOPEN NOTICES AND INFORMATION
*************************************************************************
===========================================================================
END OF InstallAnywhere 2010 SP1 NOTICES AND INFORMATION
===========================================================================
===========================================================================
END OF IBM LTFS SDE Linux version 2.2 NOTICES AND INFORMATION
===========================================================================

573
ltfs/doc/README Normal file
View File

@@ -0,0 +1,573 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
The HPE LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
This file is part of the HPE Linear Tape File System package. HPE LTFS is
free software; you can redistribute it and/or modify it under the terms
of the GNU Lesser General Public License as published by the Free Software
Foundation, version 2.1 of the License.
HPE LTFS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
or download the license from <http://www.gnu.org/licenses/>.
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
HPE-SOS usage
=======================================================================
1. Build and/or install the HPE-SOS application
Installation instuctions are in INSTALLING.linux / INSTALLING.macosx
Information on how to build from source are in BUILDING.linux /
BUILDING.macosx / Building.windows
2. Ensure that /usr/local/bin/ is in your command search path
For example:
$ export PATH="$PATH:/usr/local/bin"
3. Format the tape cartridge in LTFS format
For Linux:
$ mkltfs -d /dev/st0
For Mac OS X:
$ mkltfs -d 0
Usage: mkltfs <options>
Available options are:
-d, --device=<name> Tape device (required)
-f, --force Force to format medium
-s, --tape-serial=<id> Tape serial number (6 alphanumeric ASCII characters)
-n, --volume-name=<name> Tape volume name (LTFS VOLUME by default)
-r, --rules=<rules> Rules for choosing files to write to the
index partition.
The syntax of the rule argument is:
size=1M
size=1M/name=pattern
size=1M/name=pattern1:pattern2:pattern3
A file is written to the index partition if it is
no larger than the given size AND matches at least
one of the name patterns (if specified). The size
argument accepts K, M, and G suffixes. Name
patterns might contain the special characters
'?' (match any single character) and '*' (match
zero or more characters).
--no-override Disallow mount-time data placement policy changes
-w, --wipe Restore the LTFS medium to an unpartitioned medium
(format to a legacy scratch medium)
-q, --quiet Suppress progress information and general messages
-t, --trace Enable function call tracing
--syslogtrace Enable diagnostic output to stderr and syslog
-V, --version Version information
-h, --help This help
-p, --advanced-help Full help, including advanced options
-g, --interactive Interactive mode
-i, --config=<file> Use the specified configuration file
(default: /usr/local/etc/ltfs.conf)
-e, --backend=<name> Use the specified tape device backend
(default: ltotape)
-b, --blocksize=<num> Set the LTFS record size (default: 524288)
-c, --no-compression Disable compression on the volume
-k, --keep-capacity Keep the tape medium's total capacity proportion
-x, --fulltrace Enable full function call tracing (slow)
--long-wipe Unformat the medium and erase any data on the tape
by overwriting with special data pattern.
This operation takes over 3 hours. Once you start,
you cannot interrupt it.
LTFS17085I Plugin: Loading "ltotape" driver
LTOTAPE backend options:
-o log_directory=<dir> log snapshot directory (default=/var/log)
-o nosizelimit remove 512kB limit (NOT RECOMMENDED)
Usage example:
mkltfs --device=/dev/nst0 --rules="size=100K"
mkltfs --device=/dev/nst0 --rules="size=1M/name=*.jpg"
mkltfs --device=/dev/nst0 --rules="size=1M/name=*.jpg:*.png"
4. Mount the formatted tape cartridge
$ mkdir /mnt/lto5
$ ltfs /mnt/lto5
ltfs options:
usage: ltfs mountpoint [options]
general options:
-o opt,[opt...] mount options
-h --help print help
-V --version print version
FUSE options:
-d -o debug enable debug output (implies -f)
-f foreground operation
-s disable multi-threaded operation
-o allow_other allow access to other users
-o allow_root allow access to root
-o nonempty allow mounts over non-empty file/dir
-o default_permissions enable permission checking by kernel
-o fsname=NAME set filesystem name
-o subtype=NAME set filesystem type
-o large_read issue large read requests (2.4 only)
-o max_read=N set maximum size of read requests
-o hard_remove immediate removal (don't hide files)
-o use_ino let filesystem set inode numbers
-o readdir_ino try to fill in d_ino in readdir
-o direct_io use direct I/O
-o kernel_cache cache files in kernel
-o [no]auto_cache enable caching based on modification times (off)
-o umask=M set file permissions (octal)
-o uid=N set file owner
-o gid=N set file group
-o entry_timeout=T cache timeout for names (1.0s)
-o negative_timeout=T cache timeout for deleted names (0.0s)
-o attr_timeout=T cache timeout for attributes (1.0s)
-o ac_attr_timeout=T auto cache timeout for attributes (attr_timeout)
-o intr allow requests to be interrupted
-o intr_signal=NUM signal to send on interrupt (10)
-o modules=M1[:M2...] names of modules to push onto filesystem stack
-o max_write=N set maximum size of write requests
-o max_readahead=N set maximum readahead
-o async_read perform reads asynchronously (default)
-o sync_read perform reads synchronously
-o atomic_o_trunc enable atomic open+truncate support
-o big_writes enable larger than 4kB writes
-o no_remote_lock disable remote file locking
Module options:
[subdir]
-o subdir=DIR prepend this directory to all paths (mandatory)
-o [no]rellinks transform absolute symlinks to relative
[iconv]
-o from_code=CHARSET original encoding of file names (default: UTF-8)
-o to_code=CHARSET new encoding of the file names (default: UTF-8)
LTFS options:
-o config_file=<file> Configuration file
(default: /usr/local/etc/ltfs.conf)
-o work_directory=<dir> LTFS work directory (default: /tmp/ltfs)
-o atime Update index if only access times have changed
-o noatime Do not update index if only access times have
changed (default)
-o tape_backend=<name> tape backend to use (default: ltotape)
-o iosched_backend=<name> I/O scheduler implementation to use
(default: unified, use "none" to disable)
-o umask=<mode> Override default permission mask
(3 octal digits, default: 000)
-o fmask=<mode> Override file permission mask
(3 octal digits, default: 000)
-o dmask=<mode> Override directory permission mask
(3 octal digits, default: 000)
-o min_pool_size=<num> Minimum write cache pool size. Cache objects
are 1 MB each (default: 25)
-o max_pool_size=<num> Maximum write cache pool size. Cache objects
are 1 MB each (default: 50)
-o rules=<rules> Rules for choosing files to write to the
index partition.
The syntax of the rule argument is:
size=1M
size=1M/name=pattern
size=1M/name=pattern1:pattern2:pattern3
A file is written to the index partition if
it is no larger than the given size AND
matches at least one of the name patterns (if
specified). The size argument accepts K, M,
and G suffixes. Name patterns might contain
the special characters '?' (match any single
character) and '*' (match zero or more
characters).
-o quiet Disable informational messages (same as
verbose=1)
-o trace Enable diagnostic output (same as verbose=3)
-o syslogtrace Enable diagnostic output to stderr and syslog
(same as verbose=303)
-o fulltrace Enable full call tracing (same as verbose=4)
-o verbose=<num> Override output verbosity directly (default:2)
-o eject Eject the cartridge after unmount
-o noeject Do not eject the cartridge after unmount
(default)
-o sync_type=<type> Specify sync type (default: time@5)
<type> should be specified as follows:
time@min: LTFS attempts to write an index
every 'min' minutes. min should be a
decimal value from 1 to 10. A value of
0 is equivalent to
"-o sync_type=unmount"
(default: min=5)
close: LTFS attempts to write an index
when each file is closed. This is not
recommended for normal use.
unmount: LTFS attempts to write an index
only when the medium is unmounted
-o force_mount_no_eod Skip EOD existence check when mounting
(read-only mount)
Only use for a CM corrupted medium
-o rollback_mount=<gen> Attempt to mount on previous index generation
(read-only mount)
-o release_device Clear device reservation (should be specified
with -o devname
-o capture_index Capture latest index to the work directory at
unmount
-a Advanced help, including standard FUSE options
453e LTFS17085I Plugin: Loading "ltotape" driver
LTOTAPE backend options:
-o devname=<dev> tape device (default=/dev/nst0)
-o log_directory=<dir> log snapshot directory (default=/var/log)
-o nosizelimit remove 512kB limit (NOT RECOMMENDED)
5. Write files to the LTFS volume
For example:
$ cp -RL /home/user1 /mnt/lto5/
6. Unmount the tape cartridge
This flushes the data buffer of the file system to the tape cartridge,
and prepares for eject.
$ umount /mnt/lto5
OR
$ fusermount -u /mnt/lto5 (Linux only)
7. If at some time in the future user wishes to remove the LTFS format from
the cartridge so that it can be reused for a different purpose, use
the unltfs utility. Note that this will IRRETRIEVABLY DESTROY all
contents of the cartridge, so use it only when you are sure that you
wish to erase the LTFS volume.
$ unltfs -d /dev/st0
unltfs options:
Usage: unltfs <options>
-d, --device=<name> specifies the tape drive to use
-y, --justdoit omits normal verification steps, reformats without
further prompting
-e --eject eject tape after operation completes successfully
-q, --quiet suppresses all progress output
-t, --trace displays detailed progress
-h, --help shows this help
-i, --config=<file> overrides the default config file
-b, --backend specifies a different tape backend subsystem
-x, --fulltrace displays debug information (verbose)
8. If the cartridge becomes inconsistent due to power failure, improper
unmount, or other exceptional conditions then the ltfsck utility can
be used to repair it / make it consistent again.
$ ltfsck /dev/st0
ltfsck options
Usage: ltfsck [options] filesys
filesys Device file for the tape drive
Available options are:
-g, --generation=<generation> Specify the generation to roll back
-r, --rollback Roll back to the point specified by -g
-n, --no-rollback Do not roll back. Verify the point specified
by -g (default)
-f, --full-recovery Recover extra data blocks into directory
_ltfs_lostandfound
-z, --deep-recovery Recover a cartridge with missing EOD
Some blocks might be erased, but recover to
final unmount point with an index version of
at least 2.0.0 or earlier. This option must
be used for a cartridge that cannot be
recovered by a normal repair)
-l, --list-rollback-points List rollback points
-m, --full-index-info Display full index information (works only
with the -l option)
-v, --traverse=<strategy> Set traverse mode for listing roll back
points. Strategy should be forward or
backward. (default: backward)
-j, --erase-history Erase history at rollback
-k, --keep-history Keep history at rollback (default)
-q, --quiet Suppress informational messages
-t, --trace Enable diagnostic output
--syslogtrace Enable diagnostic output to stderr and syslog
-V, --version Version information
-h, --help This help
-p, --advanced-help Full help, including advanced options
-i, --config=<file> Use the specified configuration file
(default: /usr/local/etc/ltfs.conf)
-e, --backend=<name> Override the default tape device backend
-x, --fulltrace Enable full function call tracing (slow)
--capture-index Capture index information to the current
directory (-g is effective for this option)
--salvage-rollback-points List the rollback points of a cartridge that
has no EOD
LTFS17085I Plugin: Loading "ltotape" driver
LTOTAPE backend options:
-o log_directory=<dir> log snapshot directory (default=/var/log)
-o nosizelimit remove 512kB limit (NOT RECOMMENDED)
Usage example:
ltfsck /dev/nst0
ltfsck --generation --rollback /dev/nst0
ltfsck --deep-recovery --full-recovery /dev/nst0
Changes from version v3.4.1 to 3.4.2:
=====================================
- Corrected issue switching in/out of append-only mode with LTO7/LTO8 drives
- Corrected issue with ltfscopy and md5sum verification
Changes from version v3.4.0 to 3.4.1:
=====================================
- Corrected issue affecting sending of library drive tickets to CVTL
- Corrected issue with truncation of barcodes
Changes from version v3.3.0 to 3.4.0:
=====================================
- Support append-only mode option flag for LTO7 & LTO8 drives
- Defect fixes
Changes from version v3.2.0 to 3.3.0:
=====================================
- Support for HPE LTO8 tape drives
- Support for SNIA 2.4 Percent Encoding
- Support for SNIA 2.4 Vol Avisory Locking
- Support for SNIA 2.4 Open for Write
- Defect fixes
Changes from version v3.1.0 to 3.2.0:
=====================================
- Support for Volume Advisory Locking
- Support for volume UUID
- Support for Windows Server 2016
- Support for macOS Sierra
- Support for capturing index by default (Windows and Mac Only)
- LTFSCOPY default behavior changed to prompt before overwriting files
- LTFSCOPY will preserve modification time with new option '-t'
- Added support for HPE Archive Manager tape identification and mounting the same as read only
- Defect fixes
Changes from version v3.0.0 to 3.1.0:
=====================================
- Hewlett Packard Enterprise Branding
Changes from version v2.3.0 to 3.0.0:
=====================================
- Support for HP LTO-7 Ultrium SAS standalone tape drives
- LTFS Configurator displays messages indicating the progress of the mount operation
- LTFS Configurator supports custom names for tape drives
- CartridgeBrowser utility supports search based on file attribute values
Changes from version v2.2.1 to 2.3.0:
=====================================
- Added multidrive support for windows
- Added support for icons and label to indicate the status of the cartridge in windows
- Added support for search option within Cartridge Browser
- Added new utility "LTFS Smart copy" for efficient data transfer from cartridge and content data verification for files on the cartridge.
- Implemented ability to list rollback points of a cartridge without EOD marker (--salvage-rollback-points)
- Installation in Linux (RHEL)is now using RPM package.
- LTFS is built with ICU version 50.1.2
- Added support for RHEL 7.0
- Added support for MacOSX 10.10
- Removed support for SLES
- Defect fixes
Changes from version v2.2.0 to 2.2.1:
=====================================
- Added 'interactive mode' for mkltfs utility.
- The default 'mkltfs' behavior modified to avoid user confirmation.
- The '--quite' option in 'mkltfs' and 'unltfs' utilities now does not imply '--force'
Changes from version v2.1.1 to 2.2.0:
=====================================
- Added support for LTFS Spec Version 2.2.0
- Added support for MAM Barcode attribute
- Added support for ICU version 4.8.1.1
- Added support for RHEL 6.5 and RHEL 5.10
- Added support for Windows 2012 R2 and Windows 8.1
- Removed support for MacOSX 10.6
- Defects fixed in Windows and Mac GUI
- Defects fixed in Windows and Mac Installer
- Defects fixed in LTFS core application
Changes from version v2.1.0 to 2.1.1:
======================================
- Error fixes in windows installer to support upgrade
- Fix to accept the index rules correctly when supplied using the LTFSConfigurator
- Fix in ltfsck when run with --deep-recovery option
- Fix to mount full tapes as read-only
- Fix to clear the EWSTATE flag when a full tape is rolled back with --erase-history option
- Fixed memory leaks
Changes from version v2.0.0 to 2.1.0:
======================================
- Enhanced LTFS driver for small file support(Improve file creation/listing time
when a directory has many small files)
- Improved Wizards and Configuration tool for Windows GUI
- Cartridge utilities can be run directly from LTFSconfigurator
- Default volume name is LTFS_VOLUME
- Enhanced support for LTO CM attributes
- Added support LTFS format specifications 2.1.0
- Added support for symbolic link for Linux and Mac
- Added support for rollback mount/read-only mount
- Added support to save the current index as a xml file on unmount or when 'ltfsck' is run.
- Application can run in background now in Mac.
- Rollback of index is now possible only by specifying the generation number of the index,
rollback using timespec of the index is disabled.
- Implemented signal handlers to handle kill/interrupt signals and unmount the volume even when
the mount is being done.
- Tape can be unformatted by specifying -w option to mkltfs
Changes from version v1.2.2 to v2.0.0:
======================================
- Added support for LTO6 tape drives
- Set the Application Format Version MAM attribute when formatting a volume
- Added support for four new virtual extended attributes (VEA's):
ltfs.softwareProduct, ltfs.softwareVendor, ltfs.softwareVersion,
ltfs.softwareFormatSpec
- Improved the handling of a cartridge that was not unmounted properly
- Improved the process for storing a file on the index partition when the
data placement policy is specified
- Modified to update the change time of a file or directory when the VEA
ltfs.modifyTime is written
- Fixed the problem that ltfs.mediaStorageAlert VEA is cleared when another
VEA is read
- Fixed a problem in ltfsck when trying to list rollback points and a corrupt
index is encountered
- Added a check for a write-protected cartridge in mkltfs
Changes from version v1.2.0 to v1.2.2:
======================================
- Added the unltfs utility
- Added "-o nosizelimit" option to ltfs
- Improved message reporting for advisory conditions that previously were
being reported as error conditions
- Installer on Mac OS X now tries to create the logfile directory if it
doesn't already exist
- Mac OS X package now includes an application to simplify the management
of an LTFS volume
Changes from version v1.1.0 to v1.2.0:
======================================
- Conforms with new LTFS Format Specification 2.0.0
- Backward compatibility with Version 1.0 formated tapes, and built-in
automatic migration mechanism to Version 2.0.0 format
- Improved the parsing and handling of the index information
- Supports standardized virtual extended attribute (VEA) names.
VEA names used in previous release of LTFS become obsolete and
no longer available.
- See Important Note below
- Enhanced the ability to recover the tapes in inconsistent state,
which was caused by unexpected power outage.
- Added a new function to flush the in-memory user data to the tape medium
at pre-defined timing; either sync at file close or sync periodically.
The default behaviour is now to sync the index every five minutes.
- Changed the command line syntax of ltfs and mkltfs command for
specifying the data placement rules
- Check for incompatible media and report problems in a helpful way
- Various minor corrections and updates
Important Note:
===============
Earlier versions of the HPE LTFS application supported the original 1.0 LTFS
format specification; version v1.2.0 and later supports the updated 2.0.0 LTFS
format specification. LTFS volumes created with application v1.2.0 will not
be readable in older versions of the LTFS application, as shown in the
following table:
Cartridge written by Cartridge written by Cartridge written by
LTFS application v1.1.0 or earlier v1.2.0 or later v2.1.0 or later
-------------------- ---------------------- ---------------------- -----------------------
v1.1.0 or earlier Read/Write ok Cannot be mounted N/A
v1.2.0 or later Readable ok; will Read/Write ok N/A
automatically be
converted to new
format if written
v2.1.0 or later Readable ok; will Readable ok; will Read/Write ok
automatically be automatically be
converted to new converted to new
format if written format if written
HPE recommends that all instances of HPE LTFS should be updated to latest version
to avoid these compatibility issues.
If for some reason it is important to maintain cartridges readable by
previous versions of the HPE LTFS application, care should be taken to avoid
writing to those cartridges with the new version of the application. This
may be accomplished by mounting the volume as read-only, or by using the
cartridge write-protect tab to prevent cartridge updates. However this
should be regarded as a temporary measure until all the application instances
can be updated to latest version.
Limitations:
============
1. When the tape cartridge is almost full, further write operations will
be prevented. The free space on the tape (e.g. from the df command)
will indicate that there is still some capacity available, but that
is reserved for updating the index when the tape is unmounted.
2. Future mounts of a cartridge that is almost full (has passed the
point at which "early warning" is reported) will mount as Read Only,
to prevent further modifications which may not fit on tape. This
status is cleared when a cartridge is reformatted (using mkltfs) or
when the volume is rolled back erasing history (using ltfsck).
3. (Mac OS X) LTFS does not support moving a folder within LTFS.
Any attempt to move a folder in such a manner will result in an
"operation not permitted" error, and the operation will be ignored.
The user can still move a file within LTFS, and the user can also move
a folder from LTFS to non-LTFS file system or vice versa.
4. (Mac OS X) Mac OS X's Spotlight will not display the files
on LTFS as a result of search.

678
ltfs/doc/README.windows Normal file
View File

@@ -0,0 +1,678 @@
=======================================================================
HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
=======================================================================
Files in this download contain Licensed Materials, property of HPE,
(C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
Files in this download also contain Licensed Materials, property of IBM,
(C) Copyright IBM Corp. 2010, 2014
The HPE LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
This file is part of the HPE Linear Tape File System package. HPE LTFS is
free software; you can redistribute it and/or modify it under the terms
of the GNU Lesser General Public License as published by the Free Software
Foundation, version 2.1 of the License.
HPE LTFS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
or download the license from <http://www.gnu.org/licenses/>.
See the Licensing agreement (COPYING.LIB) when LTFS is downloaded.
Further details on HPE's LTFS implementation can be found at
www.hpe.com/storage/storeopen
=======================================================================
HPE-SOS_3.4.2 usage
=======================================================================
1. Mapping a tape drive to a drive letter
Before you can access the tape cartridge as a volume, you must first establish a mapping between
the tape drive and a Windows drive letter. To do this, run the LTFS Configuration Tool located in
the HPE StoreOpen Software program group.
NOTE: The tool may request administrative privileges, depending on your system security policies.
By default the first usable tape drive found on your system is selected, along with the first unused
drive letter. Change the selections as desired, then to mount with all the default options, click Create
mapping. This results in the following actions:
1.The configuration tool checks that the drive is accessible and usable.
2.The tool attempts to verify that your system has suitable HBA driver support for LTFS operation.
3.The tool looks for a currently loaded tape cartridge. If a cartridge is found, it is checked to
see if it is formatted as an LTFS volume. If not, you are offered the option of formatting the
cartridge before proceeding. It is recommended that you should accept this option.
4.Once a formatted cartridge is detected, or if no cartridge is present, the file system service is
started and the window is updated to reflect the new configuration.
5.A new option called Drive alias is provided for the user to specify drive names of their choice.
2. Using HPE StoreOpen Software (Windows)
When the mapping has been established, you can close or minimize the configuration tool,or choose
to map to another tape drive.
NOTE: SOS supports mapping of two tape drives at a time.The newly provided Drive alias option will
be useful to provide appropriate drive names for both the drives.
A Windows Explorer window will now include an LTFS volume. The first time you access this drive
volume there will be a slight delay whilst the index is loaded and checked, but from then on the
drive volume may be accessed as normal.
CAUTION: If you insert a cleaning cartridge while a drive letter is assigned to the tape drive,
HPE StoreOpen will attempt to use the cartridge. This can degrade the life of the cleaning cartridge.
In order to preserve the cleaning cartridge, remove the drive letter mapping for the tape drive by
using the LTFS configurator before inserting the cleaning cartridge in to the tape drive.
a. Mount options
In most circumstances the default options are suitable and you do not need to change them. However
for flexibility you can modify them if you wish. The options are as follows:
• Mount read-only If you select this option, the cartridge contents are readable but cannot be
modified. This provides a “software” write-protect mechanism; the same effect can be achieved
using the “hardware” write protect tab on the tape cartridge.
• Re-mount the mapped drives at system start-up The normal behavior is to configure the
service so that it automatically restarts when the system boots up. Unselect this checkbox if
you do not want this to happen (for example, if this is a temporary setup where the tape drive
will be removed after the system is shut down).
b. Advanced options
This opens a further window where you can adjust less common options.
NOTE: Some of these options may have a noticeable impact on performance and in general
should not be changed.
◦ Support ticket folder: This is the location where drive logs are stored. These logs are
generated on each unmount and whenever an error is detected. The application will keep
the ten most recent logs and automatically delete any older logs. These logs may be useful
to HPE support personnel but otherwise can be ignored.
◦ Enable verbose logging: This is not required in normal operation and you should only
use it when requested by HPE support personnel, as it will have an adverse effect on performance.
◦ Enable extended verbose logging: This adds a further level of detail to logfile entries.
◦ Thumbnails: When Windows encounters a folder full of files, it attempts to build thumbnails
to represent the content of each file. This is not desirable in an LTFS volume, because it
may take many minutes or even hours to generate the thumbnails. So by default HPE
StoreOpen Software tells the operating system that the volume is in the “offline” state,
which prevents automatic thumbnail creation. You can turn this off if desired, but be
aware that it will have a severe effect on the time needed to open and browse folders.
• Index capture: This option allows you to keep a copy of the latest index from tape on
the local disk. Enable the check box and enter the path to the folder where you would
like to keep the index file after the tape is unmounted.
◦ Index updates: This allows you to control when indexes are written to tape.
◦ Index partition usage: The LTFS format allows for data files to be written in the index
partition, which if used carefully may improve access times for frequently-used files.
However, in general you should leave this setting in its default state.
c. Index updates
Accessing data stored on tape relies on an up-to-date index being available. HPE StoreOpen
Software offers three different mechanisms for updating the copy of the index stored on tape.
The default setting is to write a copy of the index to tape periodically while writing data; the index
is written every five minutes. You can change the time interval to every minute. This method of
index update reduces the window of exposure to power-loss events, since there will be an index
on tape no more than five minutes old (if using the default interval).
The second option is to write the index to tape only when a volume is removed. In normal operation
this is sufficient, since the LTFS usage model requires the volume to be unmounted after use, so
there is always a valid index. However, if power is removed from the drive without unmounting,
for example, through an unplanned power outage or accidental unplugging, the volume will be
left in an inconsistent state, and all files added since the last dismount operation will be inaccessible.
The CheckWizard utility may be able to recover the file data to the _ltfs_lostandfound
directory, but the metadata (filename, access dates, and so on) will be lost.
The final mechanism provided in HPE StoreOpen Software is to update the index every time a
file is closed after writing. This further reduces the exposure window to a single file, or (if several
processes are using the volume simultaneously) to the number of files being written concurrently.
However, this does add some overhead, both in terms of the tape capacity used for each index,
and also in terms of performance since the writing of the index will take bandwidth away from
writing data. These overhead effects will become more severe with smaller file sizes.
In most cases the default behavior offers the best solution, but the options allow you to modify the
behavior for a particular situation.
3. Cartridge utilities
The cartridge utilities button opens a further window where you can access the utilities for formatting
the tape, etc
• Load: Physically loads the tape which is already presented to the drive.
• Unload: Physically ejects the LTFS volume from the tape drive. The file system will continue to
run, but attempting to access the volume while no cartridge is present will result in the error
message “The device is not ready”. When a formatted LTFS cartridge is loaded into the drive,
the index will be read and checked, and then the volume may again be accessed.
• Format: Starts the FormatWizard to guide you through the steps and options of creating a
fresh volume on the current cartridge
• Unformat: Runs the UnformatWizard to guide you through the steps and options of removing
the LTFS format from the tape.
• Check: Runs the Error-checking tool which scans the volume for consistency and can correct
certain problems with the format.
4. File permissions
The HPE StoreOpen Software application manages a common set of file permissions for all files
and users; file and directory ownership is not recorded to tape media. The only permission that is
tracked is write-protect information.
5. File names
To maintain compatibility when copying files between multiple platforms, it is strongly recommended
that do you do not use the following characters LTFS filenames, directory names, or extended
attributes: * ? < > : " | / \
6. Limitations
• When the tape cartridge is almost full, further write operations will be prevented. The free
space on the tape (for example, as reported by Explorer) will indicate that there is still some
capacity available, but that is reserved for updating the index when the tape is unmounted.
• Future mounts of a cartridge that is almost full (that is, it has passed the point at which “early
warning” is reported) will mount as Read Only, to prevent further modifications that may not
fit on the tape. This status is cleared when the cartridge is reformatted (using mkltfs) or when
the volume is rolled back, erasing the history.
• MAM and LTFS attributes cannot be listed using the ltfsattr command. The ltfs and MAM
attributes are case sensitive.
• LTFS volume name cannot be modified on a LTFS tape which is full.
• Disconnecting or powering off a tape drive while it is mounted can make the LTFS volume
inconsistent. Always un-mount the LTFS volume before disconnecting or powering down the
tape drive.
7. Working with Windows Explorer
Once the mapping has been established and an LTFS-formatted cartridge loaded, you can access
the contents of the cartridge either at a command prompt or through Windows Explorer.
LTFS Configurator now also displays messages indicating the progress of the mount operation.
i) The volume type is shown as a LTFS VOLUME. This results from the way that the LTFS
volume is linked into the operating system, and has no impact on operation.
ii) The Total size and Space free figures appear slightly lower than expected; this is due
to the way that Windows calculates and report capacities in binary GB (230 bytes) and TB
(240 bytes) instead of decimal GB (109 bytes) and TB (1012) bytes. Note too that these are
worst-case figures; if the volume is employing the drives default lossless hardware data
compression, then the actual capacity available may be significantly greater than that
shown.
8. Using the FormatWizard
Before you can use an LTO-5 or LTO-6 cartridge with LTFS, it must be prepared by formatting
according to the LTFS specification. The LTFSFormatWizard application helps to select appropriate
options and settings and then formats the tape. You can run it from the context menu, from the LTFS
Tools tab in the drive properties, or from the HPE StoreOpen Software program group.
CAUTION: Read all the text on the wizard dialog windows carefully. Completing this wizard
will irretrievably destroy all tape contents.
NOTE: If you execute the FormatWizard while no LTFS volume is mapped to a drive letter, the
wizard may require administrative privileges (depending on system security policies and settings).
Running with insufficient privileges will result in an inability to “see” the tape drive and consequently
no formatting can be performed. If this occurs, right-click on the executable and select Run as
administrator.
a) The initial screen presents information about the operation that has been started.
b) The next window allows you to select a tape drive and related options.
The first drive on the system (or the one being used by the mounted file system, if any) will be
selected by default; change the selection to use a different tape drive.
NOTE: Only drives suitable for use with LTFS are shown in the list.
By default the drives lossless hardware data compression engine will be enabled. You can
turn it off if desired, in which case all writes and reads to this cartridge will bypass the
compression engine.
c) The next window contains options related to the cartridge format.
Both of these fields are optional, and are intended to provide a method of identifying the
cartridge. Tape serial number should be no more than six alphanumeric characters (AZ,
09). Volume name is a free-format text string.
The Advanced button leads to a further set of options; however it is recommended that you
leave these at their default settings for all normal usage.
d) The final window summarizes the format operation that you have defined using the wizard.
When you click Finish, the following operations take place:
i) If the cartridge is currently mounted, it is unmounted
ii) A “Progress” dialog window is created.
iii)The format operation starts.
iv) All tape contents are removed and a fresh (empty) index written to the cartridge.
v) If the cartridge was mounted, the new cartridge is mounted.
vi) When the Progress dialog shows that the format is complete, you can close the window.
9. Using the CheckWizard
The LTFSCheckWizard application has two purposes:
• To check for problems with the format as written on the cartridge, and usually recover from
them. This is not normally necessary but may be required for example if the drive was powered
off without cleanly unmounting the volume.
• To facilitate the rolling back of the cartridge contents to an earlier state.
CAUTION: Read all the text on the wizard dialog windows carefully. Completing this wizard
may irretrievably modify the tape contents.
NOTE: If you execute the CheckWizard while no LTFS volume is mapped to a drive letter, the
wizard may require administrative privileges (depending on system security policies and settings).
Running with insufficient privileges will result in an inability to “see” the tape drive and consequently
no checking can be performed. If this occurs, right-click on the executable and select Run as
administrator.
a) The initial screen presents information about the operation that has been started.
b) The next window allows you to select a tape drive.
The first drive on the system (or the one being used by the mounted file system, if any) is
selected by default; change the selection to use a different tape drive.
NOTE: Only drives suitable for use with LTFS are shown in the list.
Select Provide detailed progress information to display more detail during the checking
operation.
c) The next window is where you select the desired mode of operation
• Check and repair volume: Select this option to check the volume for consistency.
If you suspect the volume was not updated properly due to a power outage, select
the Perform deep recovery if necessary option, which will attempt to verify and, if
necessary, recover from a missing End Of Data (EOD) marker. This may take a long
time and may result in the loss of unindexed data blocks written since the last good
index.
If it is important to try to recover those unindexed data blocks, select the option
Attempt to save any unindexed data blocks. The utility will try to save the blocks to
a new folder _ltfs_lostandfound.
NOTE: You need to identify and manipulate any recovered blocks manually, since
there will be no identifying details (because they were not in any index).
• Rollback cartridge contents to previous state: Select this option if you want to change the
view of the cartridge contents to a previous point in time. There are two choices:
Keep all history to allow potential roll forward in the future: The default is to roll
back the contents as viewed in the index, but not erase any data — on other words,
the view of the contents is changed, but the actual contents are unchanged. This
allows for a future operation to “roll forward” the contents again, recovering changes
that occurred since the rollback point. Note that no storage space is freed up by this
option.
Permanently erase all files after rollback point: Roll back and erase the history. In
this case, any changes since the rollback point will be lost irretrievably, so be sure
that this is what you intend. This option will free up the storage space used by those
changes.
If you opt to Rollback cartridge contents, an additional window is presented where you
will be able to select a rollback point from those on the cartridge. Click Start scan to
initiate a scan of the entire volume, looking for previous index points stored on tape. This
operation may take many minutes or even several hours. When complete, the window
is refreshed to show the available rollback points.
d) Select a rollback point and click Next.A summary of the operation to be carried out is displayed.
When you click Finish, the following operations take place:
i) If the cartridge is currently mounted, it is unmounted.
ii) A Progress dialog window is created.
iii)The check or rollback operation starts.
iv) The Progress dialog is updated as the operation proceeds to completion.
v) If the cartridge was mounted, the checked or updated volume will be re-mounted
e) When the Progress dialog shows that the operation is complete, you can close the window.
10. Using the UnformatWizard
CAUTION: This operation will permanently remove all data present on the cartridge, so only use
it if this is what you intend.
You do not normally need to use the UnformatWizard. Its purpose is to remove the LTFS format
from a cartridge and return it to a single partition, so that the cartridge can be used with a different
software application. This utility is similar to the FormatWizard, but is much simpler, since there is
only one option affecting operation (to eject the cartridge from the drive once the format has been
removed).
NOTE: The UnformatWizard may request administrative privileges to execute (depending on
system security policies and settings).
11. Using the ltfsattr utility
HPE StoreOpen Software version 2.2.0 onwards includes the LTFSATTR utility which can be used
to access the attributes from the LTFS volume. It is a Windows command line utility which provides
similar functionality to the “attr” command in Linux and the “xattr” command in Mac OS X.
Running the ltfsattr utility with no parameters gives the usage information.
Usage: ltfsattr -h
ltfsattr -p attrname [-v] filename
ltfsattr -w attrname attrvalue [-v] filename
ltfsattr -l [-v] filename
ltfsattr -x attrname [-v] filename
ltfsattr options:
-h prints the usage information
-p reads and displays the value of attrname
for filename with -v, also displays the
filename and the attribute name
-w writes attribute attrname with value
attrvalue for filename with -v, provides
confirmation (otherwise silent on success)
-l lists the user attributes for filename with -v,
also lists the values (otherwise just the names)
-x deletes attribute attrname for filename
with -v, provides confirmation (otherwise
silent on success)
NOTE: Filename may also refer to a directory or folder name.
NOTE: This utility manipulates extended attributes in conjunction with HPE StoreOpen software
and should only be used in that context with a mounted LTFS volume.
12. HPE StoreOpen Cartridge Browser
HPE StoreOpen Software version 2.2.0 onwards includes a Windows GUI utility to view the
contents of LTFS index files. Users can select a folder which contains LTFS index files and
the utility will list all the index files in that folder. The user can then open a detailed
view displaying the contents of any index file.
NOTE: This utility does not interact with the tape drive or the StoreOpen software. Instead, it is
an independent tool for viewing the stored LTFS index files which are generated when an LTFS
volume is mounted and unmounted.
Users can select a folder where the index files are kept (in most setups this will be the directory
path selected for the index capture setting in the advanced options of the HPE LTFS configuration
GUI). The Cartridge Browser utility then displays all the index files in the folder. When you hover
the mouse over a particular index file the details about the index will be shown.
If you double click on any of the index files, the utility will open another window which shows a
detailed view of the selected index as a nested expandable tree. Selecting a particular file shows
the information regarding that file.
User can also search for specific files and find out in which index that file is present. The search
feature will be very useful if you have a lot of indexes and want to find out which tape has the
particular file. The search box accepts regular expressions as described below:
c matches any literal character c
. matches any single character
^ matches the beginning of the input string
$ matches the end of the input string
* matches zero or more occurrences of the previous character
13. LTFS Smart Copy utility
A console is provided with the set up to run the LTFS SmartCopy utility in windows
The installer includes the LTFS Smart Copy utility for Windows.
The LTFS Smart Copy tool provides the binary ltfscopy command that provides the below two
benefits to the LTFS users:
- Faster data transfer from Tape to disk and Tape to Tape.
- File verification using hash values.
The ltfscopy tool is installed by default when you install HPE StoreOpen Software. The
executable name is ltfscopy.exe and it will be available in the installation folder where you
installed the HPE StoreOpen Software software.
Command examples:
To copy the files from the tape cartridge to C:\photos:
ltfscopy.exe s E:\CVG427L5\ -d C:\photos
To copy files and all subfolders and files recursively:
ltfscopy.exe s E:\CVG427L5\ -d C:\photos --recursive
To copy files and all subfolders and files recursively and verify:
ltfscopy.exe s E:\CVG427L5\ -d C:\photos --copy --verify --recursive
To verify previously copied data by comparing it with source:
ltfscopy.exe -s E:\CVG427L5\ -d C:\photos --verify recursive
Run 'ltfscopy --help' for more information about usage and the supported options.
14. LTFS tape library utility
The ltfslibutil tool is installed when you install HPE StoreOpen Software.
It can be used to exchange cartridges for a mounted LTFS volume in a
supported tape library. Open the LTFS Console from the Start Menu and run
ltfslibutil h for usage information.
Command examples:
To identify which cartridge is currently loaded in drive R:
ltfslibutil i R:
To list available cartridges in the library:
ltfslibutil l n R:
To unload the current cartridge and replace with barcode G80289L7:
ltfslibutil b G80289L7 R:
Changes from version v3.4.1 to 3.4.2:
=====================================
- Corrected issue switching in/out of append-only mode with LTO7/LTO8 drives
- Corrected issue with ltfscopy and md5sum verification
Changes from version v3.4.0 to 3.4.1:
=====================================
- Corrected issue affecting sending of library drive tickets to CVTL
- Corrected issue with truncation of barcodes
Changes from version v3.3.0 to 3.4.0:
=====================================
- Supports HPE StoreEver MSL tape libraries
- New command line utility ltfslibutil
- Support append-only mode option flag for LTO7 & LTO8 drives
- Defect fixes
Changes from version v3.2.0 to 3.3.0:
=====================================
- Support for LTO 8
- Support for SNIA 2.4 Percent Encoding
- Support for SNIA 2.4 Vol Avisory Locking
- Support for SNIA 2.4 Open for Write
- Support for HPE 1/8 Autoloaders
- Defect fixes
Changes from version v3.1.0 to 3.2.0:
=====================================
- Support for Volume Advisory Locking
- Support for volume UUID
- Support for Windows Server 2016
- Support for macOS Sierra
- Support for capturing index by default (Windows and Mac Only)
- LTFSCOPY default behavior changed to prompt before overwriting files
- LTFSCOPY will preserve modification time with new option '-t'
- Added support for HPE Archive Manager tape identification and mounting the same as read only
- Defect fixes
Changes from version v3.0.0 to 3.1.0:
=====================================
- Hewlett Packard Enterprise Branding
Changes from version v2.3.0 to 3.0.0:
=====================================
- Support for HP LTO-7 Ultrium SAS standalone tape drives
- LTFS Configurator displays messages indicating the progress of the mount operation
- LTFS Configurator supports custom names for tape drives
- CartridgeBrowser utility supports search based on file attribute values
Changes from version v2.2.1 to 2.3.0:
=====================================
- Added multidrive support for windows
- Added support for icons and label to indicate the status of the cartridge in windows
- Added support for search option within Cartridge Browser
- Added new utility “LTFS Smart copy” for efficient data transfer from cartridge and content data verification for files on the cartridge.
- Implemented ability to list rollback points of a cartridge without EOD marker (--salvage-rollback-points)
- Installation in Linux (RHEL)is now using RPM package.
- LTFS is built with ICU version 50.1.2
- Added support for RHEL 7.0
- Added support for MacOSX 10.10
- Removed support for SLES
- Defect fixes
Changes from version v2.2.0 to 2.2.1:
=====================================
- Added 'interactive mode' for mkltfs utility.
- The default 'mkltfs' behavior modified to avoid user confirmation.
- The '--quite' option in 'mkltfs' and 'unltfs' utilities now does not imply '--force'
Changes from version v2.1.1 to 2.2.0:
=====================================
- Added support for LTFS Spec Version 2.2.0
- Added support for MAM Barcode attribute
- Added support for ICU version 4.8.1.1
- Added support for RHEL 6.5 and RHEL 5.10
- Added support for Windows 2012 R2 and Windows 8.1
- Removed support for MacOSX 10.6
- Defects fixed in Windows and Mac GUI
- Defects fixed in Windows and Mac Installer
- Defects fixed in LTFS core application
Changes from version v2.1.0 to 2.1.1:
======================================
- Error fixes in windows installer to support upgrade
- Fix to accept the index rules correctly when supplied using the LTFSConfigurator
- Fix in ltfsck when run with --deep-recovery option
- Fix to mount full tapes as read-only
- Fix to clear the EWSTATE flag when a full tape is rolled back with --erase-history option
- Fixed memory leaks
Changes from version v2.0.0 to 2.1.0:
======================================
- Enhanced LTFS driver for small file support(Improve file creation/listing time
when a directory has many small files)
- Improved Wizards and Configuration tool for Windows GUI
- Cartridge utilities can be run directly from LTFSconfigurator
- Default volume name is LTFS_VOLUME
- Enhanced support for LTO CM attributes
- Added support LTFS format specifications 2.1.0
- Added support for symbolic link for Linux and Mac
- Added support for rollback mount/read-only mount
- Added support to save the current index as a xml file on unmount or when 'ltfsck' is run.
- Application can run in background now in Mac.
- Rollback of index is now possible only by specifying the generation number of the index,
rollback using timespec of the index is disabled.
- Implemented signal handlers to handle kill/interrupt signals and unmount the volume even when
the mount is being done.
- Tape can be unformatted by specifying -w option to mkltfs
Changes from version v1.2.2 to v2.0.0:
======================================
- Added support for LTO6 tape drives
- Set the Application Format Version MAM attribute when formatting a volume
- Added support for four new virtual extended attributes (VEA's):
ltfs.softwareProduct, ltfs.softwareVendor, ltfs.softwareVersion,
ltfs.softwareFormatSpec
- Improved the handling of a cartridge that was not unmounted properly
- Improved the process for storing a file on the index partition when the
data placement policy is specified
- Modified to update the change time of a file or directory when the VEA
ltfs.modifyTime is written
- Fixed the problem that ltfs.mediaStorageAlert VEA is cleared when another
VEA is read
- Fixed a problem in ltfsck when trying to list rollback points and a corrupt
index is encountered
- Added a check for a write-protected cartridge in mkltfs
Changes from version v1.2.0 to v1.2.2:
======================================
- Added the unltfs utility
- Added "-o nosizelimit" option to ltfs
- Improved message reporting for advisory conditions that previously were
being reported as error conditions
- Installer on Mac OS X now tries to create the logfile directory if it
doesn't already exist
- Mac OS X package now includes an application to simplify the management
of an LTFS volume
Changes from version v1.1.0 to v1.2.0:
======================================
- Conforms with new LTFS Format Specification 2.0.0
- Backward compatibility with Version 1.0 formated tapes, and built-in
automatic migration mechanism to Version 2.0.0 format
- Improved the parsing and handling of the index information
- Supports standardized virtual extended attribute (VEA) names.
VEA names used in previous release of LTFS become obsolete and
no longer available.
- See Important Note below
- Enhanced the ability to recover the tapes in inconsistent state,
which was caused by unexpected power outage.
- Added a new function to flush the in-memory user data to the tape medium
at pre-defined timing; either sync at file close or sync periodically.
The default behaviour is now to sync the index every five minutes.
- Changed the command line syntax of ltfs and mkltfs command for
specifying the data placement rules
- Check for incompatible media and report problems in a helpful way
- Various minor corrections and updates
Important Note:
===============
Earlier versions of the HPE LTFS application supported the original 1.0 LTFS
format specification; version v1.2.0 and later supports the updated 2.0.0 LTFS
format specification. LTFS volumes created with application v1.2.0 will not
be readable in older versions of the LTFS application, as shown in the
following table:
Cartridge written by Cartridge written by Cartridge written by
LTFS application v1.1.0 or earlier v1.2.0 or later v2.1.0 or later
-------------------- ---------------------- ---------------------- -----------------------
v1.1.0 or earlier Read/Write ok Cannot be mounted N/A
v1.2.0 or later Readable ok; will Read/Write ok N/A
automatically be
converted to new
format if written
v2.1.0 or later Readable ok; will Readable ok; will Read/Write ok
automatically be automatically be
converted to new converted to new
format if written format if written
HPE recommends that all instances of HPE LTFS should be updated to latest version
to avoid these compatibility issues.
If for some reason it is important to maintain cartridges readable by
previous versions of the HPE LTFS application, care should be taken to avoid
writing to those cartridges with the new version of the application. This
may be accomplished by mounting the volume as read-only, or by using the
cartridge write-protect tab to prevent cartridge updates. However this
should be regarded as a temporary measure until all the application instances
can be updated to latest version.
Limitations:
============
1. When the tape cartridge is almost full, further write operations will
be prevented. The free space on the tape (e.g. from the df command)
will indicate that there is still some capacity available, but that
is reserved for updating the index when the tape is unmounted.
2. Future mounts of a cartridge that is almost full (has passed the
point at which "early warning" is reported) will mount as Read Only,
to prevent further modifications which may not fit on tape. This
status is cleared when a cartridge is reformatted (using mkltfs) or
when the volume is rolled back erasing history (using ltfsck).
3. (Mac OS X) LTFS does not support moving a folder within LTFS.
Any attempt to move a folder in such a manner will result in an
"operation not permitted" error, and the operation will be ignored.
The user can still move a file within LTFS, and the user can also move
a folder from LTFS to non-LTFS file system or vice versa.
4. (Mac OS X) Mac OS X's Spotlight will not display the files
on LTFS as a result of search.

View File

@@ -0,0 +1,38 @@
# Automatically generated LTFS configuration file for Linux.
# Edit this file to add or remove tape driver plugins and I/O
# schedulers or to change default settings.
#
# To make configuration changes that will persist across software
# updates, edit ltfs.conf.local instead of this file.
# Tape device plugins
# Syntax: driver PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
driver ibmtape /opt/IBM/ltfs/lib64/ltfs/libdriver-ibmtape.so
driver file /opt/IBM/ltfs/lib64/ltfs/libdriver-file.so
# I/O scheduler plugins
# Syntax: iosched PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
iosched unified /opt/IBM/ltfs/lib64/ltfs/libiosched-unified.so
iosched fcfs /opt/IBM/ltfs/lib64/ltfs/libiosched-fcfs.so
# Key Manager Interface plugins
# Syntax: kmi PLUGIN-NAME PLUGIN-PATH
# The PLUGIN-PATH may contain spaces.
kmi flatfile /opt/IBM/ltfs/lib64/ltfs/libkmi-flatfile.so
kmi simple /opt/IBM/ltfs/lib64/ltfs/libkmi-simple.so
# Default plugins
# Syntax: default PLUGIN-TYPE PLUGIN-NAME
# The PLUGIN-NAME must be one of those defined using a "driver" or "iosched" line.
# For a PLUGIN-TYPE of iosched, the special "none" name may be used to indicate that
# no I/O scheduler should be used by default.
default driver ibmtape
default iosched unified
default kmi none
# Include the local settings file. That file is not overwritten when a newer
# version of LTFS is installed.
include /etc/ltfs.conf.local

View File

@@ -0,0 +1,13 @@
# The default LTFS configuration file includes this one.
# Any directives placed here will be kept across software updates.
#
# It is possible to remove a plugin specified previously.
# Syntax: -iosched PLUGIN-NAME
# -driver PLUGIN-NAME
# -kmi PLUGIN-NAME
# Example: -driver file
#
# It is also possible to unset a previously specified default plugin.
# Syntax: -default PLUGIN-TYPE
# Example: -default driver

12
ltfs/init.d/Makefile.am Normal file
View File

@@ -0,0 +1,12 @@
all:
install-data-local:
if [ ! -d "@datadir@/ltfs" ]; then \
mkdir -p "@datadir@/ltfs"; \
fi ;\
if [ ! -f "@datadir@/ltfs/ltfs" ]; then \
install -m 755 ltfs "@datadir@/ltfs/ltfs"; \
fi
clean-local:

382
ltfs/init.d/Makefile.in Normal file
View File

@@ -0,0 +1,382 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = init.d
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CRC_OPTIMIZE = @CRC_OPTIMIZE@
CYGPATH_W = @CYGPATH_W@
DEFAULT_DRIVER = @DEFAULT_DRIVER@
DEFAULT_IOSCHED = @DEFAULT_IOSCHED@
DEFAULT_KMI = @DEFAULT_KMI@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FUSE_MODULE_CFLAGS = @FUSE_MODULE_CFLAGS@
FUSE_MODULE_LIBS = @FUSE_MODULE_LIBS@
GENRB = @GENRB@
GREP = @GREP@
ICU_MODULE_CFLAGS = @ICU_MODULE_CFLAGS@
ICU_MODULE_LIBS = @ICU_MODULE_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML2_MODULE_CFLAGS = @LIBXML2_MODULE_CFLAGS@
LIBXML2_MODULE_LIBS = @LIBXML2_MODULE_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKGDATA = @PKGDATA@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
UUID_MODULE_CFLAGS = @UUID_MODULE_CFLAGS@
UUID_MODULE_LIBS = @UUID_MODULE_LIBS@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign init.d/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign init.d/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-data-local
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
clean-local distclean distclean-generic distclean-libtool \
distdir dvi dvi-am html html-am info info-am install \
install-am install-data install-data-am install-data-local \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
install-man install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am uninstall uninstall-am
all:
install-data-local:
if [ ! -d "@datadir@/ltfs" ]; then \
mkdir -p "@datadir@/ltfs"; \
fi ;\
if [ ! -f "@datadir@/ltfs/ltfs" ]; then \
install -m 755 ltfs "@datadir@/ltfs/ltfs"; \
fi
clean-local:
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

135
ltfs/init.d/ltfs Normal file
View File

@@ -0,0 +1,135 @@
#!/bin/bash
#
# /etc/init.d/ltfs
#
# ZZ_Copyright_BEGIN
#
#
# Licensed Materials - Property of IBM
#
# IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
#
# Copyright IBM Corp. 2010, 2014
#
# This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
# (formally known as IBM Linear Tape File System)
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
# you can redistribute it and/or modify it under the terms of the GNU Lesser
# General Public License as published by the Free Software Foundation,
# version 2.1 of the License.
#
# The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# or download the license from <http://www.gnu.org/licenses/>.
#
#
# ZZ_Copyright_END
#
#
# ltfs: IBM Linear Tape File System
# This script ensures that all LTFS volumes are cleanly
# unmounted before shutdown or reboot.
#
# chkconfig: 2345 24 76
# description: Ensures that all LTFS volumes are unmounted before shutdown
#
### BEGIN INIT INFO
# Provides: ltfs
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Ensure all LTFS volumes are unmounted cleanly
### END INIT INFO
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.status ]; then
. /etc/rc.status
rc_reset
elif [ -f /lib/lsb/init-functions ]; then
. /lib/lsb/init-functions
fi
# Used to decide how to generate output
fn_exists() {
type -t $1 | grep -q 'function'
}
# List mounted LTFS volumes. This does not always detect v1.00 mounts
# because those sometimes have $1 == "fuse" and $3 == "fuse".
LTFSMTAB=`LC_ALL=C awk 'match($1,/^ltfs:?/) && match($3,/^fuse/) { print $2 }' /proc/mounts`
# Time to wait, in units of 2 seconds (so 300 is 10 minutes)
wait_time=300
wait_exit() {
# Send SIGTERM to all ltfs processes
ltfspid=`ls -l /proc/[0123456789]*/exe 2>/dev/null | grep '/ltfs\(\|-singledrive\|-library\)$' | awk 'BEGIN{FS="/"}{print $3}'`
[ -z "$ltfspid" ] && return 0
/bin/kill -TERM $ltfspid
# Wait for ltfs processes to exit
counter=0
while [ "$counter" -lt "$wait_time" ]; do
procs=`ls -l /proc/[0123456789]*/exe 2>/dev/null | grep '/ltfs\(\|-singledrive\|-library\)$'`
[ -z "$procs" ] && break
counter=$(( $counter + 1 ))
sleep 2
done
procs=`ls -l /proc/[0123456789]*/exe 2>/dev/null | grep '/ltfs\(\|-singledrive\|-library\)$'`
[ -n "$procs" ] && return 1
return 0
}
stop() {
fn_exists log_daemon_msg && log_daemon_msg "Unmounting LTFS file systems"
fn_exists rc_status && echo -n "Unmounting LTFS file systems "
# Unmount all LTFS file systems
if (fn_exists __umount_loop && [ -n "$LTFSMTAB" ]); then
__umount_loop 'match($1,"ltfs:*") && $3 == "fuse" { print $2 }' \
/proc/mounts \
"Unmounting LTFS filesystems: " \
"Unmounting LTFS filesystems (retry): " \
"-f"
fi
# Wait for all LTFS processes to complete
if fn_exists action; then
action "Waiting for LTFS processes to finish:" wait_exit
else
wait_exit
fi
rc=$?
fn_exists log_end_msg && log_end_msg "$rc"
rm -f /var/lock/subsys/ltfs
return $rc
}
case "$1" in
start)
[ -d /var/lock/subsys ] && touch /var/lock/subsys/ltfs
exit 0
;;
stop)
if fn_exists rc_status; then
stop
rc_status -v
rc_exit
else
stop
exit $?
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

126
ltfs/ltfs.spec Normal file
View File

@@ -0,0 +1,126 @@
# RPM specification file for HPE SOS.
Summary: HPE StoreOpen Software (HPE-SOS) - Version 3.4.2
Name: HPE-SOS
Version: 3.4.2
Release: 9
Group: Util
License: LGPL
Vendor: HPE
Source0: HPE_LTFS_3.4.2_BUILD9
Prereq: /sbin/ldconfig, /usr/bin/awk
Requires: fuse >= 2.8.4
Requires: libxml2 >= 2.6.16
Requires: libicu >= 3.6
Requires: e2fsprogs >= 1.36
BuildRoot: /tmp/rpm/%{name}-%{version}
%define _unpackaged_files_terminate_build 0
%define _sysconf /etc
%define _prefix /usr/local
%define _processname ltfs
%define _mkltfsprocessname mkltfs
%define _unltfsprocessname unltfs
%define _ltfsckprocessname ltfsck
%define __prelink_undo_cmd %{nil}
#%undefine __prelink_undo_cmd
#AutoReqProv: no
%description
The HPE LTFS software application is an open-source tape file system
implemented on dual partition tape drives.
%prep
%setup -q
echo $RPM_BUILD_ROOT
%build
rm -rf $RPM_BUILD_ROOT
#./configure
./configure --prefix=%{_prefix} --libdir=%{_libdir}
make
%pre
LTFS_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_processname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
MKLTFS_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_mkltfsprocessname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
UNLTFS_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_unltfsprocessname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
LTFSCK_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_ltfsckprocessname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
if [ ! -z "$LTFS_PID" ] || [ ! -z "$MKLTFS_PID" ] || [ ! -z "$UNLTFS_PID" ] || [ ! -z "$LTFSCK_PID" ]; then
echo
echo "Error: please unmount all LTFS instances or utilities( PID: $LTFS_PID $MKLTFS_PID $UNLTFS_PID $LTFSCK_PID) before installing this RPM. Please refer the user guide for more information."
echo
exit 1
fi
%preun
LTFS_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_processname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
MKLTFS_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_mkltfsprocessname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
UNLTFS_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_unltfsprocessname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
LTFSCK_PID=`ps ax | grep -v grep | grep -v rpm | grep -E '(^|\s)%{_ltfsckprocessname}($|\s)' | awk '{print $1}' | tr '\n' ' '`
if [ ! -z "$LTFS_PID" ] || [ ! -z "$MKLTFS_PID" ] || [ ! -z "$UNLTFS_PID" ] || [ ! -z "$LTFSCK_PID" ]; then
echo
echo "Error: please unmount all LTFS instances or utilities( PID: $LTFS_PID $MKLTFS_PID $UNLTFS_PID $LTFSCK_PID) before uninstalling this RPM. Please refer the user guide for more information."
echo
exit 1
fi
%pretrans
%posttrans
if [ -s /usr/local/lib/ltfs ] && [ %{_libdir} != "/usr/local/lib" ]
then
rm -rf /usr/local/lib/*ltfs*
fi
/sbin/ldconfig
%install
[ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
make sysconfdir=$RPM_BUILD_ROOT install DESTDIR=$RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_prefix}%{_sysconf}
mkdir -p $RPM_BUILD_ROOT%{_sysconf}/ld.so.conf.d
cp $RPM_BUILD_ROOT/ltfs.conf.local $RPM_BUILD_ROOT%{_prefix}%{_sysconf}
cp $RPM_BUILD_ROOT$RPM_BUILD_ROOT/ltfs.conf $RPM_BUILD_ROOT%{_prefix}%{_sysconf}
# echo "/usr/local/lib" > $RPM_BUILD_ROOT%{_sysconf}/ld.so.conf.d/%{name}.conf
# echo "/usr/local/lib64" >> $RPM_BUILD_ROOT%{_sysconf}/ld.so.conf.d/%{name}.conf
echo "%{_libdir}" > $RPM_BUILD_ROOT%{_sysconf}/ld.so.conf.d/%{name}.conf
cp %{_prefix}/bin/ltfscopy $RPM_BUILD_ROOT%{_prefix}/bin/
cp %{_prefix}/bin/ltfslock $RPM_BUILD_ROOT%{_prefix}/bin/
cp %{_prefix}/bin/latte $RPM_BUILD_ROOT%{_prefix}/bin/
%post
/sbin/ldconfig
%postun
/sbin/ldconfig
%clean
[ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
%files
%defattr(-,root,root)
%{_prefix}/bin/ltfs
%{_prefix}/bin/ltfsck
%{_prefix}/bin/mkltfs
%{_prefix}/bin/unltfs
%{_prefix}/bin/ltfscopy
%{_prefix}/bin/ltfslock
%{_prefix}/bin/latte
%{_libdir}/libltfs.a
%{_libdir}/libltfs.la
%{_libdir}/libltfs.so
%{_libdir}/libltfs.so.0
%{_libdir}/libltfs.so.0.0.0
%{_libdir}/ltfs/libdriver-ltotape.so
%{_libdir}/ltfs/libiosched-fcfs.so
%{_libdir}/ltfs/libiosched-unified.so
%{_libdir}/ltfs/libkmi-flatfile.so
%{_libdir}/ltfs/libkmi-simple.so
%{_prefix}/etc/ltfs.conf
%{_prefix}/etc/ltfs.conf.local
%config /etc/ld.so.conf.d/%{name}.conf
%changelog
* Thu May 25 2017 Martind <martin.dyer@hpe.com>
- update to 3.3.0
* Wed May 11 2015 Murali <murali.vuppalapati@hpe.com>
- update to 3.2.0

73
ltfs/messages/Makefile.am Executable file
View File

@@ -0,0 +1,73 @@
##
## %Z% %I% %W% %G% %U%
##
## ZZ_Copyright_BEGIN
##
##
## Licensed Materials - Property of IBM
##
## IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
##
## Copyright IBM Corp. 2010, 2014
##
## This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
## (formally known as IBM Linear Tape File System)
##
## The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
## you can redistribute it and/or modify it under the terms of the GNU Lesser
## General Public License as published by the Free Software Foundation,
## version 2.1 of the License.
##
## The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
## hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## See the GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this library; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
## or download the license from <http://www.gnu.org/licenses/>.
##
##
## ZZ_Copyright_END
##
######################################################################################
##
## COMPONENT NAME: IBM Linear Tape File System
##
## FILE NAME: Makefile.osx
##
## DESCRIPTION: Automake template for LTFS message libraries on Linux.
##
## AUTHOR: Brian Biskeborn
## IBM Almaden Research Center
## bbiskebo@us.ibm.com
##
######################################################################################
##
## (C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
##
## 10/08/10 Add ltotape to list of RESOURCES
##
######################################################################################
RESOURCES = \
bin_mkltfs_dat.o \
bin_ltfsck_dat.o \
bin_ltfs_dat.o \
kmi_simple_dat.o \
kmi_flatfile_dat.o \
driver_ltotape_dat.o \
iosched_fcfs_dat.o \
iosched_unified_dat.o \
libltfs_dat.o \
internal_error_dat.o
.PHONY: all $(RESOURCES) clean-local
all: $(RESOURCES)
$(RESOURCES):
@./make_message_src.sh $@
clean-local:
rm -rf $(RESOURCES) */work

View File

@@ -0,0 +1,80 @@
##
## %Z% %I% %W% %G% %U%
##
## ZZ_Copyright_BEGIN
##
##
## Licensed Materials - Property of IBM
##
## IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
##
## Copyright IBM Corp. 2010, 2014
##
## This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
## (formally known as IBM Linear Tape File System)
##
## The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
## you can redistribute it and/or modify it under the terms of the GNU Lesser
## General Public License as published by the Free Software Foundation,
## version 2.1 of the License.
##
## The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
## hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## See the GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this library; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
## or download the license from <http://www.gnu.org/licenses/>.
##
##
## ZZ_Copyright_END
##
######################################################################################
##
## COMPONENT NAME: IBM Linear Tape File System
##
## FILE NAME: Makefile.osx
##
## DESCRIPTION: Automake template for LTFS message libraries on Linux.
##
## AUTHOR: Brian Biskeborn
## IBM Almaden Research Center
## bbiskebo@us.ibm.com
##
######################################################################################
##
## (C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
##
## 10/08/10 Add ltotape to list of RESOURCES
##
######################################################################################
##
## OSR/HPE_mingw_BUILD
##
## Object file name must be changed from libltfs_dat to bin_libltfs_dat. This is
## part of changing the package name from libltfs to bin_libltfs to avoid collision
## with libltfs.dll, which is the name of the LTFS library code
##
RESOURCES = \
bin_mkltfs_dat.o \
bin_ltfsck_dat.o \
bin_ltfs_dat.o \
kmi_simple_dat.o \
kmi_flatfile_dat.o \
driver_ltotape_dat.o \
iosched_fcfs_dat.o \
iosched_unified_dat.o \
bin_libltfs_dat.o \
internal_error_dat.o
.PHONY: all $(RESOURCES) clean-local
all: $(RESOURCES)
$(RESOURCES):
@./make_message_src.sh $@
clean-local:
rm -rf $(RESOURCES) */work

395
ltfs/messages/Makefile.in Normal file
View File

@@ -0,0 +1,395 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
######################################################################################
######################################################################################
######################################################################################
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = messages
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CRC_OPTIMIZE = @CRC_OPTIMIZE@
CYGPATH_W = @CYGPATH_W@
DEFAULT_DRIVER = @DEFAULT_DRIVER@
DEFAULT_IOSCHED = @DEFAULT_IOSCHED@
DEFAULT_KMI = @DEFAULT_KMI@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FUSE_MODULE_CFLAGS = @FUSE_MODULE_CFLAGS@
FUSE_MODULE_LIBS = @FUSE_MODULE_LIBS@
GENRB = @GENRB@
GREP = @GREP@
ICU_MODULE_CFLAGS = @ICU_MODULE_CFLAGS@
ICU_MODULE_LIBS = @ICU_MODULE_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML2_MODULE_CFLAGS = @LIBXML2_MODULE_CFLAGS@
LIBXML2_MODULE_LIBS = @LIBXML2_MODULE_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKGDATA = @PKGDATA@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
UUID_MODULE_CFLAGS = @UUID_MODULE_CFLAGS@
UUID_MODULE_LIBS = @UUID_MODULE_LIBS@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
RESOURCES = \
bin_mkltfs_dat.o \
bin_ltfsck_dat.o \
bin_ltfs_dat.o \
kmi_simple_dat.o \
kmi_flatfile_dat.o \
driver_ltotape_dat.o \
iosched_fcfs_dat.o \
iosched_unified_dat.o \
libltfs_dat.o \
internal_error_dat.o
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign messages/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign messages/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
clean-local distclean distclean-generic distclean-libtool \
distdir dvi dvi-am html html-am info info-am install \
install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am
.PHONY: all $(RESOURCES) clean-local
all: $(RESOURCES)
$(RESOURCES):
@./make_message_src.sh $@
clean-local:
rm -rf $(RESOURCES) */work
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

69
ltfs/messages/Makefile.osx Executable file
View File

@@ -0,0 +1,69 @@
##
## %Z% %I% %W% %G% %U%
##
## ZZ_Copyright_BEGIN
##
##
## Licensed Materials - Property of IBM
##
## IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
##
## Copyright IBM Corp. 2010, 2014
##
## This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
## (formally known as IBM Linear Tape File System)
##
## The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
## you can redistribute it and/or modify it under the terms of the GNU Lesser
## General Public License as published by the Free Software Foundation,
## version 2.1 of the License.
##
## The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
## hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## See the GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this library; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
## or download the license from <http://www.gnu.org/licenses/>.
##
##
## ZZ_Copyright_END
##
######################################################################################
##
## COMPONENT NAME: IBM Linear Tape File System
##
## FILE NAME: Makefile.osx
##
## DESCRIPTION: Makefile for LTFS message library on OS X.
##
## AUTHOR: Michael A. Richmond
## IBM Almaden Research Center
## mar@almaden.ibm.com
##
######################################################################################
##
## (C) Copyright 2015, 2016 Hewlett Packard Enterprise Development LP
##
## 10/08/10 Add ltotape to list of RESOURCES
##
######################################################################################
RESOURCES=libltfs_dat.o \
driver_generic_file_dat.o driver_osx_iokit_dat.o \
driver_ltotape_dat.o \
iosched_fcfs_dat.o iosched_unified_dat.o \
bin_mkltfs_dat.o bin_ltfs_dat.o bin_ltfsck_dat.o \
internal_error_dat.o \
kmi_simple_dat.o kmi_flatfile_dat.o
.PHONY: all $(RESOURCES) clean-local
all: $(RESOURCES)
$(RESOURCES):
@./make_message_src.sh $@
clean-local:
rm -rf $(RESOURCES) */work

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 1.3.0.0 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2012
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 1.3.0.0 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2012
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,777 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 1.3.0.0 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2012
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
// ZZ_Copyright_END
//
// (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
//
// 10/13/2017 Added extra messages to support SNIA 2.4
//
root:table {
// Fallback messages. These messages do not have unique IDs; they are printed when
// the message function receives an unrecognized unique ID or fails to
// generate a message for a known unique ID.
// These messages are accessed by key, not by index: so they may be
// reordered, but they should not be renamed.
fallback_messages:table {
notfound:string { "(no message found)" }
overflow:string { "(message too long)" }
}
// Message list for libltfs.
// Notes:
// - Message IDs less than 10000 are not officially supported. A few are listed here
// for legacy reasons. DO NOT add new ones.
// - Message IDs from 10000 to 10099 are generic messages which may be used outside libltfs.
// - Other messages listed here should not be used outside libltfs.
messages:table {
start_id:int { 9000 }
end_id:int { 19999 }
// Messages with IDs less than 10000. These are here for legacy reasons only.
// DO NOT add new messages with IDs less than 10000.
9001E:string { "Failed to parse command line options" }
9006E:string { "Cannot load resource \"fallback_messages\" (ures_getByKey: %d)" }
9008E:string { "Cannot open output converter (ucnv_open: %d)" }
9010E:string { "Invalid option \'%s\'" }
9011E:string { "Logging initialization failed" }
9012E:string { "Cannot specify \"--quiet\" with \"--trace\" or \"--fulltrace\"" }
9013E:string { "Cannot specify \"--quiet\" with \"--trace\" or \"--fulltrace\"" }
9014E:string { "Cannot create work directory \'%s\': %s" }
9015W:string { "Setting the locale to 'en_US.UTF-8'. If this setting is wrong, set the LANG environment variable before starting %s." }
9016E:string { "Cannot set the LANG environment variable" }
// Generic messages (IDs 10000 through 10099).
// These may be used in multiple components.
10000E:string { "Failed to initialize libltfs (%d)" }
10001E:string { "Memory allocation failed (%s)" }
10002E:string { "Cannot initialize mutex (%d)" }
10003E:string { "Cannot initialize condition variable (%d)" }
10004E:string { "Cannot open device \'%s\'" }
10005E:string { "Null argument (%s) to %s" }
10006W:string { "Null argument (%s) to %s" }
10007E:string { "Not yet implemented (%s)" }
10008E:string { "Failed to load the configuration file (%d)" }
10009E:string { "No driver plug-in specified and no default found" }
//unused 10010E:string { "Cannot initialize plugin: failed to load messages (%d)" }
//unused 10011E:string { "Failed to load message data for %s" }
10012E:string { "Failed to register messages with libltfs (%d)" }
10013E:string { "Failed to set up signal handler" }
10014E:string { "Failed to clean up signal handler" }
//unused 10015E:string { "Failed to get shared memory (%d)" }
//unused 10016E:string { "Failed to attach shared memory (%d)" }
//unused 10017E:string { "Failed to set mutex attribute as shared (%d)" }
10018E:string { "No key manager interface plug-in specified and no default found (%s, %d, %d)" }
11000E:string { "Cannot instantiate LTFS volume: failed to allocate device data" }
11001E:string { "Cannot instantiate LTFS volume: failed to allocate label data" }
11002E:string { "Cannot instantiate LTFS volume: failed to allocate index data" }
11003E:string { "Cannot retrieve device capacity data (%d)" }
11004E:string { "Cannot take the device lock (%s)" }
11005I:string { "Mounting the volume" }
11006E:string { "Cannot read volume: failed to load the tape" }
11007D:string { "Tape is loaded" }
11008D:string { "Reading partition labels" }
11009E:string { "Cannot read volume: failed to read partition labels." }
11010E:string { "Cannot read volume: failed to set medium compression." }
11011E:string { "Cannot read volume: block size is %lu, but the device only supports a block size of %u" }
11012D:string { "Loading the tape" }
11013D:string { "Partition labels are valid" }
11014D:string { "Reading MAM parameters" }
11015W:string { "VCR MAM parameter is not usable. Mounting will take longer." }
11016W:string { "The index partition MAM parameter is not usable. Mounting will take longer." }
11017W:string { "The data partition MAM parameter is not usable. Mounting will take longer." }
11018D:string { "Done reading MAM parameters" }
11019D:string { "Checking volume consistency" }
11020E:string { "Cannot mount volume: seek to index failed on the data partition" }
11021E:string { "Cannot mount volume: read index failed on the data partition" }
11022I:string { "Restoring volume consistency by writing an index to the index partition" }
11023E:string { "Cannot mount volume: seek to index failed on the index partition" }
11024E:string { "Cannot mount volume: read index failed on the index partition" }
11025D:string { "Volume is consistent" }
11026I:string { "Performing a full medium consistency check" }
11027E:string { "Cannot mount volume: medium consistency check failed" }
11028D:string { "Consistency check finished" }
11029E:string { "Cannot mount volume: failed to save the append position for the index partition." }
//unused 11030E:string { "Cannot release the device lock (%s)" }
//unused 11031D:string { "Volume mounted successfully" }
11032D:string { "Unmounting the volume" }
11033E:string { "Cannot unmount: failed to write an index" }
11034I:string { "Volume unmounted successfully" }
//unused 11035D:string { "Medium is write protected" }
//unused 11036D:string { "Medium is writeable" }
//unused 11037E:string { "Cannot get attributes: failed to format the path (%d)" }
//unused 11038E:string { "Cannot get attributes: path lookup failed (%d)" }
11039E:string { "Cannot open file: failed to format the path (%d)" }
11040E:string { "Cannot open file: path lookup failed (%d)" }
//unused 11041E:string { "Cannot set times: failed to format the path (%d)" }
//unused 11042E:string { "Cannot set times: path lookup failed (%d)" }
//unused 11043E:string { "Cannot set read-only flag: failed to format the path (%d)" }
//unused 11044E:string { "Cannot set read-only flag: path lookup failed (%d)" }
11045E:string { "Cannot set times: device is not ready" }
11046E:string { "Cannot set read-only flag: device is not ready" }
11047E:string { "Cannot create: device is not ready" }
11048E:string { "Cannot create: failed to format the path (%d)" }
11049E:string { "Cannot create: path lookup failed (%d)" }
11050E:string { "Cannot unlink: device is not ready" }
11051E:string { "Cannot unlink: failed to format the path (%d)" }
11052E:string { "Cannot unlink: path lookup failed (%d)" }
11053E:string { "Cannot rename: device is not ready" }
11054E:string { "Cannot rename: failed to format the source path (%d)" }
11055E:string { "Cannot rename: failed to format the destination path (%d)" }
11056E:string { "Cannot rename: path lookup failed for source (%d)" }
11057E:string { "Cannot rename: path lookup failed for destination (%d)" }
//unused 11058E:string { "Cannot rename: unable to overwrite destination (%d)" }
11059E:string { "Cannot truncate: length must not be negative" }
//unused 11060E:string { "Cannot truncate: failed to format the path (%d)" }
//unused 11061E:string { "Cannot truncate: path lookup failed (%d)" }
11062E:string { "Cannot truncate: device is not ready" }
//unused 11063E:string { "Cannot truncate: failed to write an index while switching partitions (%d)" }
//unused 11064E:string { "Cannot truncate: failed to write zero bytes to the medium (%d)" }
//unused 11065E:string { "Cannot truncate: failed to update the extent list (%d)" }
//unused 11066E:string { "Cannot save extent: offset is greater than the file size" }
11067E:string { "Cannot write blocks: invalid partition identifier" }
11068E:string { "Cannot write blocks: multiple repetitions specified with an irregular buffer size" }
11069E:string { "Cannot write blocks: failed to write an index while switching partitions (%d)" }
11070E:string { "Cannot write blocks: locate append position failed on partition %c" }
11071E:string { "Cannot write blocks: failed to determine medium position (%d)" }
11072E:string { "Cannot write blocks: failed to write to the medium (%d)" }
//unused 11073E:string { "Cannot write blocks: write to medium returned %zd, expected %u" }
//unused 11074E:string { "Cannot write: invalid partition identifier" }
//unused 11075E:string { "Cannot write: failed to write an index while switching partitions (%d)" }
//unused 11076E:string { "Cannot write: failed to extend the file with zeros (%d)" }
11077E:string { "Cannot write: failed to write blocks to the medium (%d)" }
//unused 11078E:string { "Cannot write: failed to update extent list (%d)" }
//unused 11079E:string { "Cannot write index to index partition: failed to write index to data partition" }
11080E:string { "Cannot write index: failed to locate append position on partition %c (%d)" }
11081E:string { "Cannot write index: failed to determine medium position (%d)" }
11082E:string { "Cannot write index: failed to write file mark (%d)" }
11083E:string { "Cannot write index: failed to generate and write XML data (%d). The medium might be in an inconsistent state; unmount and run ltfsck." }
11084E:string { "Cannot write index: failed to write a trailing file mark (%d). The medium is in an inconsistent state; unmount and run ltfsck." }
11085E:string { "Cannot read: failed to determine medium position (%d)" }
11086E:string { "Cannot read: failed to locate (%d) to partition %c, record %llu" }
11087E:string { "Cannot read: expected %u bytes from cache, but received %lu bytes" }
11088E:string { "Cannot read: failed to get a block from the medium (%d)" }
11089E:string { "Cannot read: expected %u bytes from the medium, but received %zd bytes" }
11090W:string { "Data partition identifier requested on an uninitialized volume" }
11091W:string { "Index partition identifier requested on an uninitialized volume" }
//unused 11092I:string { "Loading the medium" }
11093E:string { "Cannot format: failed to load the medium (%d)" }
//unused 11094I:string { "Medium is loaded" }
11095E:string { "Cannot format: the medium is write protected" }
11096E:string { "Cannot format: requested block size is %lu bytes, but the device only supports %u" }
11097I:string { "Partitioning the medium" }
11098E:string { "Cannot format: failed to partition the medium (%d)" }
11099E:string { "Cannot format: failed to set the medium compression (%d)" }
11100I:string { "Writing label to partition %c" }
11101E:string { "Cannot format: failed to locate (%d) to partition %u, block 0" }
11102E:string { "Cannot format: failed to write ANSI label (%d) on partition %u" }
//unused 11103E:string { "Cannot format: failed to write ANSI label on partition %u (expected %u, received %zd)" }
11104E:string { "Cannot format: failed to write file mark after ANSI label (%d) on partition %u" }
11105E:string { "Cannot format: failed to generate LTFS label" }
11106E:string { "Cannot format: failed to write XML label (%d) on partition %u" }
//unused 11107E:string { "Cannot format: failed to write XML label on partition %u (expected %u, received %zd)" }
11108E:string { "Cannot format: failed to write file mark after XML label (%d) on partition %u" }
//unused 11109E:string { "Cannot format: failed to generate empty Index data structure (%d)" }
11110E:string { "Cannot get current time (%d)" }
11111E:string { "Base64 decoder: empty input" }
11112E:string { "Base64 decoder: invalid character in the input" }
11113E:string { "Base64 decoder: input length is not a multiple of 4" }
11114E:string { "Cache manager: failed to initialize the pool" }
11115W:string { "Cache manager: failed to fully expand the pool" }
11116E:string { "Cache manager: failed to grow the pool" }
11117E:string { "Cannot set extended attribute: device is not ready" }
11118E:string { "Cannot set extended attribute: failed to format the path (%d)" }
11119E:string { "Cannot set extended attribute: failed to format the name (%d)" }
11120E:string { "Cannot set extended attribute: failed to validate the name (%d)" }
11121E:string { "Cannot set extended attribute: failed to look up the path (%d)" }
11122E:string { "Cannot set extended attribute: failed to look up the xattr (%d)" }
11123E:string { "Cannot get extended attribute: NULL value with non-zero size" }
11124E:string { "Cannot get extended attribute: failed to format the path (%d)" }
11125E:string { "Cannot get extended attribute: failed to format the name (%d)" }
11126E:string { "Cannot get extended attribute: failed to validate the name (%d)" }
11127E:string { "Cannot get extended attribute: failed to look up the path (%d)" }
11128E:string { "Cannot get extended attribute: failed to look for virtual xattrs (%d)" }
11129E:string { "Cannot get extended attribute: failed to look up the xattr (%d)" }
11130E:string { "Cannot list extended attributes: NULL output buffer with a non-zero size" }
11131E:string { "Cannot list extended attributes: failed to format the path (%d)" }
11132E:string { "Cannot list extended attributes: failed to look up the path (%d)" }
11133E:string { "Cannot list extended attributes: failed to list real xattrs (%d)" }
//unused 11134E
11135E:string { "Cannot remove extended attribute: device is not ready" }
11136E:string { "Cannot remove extended attribute: failed to format the path (%d)" }
11137E:string { "Cannot remove extended attribute: failed to format the name (%d)" }
11138E:string { "Cannot remove extended attribute: failed to validate the name (%d)" }
11139E:string { "Cannot remove extended attribute: failed to look up the path (%d)" }
11140E:string { "Cannot remove extended attribute: failed to look up the xattr (%d)" }
11141E:string { "Cannot list physical xattrs: failed to generate namespace prefix (%d)" }
11142E:string { "Cannot list physical xattrs: failed to convert key to system locale (%d)" }
//unused 11143E
//unused 11144E:string { "Cannot list physical xattrs: failed to convert key to system locale (%d)" }
11145E:string { "Cannot get attribute %s: failed to generate the time string" }
11146E:string { "Invalid index criteria option \'%s\'" }
11147E:string { "Duplicate index criteria option \'%s\'" }
11148E:string { "More than one non-numeric character follows the size criterion" }
11149E:string { "Invalid size criterion multiplier \'%c\'" }
11150E:string { "Size= rule must contain a valid size" }
11151E:string { "Size= rule must contain a digit" }
11152E:string { "Cannot parse index criteria: rules are invalid" }
11153E:string { "Cannot parse index criteria: failed to parse name rule (%d)" }
11154E:string { "Cannot parse index criteria: error while seeking name rule" }
11155E:string { "Cannot parse index criteria: failed to parse size rule (%d)" }
11156E:string { "Cannot parse index criteria: error while seeking size rule" }
11157E:string { "Cannot specify a name rule without a size rule" }
11158E:string { "Cannot match name: failed to initialize glob cache (%d)" }
11159E:string { "Cannot match name: failed to prepare for caseless matching (%d)" }
11160E:string { "Cannot prepare glob cache: failed to prepare name for caseless matching (%d)" }
11161E:string { "Cannot match name: match function failed (%d)" }
11162E:string { "Cannot perform matching: failed to open text boundary iterator for criteria (%d)" }
11163E:string { "Cannot perform matching: failed to open text boundary iterator for filename (%d)" }
11164E:string { "Failed to push file name onto a null stack pointer" }
11165E:string { "Failed to pop a file name from a null stack pointer" }
11166E:string { "Cannot allocate index data: failed to initialize mutex (%d)" }
11167E:string { "Cannot create file or directory: failed to allocate dentry" }
11168E:string { "Cannot allocate index data: failed to allocate root dentry" }
11169E:string { "Cannot read labels: failed to allocate label data (%d)" }
11170E:string { "Failed to read label (%d) from partition 0" }
11171E:string { "Failed to read label (%d) from partition 1" }
11172E:string { "Cannot verify labels: comparison failed (%d)" }
11173E:string { "Cannot read label (%d): failed to seek to block 0 (partition %lu)" }
11174E:string { "Cannot read ANSI label: read failed (%d)" }
11175E:string { "Cannot read ANSI label: expected 80 bytes, but received %d" }
11176E:string { "ANSI label indicates this is not an LTFS volume" }
//unused 11177E:string { "Cannot read LTFS label: failed to space forward 1 file mark (%d)" }
11178E:string { "Cannot read LTFS label: read failed (%d)" }
11179E:string { "Cannot read LTFS label: parsing failed (%d)" }
11180E:string { "Cannot read partition label: failed to space forward over the trailing file mark (%d)" }
11181E:string { "Cannot read partition label: failed to find the trailing file mark" }
11182E:string { "Comparing labels: tape bar code number mismatch" }
11183E:string { "Comparing labels: volume UUID mismatch" }
11184E:string { "Comparing labels: format time mismatch" }
11185E:string { "Comparing labels: block size mismatch" }
11186E:string { "Comparing labels: compression mismatch" }
11187E:string { "Comparing labels: partition IDs must be lowercase ASCII characters" }
11188E:string { "Comparing labels: partition IDs must be distinct" }
11189E:string { "Comparing labels: partition map mismatch" }
11190E:string { "Comparing labels: unknown partition ID" }
11191E:string { "Comparing labels: partitions have the same ID \'%c\'" }
11192E:string { "Comparing labels: invalid bar code number" }
11193E:string { "Cannot read index: failed to determined medium position (%d)" }
11194W:string { "Cannot read index: failed to read and parse XML data (%d)" }
11195W:string { "This index belongs to a different volume" }
11196W:string { "Cannot read index: self-pointer mismatch" }
11197E:string { "Cannot read index: back pointer is corrupt" }
11198E:string { "Cannot read index: failed to space forward 1 file mark (%d)" }
11199E:string { "Cannot locate index: failed to locate to EOD (%d)" }
11200E:string { "Cannot locate index: failed to determined medium position (%d)" }
11201E:string { "Cannot locate index: failed to space back 1 file mark (%d)" }
11202E:string { "Cannot locate index: failed to space forward 1 file mark (%d)" }
11203E:string { "Cannot locate index: failed to space back 2 file marks (%d)" }
11204D:string { "No index found. Space back and try again" }
11205E:string { "Index partition contains a back pointer, but no index found on the data partition" }
11206E:string { "Index partition back pointer is invalid" }
11207E:string { "Missing required index partition back pointer" }
11208E:string { "Back pointer chain is broken" }
11209E:string { "Cannot create lost and found directory: failed to allocate directory data" }
11210W:string { "Ignoring unexpected file mark in partition %lu" }
11211E:string { "Cannot populate lost and found directory: failed to allocate file data" }
11212E:string { "Cannot create lost and found directory: seek failed (%d)" }
11213E:string { "Cannot check medium: seek index failed on the data partition (%d)" }
11214E:string { "Cannot check medium: seek index failed on the index partition (%d)" }
11215E:string { "Cannot check medium: failed to locate to EOD on the data partition (%d)" }
11216E:string { "Cannot check medium: failed to locate to EOD on the index partition (%d)" }
11217E:string { "Cannot check medium: failed to write a file mark to the data partition (%d)" }
11218E:string { "Cannot check medium: failed to write a file mark to the index partition (%d)" }
11219E:string { "Cannot check medium: pointer verification failed (%d)" }
11220E:string { "Medium check failed: extra blocks detected. Run ltfsck." }
11221E:string { "Medium check failed: detected invalid extents" }
11222E:string { "Cannot check medium: failed to save index partition append position (%d)" }
11223I:string { "Generating lost and found directory" }
11224E:string { "Cannot restore medium consistency: failed to generate lost and found (%d)" }
11225E:string { "Cannot check medium: failed to allocate index data (%d)" }
11226I:string { "Erasing bad blocks from the index partition" }
11227I:string { "Erasing bad blocks from the data partition" }
11228E:string { "Cannot restore medium consistency: failed to save data partition append position (%d)" }
11229E:string { "Cannot restore medium consistency: failed to save index partition append position (%d)" }
11230I:string { "Writing index(es) to restore consistency" }
11231E:string { "A simple fix is possible to restore the consistency of the tape." }
11232E:string { "Rerun the consistency check with simple fixes enabled." }
11233I:string { "Updating MAM coherency data" }
11234E:string { "Cannot validate extended attribute value: code point iteration failed" }
11235E:string { "Cannot validate name: failed to iterate code point" }
11236E:string { "Cannot fold string case: failed to get output buffer size (%d)" }
11237E:string { "Cannot fold string case: failed to fill output buffer (%d)" }
11238E:string { "Cannot apply NFC: failed to get output buffer size (%d)" }
11239E:string { "Cannot apply NFC: failed to fill output buffer (%d)" }
11240E:string { "Cannot apply NFD: failed to get output buffer size (%d)" }
11241E:string { "Cannot apply NFD: failed to fill output buffer (%d)" }
11242E:string { "Cannot convert UTF-8 to UTF-16: failed to get output buffer size (%d)" }
11243E:string { "Cannot convert UTF-8 to UTF-16: failed to fill output buffer (%d)" }
11244E:string { "Cannot convert UTF-16 to UTF-8: failed to get output buffer size (%d)" }
11245E:string { "Cannot convert UTF-16 to UTF-8: failed to fill output buffer (%d)" }
11246E:string { "Cannot convert system locale to UTF-16: failed to open converter (%d)" }
11247E:string { "Cannot convert system locale to UTF-16: failed to set up converter (%d)" }
11248E:string { "Cannot convert system locale to UTF-16: failed to get output buffer size (%d)" }
11249E:string { "Cannot convert system locale to UTF-16: failed to fill output buffer (%d)" }
11250E:string { "Cannot convert UTF-8 to system locale: failed to get output buffer size (%d)" }
11251E:string { "Cannot convert UTF-8 to system locale: failed to fill output buffer (%d)" }
11252D:string { "libltfs write to \'%s\': offset = %lld, count = %u" }
//unused 11253D:string { "libltfs write to \'%s\': offset = %lld, count = %u (no extent update)" }
11254D:string { "libltfs read from \'%s\': offset = %lld, count = %u" }
11255I:string { "Appending a file mark to the data partition" }
11256I:string { "Appending a file mark to the index partition" }
11257I:string { "No index found in the index partition" }
11258I:string { "No index found in the data partition" }
11259I:string { "Cannot move directory: Directory move is prohibited because of a MacFUSE bug" }
11260E:string { "Plug-in \'%s\' was not found in the configuration file" }
11261E:string { "Cannot load plug-in: %s" }
11262E:string { "Cannot unload plug-in: %s" }
11263E:string { "Cannot resolve plug-in operation interface: %s" }
11264E:string { "Cannot get plug-in operations" }
11265E:string { "Cannot parse configuration file: \'default\' directive must be followed by a plug-in type and name" }
//unused 11266E:string { "Cannot parse configuration file: unknown plugin type \'%s\' in \'default\' directive" }
11267E:string { "Cannot get library path: unknown plug-in type \'%s\' or plug-in name \'%s\'" }
11268E:string { "Cannot open configuration file \'%s\' (%d)" }
11269E:string { "Cannot parse configuration file: line too long" }
11270E:string { "Cannot parse configuration file: \'-default\' directive must be followed by a plug-in type" }
11271E:string { "Cannot parse configuration file: unknown plug-in type \'%s\' in \'-default\' directive" }
11272E:string { "Cannot parse configuration file: \'option\' directive must be followed by an option type and LTFS mount option" }
11273E:string { "Cannot parse configuration file: \'%s\' directive must be followed by a valid %s name" }
//unused 11274E:string { "Cannot define a scheduler plug-in using the reserved name \'none\'" }
11275E:string { "Cannot parse configuration file: \'plug-in\' directive must be followed by a plug-in type, name, and library path" }
11276W:string { "Ignoring unknown configuration directive \'%s\'" }
11277W:string { "Cannot find the %s plug-in \'%s\' at \'%s\'" }
11278I:string { "Writing index to partition %c" }
11279E:string { "Cannot write index to partition %c (%d)" }
11280E:string { "Unknown default %s \'%s\'" }
11281E:string { "Cannot load messages: failed to get message table (%d)" }
11282E:string { "Cannot load messages: failed to determine first message ID (ures_getByKey: %d)" }
11283E:string { "Cannot load messages: failed to determine first message ID (ures_getInt: %d)" }
11284E:string { "Cannot resolve plug-in message bundle interface: %s" }
11285E:string { "Cannot load %s plug-in \'%s\': failed to load the message bundle (%d)" }
11286E:string { "Cannot load messages: failed to open resource bundle (%d)" }
11287E:string { "Cannot load messages: failed to register message data (%d)" }
11288W:string { "No end ID found for this message bundle: assigning 1000 message IDs" }
11289I:string { "Ejecting cartridge" }
11290E:string { "Failed to eject the cartridge (%s)" }
11291I:string { "Eject successful" }
//unused 11292E
11293E:string { "Cannot load messages for libltfs (%d)" }
//unused 11294E
11295E:string { "Cannot read partition label: check for file mark after the ANSI label failed (%d)" }
11296E:string { "Cannot read partition label: failed to find a file mark after the ANSI label" }
11297E:string { "Cannot read index: failed to allocate index structure (%d)" }
11298E:string { "Cannot read volume: unsupported medium" }
11299E:string { "Cannot format: unsupported medium" }
//unused 11300E:string { "Cannot rename: failed check of target file existence (%d)" }
11301E:string { "Unable to read index: cannot duplicate index partition criteria" }
11302E:string { "Data placement rule contains invalid character(s): '%s'" }
11303E:string { "Data placement rule is too long: '%s'" }
11304E:string { "Failed to validate data placement rule (%d)" }
11305E:string { "Empty data placement rule in '%s'" }
11306E:string { "Cannot get read-only state of partition: invalid partition identifier" }
11307W:string { "All unique IDs for volume %s are used. No new files or directories can be created for the volume." }
11308E:string { "Commit message must be 65536 bytes or less" }
11309E:string { "Cannot parse configuration file: \'-plugin\' directive must be followed by a plug-in type and name" }
11310W:string { "Cannot set the traversal mode: failed to get a valid selection %d" }
11311E:string { "Cannot format: failed to reset capacity proportion (%d)" }
11312D:string { "Revalidating the medium" }
11313E:string { "Medium revalidation failed (%d). Unmount the tape before continuing." }
11314E:string { "Cannot format: failed to get data key (%d)" }
11315E:string { "Cannot format: failed to set data key (%d)" }
11316E:string { "Failed to print help message of key manager interface backend" }
11317E:string { "Cannot print help message: unknown type: '%s'" }
11318W:string { "Unknown log level (%d), forced the level to (%d)" }
11319E:string { "Cannot add the key to hash table at %s (%d)" }
11320E:string { "Cannot search the key from hash table at %s (%d)" }
11321E:string { "Symbolic link might be replaced by data file. Use ltfsck for recovery" }
11322D:string { "Makeing a symlink '%s' target '%s'" }
11323D:string { "Symlink EA prefix valuse is (%s)" }
11324D:string { "Path changed from '%s' to '%s'" }
11325E:string { "Cannot set extended attribute: failed to flush (%d)" }
// Message IDs 11400 through 11700 are allocated to the libchanger.
// DO NOT add messages with those IDs to this file.
//unused 11997E:string { "Comparing labels: failed to match versions" }
11998W:string { "Unable to delete dentry '%s': it still has outstanding references" }
11999E:string { "Cannot load the medium: failed to get capacity data (%d)" }
//unused 12000E:string { "Cannot open device backend library directory" }
//unused 12001E:string { "Failed to open device backend library: %s" }
//unused 12002E:string { "Failed to get device operations: %s" }
//unused 12003E:string { "Device backend returned an empty set of operations" }
12004E:string { "Device backend does not implement all required methods" }
//unused 12005E:string { "Failed to inquiry tape page: backend call failed (%d)" }
//unused 12006E:string { "Cannot allocate device data: failed to set mutex attributes (%d)" }
//unused 12007E:string { "Cannot allocate device data: failed to set mutex type (%d)" }
12008E:string { "Cannot allocate device data: failed to initialize mutex (%d)" }
//unused 12009E:string { "Cannot allocate device data: failed to free mutex attributes (%d)" }
12010E:string { "Failed to grab the device lock (%s)" }
12011E:string { "Failed to release the device lock (%s)" }
12012E:string { "Cannot open device: failed backend open call" }
12013E:string { "Cannot inquire the tape device: backend call failed (%d)" }
12014E:string { "Cannot open device: failed to reserve the device (%d)" }
//unused 12015D:string { "Attempting to load the medium" }
12016E:string { "No medium present" }
12017E:string { "Cannot load the medium (%d)" }
12018E:string { "Cannot load the medium: failed to lock the medium in the drive (%d)" }
12019E:string { "Cannot load the medium: failed to determine medium position (%d)" }
12020E:string { "Cannot load the medium: failed to set device defaults (%d)" }
12021E:string { "Cannot load the medium: failed to get device parameters (%d)" }
12022I:string { "Unloading medium" }
12023D:string { "Reserving device" }
12024E:string { "Cannot reserve device: backend call failed (%d)" }
12025D:string { "Releasing device" }
12026D:string { "Locking medium in the drive" }
12027E:string { "Cannot lock medium in the drive: backend call failed (%d)" }
12028D:string { "Unlocking medium" }
12029E:string { "Device is not ready (%d)" }
12030E:string { "Cannot get capacity data: backend call failed (%d)" }
12031E:string { "Cannot set compression: backend call failed (%d)" }
12032E:string { "Cannot set append position: invalid partition %lu" }
12033E:string { "Cannot seek to append position: seek failed (%d)" }
12034E:string { "Cannot get maximum device blocksize: backend call failed (%d)" }
12035E:string { "Cannot rewind medium: backend call failed (%d)" }
12036E:string { "Seek failed: final position is not what was requested" }
12037E:string { "Cannot seek: backend call failed (%d)" }
12038E:string { "Cannot seek EOD: invalid partition %lu" }
12039E:string { "Cannot seek EOD: backend locate call failed (%d)" }
12040E:string { "Cannot parse backend options: backend call failed (%d)" }
12041E:string { "Cannot space file marks: backend call failed (%d)" }
12042E:string { "Cannot write block: must open the device first" }
12043E:string { "Cannot write block: device is read-only" }
12044E:string { "Cannot write a %u-byte block: maximum block size is %lu" }
12045E:string { "Cannot write block: backend call failed (%d). Dropping to read-only mode." }
12046E:string { "Cannot write file marks: must open the device first" }
12047E:string { "Cannot write file marks: backend call failed (%d). Dropping to read-only mode." }
12048E:string { "Cannot read: must open the device first" }
12049E:string { "Cannot read: backend call failed (%d)" }
12050E:string { "Cannot format medium: locate to partition 0, block 0 failed (%d)" }
12051E:string { "Cannot format medium: Mode Sense for Medium Partition failed (%d)" }
//unused 12052E:string { "Cannot format medium: Mode Select for Medium Partition failed (%d)" }
12053E:string { "Cannot format medium: backend call failed (%d)" }
12054E:string { "Cannot unformat medium: locate to partition 0, block 0 failed (%d)" }
12055E:string { "Cannot unformat medium: backend call failed (%d)" }
12056W:string { "Cannot get Volume Change Reference parameter: read attribute failed (%d)" }
12057W:string { "Cannot get VCI data: read attribute failed (%d)" }
12058W:string { "Cannot get VCI data: unexpected ID 0x%04x" }
12059W:string { "Cannot get VCI data: unexpected length 0x%04x" }
12060W:string { "Cannot get VCI data: unexpected VCR length 0x%04x" }
12061W:string { "Cannot get VCI data: unexpected Application Specific Info length %d" }
12062W:string { "Cannot get VCI data: unexpected Application Specific Info signature" }
12063W:string { "Cannot set VCI data: backend call failed (%d)" }
12064E:string { "Cannot write block: no space left on device" }
// unused 12065E:string { "Cannot write file marks: error during retry on out of space condition (%d). Dropping to read-only mode." }
// unused 12066E:string { "Cannot write block: error during retry on out of space condition (%d). Dropping to read-only mode." }
// Message IDs 12067 through 12499 are allocated to IBM tape device plugins.
// DO NOT add messages with those IDs to this file.
//unused 13000E:string { "Failed to open I/O scheduler backend: %s" }
//unused 13001E:string { "Failed to get scheduler operations: %s" }
//unused 13002E:string { "Scheduler backend returned an empty set of operations" }
13003E:string { "Scheduler backend does not implement all required methods" }
13004E:string { "Dentry cache backend does not implement all required methods" }
// Message IDs 13005 through 13499 are allocated to IBM I/O scheduler plugins.
// DO NOT add messages with those IDs to this file.
// Message IDs 13500-13999 are allocated to dentry cache plugins.
// DO NOT add messages with those IDs to this file.
// Message IDs 14000-14499 are reserved for the ltfs executable.
// DO NOT add messages with those IDs to this file.
// Message IDs 14500-14999 are reserved for the admin_channel interface.
// DO NOT add messages with those IDs to this file.
// Message IDs 15000-15499 are reserved for the mkltfs executable.
// DO NOT add messages with those IDs to this file.
// Message IDs 15500-15999 are reserved for the cropto plugins.
// DO NOT add messages with those IDs to this file.
// Message IDs 16000-16499 are reserved for the ltfsck executable.
// DO NOT add messages with those IDs to this file.
17000E:string { "XML parser: not all required tags found in \'%s\'" }
17001E:string { "XML parser: duplicate required tag \'%s\'" }
17002E:string { "XML parser: duplicate optional tag \'%s\'" }
17003E:string { "XML parser: cannot determine whether tag is empty" }
17004E:string { "XML parser: tag \'%s\' must not be empty" }
17005E:string { "XML parser: extra content in tag \'%s\'" }
17006W:string { "XML parser: ignoring unrecognized tag \'%s\' inside \'%s\'" }
17007E:string { "Cannot instantiate an LTFS label parser for file \'%s\'" }
17008E:string { "Cannot parse XML label from file \'%s\'" }
17009E:string { "Cannot instantiate an LTFS label parser for a memory buffer" }
17010E:string { "Cannot parse XML label from memory" }
17011E:string { "Cannot instantiate an index parser for file \'%s\'" }
17012E:string { "Cannot parse index from file \'%s\'" }
17013E:string { "Cannot parse index: failed to determine medium position (%d)" }
17014E:string { "Cannot parse index: failed to create XML parser input buffer" }
17015E:string { "Cannot parse index: failed to create XML reader" }
17016E:string { "Cannot parse index direct from medium" }
17017E:string { "XML parser: unexpected top-level tag \'%s\'" }
17018E:string { "XML parser: unsupported encoding \'%s\'" }
17019E:string { "XML parser: no schema version found" }
17020E:string { "XML parser: invalid schema version \'%s\'" }
17021E:string { "XML parser: unsupported %s version %s" }
17022E:string { "XML parser: invalid block size %s" }
17023E:string { "XML parser: invalid generation number %s" }
17024E:string { "XML parser: invalid size criterion %s" }
17025E:string { "XML parser: failed to normalize value (%d)" }
17026E:string { "XML parser: file size is shorter than extent list" }
17027E:string { "XML parser: unsupported extended attribute type \'%s\'" }
17028E:string { "XML parser: base64 decoding failed" }
17029E:string { "XML parser: invalid UUID %s" }
17030E:string { "XML parser: failed to normalize name \'%s\'" }
17031E:string { "XML parser: invalid %s name \'%s\'" }
17032E:string { "XML parser: compression must be \'true\' (1) or \'false\' (0)" }
17033E:string { "XML parser: invalid partition \'%s\'" }
17034E:string { "XML parser: invalid time \'%s\'" }
17035E:string { "XML parser: expected a text node" }
17036E:string { "XML parser: expected a text node (received type %d)" }
17037E:string { "XML parser: failed to read from XML stream" }
17038E:string { "XML parser: unexpected end of XML stream" }
17039E:string { "XML parser: failed to read a block from the medium (%d)" }
17040E:string { "XML parser: failed to space back 1 file mark" }
17041E:string { "XML parser: read failed while looking for a file mark (%d)" }
17042E:string { "XML writer: error creating tag (%s)" }
17043E:string { "Cannot instantiate an LTFS label writer to memory" }
17044E:string { "Label writer: failed to start the document (%d)" }
17045E:string { "Label writer: failed to format time" }
17046E:string { "Label writer: failed to close the document (%d)" }
17047E:string { "Cannot generate LTFS label: failed to allocate buffer" }
17048E:string { "Cannot generate index data in memory: failed to allocate buffer" }
17049E:string { "Cannot instantiate index writer to memory" }
17050E:string { "Cannot generate index data in memory" }
17051E:string { "Cannot instantiate an index writer to file \'%s\'" }
17052E:string { "Cannot generate index data (%d) in file \'%s\'" }
17053E:string { "Cannot generate index data direct to tape: failed to create output buffer" }
17054E:string { "Cannot instantiate an index writer direct to tape" }
17055E:string { "Cannot generate index data direct to tape (%d)" }
17056E:string { "XML writer: cannot format time (gmtime failed)" }
17057E:string { "Index writer: failed to start the document (%d)" }
17058E:string { "Index writer: failed to close the document (%d)" }
17059E:string { "Index writer: cannot validate extended attribute value (%d)" }
17060E:string { "XML writer: failed to write a block to the medium (%d)" }
17061E:string { "XML writer: failed to flush cached data to the medium (%d)" }
17062E:string { "XML writer: tried to write a directory as a file" }
17063W:string { "Periodic sync thread failed to flush file data to the medium. Data might be lost (%s)." }
17064D:string { "Sync is done. (%s)" }
17065D:string { "Periodic sync thread initialized" }
17066D:string { "Periodic sync thread uninitialized" }
17067D:string { "Sync is kicked. (%s)" }
17068D:string { "Sync index" }
17069E:string { "Failed to sync index" }
//unused 17070I:string { "Tape is not loaded" }
17071I:string { "Unpartitioning the medium" }
17072E:string { "Cannot unformat: failed to unpartition the medium (%d)" }
17073I:string { "Device list:" }
17074I:string { "Device Name = %s, Vender ID = %s, Product ID = %s, Serial Number = %s, Product Name = %s" }
17075E:string { "Traverse(%c): cannot read index from %d (%c)" }
17076E:string { "Traverse(%c): cannot locate to the next index position (%c)" }
17077I:string { "Traverse(%c): find target generation %d (%c)" }
17078D:string { "Traverse(%c): cannot find target generation %d (%c)" }
17079E:string { "Traverse: cannot find target generation %d" }
17080D:string { "Traverse(%c): find generation %d (%c)" }
17081E:string { "Traverse(%c): callback function failed %d (%c)" }
17082E:string { "Traverse(%c): cannot locate to the first index position (%c)" }
17083E:string { "Traverse(%c): cannot locate to the last index position (%c)" }
17084E:string { "XML parser: failed to read extent list from file (%d)" }
17085I:string { "Plugin: Loading \"%s\" %s" }
17086W:string { "Cannot get kernel version" }
17087I:string { "Kernel version: %s" }
17088W:string { "Cannot get distribution information" }
17089I:string { "Distribution: %s" }
17090W:string { "sysctl system call failed (%s)" }
17091E:string { "Cannot save tag: libxml2 could not return text for this node" }
17092E:string { "Index writer: failed to write opaque tags (%s)" }
17093E:string { "XML parser: failed to skip tag" }
17094E:string { "XML parser: comment field is longer than 64 KiB" }
17095W:string { "The index read from the tape uses an old version of the LTFS format. If this tape is modified, the index upgrades to format version %s." }
17096W:string { "The index read from the tape uses a newer version of the LTFS format than the one supported by this software. Some functionality might be available. If this tape is modified, the index downgrades to format version %s." }
17097E:string { "XML parser: two extents overlap" }
17098E:string { "XML parser: invalid name pattern '%s\'" }
17099E:string { "Failed to spawn the periodic sync thread (%d)" }
17100E:string { "XML parser: UID on the root directory must be 1" }
17101E:string { "XML parser: UID 1 is reserved for the root directory" }
17102E:string { "Cannot set PEWS: Mode Sense for Device Configuration Extension failed (%d)" }
17103E:string { "Cannot set PEWS: Mode Select for Device Configuration Extension failed (%d)" }
17104E:string { "Cannot get PEWS: Mode Sense for Device Configuration Extension failed (%d)" }
17105E:string { "Cannot load the medium: failed to get programmable early warning size (%d)" }
17106E:string { "XML parser: UID 0 is reserved" }
17107E:string { "Version mismatch of MAM, IP=%d, DP=%d" }
17108E:string { "Cannot find partition id \'%c\'(0x%x)" }
17109E:string { "Failed to detect the final index or the final record" }
17110I:string { "The MAM was written by PGA1 or earlier" }
17111I:string { "The MAM was written by PGA2 or later" }
17112I:string { "Starting EOD recovery (GA/PGA1)" }
17113I:string { "Starting EOD recovery: reading an index from (%llu, %llu)" }
17114I:string { "Seaching the final index in IP" }
17115E:string { "Failed to search the final index in IP" }
17116I:string { "Detecting the final record in DP" }
17117E:string { "Failed to search the final index in DP" }
17118I:string { "Seeking to the final index in %s (%llu, %llu)" }
17119E:string { "Failed to seek to the final index in %s (%d)" }
17120I:string { "Reading the final index in %s (%llu, %llu)" }
17121E:string { "Failed to read the final index in %s (%d)" }
//unused 17122I:string { "Search one more index after current index (%llu, %llu)" }
17123E:string { "Unexpected genaration value (Gen = %d, MAM IP = %d, MAM DP = %d)" }
17124I:string { "Seeking to the final record in %s (%llu, %llu)" }
17125E:string { "Failed to seek to the final record in %s (%d)" }
17126E:string { "Unexpected EOD status (%d, %d)" }
17127I:string { "Detecting the final record to read by hitting read error takes about 20 minutes" }
//unused 17128W:string { "Unexpected EOD detection on the missing EOD cartridge occurred. No action required." }
17129W:string { "Unexpected read error occurred" }
17130I:string { "Expected read error occurred" }
17131I:string { "Recovering EOD at (%llu, %llu) takes about 20 minutes" }
17132E:string { "Failed to get current position" }
17133E:string { "Failed to unload the cartridge" }
17134E:string { "Failed to reload the cartridge" }
17135E:string { "Failed to seek to EOD recovery point" }
17136E:string { "Failed to erase at EOD recovery point" }
17137E:string { "Failed to recover EOD status (%d)" }
17138I:string { "Recovered EOD status successfully (%d)" }
17139I:string { "Starting a deep recovery operation: missing EOD" }
17140E:string { "Tape backend does not support missing EOD detection" }
17141I:string { "Both EODs are detected. A deep recovery operation is unnecessary." }
17142E:string { "Both EODs are missing." }
17143I:string { "EOD of %s(%d) is missing" }
17144E:string { "The MAM of %s is not usable" }
17145W:string { "Tape backend does not support missing EOD detection" }
17146E:string { "EOD of %s(%d) is missing. A deep recovery operation is required." }
17147I:string { "Attempting to mount a cartridge without EOD status check" }
17148E:string { "Use ltfsck with the --deep-recovery option" }
17149E:string { "Cannot erase: backend call failed (%d)" }
//unused 17150I:string { "PEWS field in Device Configuration Extension mode page was changed to disable programmable early warning" }
17151E:string { "Cannot set WRITE MODE: Failed to unload medium (%d)" }
17152E:string { "Cannot set WRITE MODE: Failed to load medium (%s, %d)" }
// unused 17153E:string { "Cannot set WRITE MODE: Invalid mode is specified (%x)" }
17154E:string { "Cannot set WRITE MODE: Mode Sense for Device Configuration Extension failed (%d)" }
17155E:string { "Cannot set WRITE MODE: Mode Select for Device Configuration Extension failed (%d)" }
17156E:string { "Cannot get WRITE MODE: Mode Sense for Device Configuration Extension failed (%d)" }
17157I:string { "Changing the drive setting %s" }
//unused 17158E:string { "Cannot set up tape drive" }
17159I:string { "Process was interruped by user" }
17160I:string { "Maximum device block size is %d" }
17161I:string { "EOD information (%s) is corrupted" }
17162I:string { "Trying a simple recovery that requires several minutes to complete" }
17163E:string { "Cannot reset the capacity proportion: failed to locate partition 0, block 0 (%d)" }
17164E:string { "Cannot reset the capacity proportion: backend call failed (%d)" }
17165I:string { "Resetting the medium's capacity proportion" }
17166D:string { "Coherency Data: %s (%lld, %lld, %lld, %u, %s, %c)" }
17167E:string { "Cannot read volume: failed to get capacity data (%d)" }
17168E:string { "Cannot read volume: medium is not partitioned" }
17169I:string { "Detected EOD on the missing EOD cartridge" }
17170E:string { "Failed to parse LTFS dcache configuration rules: invalid option '%s'" }
17171E:string { "Failed to parse LTFS dcache configuration rules: invalid value '%d' for option '%s'" }
17172W:string { "Time conversion is overflowed. (%04d-%02d-%02dT%02d:%02d:%02dZ)" }
17173W:string { "Time conversion is underflowed. (%04d-%02d-%02dT%02d:%02d:%02dZ)" }
17174E:string { "Key manager interface backend does not implement all required methods" }
17175E:string { "Cannot read: failed to get data key identifier (%d)" }
17176E:string { "Cannot read: failed to get data key (%d)" }
17177E:string { "Cannot read: no correct key" }
17178E:string { "Cannot read: failed to set data key (%d)" }
17179I:string { "Cleaning cartridge was loaded. (TA=%016llx)" }
17180E:string { "File %s has both of symbolic link and extents" }
17181E:string { "Cannot reopen device: failed backend reopen call" }
17182D:string { "Writing schema to disk: UUID='%s', barcode='%s'" }
17183E:string { "Error writing XML schema to file '%s' on the disk" }
17184E:string { "Error changing index cache file's permission (%d)" }
17185E:string { "Cannot read LTFS label: max transfer length is shorter than max LTFS label length (%d)" }
17186E:string { "Called releaseread_mrsw with zero or less count" }
17187E:string { "Unexpected not ready state (%d)" }
17188I:string { "Device is not ready (%d)" }
17189I:string { "Device is becoming ready (%d)" }
17190I:string { "Data key is set to enable encryption feature" }
17191I:string { "Data key is cleared to disable encryption feature" }
17192W:string { "Cannot read: medium is encrypted" }
17200E:string { "XML parser: cannot save tag, libxml2 workaround failed (%s)" }
// 17250 - 17299 are reserved for LE+T
// DO NOT place messages with IDs 20000 or higher here!
// If you are writing a plugin for libltfs, create a separate message bundle
// containing messages with
// start_id 20000 and end_id 20999 (for driver plugins) or
// start_id 21000 and end_id 21999 (for scheduler plugins).
// See messages/README for more information.
//17300 - 17350 are reserved for MAM attributes and Advisory locking
17300D:string { "Done reading MAM attributes" }
17301W:string { "Failed to retrieve MAM attributes" }
17302W:string { "Cannot retrieve attribute (%s=0x%x)" }
17303E:string { "Barcode must be atleast 6 and atmost 32 alphanumeric ascii characters" }
17304E:string { "Barcode can contain only digits and upper case characters" }
17305I:string { "The ltfs volume is locked and needs to be unlocked for Read-Write operations" }
17306I:string { "Mounting as read-only because the volume is locked due to a hard write error" }
17307I:string { "The ltfs volume is permanently locked and so is mounted read-only. Reformat required for write operations"}
17308I:string { "The ltfs volume is locked due to write error. Run check utility to fix or reformat the cartridge"}
17309I:string { "The ltfs volume is permanently locked. Run format utility to re-use the cartridge"}
17310I:string { "Setting the LTFS Volume to be unlocked" }
17311E:string { "The LTFS Volume cannot be unlocked (%u)" }
17312I:string { "Setting the LTFS Volume to be locked" }
17313E:string { "The LTFS Volume cannot be locked (%u)" }
17314I:string { "Setting the LTFS Volume to be permanently locked" }
17315E:string { "The LTFS Volume cannot be permanently locked (%u)" }
17316I:string { "Setting the LTFS Volume to be locked due to write error" }
17317E:string { "The LTFS Volume cannot be locked due to write error (%u)" }
17318E:string { "Only 0->Unlocking, 1->Locking and 2->Permanent Locking are allowed" }
17319I:string { "%s" }
17320I:string { "Mounting as read-only with the latest index (%d) as permanent write error is set in MAM" }
// HPE MD 22.09.2017 Added for SNIA 2.4 to allow for checking percent encoding and openforwrite
17321D:string { "Original name from platform? %s" }
17322D:string { "percent encoded name? %s" }
17323D:string { "Original name from tape? %s" }
17324D:string { "percent decoded filename? %s" }
17325D:string { "Generic string tracepoint %d, %s"}
17326D:string { "Generic number tracepoint %d, %d"}
17327I:string { "The ltfs volume is locked due to data partition write error. Run check utility to fix or reformat the cartridge"}
17328I:string { "The ltfs volume is locked due to index partition write error. Run check utility to fix or reformat the cartridge"}
17329I:string { "Setting the LTFS Volume to be locked due to data partition write error" }
17330I:string { "Setting the LTFS Volume to be locked due to index partition write error" }
17331E:string { "The LTFS Volume cannot be locked due to data partition write error (%u)" }
17332E:string { "The LTFS Volume cannot be locked due to index partition write error (%u)" }
17333I:string { "Mounting as read-only because the volume is locked due to a data partition hard write error" }
17334I:string { "Mounting as read-only because the volume is locked due to a index partition hard write error" }
17335I:string { "Mounting as read-only because the volume is locked due to both partition hard write error" }
17336I:string { "Percent encoded name has been truncated" }
//17351 - 17360 are reserved for Archive Manager
17351I:string { "Volume belongs to Archive Manager spanned set, mounting as read only" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,272 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the main ltfs application (src/main.c, src/ltfs_fuse.c).
root:table {
messages:table {
start_id:int { 14000 }
end_id:int { 14499 }
14000I:string { "LTFS starting, %s version %s, log level %d" }
14001E:string { "Cannot enable FUSE option %s (%d)" }
14002E:string { "Cannot set up permissions (%d)" }
14003E:string { "min_pool_size (%d) cannot be greater than max_pool_size (%d)" }
14004E:string { "Cannot create work directory (%d)" }
14005E:string { "Path \'%s\' exists, but is not a directory" }
14006E:string { "Invalid umask \'%s\' (must be 3 octal digits, such as 022)" }
14007E:string { "Invalid fmask \'%s\' (must be 3 octal digits, such as 022)" }
14008E:string { "Invalid dmask \'%s\' (must be 3 octal digits, such as 022)" }
14009E:string { "The backend \'%s\' does not have a default device. Specify one using the \"-o devname=\" option." }
//unused 14010E:string { "Cannot load I/O scheduler \'%s\'" }
14011E:string { "Cannot allocate LTFS volume structure" }
14012E:string { "Tape backend option parsing failed" }
14013E:string { "Cannot mount the volume" }
//unused 14014E:string { "Cannot duplicate index criteria" }
14015W:string { "Volume does not allow index criteria override. Ignoring user-specified criteria." }
14016E:string { "Cannot format data placement rules (%d)" }
14017E:string { "Cannot parse data placement rules (%d)" }
14018E:string { "Cannot get read-only status of the medium" }
14019I:string { "Medium is write protected. Mounting read-only." }
//unused 14020E:string { "The data placement rules must be 255 characters or less." }
//unused 14021E:string { "The data placement rules contain invalid characters" }
14022E:string { "Cannot flush file data to the medium. Data might be lost (%s)." }
14023E:string { "Cannot set extended attribute: position option must be zero" }
14024E:string { "Cannot get extended attribute: position option must be zero" }
//unused 14025D:string { "Cannot read directory: no file handle provided" }
14026D:string { "Cannot read directory: no buffer space" }
14027E:string { "Cannot read directory: convert to system locale failed (%s, %d)" }
14028W:string { "Cannot initialize I/O scheduler. The scheduler is disabled. Performance might decrease and memory usage might increase." }
14029I:string { "Ready to receive file system requests" }
14030D:string { "FUSE fgetattr for \'%s\'" }
14031D:string { "FUSE getattr for \'%s\'" }
14032D:string { "FUSE open file \'%s\' (%s)" }
14033D:string { "FUSE open directory \'%s\'" }
14034D:string { "FUSE release directory \'%s\'" }
14035D:string { "FUSE release file \'%s\'" }
14036D:string { "FUSE fsync \'%s\'" }
14037D:string { "FUSE flush \'%s\'" }
14038D:string { "FUSE set times \'%s\'" }
14039D:string { "FUSE chmod \'%s\'" }
14040D:string { "FUSE create file \'%s\'" }
14041D:string { "FUSE mkdir \'%s\'" }
14042D:string { "FUSE truncate \'%s\' (length=%lld)" }
14043D:string { "FUSE ftruncate \'%s\' (length=%lld)" }
14044D:string { "FUSE unlink \'%s\'" }
14045D:string { "FUSE rmdir \'%s\'" }
14046D:string { "FUSE rename \'%s\' to \'%s\'" }
14047D:string { "FUSE readdir \'%s\'" }
14048D:string { "FUSE write \'%s\' (offset=%lld, count=%zu)" }
14049D:string { "FUSE read \'%s\' (offset=%lld, count=%zu)" }
14050D:string { "FUSE setxattr \'%s\' (name=\'%s\', size=%zu)" }
14051D:string { "FUSE getxattr \'%s\' (name=\'%s\')" }
14052D:string { "FUSE listxattr \'%s\'" }
14053D:string { "FUSE removexattr \'%s\' (name=\'%s\')" }
14054E:string { "Failed to load tape drive plug-in (%d)" }
14055E:string { "Failed to load I/O scheduler plug-in (%d)" }
14056E:string { "No driver plug-in configured and no default found" }
14057E:string { "Failed to load kmi plug-in (%d)" }
14058I:string { "%s version %s" }
//unused 14059E:string { "No changer plug-in configured and no default found" }
14060E:string { "Failed to convert the sync time (%s)" }
14061E:string { "Unknown type of sync (%s)" }
14062E:string { "Cannot mount. Sync time must be a non-zero positive number." }
14063I:string { "Sync type is \"%s\", Sync time is %ld sec" }
14064I:string { "Sync type is \"%s\"" }
14065E:string { "Unexpected sync type (%d)" }
//unused 14066E:string { "Sync time should be a positive value" }
14067E:string { "Failed to convert the sync time because it is too big or too small (%s)" }
14068E:string { "Specified sync time is too big or too small (%ld)" }
//unused 14069E:string { "Failed to load changer plug-in (%d)" }
//unused 14070E:string { "The backend \'%s\' does not have a default device. Specify one using the \"-o changer_devname=\" option." }
14071I:string { "Medium has no space to write data. Mounting as read-only." }
14072I:string { "Rollback mount is specified. Mounting as read-only at generation %d." }
14073I:string { "Index partition has no space to write index. Mounting as read-only." }
14074I:string { "Data partition has no space to write index. Mounting as read-only." }
14075E:string { "Cannot set up tape drive" }
14076I:string { "Attempting to mount the cartridge without EOD existence check" }
14077I:string { "The cartridge will be mounted as read-only" }
// unused 14078E:string { "CM in the cartridge might be corrupted. Try to run ltfs with the \"-o force_mount_no_eod\" option." }
14079E:string { "Invalid uid \'%s\' (must be a positive integer or valid user name)" }
14080E:string { "Invalid gid \'%s\' (must be a positive integer or valid group name)" }
//unused 14081E:string { "Failed to create a dentry cache view for cartridge \"%s\"" }
//unused 14082E:string { "Failed to enable dentry cache for cartridge \"%s\"" }
//unused 14083E:string { "Failed to remove existing dentry cache for cartridge \"%s\" (%d)" }
//unused 14084E:string { "Failed to load the dentry cache module (%d)" }
//unused 14085E:string { "Could not initialize the dentry cache manager (%d)" }
//unused 14086E:string { "Could not configure the dentry cache manager (%d)" }
//unused 14087E:string { "Failed to unload the dentry cache module (%d)" }
//unused 14088E:string { "Failed to destroy the dentry cache manager (%d)" }
14089E:string { "Could not initialize the kmi plug-in." }
14090E:string { "KMI backend option parsing failed" }
14091E:string { "Invalid generation for rollback mount is specified. %s." }
14092I:string { "Symbolic link type is (%s)" }
14093E:string { "Unknown type of symbolic link (%s)" }
14094E:string { "Cannot get mount point (%d)" }
14095I:string { "Set the tape device write-anywhere mode to avoid cartridge ejection" }
//unused 14100W:string { "The device name specified with \'-o devname\' is ignored in library mode" }
//unused 14101W:string { "The eject option is not available in library mode" }
//unused 14102E:string { "Time-based sync is not available in library mode" }
//unused 14103E:string { "Cannot specify both a single drive name and a changer device name" }
14104I:string { "Launched by \"%s\"" }
14105I:string { "%s" }
14106I:string { "GCC version is %s" }
//unused 14107W:string { "d->dentry_proxy is NULL unexpectedly: %s" }
//unused 14108E:string { "The single drive feature is not supported in this binary." }
14109E:string { "Minimum pool size must be a positive number" }
14110E:string { "Maximum pool size must be a positive number" }
14111I:string { "Initial setup completed successfully" }
14112I:string { "Invoke 'mount' command to check the result of final setup" }
14113I:string { "Specified mount point is listed if succeeded" }
14114E:string { "Cannot initialize the open file table" }
14115E:string { "Invalid scsi_append_only_mode option: %s" }
14116E:string { "This medium is not supported (%d)" } // 2.2.0.2
14117W:string { "Ignored setting modify and access time to 0" }
14118I:string { "Incompatible medium. Mounting read-only." }
// 14150 - 14199 are reserved for LE+
14200E:string { "Missing mountpoint parameter" }
14201E:string { "Mountpoint \"%s\" specified but not accessible" }
// Help messages
14400I:string { "usage: %s mountpoint [options]" }
14401I:string { "LTFS options:" }
14402I:string { " -o devname=<dev> Tape device (default: %s)" }
14403I:string { " -o devname=<dev> Tape device" }
14404I:string { " -o work_directory=<dir> LTFS work directory (default: %s)" }
14405I:string { " -o trace Enable diagnostic output (same as verbose=3)" }
14406I:string { " -a Advanced help, including standard FUSE options"}
14407I:string { " -V, --version Output version information and exit" }
14408I:string { " -h, --help Display this help and exit" }
14409I:string { "FUSE options:" }
14410I:string { " -o umask=M Set file permissions (octal)" }
14411I:string { " -o uid=N Set file owner" }
14412I:string { " -o gid=N Set file group" }
14413I:string { " -o config_file=<file> Configuration file (default: %s)" }
14414I:string { " -o atime Update index if only access times have changed" }
14415I:string { " -o tape_backend=<name> tape backend to use (default: %s)" }
14416I:string { " -o iosched_backend=<name> I/O scheduler implementation to use (default: %s, use \"none\" to disable)" }
14417I:string { " -o umask=<mode> Override default permission mask (3 octal digits, default: 000)" }
14418I:string { " -o fmask=<mode> Override file permission mask (3 octal digits, default: 000)" }
14419I:string { " -o dmask=<mode> Override directory permission mask (3 octal digits, default: 000)" }
14420I:string { " -o min_pool_size=<num> Minimum write cache pool size. Cache objects are 1 MB each (default: %d)" }
14421I:string { " -o max_pool_size=<num> Maximum write cache pool size. Cache objects are 1 MB each (default: %d)" }
14422I:string { " -o rules=<rules> Rules for choosing files to write to the index partition.\n"
" The syntax of the rule argument is:\n"
" size=1M\n"
" size=1M/name=pattern\n"
" size=1M/name=pattern1:pattern2:pattern3\n"
" A file is written to the index partition if it is no larger\n"
" than the given size AND matches at least one of the name\n"
" patterns (if specified). The size argument accepts K, M, and G\n"
" suffixes. Name patterns might contain the special characters\n"
" '?' (match any single character) and '*' (match zero or more\n"
" characters)." }
14423I:string { " -o quiet Disable informational messages (same as verbose=1)" }
14424I:string { " -o fulltrace Enable full call tracing (same as verbose=4)" }
14425I:string { " -o eject Eject the cartridge after unmount" }
// Reserved 14426I
14427I:string { " -o sync_type=<type> Specify sync type (default: time@5)\n"
" <type> should be specified as follows:\n"
" time@min: LTFS attempts to write an index each 'min' minutes.\n"
" min should be a decimal number from 1 to %ld\n"
" It is equivalent to \"-o sync_type=unmount\" when 0 is specified\n"
" (default: min=5)\n"
" close: LTFS attempts to write an index when a file is closed\n"
" unmount: LTFS attempts to write an index when the medium is unmounted" }
// Reserved 14428I
// Reserved 14429I
// Reserved 14430I
// Reserved 14431E
// Reserved 14432I
// Reserved 14433E
// Reserved 14434E
// Reserved 14435I
14436I:string { " -o device_list Show available tape devices" }
14437I:string { " -o rollback_mount=<gen> Attempt to mount on previous index generation (read-only mount)" }
// Reserved 14438I
14439I:string { " -o noeject Do not eject the cartridge after unmount (default)" }
14440I:string { " -o noatime Do not update index if only access times have changed (default)" }
14441I:string { " -o verbose=<num> Override output verbosity directly (default: %d)" }
// Reserved 14442I
14443I:string { " -o force_mount_no_eod Skip EOD existence check when mounting (read-only mount)\n"
" Only use for a CM corrupted medium" }
// Reserved 14444I
// Reserved 14445I
// Reserved 14446I
// Reserved 14447I
14448I:string { " -o release_device Clear device reservation (should be specified with -o devname"}
// Reserved 14449I
// Reserved 14450I
// Reserved 14451I
// Reserved 14454I
14455I:string { " -o kmi_backend=<name> Key manager interface implementation to use (default: %s, use \"none\" to disable)" }
14456I:string { " -o capture_index Capture latest index to work directory at unmount" }
// Reserved 14457I
// Reserved 14458I
// Reserved 14459I
// Reserved 14460I
14461I:string { " -o symlink_type=<type> Specify symbolic link type (default: posix)\n"
" <type> should be specified with one of the following values:\n"
" posix: LTFS behavior is same as standard symbolic link\n"
" live: LTFS replaces mount point path by current mount point" }
// Reserved 14462I
14463I:string { " -o scsi_append_only_mode=<on|off> Set the tape device append-only mode (default=on)" }
14464I:string { "%s version %s (build %d)" } // Used by HPE-SOS
// Reserved 14465I
// Reserved 14466I
14467I:string { " -o syslogtrace Enable diagnostic output to stderr and syslog(same as verbose=303)" }
// Reserved 14468I // 2.2.0.2
// Added for windows as currently we are not supporting sync_type as close
14480I:string { " -o sync_type=<type> Specify sync type (default: time@5)\n"
" <type> should be specified as follows:\n"
" time@min: LTFS attempts to write an index each 'min' minutes.\n"
" min should be a decimal number from 1 to %ld\n"
" It is equivalent to \"-o sync_type=unmount\" when 0 is specified\n"
" (default: min=5)\n"
" unmount: LTFS attempts to write an index when the medium is unmounted" }
14481I:string { "The Permanent write error bit is set in MAM " }
14482E:string { "Failed to find a valid index from either partition to do a read-only mount as PWE is set in MAM" }
14483I:string { "The Data Partition Permanent write error bit is set in MAM " }
14484E:string { "Failed to find a valid index from either partition to do a read-only mount as DPPWE is set in MAM" }
14485I:string { "The Index Partition Permanent write error bit is set in MAM " }
14486E:string { "Failed to find a valid index from either partition to do a read-only mount as IPPWE is set in MAM" }
14487I:string { "The Data and Index Partition Permanent write error bit is set in MAM " }
14488E:string { "Failed to find a valid index from either partition to do a read-only mount as DP_IP_PWE is set in MAM" }
14489E:string { "Unable to mount, out of memory or mutexes" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,207 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for ltfsck.
root:table {
messages:table {
start_id:int { 16000 }
end_id: int { 16499 }
16000I:string { "Starting ltfsck, %s version %s, log level %d" }
16001E:string { "Cannot allocate LTFS volume structure" }
16002E:string { "Option validation failed" }
16003E:string { "Must provide search criteria using -g" }
16004E:string { "Unexpected condition: str_gen is not specified" }
16005E:string { "Invalid generation number %s" }
16006I:string { "Rolling back to generation %d" }
//unused 16007E:string { "Invalid time string %s" }
//unused 16008D:string { "Specified time is %04d-%02d-%02d %02d:%02d:%02d.%09ld %s" }
16009E:string { "Must provide device name" }
16010E:string { "Cannot load backend \'%s\' (%d)" }
16011E:string { "Cannot open device \'%s\'" }
//unused 16012E:string { "Cannot load medium" }
//unused 16013E:string { "Cannot take the device lock (%d)" }
16014I:string { "Checking LTFS file system on \'%s\'" }
16015I:string { "Rolling back LTFS file system on \'%s\'" }
16016E:string { "Invalid search mode" }
16017I:string { "Verify rollback point on \'%s\'" }
16018I:string { "Listing LTFS file system rollback points on \'%s\'" }
16019E:string { "Invalid operation mode" }
16020W:string { "Failed to close the device (%d)" }
16021E:string { "Volume is inconsistent and was not corrected" }
16022I:string { "Volume is consistent" }
16023I:string { "LTFS volume information:" }
16024I:string { "Volser (bar code) : %s" }
16025I:string { "Volume UUID : %s" }
16026I:string { "Format time : %04d-%02d-%02d %02d:%02d:%02d.%09ld %s" }
16027I:string { "Block size : %lu" }
16028I:string { "Compression : %s" }
16029I:string { "Index partition : ID = %c, SCSI Partition = %u" }
16030I:string { "Data partition : ID = %c, SCSI Partition = %u" }
16031I:string { "Data placement policy information:" }
16032I:string { "Size threshold : %llu" }
16033I:string { "Name pattern : %s" }
16034I:string { "Policy update : %s" }
//unused 16035E:string { "Cannot traverse indexes: failed to seek EOD on partition %c (%d)" }
//unused 16036E:string { "Cannot traverse indexes: failed to space back 1 file mark (%d)" }
//unused 16037E:string { "Cannot traverse indexes: failed to space forward 1 file mark (%d)" }
//unused 16038I:string { "Partition %c ends in a valid index, but no trailing file mark was found. Closing the partition with a file mark." }
//unused 16039D:string { "Partition %c ends in a file mark" }
//unused 16040I:string { "Partition %c ends in a valid index, but no trailing file mark was found." }
//unused 16041D:string { "Partition %c ends in a valid index" }
//Unused 16042E:string { "Cannot traverse indexes: callback function failed (%d)" }
//unused 16043I:string { "Partition %c does not end in a valid index" }
//unused 16044E:string { "Cannot traverse indexes: failed to space back file marks (%d)" }
16045D:string { "Erasing history from (%c, %llu)" }
16046D:string { "Rolling back %s: (%c, %llu)" }
//unused 16047E:string { "Cannot read volume: failed to load the tape (%d)" }
//unused 16048E:string { "Cannot read volume: failed to read the partition labels (%d)" }
//unused 16049E:string { "Cannot read volume: failed to set compression (%d)" }
16050D:string { "Erase history: spacing to end of index" }
16051E:string { "Cannot erase history: failed to space forward 1 file mark (%d)" }
16052D:string { "Erase history: spacing back and writing a file mark" }
16053E:string { "Cannot erase history: failed to space back 1 file mark (%d)" }
16054E:string { "Cannot erase history: failed to write a file mark (%d)" }
16055E:string { "Cannot roll back the data partition: failed to erase history (%d)" }
16056E:string { "Cannot roll back the data partition: failed to write an index (%d)" }
16057E:string { "Cannot roll back: the medium is read-only" }
16058I:string { "Rolling back from the index partition" }
16059E:string { "Cannot roll back the index partition: failed to erase history (%d)" }
16060E:string { "Cannot roll back the index partition: failed to write an index (%d)" }
16061E:string { "Cannot roll back: invalid partition ID %c" }
16062I:string { "Roll back from the data partition" }
16063I:string { "Specified rollback point is the current index. The volume is consistent. No operation is required." }
//unused 16064I:string { "Specified rollback point is the current index, but there are extra blocks on the medium" }
//unused 16065I:string { "Restoring volume consistency based on the following index." }
//unused 16066I:string { "At least one index is not at the end of its partition." }
16067I:string { "Rolling back based on the following index chain." }
16068E:string { "Cannot roll back: found 2 or more target indexes in one partition (%d)" }
//unused 16069E:string { "Cannot roll back: found 3 or more target indexes" }
16070E:string { "Cannot roll back: failed to load the volume (%d)" }
16071E:string { "Cannot roll back: failed to traverse the index partition (%d)" }
16072E:string { "Cannot roll back: failed to traverse the data partition (%d)" }
16073E:string { "Cannot roll back: failed to find indexes" }
16074E:string { "Cannot list rollback points: failed to load the volume (%d)" }
16075E:string { "Cannot list rollback points: failed to traverse the index partition (%d)" }
16076E:string { "Cannot list rollback points: failed to traverse the data partition (%d)" }
//unused 16077I:string { "Valid indexes:" }
//unused 16078I:string { "No indexes found" }
16079E:string { "Cannot roll back: failed to save index partition append position (%d)" }
16080E:string { "Cannot check volume (%d)" }
16081D:string { "Latest index generation is %d (%c, %llu)" }
16082I:string { "Saving latest index to data partition to save history" }
16083I:string { "List indexes in forward direction strategy" }
16084I:string { "List indexes in backward direction strategy" }
16085E:string { "Unexpected traverse strategy." }
16086I:string { "Volume is rolled back successfully" }
16087E:string { "Volume is inconsistent. Try to recover consistency with ltfsck first." }
16088I:string { "Launched by \"%s\"" }
16089I:string { "%s" }
16090I:string { "GCC version is %s" }
16091E:string { "Cannot recover missing EOD (%d)" }
16092E:string { "Cannot set up tape drive (%s)"}
16093E:string { "Cannot recover the cartridge with ltfsck" }
16094E:string { "CM in the cartridge might be corrupted. Try to run ltfs with the \"-o force_mount_no_eod\" option." }
// unused 16095
16096W:string { "Both EODs are missing. Attempt to list index information." }
16097E:string { "Both EODs are missing. Roll back operation is not permitted." }
16098E:string { "Cannot roll back the cartridge: found unsupported index version" }
16099E:string { "Use the latest version of LTFS software" }
16100E:string { "Cannot recover the cartridge: found unsupported index version" }
16101E:string { "Please use the latest version os LTFS software or --deep-recovery option." }
16102E:string { "Cannot open key manager interface backend \'%s\'" }
16103W:string { "Cannot unload key manager interface backend" }
16104E:string { "Could not initialize the key manager interface plug-in. \'%s\' (%d)" }
16105E:string { "Key manager interface backend option parsing failed" }
16106E:string { "Tape backend option parsing failed" }
16107E:string { "Unknown option '%s %s'" }
16108I:string { "%s version %s" }
16109E:string { "This operation is not allowed on this medium (%s)" }
16110E:string { "The --salvage-rollback-points option was specified against a normal cartridge." }
16111E:string { "Cannot roll back: incompatible medium" }
16112E:string { "Cannot repair: incompatible medium" }
// 2.2.0.2
// Help messages
16400I:string { "Usage: %s [options] filesys" }
16401I:string { "filesys Device file for the tape drive" }
16402I:string { "Available options are:" }
16403I:string { " -g, --generation=<generation> Specify the generation to roll back" }
16404I:string { " -r, --rollback Roll back to the point specified by -g" }
16405I:string { " -n, --no-rollback Do not roll back. Verify the point specified by -g (default)" }
16406I:string { " -f, --full-recovery Recover extra data blocks into directory %s" }
16407I:string { " -l, --list-rollback-points List rollback points" }
16408I:string { " -j, --erase-history Erase history at rollback" }
16409I:string { " -k, --keep-history Keep history at rollback (default)" }
16410I:string { " -q, --quiet Suppress informational messages" }
16411I:string { " -t, --trace Enable diagnostic output" }
16412I:string { " -h, --help This help" }
16413I:string { " -p, --advanced-help Full help, including advanced options" }
16414I:string { " -i, --config=<file> Use the specified configuration file (default: %s)" }
16415I:string { " -e, --backend=<name> Override the default tape device backend" }
16416I:string { " -x, --fulltrace Enable full function call tracing (slow)" }
//unused 16417I
//unused 16418I:string { " -t, --time=<time> Specify the time to roll back" }
//unused 16419I:string { " Time value should be \"yyyy-mm-dd HH:MM:SS.nanosec\"" }
16420I:string { " -v, --traverse=<strategy> Set traverse mode for listing roll back points. Strategy should be forward or backward. (default: backward)" }
16421I:string { " -z, --deep-recovery Recover EOD missing cartridge.\n"
" Some blocks might be erased, but recover to final unmount point\n"
" with an index version of at least "2.0.0" or earlier.\n"
" (Must be used for a cartridge that cannot be recovered by a normal option.)" }
16422I:string { " -m, --full-index-info Display full index information (Effective only for -l option)" }
16423I:string { " --kmi-backend=<name> Override the default key manager interface backend" }
16424I:string { " --capture-index Capture index information to the current directory (-g is effective for this option)" }
16425I:string { " --syslogtrace Enable diagnostic output to stderr and syslog" }
16426I:string { " -V, --version Version information" }
16427I:string { " --salvage-rollback-points List the rollback points of the cartridge that has no EOD" } // 2.2.0.2
16428I:string { "Verifying the rollback point based on the index generation %d" }
16429I:string { "Verifying on basis of the following index generation." }
16430I:string { "Verification of the rollback point based on the index generation is completed." }
16431I:string { "Provide valid generation number" }
16432I:string { "Usage example:" }
16433I:string { " %s %s" }
16434I:string { " %s %s %s %s" }
16435E:string { "This operation is not allowed, Volume is locked" }
16436E:string { "This operation is not allowed, Volume is permanently locked" }
16437I:string { "Volume corrected, Setting the LTFS Volume to be unlocked" }
16438E:string { "LTFS volume corrected but failed to unlock the volume" }
16439E:string { "Unable to repair volume belonging to Archive Manager spanned set" }
16440I:string { " -w, --list-open-files List open for write files at rollback points. (Effective only for -l option)" }
16441I:string { " -c, --count-open-files Count open for write files at rollback points. (Effective only for -l option)" }
16442I:string { " -F, --Force Force rollback when there are files open for write in the index. (Effective only for -r option)" }
16443E:string { "Rollback index has the following open for write files" }
16444E:string { "use -F option to force rollback" }
16445I:string { " -P, --Pipe Format the list of rollback points for consumption by another process" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,150 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for mkltfs.
root:table {
messages:table {
start_id:int { 15000 }
end_id:int { 15499 }
15000I:string { "Starting mkltfs, %s version %s, log level %d" }
15001E:string { "Cannot allocate LTFS volume structure" }
15002E:string { "Option validation failed" }
15003I:string { "Formatting device \'%s\'" }
15004I:string { "LTFS volume blocksize: %lu" }
15005I:string { "Index partition placement policy: %s" }
15006D:string { "Opening the device" }
15007D:string { "Device opened" }
15008E:string { "Cannot open backend \'%s\'" }
15009E:string { "Cannot open device \'%s\' (%d)" }
15010I:string { "Creating data partition %c on SCSI partition %d" }
15011I:string { "Creating index partition %c on SCSI partition %d" }
15012E:string { "Failed to format the medium" }
15013I:string { "Volume UUID is: %s" }
15014E:string { "Cannot set policy override flag in the index (%d)" }
15015E:string { "Cannot parse data placement rules (%d)" }
//unused 15016E:string { "Cannot create a backup of the policy rules (%d)" }
15019I:string { "Volume capacity is %llu GB" }
15020D:string { "Closing the device" }
15021W:string { "Cannot unload backend" }
15022D:string { "Device closed" }
15023I:string { "Formatting failed" }
15024I:string { "Medium formatted successfully" }
15025D:string { "Validating command line options" }
15026E:string { "Device name must use the \'%s\' option" }
//unused 15027E:string { "Block size must be greater than zero" }
15028E:string { "Block size must be at least %d" }
15029E:string { "Tape serial must be 6 characters" }
15030E:string { "Tape serial must contain only ASCII digits and capital letters" }
15031E:string { "Volume name must conform to file name rules" }
//unused 15032E:string { "Data placement rules contain invalid characters" }
//unused 15033E:string { "Data placement rules are too long" }
15034E:string { "Cannot format data placement rules (%d)" }
//unused 15035E:string { "Cannot parse data placement rules (%d)" }
//unused 15036E:string { "Cannot specify name rules with a zero file size" }
15037D:string { "Command line options are valid" }
15038E:string { "Failed to unformat the medium" }
15039I:string { "Unformatting failed" }
15040I:string { "Medium unformatted successfully" }
15041I:string { "Launched by \"%s\"" }
15042I:string { "%s" }
15043I:string { "GCC version is %s" }
15044E:string { "Cannot set up tape device" }
15045E:string { "Formatting was canceled by the user" }
15046E:string { "Unformatting was canceled by the user" }
15047E:string { "Medium is already formatted (%d)" } // 2.2.0.2
15048I:string { "Need to specify -f or --force option to format this medium" }
15049I:string { "Checking the medium (%s)" } // 2.2.0.2
15050E:string { "Cannot open key manager interface backend \'%s\'" }
15051W:string { "Cannot unload key manager interface backend" }
15052E:string { "Could not initialize the key manager interface plug-in. \'%s\' (%d)" }
15053E:string { "Key manager interface backend option parsing failed" }
15054E:string { "Tape backend option parsing failed" }
15055E:string { "Unknown option '%s %s'" }
15056E:string { "Failed to decrypt the medium" }
15057I:string { "Need to specify the correct data key or -f option to format this medium" }
15058E:string { "Cannot set the tape attribute: %s" }
15059I:string { "%s version %s" } // 2.2.0.2
15060E:string { "Index criteria update is not allowed on this medium" } // 2.2.0.2
15061E:string { "Failed to format the medium due to WORM error" } // 2.2.0.2
15062E:string { "Failed to unformat the medium due to WORM error" } // 2.2.0.2
15063E:string { "Eject and write-enable the cartridge then try again." }
15064I:string { "Cartridge in device %s will be unformatted" }
15065I:string { "Removing LTFS format..." }
// Help messages
15400I:string { "Usage: %s <options>" }
15401I:string { "Available options are:" }
15402I:string { " -d, --device=<name> Tape device (required)" }
15403I:string { " -s, --tape-serial=<id> Tape serial number (6 alphanumeric ASCII characters)" }
15404I:string { " -n, --volume-name=<name> Tape volume name (LTFS VOLUME by default)" }
15405I:string { " -r, --rules=<rules> Rules for choosing files to write to the index partition.\n The syntax of the rule argument is:\n size=1M\n size=1M/name=pattern\n size=1M/name=pattern1:pattern2:pattern3\n A file is written to the index partition if it is no larger\n than the given size AND matches at least one of the name\n patterns (if specified). The size argument accepts K, M, and G\n suffixes. Name patterns might contain the special characters\n '?' (match any single character) and '*' (match zero or more\n characters)." }
15406I:string { " --no-override Disallow mount-time data placement policy changes" }
15407I:string { " -q, --quiet Suppress progress information and general messages" }
15408I:string { " -t, --trace Enable function call tracing" }
15409I:string { " -h, --help This help" }
15410I:string { "Usage example:" }
15411I:string { " %s --device=%s --rules=\"%s\"" }
15412I:string { " -p, --advanced-help Full help, including advanced options" }
15413I:string { " -i, --config=<file> Use the specified configuration file (default: %s)" }
15414I:string { " -e, --backend=<name> Use the specified tape device backend (default: %s)" }
15415I:string { " -b, --blocksize=<num> Set the LTFS record size (default: %d)" }
15416I:string { " -c, --no-compression Disable compression on the volume" }
15417I:string { " -x, --fulltrace Enable full function call tracing (slow)" }
15418I:string { " -w, --wipe Restore the LTFS medium to an unpartitioned medium (format to a legacy scratch medium)" }
15419I:string { " -k, --keep-capacity Keep the tape medium's total capacity proportion" }
15420I:string { " -f, --force Force to format medium" }
15421I:string { " --kmi-backend=<name> Use the specified key manager interface backend (default: %s)" }
// Hewlett Packard Enterprise additions
15488E:string { "Unable to format volume belonging to Archive Manager spanned set" }
15489E:string { "Unable to unformat volume belonging to Archive Manager spanned set" }
15490E:string { "Tape already contains an LTFS volume. Need -f option to force reformat" }
15491I:string { " -f, --force Force reformat of existing LTFS volume (normally prevented)" }
15422I:string { " --syslogtrace Enable diagnostic output to stderr and syslog" } // 2.2.0.2
15423I:string { " -V, --version Version information" } // 2.2.0.2
15424I:string { " --long-wipe Unformat the medium and erase any data on the tape by overwriting special data pattern.\n This operation takes over 3 hours. Once you start, you cannot interrupt it." }
15492I:string { "This operation will result in irrecoverable loss of data on the tape (Data or LTFS formatted). \n"
"Enter 'Y' if you agree or any other key to abort." }
15493I:string { "Operation aborted." }
15494E:string { "Unformat unsuccessful, tape already unformatted." }
15495I:string { "LTFS Unformat Utility\n" }
15496I:string { " -g, --interactive Interactive mode" }
15497I:string { "Operation succeeded. Cartridge no longer contains a valid LTFS volume." }
15498E:string { "Operation failed. Volume may be in a confused state.." }
15499E:string { "Unable to open device; check name and ensure it is not in use." }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,142 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the file backend.
// This backend shares IDs 12000-12999 with ibmtape, iokit and the backend interface functions,
// so be sure to make a note in messages/ltfs/root.txt whenever an ID is allocated here.
root:table {
messages:table {
start_id:int { 12067 }
end_id:int { 12499 }
12127E:string { "Unrecognized space type" }
12152D:string { "Backend %s: (%llu, %llu)" }
12153D:string { "Backend %s" }
12154D:string { "Backend %s: %llu" }
12155D:string { "Backend %s: (%llu, %llu) FM = %llu" }
12158E:string { "Cannot write attribute: failed to create file (%d)" }
12159E:string { "Cannot write attribute: failed to write file (%d)" }
//unused 12160E:string { "Cannot open device: path does not exist or is not a directory" }
12161D:string { "Backend read: %u bytes (from position=(%u, %llu), FMs %llu)" }
12162E:string { "Cannot read: unit not ready" }
12163E:string { "Cannot read: already at EOD" }
12164E:string { "Cannot read: check for file mark failed (%d)" }
12165E:string { "Cannot read: check for record failed (%d)" }
12166E:string { "Cannot read: failed to open file (%d)" }
12167E:string { "Cannot read: failed to read file (%d)" }
12168E:string { "Cannot read: failed to close file (%d)" }
12169D:string { "Backend read: returning %zd bytes" }
12170E:string { "Cannot read: no block at current position" }
12171D:string { "Backend write: %u bytes (at position=(%u, %llu), FMs %llu)" }
12172E:string { "Cannot write: unit not ready" }
12173E:string { "Cannot write: null input buffer" }
12174E:string { "Cannot write: requested size (%u) exceeds maximum block size (%u)" }
12175E:string { "Cannot write: failed to remove current record (%d)" }
12176E:string { "Cannot write: failed to set write pass (%d)" }
12177E:string { "Cannot write: failed to generate file name" }
12178E:string { "Cannot write: failed to create file \'%s\' (%d)" }
12179E:string { "Cannot write: failed to write file (%d)" }
12180E:string { "Cannot write: failed to close file (%d)" }
12181E:string { "Cannot write: failed to update EOD (%d)" }
12182D:string { "Backend write file marks: %u (at position=(%u, %llu), FMs %llu)" }
12183E:string { "Cannot write file marks: unit not ready" }
12184E:string { "Cannot write file marks: failed to set write pass (%d)" }
12185E:string { "Cannot write file marks: failed to remove current record (%d)" }
12186E:string { "Cannot write file marks: failed to generate file name" }
12187E:string { "Cannot write file marks: failed to create file \'%s\' (%d)" }
12188E:string { "Cannot write file marks: failed to close file (%d)" }
12189E:string { "Cannot write file marks: failed to update EOD (%d)" }
12190E:string { "Cannot rewind: unit not ready" }
12191E:string { "Cannot locate: unit not ready" }
12192E:string { "Cannot locate: invalid partition %lu" }
12193E:string { "Cannot locate: failed to generate file name" }
12194E:string { "Cannot space: unit not ready" }
12195E:string { "Cannot space: failed to generate file name" }
12196E:string { "Cannot erase: unit not ready" }
12197D:string { "Erase partition %lu" }
12198E:string { "Cannot load: failed to find EOD on partition %u (%d)" }
12199E:string { "Cannot load: failed to get write pass" }
12200E:string { "Cannot read position: unit not ready" }
12201E:string { "Cannot format: must issue command from partition 0, block 0" }
12202E:string { "Cannot format: unknown format type" }
12203E:string { "Cannot get remaining capacity: unit not ready" }
12204E:string { "Device already reserved" }
12205E:string { "Cannot lock medium: unit not ready" }
12206E:string { "Cannot unlock medium: unit not ready" }
12207W:string { "Cannot read attribute: failed to open file (%d)" }
12208W:string { "Cannot read attribute: failed to read file (%d)" }
12209D:string { "Backend write attribute %04x, size=%u" }
12210E:string { "Cannot write attribute: failed to generate file name" }
12211E:string { "Cannot set compression: unit not ready" }
//unused 12212E:string { "Cannot get parameters: unit not ready" }
12213E:string { "Cannot find EOD: failed to generate file name" }
12214E:string { "Cannot find EOD: failed to check for file (%d)" }
12215E:string { "Cannot find EOD: failed to update EOD (%d)" }
12216E:string { "Cannot update EOD: failed to remove current record (%d)" }
12217E:string { "Cannot update EOD: failed to generate file name" }
12218E:string { "Cannot update EOD: failed to create file (%d)" }
12219E:string { "Cannot update EOD: failed to remove file (%d)" }
12220E:string { "Cannot remove record: failed to make file name" }
12221E:string { "Cannot remove record: failed to unlink file (%d)" }
12222E:string { "Cannot space file marks: tried to space over EOD" }
12223E:string { "Cannot space file marks: failed to generate file name" }
12224E:string { "Cannot space file marks: failed to check for file (%d)" }
12225E:string { "Cannot space file marks: tried to space over BOT" }
12226E:string { "Cannot set capacity: must issue command from partition 0, block 0" }
12258I:string { "Opening a directory through generic file driver (%s)" }
12259I:string { "Opening a redirecting file through generic file driver (%s)" }
12260I:string { "Opening a device through generic file driver (%s)" }
12261I:string { "Loading a redirecting file through generic file driver (%s)" }
12262I:string { "Loading a directory through generic file driver (%s)" }
12263E:string { "Cannot open redirecting file (%s)" }
12264E:string { "Cannot get a redirect location (%s)" }
12265I:string { "Dummy device shows empty (%s)" }
12266E:string { "Cannot find the location pointed by redirecting file (%s)" }
12267I:string { "Getting the device directory (%s)" }
12268I:string { "No device directory is specified (%s)" }
12269I:string { "Scanning the devices directory (%s)" }
12270E:string { "Cannot open the device directory (%s)" }
12271D:string { "Found a device (%s, %s, %s, %s)" }
12272I:string { "FILE backend options:\n"
" -o devname=<dev> LTFS emulation directory (default=%s)\n"
" -o file_readonly Emulate operation in read-only mode\n"
" -o file_p0_warning=<num> Set early warning position partition 0\n"
" -o file_p1_warning=<num> Set early warning position partition 1\n" }
// unused 12273E:string { "Pseudo-error on %s" }
// unused 12274I:string { "Pseudo-error on write. Good return code, but a record to emulate a write error did not get sent to the drive." }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,214 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the ibmtape backend.
// This backend shares IDs 12000-12999 with the file and iokit backends and the backend
// interface functions, so be sure to make a note in messages/ltfs/root.txt whenever an
// ID is allocated here.
root:table {
messages:table {
start_id:int { 12067 }
end_id:int { 12499 }
//unused 12067E:string { "EBUSY in %s" }
//unused 12068E:string { "EFAULT in %s" }
//unused 12069E:string { "EIO in %s" }
//unused 12070E:string { "ENOMEM in %s" }
//unused 12071E:string { "ENXIO in %s" }
//unused 12072E:string { "EPERM in %s" }
//unused 12073E:string { "ETIMEDOUT in %s" }
12074W:string { "Received low space warning (early warning) in %s" }
//unused 12075E:string { "EACCES in %s" }
//unused 12076E:string { "EOVERFLOW in %s" }
//unused 12077E:string { "EINVAL in %s" }
//unused 12078E:string { "ENOSYS in %s" }
//unused 12079E:string { "EROFS in %s" }
//unused 12080E:string { "ENOMEDIUM in %s" }
//unused 12081E:string { "Unknown error in %s (%d)" }
//unused 12082E:string { "Cannot read device buffer: return code of -1 without sense data" }
//unused 12083E:string { "Cannot read device buffer or get sense data" }
//unused 12084E:string { "Cannot read device buffer (%d)" }
12085W:string { "Cannot retrieve drive dump: failed to create dump file (%d)" }
12086I:string { "Saving drive dump to %s" }
12087D:string { "Total dump data length is %lld." }
12088D:string { "Total number of transfers is %d." }
12089D:string { "Transferring dump data" }
12090W:string { "Cannot retrieve drive dump: failed to read buffer (%d)" }
12091W:string { "Cannot retrieve drive dump: failed to write to dump file (%d)" }
12092D:string { "Transfer %d: wrote %d bytes" }
12093W:string { "Cannot retrieve drive dump: wrote %d bytes out, expected %d" }
//unused 12094W:string { "Cannot force drive dump (%d)" }
//unused 12095W:string { "Cannot force drive dump: return code of -1 without sense data" }
//unused 12096W:string { "Cannot force drive dump or get sense data" }
12097I:string { "Taking drive dump in buffer" }
12098I:string { "Forcing drive dump" }
12099I:string { "Cannot get sense (%d)" }
12100I:string { "SCSI_PASS_THROUGH: command failed (%d) %s" }
//unused 12101W:string { "SCSI_PASS_THROUGH: sense = %02x/%02x%02x" }
//unused 12102E:string { "SCSI_PASS_THROUGH: cannot get sense data from the drive" }
//unused 12103W:string { "SIOC_PASS_THROUGH: command failed (%d)" }
12104D:string { "SIOC_PASS_THROUGH: no sense info: T%02x:M%02x:H%02x:D%02x %s" }
12105D:string { "SIOC_PASS_THROUGH: sense = %02x/%02x%02x" }
12106D:string { "SIOC_PASS_THROUGH: pos = 0x%02x%02x%02x%02x %s" }
12107I:string { "SIOC_PASS_THROUGH: cannot sense data from the drive" }
12108I:string { "SIOC_PASS_THROUGH: status info: T%02x:M%02x:H%02x:D%02x %s" }
12109I:string { "Drive cleaning required" }
//unused 12110D:string { "Ignoring recovered error" }
12111I:string { "Parsing log page: buffer too small, copying %zu bytes from %lx" }
12112I:string { "Option parsing for the ibmtape backend failed (%d)" }
12113E:string { "%s: medium is already mounted or in use" }
12114I:string { "Cannot open device \'%s\' (%d)" }
12115W:string { "Device \'%s\' must be opened in read-only mode" }
12116I:string { "Cannot open device: inquiry failed (%d)" }
12117I:string { "Unsupported %s \'%s\'" }
12118I:string { "%s identification is \'%s\'" }
12119D:string { "Read block: file mark detected" }
12120D:string { "Read block: illegal length, actual = %d" }
//unused 12121E:string { "Cannot read block: space back after illegal length failed (%d)" }
//unused 12122E:string { "EAGAIN in read" }
12123D:string { "EOD detected (%s): ignore sense" }
//unused 12124E:string { "Cannot locate: return code of -1 without sense data" }
//unused 12125E:string { "Cannot locate or get sense data" }
//unused 12126E:string { "Cannot locate (%d)" }
12127I:string { "Unrecognized space type" }
//unused 12128E:string { "Cannot read position: return code of -1 without sense data" }
//unused 12129E:string { "Cannot read position or get sense data" }
//unused 12130E:string { "Cannot read position (%d)" }
12131I:string { "Invalid format mode (%d)" }
//unused 12132E:string { "Cannot format tape (%d)" }
//unused 12133E:string { "Cannot format tape: return code of -1 without sense data" }
//unused 12134E:string { "Cannot format tape or get sense data" }
12135I:string { "Cannot get remaining capacity: get log page 0x%02x failed (%d)" }
12136I:string { "Cannot get remaining capacity: failed to parse the log page" }
12137I:string { "Cannot get remaining capacity: loop index error (%d)" }
//unused 12138E:string { "Cannot get mode data (%d)" }
//unused 12139E:string { "Cannot get mode data: return code of -1 without sense data" }
//unused 12140E:string { "Cannot get mode data or get sense data" }
//unused 12141E:string { "Cannot set mode data (%d)" }
//unused 12142E:string { "Cannot set mode data: return code of -1 without sense data" }
//unused 12143E:string { "Cannot set mode data or get sense data" }
12144I:string { "Cannot read attribute (%d)" }
//unused 12145E:string { "Cannot read attribute: return code of -1 without sense data" }
//unused 12146E:string { "Cannot read attribute or get sense data" }
//unused 12147E:string { "Cannot write attribute (%d)" }
//unused 12148E:string { "Cannot write attribute: return code of -1 without sense data" }
//unused 12149E:string { "Cannot write attribute or get sense data" }
12150D:string { "Backend %s: %zu bytes %s" }
12151D:string { "Backend %s: %zu %s" }
12152D:string { "Backend %s: (%llu, %llu) %s" }
12153D:string { "Backend %s %s" }
12154D:string { "Backend %s: %llu %s" }
12155D:string { "Backend %s: (%llu, %llu) FM = %llu %s" }
12156D:string { "Backend %s: %d %s" }
12157I:string { "Unsupported cartridge type (0x%x)" }
//unused 12157D:string { "Backend %s: (%lu, %u)" }
12158I:string { "Opening a device through ibmtape driver (%s)" }
12159I:string { "Firmware revision is %s" }
12160I:string { "%s serial is %s" }
12161I:string { "Cannot open device: inquiry 0x%x failed (%d)" }
12162I:string { "Vendor ID is %s" }
//unused 12163D:string { "Invalid field in CDB detected while reading coherency page in MAM: ignore sense" }
12164W:string { "Cannot detect lin_tape version" }
12165I:string { "lin_tape version is %s" }
12166W:string { "Received low space warning (programmable early warning) in %s" }
//unused 12167E:string { "Cannot erase tape (%d)" }
//unused 12168E:string { "Cannot erase tape: return code of -1 without sense data" }
//unused 12169E:string { "Cannot erase tape or get sense data" }
12170W:string { "Cannot get EOD status: failed to get log page 0x%02x (%d)" }
12171W:string { "Cannot get EOD status: failed to parse the log page" }
12172W:string { "Cannot get EOD status: value length or partition number is wrong %d - (%d, %d)" }
12173I:string { "Error on %s: %s (%d) %s"}
12174E:string { "Error on %s: msg = NULL (%d) %s"}
//unused 12175D:string { "Error on address 0x%x: (0x%04x -> 0x%04x) msg = NULL (%d) %s"}
//unused 12176D:string { "Error on address 0x%x: (0x%04x -> 0x%04x) %s (%d) %s"}
//unused 12177D:string { "Error on address 0x%x: (0x%04x) msg = NULL (%d) %s"}
//unused 12178D:string { "Error on address 0x%x: (0x%04x) %s (%d) %s"}
//unused 12179D:string { "Error on changer command: 0x%04x -> 0x%04x"}
//unused 12180D:string { "Error on changer command: 0x%04x"}
12181W:string { "Drive firmware must be updated. Upgrading to %s or later is recommended." }
12182W:string { "Drive firmware level does not correctly detect the EOD status" }
//unused 12183I:string { "Cannot validate hardware license (%d)" }
//unused 12184I:string { "Cannot create ITD conversion table (%d)" }
//unused 12185D:string { "%s: %d(%04x) %d 0x%02x%02x(%d) [%d %d %d %d %d %d %d %d %d %d %d %d(%d)] %s" }
//unused 12186D:string { "An error occurred on drive address 0x%x: (0x%04x -> 0x%04x) %s (%d)"}
12187W:string { "Failed to get medium type code: medium type check is skipped" }
12188I:string { "Read block: overlength condition is detected. residual = %d, actual = %d" }
12189D:string { "Read block: underlength condition is detected. shortage = %d, actual = %d" }
//unused 12190E:string { "Read block: unexpected condition in illegal length, %d" }
12191I:string { "Unexpected parameter size for getting active CQ loss write (%d)" }
12192I:string { "Cannot allocate memory in %s" }
12193E:string { "Old lin_tape version is detected." }
12194D:string { "IOCTL: sense = %02x/%02x%02x" }
12195D:string { "IOCTL: pos = 0x%02x%02x%02x%02x %s" }
12196I:string { "IOCTL: %s %d returns %d (generic %d) %s" }
12197D:string { "IOCTL: no sense info" }
12198D:string { "IOCTL: %s %d expected error %d" }
12199I:string { "Cannot space: count value %d of the space command is too large" }
12200E:string { "Logical block protection Error on write" }
12201E:string { "Logical block protection Error on read" }
12202E:string { "CRC check failed: Len = %d, Actual CRC = %08x, Expected CRC = %08x" }
12203D:string { "CRC: %s ,Len = %d, CRC = %08x" }
12204E:string { "Encryption method of the drive is not AME but %s (0x%02X)" }
12205E:string { "Encryption feature is not supported on the drive: %d" }
12206I:string { "Logical block protection is enabled" }
12207I:string { "Logical block protection is disabled" }
12208E:string { "Is medium mountable: invalid bar code %s" }
12209D:string { "Is medium mountable: six-character bar code %s" }
12210E:string { "Is medium mountable: unsupported tape drive type (%d) is used" }
12211I:string { "Is medium mountable: unsupported medium %s is detected" }
12212D:string { "Is medium mountable: drive (%s) can mount medium (%s,0x%x)" }
12213D:string { "Is medium mountable: drive (%s) cannot mount medium (%s,0x%x)" }
//unused 12214I:string { "Opening a device through ibmtape driver (%s)" }
//unused 12215E:string { "Failed to open the directory '%s' (%d)" }
//unused 12216D:string { "Device map: [%d] address=%d, serial=%s, error=%d" }
12217I:string { "Cannot get log page 0x%02x (%d) in %s" }
12218I:string { "Cannot parse the log page 0x%02x in %s" }
12219E:string { "Failed to open file '%s' (%d)"}
12220E:string { "Invalid scsi_lbprotect option: %s" }
12221I:string { "IBMTAPE backend options:\n"
" -o devname=<dev> tape device (default=%s)\n"
" -o autodump enable autodump (default)\n"
" -o noautodump disable autodump\n"
" -o scsi_lbprotect=<on|off> enable drive logical block protection (default=off)\n" }
12222I:string { "Pseudo-error on %s" }
12223I:string { "Pseudo-error on write. Good return code, but a record to emulate a write error did not get sent to the drive." }
12224I:string { "A long data wipe is in progress. (%d minutes passed)" }
12225I:string { "A long data wipe is in progress. %d %%" }
12226D:string { "WORM cartridge is loaded." }
12227I:string { "Failed to get cartridge status. The cartridge is not loaded."}
62202I:string { "CRC check failed: Len = %d, Actual CRC = %08x, Expected CRC = %08x" }
62203D:string { "CRC: %s, Len = %d, CRC = %08x" }
}
}

View File

@@ -0,0 +1,37 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of Hewlett Packard Enterprise Development LP
//
// HPE StoreOpen Software Version 3.4
//
// (C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
//
// This file is part of the HPE StoreOpen Software
//
// HPE StoreOpen Software is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// HPE StoreOpen Software is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,37 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of Hewlett Packard Enterprise Development LP
//
// HPE StoreOpen Software Version 3.4
//
// (C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
//
// This file is part of the HPE StoreOpen Software
//
// HPE StoreOpen Software is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// HPE StoreOpen Software is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,144 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of Hewlett Packard Enterprise Development LP
//
// HPE StoreOpen Software Version 3.4
//
// (C) Copyright 2015 - 2018 Hewlett Packard Enterprise Development LP
//
// This file is part of the HPE StoreOpen Software
//
// HPE StoreOpen Software is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// HPE StoreOpen Software is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the ltotape backend.
// This backend uses IDs in the range 20000-20999.
root:table {
messages:table {
start_id:int { 20000 }
end_id:int { 20999 }
// First ten slots reserved..
// Messages for the ltotape backend:
20010D:string { "SCSI request: [ %s] Requested length=%d" }
20011D:string { "SCSI outcome: Driver status=0x%02X SCSI status=0x%02X Actual length=%d" }
20012D:string { "SCSI sense : %s" }
20013I:string { "Drive type is %s, serial number is %s" }
20014E:string { "Drive requires firmware update to enable LTFS (current=%s)" }
20015I:string { "Unable to read device serial number" }
20016W:string { "Cannot find valid snapshot log" }
20017D:string { "Cannot take snapshot log, drive type (%s) does not support feature" }
20018D:string { "Snapshot in process of creation, pausing before retry" }
20019E:string { "Internal program error: size %d too large in (%s)" }
20020D:string { "SG_RESERVED_SIZE (max block size) now set to %d bytes" }
20021D:string { "Cannot locate, tape appears to be uninitialized" }
20022I:string { "Tape has passed the Early Warning EOM point, so forcing to Read Only mode" }
20023E:string { "Backend SCSI subsystem error from %s (0x%0X)" }
20024W:string { "Cannot store attribute 0x%0X (%d)" }
20025D:string { "Stored EWSTATE attribute as %d" }
20026I:string { "Tape was previously formatted by application '%s'" }
20027E:string { "Failed to find specific device instance %d" }
20028D:string { "Found device class 0x%X at index %d" }
20029E:string { "Failed to create device interface - device may be busy?" }
20030E:string { "Failed to get exclusive access - device may be busy? (%d)" }
20031D:string { "Looking for sg device corresponding to %s" }
20032E:string { "Error remapping st device %s to sg : %s" }
20033E:string { "Unable to find matching sg device for %s" }
20034D:string { "Mapped %s to %s (%d.%d.%d.%d)" }
20035E:string { "Unable to lock device (%s)" }
20036E:string { "Parsing log page: buffer too small, copying %zu bytes from %lx" }
20037E:string { "Option parsing for the ltotape backend failed (%d)" }
20038D:string { "Read block: file mark detected" }
20039D:string { "Backend %s: %zu bytes" }
20040E:string { "EBUSY in %s" }
20041E:string { "EFAULT in %s" }
20042E:string { "EIO in %s" }
20043E:string { "ENOMEM in %s" }
20044E:string { "ENXIO in %s" }
20045E:string { "EPERM in %s" }
20046E:string { "ETIMEDOUT in %s" }
20047E:string { "EINVAL in %s" }
20048W:string { "Received low space warning in %s" }
20049E:string { "EACCES in %s" }
20050E:string { "EOVERFLOW in %s" }
20051E:string { "ENOSYS in %s" }
20052E:string { "EROFS in %s" }
20053E:string { "ENOMEDIUM in %s" }
20054E:string { "Unknown error in %s (%d)" }
20055E:string { "EAGAIN in %s" }
20056D:string { "Backend %s: %zu" }
20057D:string { "Backend %s: (%llu, %llu)" }
20058D:string { "Backend %s" }
20059D:string { "Backend %s: %llu" }
20060D:string { "Backend ReadPosition: Partition=%llu, LogObject=%llu, FMcount=%llu" }
20061D:string { "Backend %s: 0x%02X" }
20062E:string { "Unsupported cartridge type (%s)" }
20063D:string { "Locate encountered EOD : ignoring sense data" }
20064E:string { "Locate failed (%d)" }
20065E:string { "Space: unrecognized type (%d)" }
20066E:string { "Cannot read position (%d)" }
20067E:string { "Invalid format mode (%d)" }
20068E:string { "Format operation failed (%d)" }
20069E:string { "Cannot get remaining capacity: get log page 0x%02x failed (%d)" }
20070E:string { "Cannot get remaining capacity: failed to parse the log page" }
20071E:string { "Cannot get remaining capacity: loop index error (%d)" }
20072E:string { "Failed to read mode data (%d)" }
20073E:string { "Failed to set mode data (%d)" }
20074E:string { "Failed to read attribute 0x%X (%d)" }
20075E:string { "Failed to write attribute (%d)" }
20076I:string { "Triggering drive diagnostic dump" }
20077W:string { "Unable to generate drive dump" }
20078W:string { "Unable to read drive dump" }
20079W:string { "Unable to save drive dump to file" }
20080D:string { "Saved drive dump to %s" }
20081W:string { "Error saving drive dump: wrote %d bytes out, expected %d" }
20082W:string { "Error saving drive dump: unable to close %s" }
20083E:string { "Cannot open device: inquiry failed (%d)" }
20084D:string { "Drive identification is \'%s\'" }
20085E:string { "Unsupported drive \'%s\'" }
20086E:string { "%s: medium is already mounted or in use" }
20087E:string { "Cannot open device \'%s\' (%d)" }
20088W:string { "Had to open device \'%s\' in read-only mode" }
20089D:string { "Driver detail: %16s = 0x%X" }
20090W:string { "Unable to create dumpfile \'%s\' - %s" }
20091I:string { "Unable to get %s properties for \'%s\' - %s" }
20092D:string { "Found %d log snapshot files, oldest is \'%s\'" }
20093E:string { "Unable to delete file \'%s\' - %s" }
20094D:string { "Removed old snapshot file \'%s\'" }
20095D:string { "Snapshot directory set to \'%s\'" }
20096I:string { "Diagnostic dump complete" }
20097D:string { "Drive firmware update needed to enable EOD status check" }
20098D:string { "Attribute 0x%X not found" }
20099I:string { "Log snapshot cannot be used, \'%s\' is not available" }
20100E:string { "Memory allocation failed" }
20101D:string { "Device name %s modified to a non-rewind-on-close type %s" }
20102W:string { "Cannot create work directory (%d)" }
20103W:string { "Path \'%s\' exists, but is not a directory" }
20104W:string { "Invalid log-directory path \'%s\', setting back to default log-directory" }
20105E:string { "Attempting to write FM at BOP" }
20106I:string { "Retaining existing MAM barcode %s" }
20107I:string { "Replacing existing MAM barcode %s with user-specified %s" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,127 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the iokit backend.
// This backend shares IDs 12000-12999 with the file and ibmtape backends and the backend
// interface functions, so be sure to make a note in messages/ltfs/root.txt whenever an
// ID is allocated here.
root:table {
messages:table {
start_id:int { 12067 }
end_id:int { 12499 }
12074W:string { "Received low space warning (early warning) in %s" }
12075W:string { "Received low space warning (programmable early warning) in %s" }
12109I:string { "Drive cleaning required" }
//unused 12110D:string { "Ignoring recovered error" }
12116I:string { "Cannot open device: inquiry failed (%d)" }
12117I:string { "Unsupported drive \'%s\'" }
12118I:string { "Drive identification is \'%s\'" }
12119D:string { "Read block: file mark detected" }
12120D:string { "Read block: illegal length, actual = %d" }
12123D:string { "EOD detected (%s): ignore sense" }
12127I:string { "Unrecognized space type" }
12135I:string { "Cannot get remaining capacity: get log page 0x%02x failed (%d)" }
12136I:string { "Cannot get remaining capacity: failed to parse the log page" }
12144I:string { "Cannot read attribute (%d)" }
12150D:string { "Backend %s: %zu bytes" }
12151D:string { "Backend %s: %zu" }
12152D:string { "Backend %s: (%llu, %llu)" }
12153D:string { "Backend %s %s" }
12154D:string { "Backend %s: %llu" }
12155D:string { "Backend %s: (%llu, %llu) FM = %llu" }
12156D:string { "Backend %s: %d %s" }
12157I:string { "Unsupported cartridge type (0x%x)" }
12158I:string { "Opening a device through iokit driver (%s)" }
12159I:string { "Firmware revision is %s" }
12160I:string { "Drive serial is %s" }
12161I:string { "Cannot open device: inquiry 0x%x failed (%d)" }
12162I:string { "Vendor ID is %s" }
12163I:string { "Cannot open device: failed to convert devname to devnumber (%s)" }
12170W:string { "Cannot get EOD status: failed to get log page 0x%02x (%d)" }
12171W:string { "Cannot get EOD status: failed to parse the log page" }
12172W:string { "Cannot get EOD status: value length or partition number is wrong %d - (%d, %d)" }
12173I:string { "%s returns %s (%d) %s" }
12174E:string { "%s returns msg = NULL (%d) %s" }
// 12175 - 12180 is reserved for Version 2
12181W:string { "Drive firmware must be upgraded to %s or later" }
12182W:string { "Drive firmware level does not correctly detect the EOD status" }
// 12183 - 12187 is already used by Version 2
12188I:string { "Read block: overrun in illegal length. residual = %d, actual = %d" }
12189D:string { "Read block: underrun in illegal length. residual = %d, actual = %d" }
// unused 12190E:string { "Read block: unexpected condition in illegal length, %d" }
12191I:string { "Unexpected parameter size for getting active CQ loss write (%d)" }
12192I:string { "Cannot allocate memory in %s" }
// 12193
12194D:string { "CDB check condition: sense = %02x/%02x%02x" }
// 12195
12196I:string { "%s (0x%02x) returns %d. %s" }
12197D:string { "no sense info" }
12198D:string { "%s (0x%02x) expected error %d" }
// unused 12200E:string { "Logical block protection Error on write" }
12201E:string { "Logical block protection Error on read" }
12202E:string { "CRC check failed: Len = %d, Actual CRC = %08x, Expected CRC = %08x" }
12203D:string { "CRC: %s ,Len = %d, CRC = %08x" }
12204E:string { "Encryption method of the drive is not AME but %s (0x%02X)." }
12205E:string { "Encryption feature is not supported on the drive: %d" }
12206I:string { "Logical block protection is enabled" }
12207I:string { "Logical block protection is disabled" }
12208E:string { "Is medium mountable: invalid bar code %s" }
12209D:string { "Is medium mountable: six-character bar code %s" }
12210E:string { "Is medium mountable: unsupported tape drive type (%d) is used" }
12211I:string { "Is medium mountable: unsupported medium %s is detected" }
12212D:string { "Is medium mountable: drive (%s) can mount medium (%s,0x%x)" }
12213D:string { "Is medium mountable: drive (%s) cannot mount medium (%s,0x%x)" }
12214I:string { "Reopening a device through iokit driver (%s)" }
// unused 12215E:string { "Failed to open the directory '%s' (%d)" }
// 12216
12217I:string { "Cannot get log page 0x%02x (%d) in %s" }
12218I:string { "Cannot parse the log page 0x%02x in %s" }
// 12219
12220E:string { "Invalid scsi_lbprotect option: %s" }
12221I:string { "IOKIT backend options:\n"
" -o devname=<dev> tape device (default=%s)\n"
" -o scsi_lbprotect=<on|off> enable drive logical block protection (default=off)\n" }
// unused 12222E:string { "Pseudo-error on %s" }
12223I:string { "Pseudo-error on write. Good return code, but a record to emulate a write error did not get sent to the drive." }
12224I:string { "A long data wipe is in progress. (%d minutes passed)" }
12225I:string { "A long data wipe is in progress. %d %%" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,345 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
root:table {
// Fallback messages. These messages do not have unique IDs; they are printed when
// the message function receives an unrecognized unique ID or fails to
// generate a message for a known unique ID.
// These messages are accessed by key, not by index: so they may be
// reordered, but they should not be renamed.
fallback_messages:table {
notfound:string { "(no message found)" }
overflow:string { "(message too long)" }
}
// Message list for LTFS internal error codes.
messages:table {
start_id:int { "99998" }
end_id:int { "99999" }
// I1000 - I1999 (LTFS internal error codes)
I1000E:string{ "Unexpected NULL function argument" }
I1001E:string{ "Memory allocation failed" }
I1002E:string{ "Attempted to lock or unlock an uninitialized mutex" }
I1003E:string{ "Attempted to unlock an already unlocked mutex" }
I1004E:string{ "Invalid device data structure" }
I1005E:string{ "Invalid partition number requested" }
I1006E:string{ "A libxml2 call failed" }
I1007E:string{ "Device is not ready" }
I1008E:string{ "No medium is present in the device" }
I1009E:string{ "Device does not support the formatted block size" }
I1010E:string{ "Locate operation resulted in an unexpected position" }
I1011E:string{ "Medium contains only one partition" }
I1012E:string{ "Invalid partition label" }
I1013E:string{ "Partition labels do not match" }
I1014E:string{ "Invalid XML index or index back chain pointer. Recovery might be possible." }
I1015E:string{ "Volume is inconsistent, but recoverable" }
I1016E:string{ "Medium cannot be partitioned or made compatible" }
I1017E:string{ "Index generation mismatch between the cached copy and the tape" }
I1018E:string{ "MAM cache is invalid" }
I1019E:string{ "Index cache is invalid" }
I1020E:string{ "Empty name rule encountered during policy parsing" }
I1021E:string{ "Mutex initialization failed" }
I1022E:string{ "Generic error for an invalid function argument" }
I1023E:string{ "A path name component is too long" }
I1024E:string{ "No such file or directory exists" }
I1025E:string{ "Path cannot be UTF-8 encoded or contains invalid characters" }
I1026E:string{ "Like LTFS_INVALID_PATH, but for paths the caller expects to exist" }
I1027E:string{ "Cannot remove the existing target path" }
I1028E:string{ "Cannot remove the non-empty directory" }
I1029E:string{ "Cannot remove the root directory" }
I1030E:string{ "Cannot move the directory because of the MacFUSE bug" }
I1031E:string{ "Cannot rename files or directories in the directory" }
I1032E:string{ "Block read from tape is smaller than expected" }
I1033E:string{ "Operation is only valid on files" }
I1034E:string{ "Medium has no EOD in one partition" }
I1035E:string{ "Medium has no EOD in both partitions" }
I1036E:string{ "Unexpected value detected in LTFS" }
I1037E:string{ "Unsupported method call" }
I1040E:string{ "Failed to find an extended attribute" }
I1041E:string{ "Failed to set signal handler" }
I1042E:string{ "Catch signals to terminate process" }
I1043E:string{ "Unsupported format version is detected in the index" }
I1044E:string{ "Received an unexpected error from ICU" }
I1045E:string{ "Error while loading a plug-in" }
I1046E:string{ "Error while unloading a plug-in" }
I1047E:string{ "Cannot modify read-only extended attribute" }
I1048E:string{ "User should not overwrite the existing extended attribute" }
I1049E:string{ "User-provided buffer is too small" }
I1050E:string{ "Volume is in read-only mode" }
I1051E:string{ "Volume is full" }
I1052E:string{ "Extended attribute value is too large" }
I1053E:string{ "Index search failed" }
I1054E:string{ "Requested extended attribute namespace is not supported" }
I1055E:string{ "Configuration file parsing failed" }
I1056E:string{ "Plug-in does not implement a required function" }
I1057E:string{ "Requested plug-in is not known" }
I1058E:string{ "Cannot parse policy string" }
I1059E:string{ "Operation is valid only on directories" }
I1060E:string{ "Failed to find the target tape volume" }
I1061E:string{ "Cannot change the data placement policy" }
I1062E:string{ "Block size is too small" }
I1063E:string{ "Bar code has the wrong length" }
I1064E:string{ "Bar code contains invalid characters" }
I1065E:string{ "Insufficient number of drives available to move between tapes" }
I1066E:string{ "Device lock request denied" }
I1067E:string{ "Medium revalidation in progress" }
I1068E:string{ "Medium revalidation failed" }
I1069E:string{ "Library is in the full slot condition" }
I1070E:string{ "Library is in the slot shortage condition" }
I1071E:string{ "Library is in an error condition" }
I1072E:string{ "Unexpected tape medium found" }
I1073E:string{ "No home slot is assigned" }
I1074E:string{ "Attempt to move active cartridge to IE slot" }
I1075E:string{ "There are no IE slots available" }
I1076E:string{ "Cannot move the tape to the requested location: failed to specify a valid target" }
I1077E:string{ "Unsupported cartridge in LTFS" }
I1078E:string{ "Cartridge is stuck in the drive" }
I1079E:string{ "The operation is not allowed" }
I1080E:string{ "This operation is not allowed on a duplicate cartridge" }
I1081E:string{ "This operation is not allowed on an unsupported cartridge" }
I1082E:string{ "This operation is not allowed on an inaccessible cartridge" }
I1083E:string{ "This operation is not allowed on an unformatted cartridge" }
I1084E:string{ "This operation is not allowed on an invalid cartridge" }
I1085E:string{ "This operation is not allowed on a cartridge with an error" }
I1086E:string{ "This operation is not allowed on a cartridge with a critical error" }
I1087E:string{ "This operation is not allowed on a cleaning cartridge" }
I1088E:string{ "This operation is not allowed on a read-only cartridge" }
I1089E:string{ "This cartridge is already included in the file system" }
I1090E:string{ "This cartridge is not included in the file system" }
I1091E:string{ "Cannot move the cartridge to the IE slot: the cartridge must be removed from the file system" }
I1092E:string{ "This operation is not allowed on a cartridge without a bar code" }
I1093E:string{ "Cannot remove the drive: 'Critical' cartridge is loaded" }
I1094E:string{ "Cannot add the drive: the drive is already added" }
I1095E:string{ "Unexpected inventory rebuild error (have to manage within LTFS itself)" }
I1096E:string{ "Library failes to get inventory. Try to unmount LTFS and re-mount LTFS again" }
I1097E:string{ "Operation needs to be restarted" }
I1098E:string{ "No target drive is found" }
I1099E:string{ "No supported filesystem type for dcache is in this system" }
I1100E:string{ "The disk image already exists" }
I1101E:string{ "The disk image is already mounted" }
I1102E:string{ "The disk image is not mounted" }
I1103E:string{ "/etc/mtab is not a regular file" }
I1104E:string{ "Failed to open /etc/mtab" }
I1105E:string{ "Failed to lock /etc/mtab" }
I1106E:string{ "Failed to seek /etc/mtab" }
I1107E:string{ "Failed to update /etc/mtab" }
I1108E:string{ "Failed to flush /etc/mtab" }
I1109E:string{ "Failed to unlock /etc/mtab" }
I1110E:string{ "Failed to close /etc/mtab" }
I1111E:string{ "Failed to copy /etc/mtab to temporary file" }
I1112E:string{ "Failed to open the temporary file for /etc/mtab" }
I1113E:string{ "Failed to seek the temporary file for /etc/mtab" }
I1114E:string{ "Failed to create a directory tree for the disk image" }
I1115E:string{ "Failed to cache dentry due to limitation of host filesystem" }
I1116E:string{ "The disk image reached the maximum size" }
I1117E:string{ "Cannot find data key" }
I1118E:string{ "A function is called in invalid sequence" }
I1119E:string{ "Cannot update the root directory" }
I1120E:string{ "Conflicting symlink tag and extent tag in XML" }
I1121E:string{ "Failed to initialize the network connection for ltfsadmintool" }
I1122E:string{ "Insufficient number of drives available for the operation" }
I1123E:string{ "Invalid volume serial number" }
I1124E:string{ "Volume has no space to write a file" }
I1125E:string{ "Volume is in physical and/or logical write protect mode" }
I1126E:string{ "Write error has previously occurred on the current mount" }
I1127E:string{ "Unexpected length of barcode label is set on the cartridge" }
I1128E:string{ "Conversion from string to value is failed, may be invalid string" }
I1129E:string{ "Failed to initialize admin session" }
I1130E:string{ "Invalid message on admin_channel" }
I1131E:string{ "Invalid password to log in via admin_channel" }
I1132E:string{ "Login credentials are not yet valid" }
I1133E:string{ "Deep recovery cannot be performed to a WORM cartridge" }
I1134E:string{ "WORM cartridge cannot be rollbacked" }
I1135E:string{ "Salvage list is valid only for WORM cartridge" }
I1136E:string{ "Cartridge is already formatted" }
I1137E:string{ "Placement policy cannot be set to WORM cartridge" }
I1138E:string{ "Specified block size is not correct" }
I1139E:string{ "Specified volume name is not correct" }
I1140E:string{ "Specified placement policy is not correct" }
I1141E:string{ "Need to specify a genaration to be rollbacked" }
I1142E:string{ "Specified generation is not correct" }
I1143E:string{ "Rollback target generation is not specified" }
I1144E:string{ "Multiple target indexes were found on the cartridge" }
I1145E:string{ "Salvage list is not required for this cartridge" }
// I1150 - I1199 are reserved for LE+
I1150E:string{ "Cannot find cartridge" }
I1151E:string{ "Cannot lock cache files" }
I1152E:string{ "Cannot unlock cache files" }
I1153E:string{ "Error in file operation(open,stat,truncate,etc)" }
I1154E:string{ "Read error (cartridge repository)" }
I1155E:string{ "Write error (cartridge repository)" }
I1156E:string{ "Invalid operation(invalid arg, op, etc)" }
I1157E:string{ "Error in file operation (mkdir,stat,rename, etc)" }
I1158E:string{ "Cannot use the cartridge" }
I1159E:string{ "Cannot find lock entry" }
I1160E:string{ "Cannot mount/unmount" }
I1161E:string{ "Cannot find device" }
I1162E:string{ "Failed to set/get Extended Attribute" }
I1163E:string{ "Failed to perform file tree walk" }
I1164E:string{ "Failed to update time stamp" }
I1165E:string{ "Block device is required" }
I1166E:string{ "Disk quota exceeded" }
I1167E:string{ "Too many open files in system" }
I1168E:string{ "Link dir exists" }
I1169E:string{ "No dmap entry" }
I1170E:string{ "Host filesystem returns recoverable error" }
I1171E:string{ "No additional cache space" }
I1172E:string{ "Repository 'Unavailable' (cart's state read error)" }
I1173E:string{ "Repository 'Out of sync' (isolated from cluster)" }
I1174E:string{ "Failed to get status of node" }
I1175E:string{ "Cannot execute this operation: Node is in 'Out of sync' state" }
I1176E:string{ "Failed to sync index cache files" }
I1177E:string{ "Failed to sync dentry cache" }
I1178E:string{ "Failed to sync cartridge repository" }
I1179E:string{ "Multi-node config file is not found" }
I1180E:string{ "Failed to handle multi node config file" }
I1181E:string{ "Cache files are corrupted and discarded" }
I1182E:string{ "Long write lock is acquired" }
I1183E:string{ "Incompatible cache file is detected" }
I1184E:string{ "Dcache is not initialized yet" }
I1185E:string{ "The multi-node config file is locked" }
I1186E:string{ "Failed to create POSIX message queue" }
I1187E:string{ "Failed to fork process" }
I1188E:string{ "No ACK message is received from child process" }
I1189E:string{ "Node type detection is failed" }
I1190E:string{ "Invalid message is detected in node detection" }
I1191E:string{ "Failed to degate other nodes" }
I1192E:string{ "Failed to operate against a cluster-wide lock" }
// Special error codes
I9997E:string{ "Child process error (ltfsck/mkltfs): %s (%d)" }
I9998E:string{ "System error: %s (%d)" }
I9999E:string{ "Message for %s is not found (%d)" }
// D0000 - D9999 (Device error codes)
D0000E:string{ "No sense data exists" }
D0002E:string{ "Read overrun condition when sili bit is off" }
D0003E:string{ "Read underrun condition when sili bit is off" }
D0004E:string{ "File mark is detected" }
D0005E:string{ "Early warning condition is detected." }
D0006E:string{ "Beginning of partition is detected" }
D0007E:string{ "Programable early warning condition is detected" }
D0008E:string{ "ITD_RES Media is cleaning the cartridge" }
D0009E:string{ "ITD_RES Voltag is not readable" }
D0010E:string{ "ITD_RES Media presence is not detected" }
D0011E:string{ "ITD_RES Media presence is not detected" }
D0012E:string{ "(TS3500/TS4500) Slot state is unknown" }
D0013E:string{ "(TS3500/TS4500) Drive is not available" }
D0014E:string{ "Record not found" }
D0015E:string{ "Insufficient time for operation (string search)" }
D0098E:string{ "(IBM LTO 00/8282) Drive requests cleaning" }
D0100E:string{ "Recovered error (should be ignored)" }
D0101E:string{ "Mode select parameter is rounded by the drive (should be ignored)" }
D0198E:string{ "(IBM LTO 01/8252) Degraded medium is detected" }
D0200E:string{ "Drive is not ready" }
D0201E:string{ "Cannot report an error for this condition" }
D0202E:string{ "Device is becoming ready" }
D0203E:string{ "Initialize command is required" }
D0204E:string{ "Manual intervention is required" }
D0205E:string{ "Operation is in progress" }
D0206E:string{ "Device is offline" }
D0207E:string{ "Door is open" }
D0208E:string{ "Device is too hot." }
D0209E:string{ "Drive has no medium" }
D0210E:string{ "Device has not self-configured yet" }
D0211E:string{ "SA creation parameter value rejected" }
D0297E:string{ "Cleaning is in progress" }
D0298E:string{ "(TS3500/TS4500) I/O slot is opened" }
D0300E:string{ "Other medium errors" }
D0301E:string{ "Read or write permanent error" }
D0302E:string{ "CM RW error" }
D0303E:string{ "Incompatible or unknown format" }
D0304E:string{ "Corrupt format is detected" }
D0305E:string{ "Drive rejects a read operation because of an unexpected overwrite on the WORM medium" }
D0306E:string{ "Load/Unload error" }
D0307E:string{ "Cleaning operation failed" }
D0308E:string{ "Permanent read error" }
D0309E:string{ "Permanent write error" }
D0399E:string{ "Maximum medium error value" }
D0400E:string{ "All H/W errors" }
D0401E:string{ "Logical Block Guard Check Failed" }
D0402E:string{ "Logical Block Protection read error" }
D0499E:string{ "Maximum hardware error value" }
D0500E:string{ "All illegal request errors" }
D0501E:string{ "Invalid field in CDB" }
D0502E:string{ "Medium destination element full" }
D0503E:string{ "Medium source element empty" }
D0504E:string{ "Medium magazine is not accessible" }
D0505E:string{ "Element address is invalid" }
D0506E:string{ "Medium removal prevented. Drive media removal prevented state set." }
D0600E:string{ "Other UA conditions" }
D0601E:string{ "Not ready to transition: medium might have changed" }
D0602E:string{ "IE slot is accessed" }
D0603E:string{ "POR/Bus reset occurred" }
D0604E:string{ "Drive configuration is changed" }
D0605E:string{ "Command is cleared by another initiator" }
D0606E:string{ "Operator medium removal request" }
D0607E:string{ "Cannot remove the medium" }
D0608E:string{ "Medium magazine inserted" }
D0700E:string{ "Other data protect conditions" }
D0701E:string{ "Write-protected" }
D0702E:string{ "WORM cartridge" }
D0703E:string{ "Attempt to overwrite in append-only mode" }
D0800E:string{ "Other blank check conditions" }
D0801E:string{ "EOD detected" }
D0802E:string{ "EOD not found" }
D1100E:string{ "Other aborted command conditions" }
D1101E:string{ "Overlapping commands" }
D1102E:string{ "Initiator response timeout" }
D1300E:string{ "The medium is full" }
D1600E:string{ "Other encryption-related errors" }
D1601E:string{ "Key service timeout or failure" }
D1602E:string{ "Detect key change" }
D1603E:string{ "Detect key change" }
D1700E:string{ "Internal logic error" }
D1701E:string{ "Driver reports an error" }
D1702E:string{ "Host reports an error" }
D1703E:string{ "Target reports an error" }
D1704E:string{ "Memory allocation failure" }
D1705E:string{ "Unsupported function" }
D1706E:string{ "Parameter code of log page not found" }
D1707E:string{ "Cannot get the sense data from a lower level" }
D1708E:string{ "Invalid argument" }
D1709E:string{ "IO error on saving dump" }
D1710E:string{ "Medium is already mounted or in use" }
D1711E:string{ "Cannot open the device" }
D1712E:string{ "Cannot support the device" }
D1713E:string{ "The device is not an IBM product" }
D1714E:string{ "Cannot support the firmware" }
D9998E:string{ "Unknown sense" }
D9999E:string{ "Vendor unique sense. ASC >= 0x80 or ASCQ >= 0x80" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,48 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the fcfs scheduler.
// This backend shares IDs 13000-13999 with the schedulers and the scheduler
// interface functions, so be sure to make a note in messages/ltfs/root.txt whenever an
// ID is allocated here.
root:table {
messages:table {
start_id:int { 13005 }
end_id:int { 13499 }
13019I:string { "FCFS I/O scheduler initialized" }
13020I:string { "FCFS I/O scheduler uninitialized" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,64 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the unified scheduler.
// This backend shares IDs 13000-13999 with other schedulers and the scheduler
// interface functions, so be sure to make a note in messages/ltfs/root.txt whenever an
// ID is allocated here.
root:table {
messages:table {
start_id:int { 13005 }
end_id:int { 13499 }
13005E:string { "Cannot initialize scheduler: failed to initialize cache manager" }
13006E:string { "Cannot initialize scheduler: failed to initialize mutex %s (%d)" }
13007E:string { "Cannot initialize scheduler: failed to initialize condition variable %s (%d)" }
13008E:string { "Cannot initialize scheduler: failed to create thread %s (%d)" }
13009E:string { "Failed to initialize mutex in scheduler private data (%d)" }
13010E:string { "Cannot write: failed to allocate scheduler private data (%d)" }
13011E:string { "Invalid back pointer to the dentry in the dentry_priv structure" }
13012E:string { "Invalid request_state received when updating the queue membership (%d)" }
13013W:string { "Index partition writer: failed to write data to the tape (%d)" }
13014W:string { "Data partition writer: failed to write data to the tape (%d)" }
13015D:string { "Unified I/O scheduler initialized" }
13016D:string { "Unified I/O scheduler uninitialized" }
13017E:string { "Cannot write: failed to allocate a cache block (%d)" }
13018E:string { "Cannot write: failed to allocate a write request" }
13019E:string { "Cannot flush: failed to write to data partition (%d)" }
13020E:string { "Aborting full flush: flushing dentry '%s' failed (%d)" }
13021W:string { "Failed to save index partition extents for a dentry (%d)" }
13022W:string { "Freeing a dentry priv with outstanding write requests. This is a bug." }
//unused 13023W:string { "Failed to copy a request: will stop writing file to the index partition" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,67 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the key manager interface flat file plugin.
// This backend shares IDs 15500-15999 with other key manager interface plugins and the plugin
// interface functions, so be sure to make a note in messages/libltfs/root.txt whenever an
// ID is allocated here.
root:table {
messages:table {
start_id:int { 15500 }
end_id:int { 15999 }
// Message IDs 15500-15009 are reserved for the cropto direct plugins.
// DO NOT add messages with those IDs to this file.
15510D:string { "Flat File plug-in initialized" }
15511D:string { "Flat File plug-in uninitialized" }
15512E:string { "Flat File plug-in failed to parse options" }
15513E:string { "Flat File plug-in failed to open the file (%d,%d)" }
15514E:string { "Flat File plug-in detected key format violation" }
// for LTFS specific format
15600E:string { "Encryption key format violation (%s): %s" }
15603E:string { "Cannot find data key" }
15604E:string { "Option parsing for the key manager interface backend failed (%d)" }
15605E:string { "Invalid sequence error (%d,%d): %s" }
15606E:string { "Failed to parse data key and/or data key identifier" }
15607E:string { "Cannot find data key of the data key identifier" }
15608I:string { "Key manager interface flatfile plug-in options:\n"
" -o kmi_dki_for_format=<DKi>\n"
" Data key identifier to format a cartridge\n"
" -o kmi_dk_list=FILE\n"
" Data key and data key identifier pairs' list file\n\n" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,70 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
// Messages for the key manager interface simple plugin.
// This backend shares IDs 15500-15999 with other key manager interface plugins and the plugin
// interface functions, so be sure to make a note in messages/libltfs/root.txt whenever an
// ID is allocated here.
root:table {
messages:table {
start_id:int { 15500 }
end_id:int { 15999 }
15500D:string { "Simple plug-in initialized" }
15501D:string { "Simple plug-in uninitialized" }
// Message IDs 15510-15529 are reserved for the cropto flatfile plugins.
// DO NOT add messages with those IDs to this file.
// for LTFS specific format
15600E:string { "Encryption key format violation (%s): %s" }
15603E:string { "Cannot find data key" }
15604E:string { "Option parsing for the key manager interface backend failed (%d)" }
15605E:string { "Invalid sequence error (%d,%d): %s" }
15606E:string { "Failed to parse data key and/or data key identifier" }
15607E:string { "Cannot find data key of the data key identifier" }
15608I:string { "Key manager interface simple plug-in options:\n"
" -o kmi_dk=<DK>\n"
" Data key\n"
" -o kmi_dki=<DKi>\n"
" Data key identifier\n"
" -o kmi_dk_for_format=<DK>\n"
" Data key to format a cartridge\n"
" -o kmi_dki_for_format=<DKi>\n"
" Data key identifier to format a cartridge\n"
" -o kmi_dk_list=<DK>:<DKi>/<DK>:<DKi>/.../<DK>:<DKi>\n"
" Data key and data key identifier pairs' list\n\n" }
}
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,38 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
//
// ZZ_Copyright_END
//
en_US:table {
// This resource intentionally left blank.
}

View File

@@ -0,0 +1,816 @@
//
// %Z% %I% %W% %G% %U%
//
// ZZ_Copyright_BEGIN
//
//
// Licensed Materials - Property of IBM
//
// IBM Linear Tape File System Single Drive Edition Version 2.2.0.2 for Linux and Mac OS X
//
// Copyright IBM Corp. 2010, 2014
//
// This file is part of the IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X
// (formally known as IBM Linear Tape File System)
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is free software;
// you can redistribute it and/or modify it under the terms of the GNU Lesser
// General Public License as published by the Free Software Foundation,
// version 2.1 of the License.
//
// The IBM Linear Tape File System Single Drive Edition for Linux and Mac OS X is distributed in the
// hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// or download the license from <http://www.gnu.org/licenses/>.
//
// ZZ_Copyright_END
//
// (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
//
// 10/13/2017 Added extra messages to support SNIA 2.4
//
root:table {
// Fallback messages. These messages do not have unique IDs; they are printed when
// the message function receives an unrecognized unique ID or fails to
// generate a message for a known unique ID.
// These messages are accessed by key, not by index: so they may be
// reordered, but they should not be renamed.
fallback_messages:table {
notfound:string { "(no message found)" }
overflow:string { "(message too long)" }
}
// Message list for libltfs.
// Notes:
// - Message IDs less than 10000 are not officially supported. A few are listed here
// for legacy reasons. DO NOT add new ones.
// - Message IDs from 10000 to 10099 are generic messages which may be used outside libltfs.
// - Other messages listed here should not be used outside libltfs.
messages:table {
start_id:int { 9000 }
end_id:int { 19999 }
// Messages with IDs less than 10000. These are here for legacy reasons only.
// DO NOT add new messages with IDs less than 10000.
9001E:string { "Failed to parse command line options" }
9006E:string { "Cannot load resource \"fallback_messages\" (ures_getByKey: %d)" }
9008E:string { "Cannot open output converter (ucnv_open: %d)" }
9010E:string { "Invalid option \'%s\'" }
9011E:string { "Logging initialization failed" }
9012E:string { "Cannot specify \"--quiet\" with \"--trace\" or \"--fulltrace\"" }
9013E:string { "Cannot specify \"--quiet\" with \"--trace\" or \"--fulltrace\"" }
9014E:string { "Cannot create work directory \'%s\': %s" }
9015W:string { "Setting the locale to 'en_US.UTF-8'. If this setting is wrong, set the LANG environment variable before starting %s." }
9016E:string { "Cannot set the LANG environment variable" }
// Generic messages (IDs 10000 through 10099).
// These may be used in multiple components.
10000E:string { "Failed to initialize libltfs (%d)" }
10001E:string { "Memory allocation failed (%s)" }
10002E:string { "Cannot initialize mutex (%d)" }
10003E:string { "Cannot initialize condition variable (%d)" }
10004E:string { "Cannot open device \'%s\'" }
10005E:string { "Null argument (%s) to %s" }
10006W:string { "Null argument (%s) to %s" }
10007E:string { "Not yet implemented (%s)" }
10008E:string { "Failed to load the configuration file (%d)" }
10009E:string { "No driver plug-in specified and no default found" }
//unused 10010E:string { "Cannot initialize plugin: failed to load messages (%d)" }
//unused 10011E:string { "Failed to load message data for %s" }
10012E:string { "Failed to register messages with libltfs (%d)" }
10013E:string { "Failed to set up signal handler" }
10014E:string { "Failed to clean up signal handler" }
//unused 10015E:string { "Failed to get shared memory (%d)" }
//unused 10016E:string { "Failed to attach shared memory (%d)" }
//unused 10017E:string { "Failed to set mutex attribute as shared (%d)" }
10018E:string { "No key manager interface plug-in specified and no default found (%s, %d, %d)" }
10019E:string { "Error on runcommand (%s, %d, %d)" }
10020E:string { "Error on %s: %s (%d, %d)" }
11000E:string { "Cannot instantiate LTFS volume: failed to allocate device data" }
11001E:string { "Cannot instantiate LTFS volume: failed to allocate label data" }
11002E:string { "Cannot instantiate LTFS volume: failed to allocate index data" }
11003E:string { "Cannot retrieve device capacity data (%d)" }
11004E:string { "Cannot take the device lock (%s)" }
11005I:string { "Mounting the volume" }
11006E:string { "Cannot read volume: failed to load the tape" }
11007D:string { "Tape is loaded" }
11008D:string { "Reading partition labels" }
11009E:string { "Cannot read volume: failed to read partition labels." }
11010E:string { "Cannot read volume: failed to set medium compression." }
11011E:string { "Cannot read volume: block size is %lu, but the device only supports a block size of %u" }
11012D:string { "Loading the tape" }
11013D:string { "Partition labels are valid" }
11014D:string { "Reading MAM parameters" }
11015W:string { "VCR MAM parameter is not usable. Mounting will take longer." }
11016W:string { "The index partition MAM parameter is not usable. Mounting will take longer." }
11017W:string { "The data partition MAM parameter is not usable. Mounting will take longer." }
11018D:string { "Done reading MAM parameters" }
11019D:string { "Checking volume consistency" }
11020E:string { "Cannot mount volume: seek to index failed on the data partition" }
11021E:string { "Cannot mount volume: read index failed on the data partition" }
11022I:string { "Restoring volume consistency by writing an index to the index partition" }
11023E:string { "Cannot mount volume: seek to index failed on the index partition" }
11024E:string { "Cannot mount volume: read index failed on the index partition" }
11025D:string { "Volume is consistent" }
11026I:string { "Performing a full medium consistency check" }
11027E:string { "Cannot mount volume: medium consistency check failed" }
11028D:string { "Consistency check finished" }
11029E:string { "Cannot mount volume: failed to save the append position for the index partition." }
//unused 11030E:string { "Cannot release the device lock (%s)" }
//11031D:string { "Volume mounted successfully" }
11032D:string { "Unmounting the volume" }
11033E:string { "Cannot unmount: failed to write an index" }
11034I:string { "Volume unmounted successfully" }
//unused 11035D:string { "Medium is write protected" }
//unused 11036D:string { "Medium is writeable" }
//unused 11037E:string { "Cannot get attributes: failed to format the path (%d)" }
//unused 11038E:string { "Cannot get attributes: path lookup failed (%d)" }
11039E:string { "Cannot open file: failed to format the path (%d)" }
11040E:string { "Cannot open file: path lookup failed (%d)" }
//unused 11041E:string { "Cannot set times: failed to format the path (%d)" }
//unused 11042E:string { "Cannot set times: path lookup failed (%d)" }
//unused 11043E:string { "Cannot set read-only flag: failed to format the path (%d)" }
//unused 11044E:string { "Cannot set read-only flag: path lookup failed (%d)" }
11045E:string { "Cannot set times: device is not ready" }
11046E:string { "Cannot set read-only flag: device is not ready" }
11047E:string { "Cannot create: device is not ready" }
11048E:string { "Cannot create: failed to format the path (%d)" }
11049E:string { "Cannot create: path lookup failed (%d)" }
11050E:string { "Cannot unlink: device is not ready" }
11051E:string { "Cannot unlink: failed to format the path (%d)" }
11052E:string { "Cannot unlink: path lookup failed (%d)" }
11053E:string { "Cannot rename: device is not ready" }
11054E:string { "Cannot rename: failed to format the source path (%d)" }
11055E:string { "Cannot rename: failed to format the destination path (%d)" }
11056E:string { "Cannot rename: path lookup failed for source (%d)" }
11057E:string { "Cannot rename: path lookup failed for destination (%d)" }
//unused 11058E:string { "Cannot rename: unable to overwrite destination (%d)" }
11059E:string { "Cannot truncate: length must not be negative" }
//unused 11060E:string { "Cannot truncate: failed to format the path (%d)" }
//unused 11061E:string { "Cannot truncate: path lookup failed (%d)" }
11062E:string { "Cannot truncate: device is not ready" }
//unused 11063E:string { "Cannot truncate: failed to write an index while switching partitions (%d)" }
//unused 11064E:string { "Cannot truncate: failed to write zero bytes to the medium (%d)" }
//unused 11065E:string { "Cannot truncate: failed to update the extent list (%d)" }
//unused 11066E:string { "Cannot save extent: offset is greater than the file size" }
11067E:string { "Cannot write blocks: invalid partition identifier" }
11068E:string { "Cannot write blocks: multiple repetitions specified with an irregular buffer size" }
11069E:string { "Cannot write blocks: failed to write an index while switching partitions (%d)" }
11070E:string { "Cannot write blocks: locate append position failed on partition %c" }
11071E:string { "Cannot write blocks: failed to determine medium position (%d)" }
11072E:string { "Cannot write blocks: failed to write to the medium (%d)" }
//unused 11073E:string { "Cannot write blocks: write to medium returned %zd, expected %u" }
//unused 11074E:string { "Cannot write: invalid partition identifier" }
//unused 11075E:string { "Cannot write: failed to write an index while switching partitions (%d)" }
//unused 11076E:string { "Cannot write: failed to extend the file with zeros (%d)" }
11077E:string { "Cannot write: failed to write blocks to the medium (%d)" }
//unused 11078E:string { "Cannot write: failed to update extent list (%d)" }
//unused 11079E:string { "Cannot write index to index partition: failed to write index to data partition" }
11080E:string { "Cannot write index: failed to locate append position on partition %c (%d)" }
11081E:string { "Cannot write index: failed to determine medium position (%d)" }
11082E:string { "Cannot write index: failed to write file mark (%d)" }
11083E:string { "Cannot write index: failed to generate and write XML data (%d). The medium might be in an inconsistent state; unmount and run ltfsck." }
11084E:string { "Cannot write index: failed to write a trailing file mark (%d). The medium is in an inconsistent state; unmount and run ltfsck." }
11085E:string { "Cannot read: failed to determine medium position (%d)" }
11086E:string { "Cannot read: failed to locate (%d) to partition %c, record %llu" }
11087E:string { "Cannot read: expected %u bytes from cache, but received %lu bytes" }
11088E:string { "Cannot read: failed to get a block from the medium (%d)" }
11089E:string { "Cannot read: expected %u bytes from the medium, but received %u bytes" }
11090W:string { "Data partition identifier requested on an uninitialized volume" }
11091W:string { "Index partition identifier requested on an uninitialized volume" }
//unused 11092I:string { "Loading the medium" }
11093E:string { "Cannot format: failed to load the medium (%d)" }
//unused 11094I:string { "Medium is loaded" }
11095E:string { "Cannot format: the medium is write protected" }
11096E:string { "Cannot format: requested block size is %lu bytes, but the device only supports %u" }
11097I:string { "Partitioning the medium" }
11098E:string { "Cannot format: failed to partition the medium (%d)" }
11099E:string { "Cannot format: failed to set the medium compression (%d)" }
11100I:string { "Writing label to partition %c" }
11101E:string { "Cannot format: failed to locate (%d) to partition %u, block 0" }
11102E:string { "Cannot format: failed to write ANSI label (%d) on partition %u" }
//unused 11103E:string { "Cannot format: failed to write ANSI label on partition %u (expected %u, received %zd)" }
11104E:string { "Cannot format: failed to write file mark after ANSI label (%d) on partition %u" }
11105E:string { "Cannot format: failed to generate LTFS label" }
11106E:string { "Cannot format: failed to write XML label (%d) on partition %u" }
//unused 11107E:string { "Cannot format: failed to write XML label on partition %u (expected %u, received %zd)" }
11108E:string { "Cannot format: failed to write file mark after XML label (%d) on partition %u" }
//unused 11109E:string { "Cannot format: failed to generate empty Index data structure (%d)" }
11110E:string { "Cannot get current time (%d)" }
11111E:string { "Base64 decoder: empty input" }
11112E:string { "Base64 decoder: invalid character in the input" }
11113E:string { "Base64 decoder: input length is not a multiple of 4" }
11114E:string { "Cache manager: failed to initialize the pool" }
11115W:string { "Cache manager: failed to fully expand the pool" }
11116E:string { "Cache manager: failed to grow the pool" }
11117E:string { "Cannot set extended attribute: device is not ready" }
11118E:string { "Cannot set extended attribute: failed to format the path (%d)" }
11119E:string { "Cannot set extended attribute: failed to format the name (%d)" }
11120E:string { "Cannot set extended attribute: failed to validate the name (%d)" }
11121E:string { "Cannot set extended attribute: failed to look up the path (%d)" }
11122E:string { "Cannot set extended attribute: failed to look up the xattr (%d)" }
11123E:string { "Cannot get extended attribute: NULL value with non-zero size" }
11124E:string { "Cannot get extended attribute: failed to format the path (%d)" }
11125E:string { "Cannot get extended attribute: failed to format the name (%d)" }
11126E:string { "Cannot get extended attribute: failed to validate the name (%d)" }
11127E:string { "Cannot get extended attribute: failed to look up the path (%d)" }
11128E:string { "Cannot get extended attribute: failed to look for virtual xattrs (%d)" }
11129E:string { "Cannot get extended attribute: failed to look up the xattr (%d)" }
11130E:string { "Cannot list extended attributes: NULL output buffer with a non-zero size" }
11131E:string { "Cannot list extended attributes: failed to format the path (%d)" }
11132E:string { "Cannot list extended attributes: failed to look up the path (%d)" }
11133E:string { "Cannot list extended attributes: failed to list real xattrs (%d)" }
//unused 11134E
11135E:string { "Cannot remove extended attribute: device is not ready" }
11136E:string { "Cannot remove extended attribute: failed to format the path (%d)" }
11137E:string { "Cannot remove extended attribute: failed to format the name (%d)" }
11138E:string { "Cannot remove extended attribute: failed to validate the name (%d)" }
11139E:string { "Cannot remove extended attribute: failed to look up the path (%d)" }
11140E:string { "Cannot remove extended attribute: failed to look up the xattr (%d)" }
11141E:string { "Cannot list physical xattrs: failed to generate namespace prefix (%d)" }
11142E:string { "Cannot list physical xattrs: failed to convert key to system locale (%d)" }
//unused 11143E
//unused 11144E:string { "Cannot list physical xattrs: failed to convert key to system locale (%d)" }
11145E:string { "Cannot get attribute %s: failed to generate the time string" }
11146E:string { "Invalid index criteria option \'%s\'" }
11147E:string { "Duplicate index criteria option \'%s\'" }
11148E:string { "More than one non-numeric character follows the size criterion" }
11149E:string { "Invalid size criterion multiplier \'%c\'" }
11150E:string { "Size= rule must contain a valid size" }
11151E:string { "Size= rule must contain a digit" }
11152E:string { "Cannot parse index criteria: rules are invalid" }
11153E:string { "Cannot parse index criteria: failed to parse name rule (%d)" }
11154E:string { "Cannot parse index criteria: error while seeking name rule" }
11155E:string { "Cannot parse index criteria: failed to parse size rule (%d)" }
11156E:string { "Cannot parse index criteria: error while seeking size rule" }
11157E:string { "Cannot specify a name rule without a size rule" }
11158E:string { "Cannot match name: failed to initialize glob cache (%d)" }
11159E:string { "Cannot match name: failed to prepare for caseless matching (%d)" }
11160E:string { "Cannot prepare glob cache: failed to prepare name for caseless matching (%d)" }
11161E:string { "Cannot match name: match function failed (%d)" }
11162E:string { "Cannot perform matching: failed to open text boundary iterator for criteria (%d)" }
11163E:string { "Cannot perform matching: failed to open text boundary iterator for filename (%d)" }
11164E:string { "Failed to push file name onto a null stack pointer" }
11165E:string { "Failed to pop a file name from a null stack pointer" }
11166E:string { "Cannot allocate index data: failed to initialize mutex (%d)" }
11167E:string { "Cannot create file or directory: failed to allocate dentry" }
11168E:string { "Cannot allocate index data: failed to allocate root dentry" }
11169E:string { "Cannot read labels: failed to allocate label data (%d)" }
11170E:string { "Failed to read label (%d) from partition 0" }
11171E:string { "Failed to read label (%d) from partition 1" }
11172E:string { "Cannot verify labels: comparison failed (%d)" }
11173E:string { "Cannot read label (%d): failed to seek to block 0 (partition %lu)" }
11174E:string { "Cannot read ANSI label: read failed (%d)" }
11175E:string { "Cannot read ANSI label: expected 80 bytes, but received %d" }
11176E:string { "ANSI label indicates this is not an LTFS volume" }
//unused 11177E:string { "Cannot read LTFS label: failed to space forward 1 file mark (%d)" }
11178E:string { "Cannot read LTFS label: read failed (%d)" }
11179E:string { "Cannot read LTFS label: parsing failed (%d)" }
11180E:string { "Cannot read partition label: failed to space forward over the trailing file mark (%d)" }
11181E:string { "Cannot read partition label: failed to find the trailing file mark" }
11182E:string { "Comparing labels: tape bar code number mismatch" }
11183E:string { "Comparing labels: volume UUID mismatch" }
11184E:string { "Comparing labels: format time mismatch" }
11185E:string { "Comparing labels: block size mismatch" }
11186E:string { "Comparing labels: compression mismatch" }
11187E:string { "Comparing labels: partition IDs must be lowercase ASCII characters" }
11188E:string { "Comparing labels: partition IDs must be distinct" }
11189E:string { "Comparing labels: partition map mismatch" }
11190E:string { "Comparing labels: unknown partition ID" }
11191E:string { "Comparing labels: partitions have the same ID \'%c\'" }
11192E:string { "Comparing labels: invalid bar code number" }
11193E:string { "Cannot read index: failed to determined medium position (%d)" }
11194W:string { "Cannot read index: failed to read and parse XML data (%d)" }
11195W:string { "This index belongs to a different volume" }
11196W:string { "Cannot read index: self-pointer mismatch" }
11197E:string { "Cannot read index: back pointer is corrupt" }
11198E:string { "Cannot read index: failed to space forward 1 file mark (%d)" }
11199E:string { "Cannot locate index: failed to locate to EOD (%d)" }
11200E:string { "Cannot locate index: failed to determined medium position (%d)" }
11201E:string { "Cannot locate index: failed to space back 1 file mark (%d)" }
11202E:string { "Cannot locate index: failed to space forward 1 file mark (%d)" }
11203E:string { "Cannot locate index: failed to space back 2 file marks (%d)" }
11204D:string { "No index found. Space back and try again" }
11205E:string { "Index partition contains a back pointer, but no index found on the data partition" }
11206E:string { "Index partition back pointer is invalid" }
11207E:string { "Missing required index partition back pointer" }
//unused 11208E:string { "Back pointer chain is broken" }
11209E:string { "Cannot create lost and found directory: failed to allocate directory data" }
11210W:string { "Ignoring unexpected file mark in partition %lu" }
11211E:string { "Cannot populate lost and found directory: failed to allocate file data" }
11212E:string { "Cannot create lost and found directory: seek failed (%d)" }
11213E:string { "Cannot check medium: seek index failed on the data partition (%d)" }
11214E:string { "Cannot check medium: seek index failed on the index partition (%d)" }
11215E:string { "Cannot check medium: failed to locate to EOD on the data partition (%d)" }
11216E:string { "Cannot check medium: failed to locate to EOD on the index partition (%d)" }
11217E:string { "Cannot check medium: failed to write a file mark to the data partition (%d)" }
11218E:string { "Cannot check medium: failed to write a file mark to the index partition (%d)" }
11219E:string { "Cannot check medium: pointer verification failed (%d)" }
11220E:string { "Medium check failed: extra blocks detected. Run ltfsck." }
11221E:string { "Medium check failed: detected invalid extents" }
11222E:string { "Cannot check medium: failed to save index partition append position (%d)" }
11223I:string { "Generating lost and found directory" }
11224E:string { "Cannot restore medium consistency: failed to generate lost and found (%d)" }
11225E:string { "Cannot check medium: failed to allocate index data (%d)" }
11226I:string { "Erasing bad blocks from the index partition" }
11227I:string { "Erasing bad blocks from the data partition" }
11228E:string { "Cannot restore medium consistency: failed to save data partition append position (%d)" }
11229E:string { "Cannot restore medium consistency: failed to save index partition append position (%d)" }
11230I:string { "Writing index(es) to restore consistency" }
11231E:string { "A simple fix is possible to restore the consistency of the tape." }
11232E:string { "Rerun the consistency check with simple fixes enabled." }
11233I:string { "Updating MAM coherency data" }
11234E:string { "Cannot validate extended attribute value: code point iteration failed" }
11235E:string { "Cannot validate name: failed to iterate code point" }
11236E:string { "Cannot fold string case: failed to get output buffer size (%d)" }
11237E:string { "Cannot fold string case: failed to fill output buffer (%d)" }
11238E:string { "Cannot apply NFC: failed to get output buffer size (%d)" }
11239E:string { "Cannot apply NFC: failed to fill output buffer (%d)" }
11240E:string { "Cannot apply NFD: failed to get output buffer size (%d)" }
11241E:string { "Cannot apply NFD: failed to fill output buffer (%d)" }
11242E:string { "Cannot convert UTF-8 to UTF-16: failed to get output buffer size (%d)" }
11243E:string { "Cannot convert UTF-8 to UTF-16: failed to fill output buffer (%d)" }
11244E:string { "Cannot convert UTF-16 to UTF-8: failed to get output buffer size (%d)" }
11245E:string { "Cannot convert UTF-16 to UTF-8: failed to fill output buffer (%d)" }
11246E:string { "Cannot convert system locale to UTF-16: failed to open converter (%d)" }
11247E:string { "Cannot convert system locale to UTF-16: failed to set up converter (%d)" }
11248E:string { "Cannot convert system locale to UTF-16: failed to get output buffer size (%d) for '%s'" }
11249E:string { "Cannot convert system locale to UTF-16: failed to fill output buffer (%d) for '%s'" }
11250E:string { "Cannot convert UTF-8 to system locale: failed to get output buffer size (%d)" }
11251E:string { "Cannot convert UTF-8 to system locale: failed to fill output buffer (%d)" }
11252D:string { "libltfs write to \'%s\': offset = %lld, count = %u" }
11253E:string { "No index found in the medium" }
11254D:string { "libltfs read from \'%s\': offset = %lld, count = %u" }
11255I:string { "Appending a file mark to the data partition" }
11256I:string { "Appending a file mark to the index partition" }
11257I:string { "No index found in the index partition" }
11258I:string { "No index found in the data partition" }
11259I:string { "Cannot move directory: Directory move is prohibited because of a MacFUSE bug" }
11260E:string { "Plug-in \'%s\' was not found in the configuration file" }
11261E:string { "Cannot load plug-in: %s" }
11262E:string { "Cannot unload plug-in: %s" }
11263E:string { "Cannot resolve plug-in operation interface: %s" }
11264E:string { "Cannot get plug-in operations" }
11265E:string { "Cannot parse configuration file: \'default\' directive must be followed by a plug-in type and name" }
//unused 11266E:string { "Cannot parse configuration file: unknown plugin type \'%s\' in \'default\' directive" }
11267E:string { "Cannot get library path: unknown plug-in type \'%s\' or plug-in name \'%s\'" }
11268E:string { "Cannot open configuration file \'%s\' (%d)" }
11269E:string { "Cannot parse configuration file: line too long" }
11270E:string { "Cannot parse configuration file: \'-default\' directive must be followed by a plug-in type" }
11271E:string { "Cannot parse configuration file: unknown plug-in type \'%s\' in \'-default\' directive" }
11272E:string { "Cannot parse configuration file: \'option\' directive must be followed by an option type and LTFS mount option" }
11273E:string { "Cannot parse configuration file: \'%s\' directive must be followed by a valid %s name" }
//unused 11274E:string { "Cannot define a scheduler plug-in using the reserved name \'none\'" }
11275E:string { "Cannot parse configuration file: \'plug-in\' directive must be followed by a plug-in type, name, and library path" }
11276W:string { "Ignoring unknown configuration directive \'%s\'" }
11277W:string { "Cannot find the %s plug-in \'%s\' at \'%s\'" }
11278I:string { "Writing index to partition %c" }
11279E:string { "Cannot write index to partition %c (%d)" }
11280E:string { "Unknown default %s \'%s\'" }
11281E:string { "Cannot load messages: failed to get message table (%d)" }
11282E:string { "Cannot load messages: failed to determine first message ID (ures_getByKey: %d)" }
11283E:string { "Cannot load messages: failed to determine first message ID (ures_getInt: %d)" }
11284E:string { "Cannot resolve plug-in message bundle interface: %s" }
11285E:string { "Cannot load %s plug-in \'%s\': failed to load the message bundle (%d)" }
11286E:string { "Cannot load messages: failed to open resource bundle (%d)" }
11287E:string { "Cannot load messages: failed to register message data (%d)" }
11288W:string { "No end ID found for this message bundle: assigning 1000 message IDs" }
11289I:string { "Ejecting cartridge" }
11290E:string { "Failed to eject the cartridge (%s)" }
11291I:string { "Eject successful" }
//unused 11292E
11293E:string { "Cannot load messages for libltfs (%d)" }
//unused 11294E
11295E:string { "Cannot read partition label: check for file mark after the ANSI label failed (%d)" }
11296E:string { "Cannot read partition label: failed to find a file mark after the ANSI label" }
11297E:string { "Cannot read index: failed to allocate index structure (%d)" }
11298E:string { "Cannot read volume: unsupported medium" }
11299E:string { "Cannot format: unsupported medium" }
//unused 11300E:string { "Cannot rename: failed check of target file existence (%d)" }
11301E:string { "Unable to read index: cannot duplicate index partition criteria" }
11302E:string { "Data placement rule contains invalid character(s): '%s'" }
11303E:string { "Data placement rule is too long: '%s'" }
11304E:string { "Failed to validate data placement rule (%d)" }
11305E:string { "Empty data placement rule in '%s'" }
11306E:string { "Cannot get read-only state of partition: invalid partition identifier" }
11307W:string { "All unique IDs for volume %s are used. No new files or directories can be created for the volume." }
11308E:string { "Commit message must be 65536 bytes or less" }
11309E:string { "Cannot parse configuration file: \'-plugin\' directive must be followed by a plug-in type and name" }
11310W:string { "Cannot set the traversal mode: failed to get a valid selection %d" }
11311E:string { "Cannot format: failed to reset capacity proportion (%d)" }
11312D:string { "Revalidating the medium" }
11313E:string { "Medium revalidation failed (%d). Unmount the tape before continuing." }
11314E:string { "Cannot format: failed to get data key (%d)" }
11315E:string { "Cannot format: failed to set data key (%d)" }
11316E:string { "Failed to print help message of key manager interface backend" }
11317E:string { "Cannot print help message: unknown type: '%s'" }
11318W:string { "Unknown log level (%d), forced the level to (%d)" }
11319E:string { "Cannot add the key to hash table at %s (%d)" }
11320E:string { "Cannot search the key from hash table at %s (%d)" }
11321E:string { "Symbolic link might be replaced by data file. Use ltfsck for recovery" }
11322D:string { "Makeing a symlink '%s' target '%s'" }
11323D:string { "Symlink EA prefix valuse is (%s)" }
11324D:string { "Path changed from '%s' to '%s'" }
11325E:string { "Cannot set extended attribute: failed to flush (%d)" }
11326E:string { "Cannot write index: failed to flush buffered data (%d)" }
11327E:string { "Failed to seek EOD: seek invalid partition (%d, %d)" }
11328E:string { "Failed to seek index: seek invalid partition (%c, %c)" }
11329E:string { "Failed to recover tape: cannot write the index to an invalid position in the data partition (%lld, %lld, %d)" }
11330E:string { "Cannot format: incompatible medium" }
// Message IDs 11400 through 11800 are allocated to the libchanger.
// DO NOT add messages with those IDs to this file.
//unused 11997E:string { "Comparing labels: failed to match versions" }
11998W:string { "Unable to delete dentry '%s': it still has outstanding references" }
11999E:string { "Cannot load the medium: failed to get capacity data (%d)" }
//unused 12000E:string { "Cannot open device backend library directory" }
//unused 12001E:string { "Failed to open device backend library: %s" }
//unused 12002E:string { "Failed to get device operations: %s" }
//unused 12003E:string { "Device backend returned an empty set of operations" }
12004E:string { "Device backend does not implement all required methods" }
//unused 12005E:string { "Failed to inquiry tape page: backend call failed (%d)" }
//unused 12006E:string { "Cannot allocate device data: failed to set mutex attributes (%d)" }
//unused 12007E:string { "Cannot allocate device data: failed to set mutex type (%d)" }
12008E:string { "Cannot allocate device data: failed to initialize mutex (%d)" }
//unused 12009E:string { "Cannot allocate device data: failed to free mutex attributes (%d)" }
12010E:string { "Failed to grab the device lock (%s)" }
//unused 12011E:string { "Failed to release the device lock (%s)" }
12012E:string { "Cannot open device: failed backend open call" }
12013E:string { "Cannot inquire the tape device: backend call failed (%d)" }
12014E:string { "Cannot open device: failed to reserve the device (%d)" }
//unused 12015D:string { "Attempting to load the medium" }
12016E:string { "No medium present" }
12017E:string { "Cannot load the medium (%d)" }
12018E:string { "Cannot load the medium: failed to lock the medium in the drive (%d)" }
12019E:string { "Cannot load the medium: failed to determine medium position (%d)" }
12020E:string { "Cannot load the medium: failed to set device defaults (%d)" }
12021E:string { "Cannot load the medium: failed to get device parameters (%d)" }
12022I:string { "Unloading medium" }
12023D:string { "Reserving device" }
12024E:string { "Cannot reserve device: backend call failed (%d)" }
12025D:string { "Releasing device" }
12026D:string { "Locking medium in the drive" }
12027E:string { "Cannot lock medium in the drive: backend call failed (%d)" }
12028D:string { "Unlocking medium" }
12029E:string { "Device is not ready (%d)" }
12030E:string { "Cannot get capacity data: backend call failed (%d)" }
12031E:string { "Cannot set compression: backend call failed (%d)" }
12032E:string { "Cannot set append position: invalid partition %lu" }
12033E:string { "Cannot seek to append position: seek failed (%d)" }
12034E:string { "Cannot get maximum device blocksize: backend call failed (%d)" }
12035E:string { "Cannot rewind medium: backend call failed (%d)" }
12036E:string { "Seek failed: final position is not what was requested" }
12037E:string { "Cannot seek: backend call failed (%d)" }
12038E:string { "Cannot seek EOD: invalid partition %lu" }
12039E:string { "Cannot seek EOD: backend locate call failed (%d)" }
12040E:string { "Cannot parse backend options: backend call failed (%d)" }
12041E:string { "Cannot space file marks: backend call failed (%d)" }
12042E:string { "Cannot write block: must open the device first" }
12043E:string { "Cannot write block: device is read-only" }
12044E:string { "Cannot write a %u-byte block: maximum block size is %lu" }
12045E:string { "Cannot write block: backend call failed (%d). Dropping to read-only mode." }
12046E:string { "Cannot write file marks: must open the device first" }
12047E:string { "Cannot write file marks: backend call failed (%d). Dropping to read-only mode." }
12048E:string { "Cannot read: must open the device first" }
12049E:string { "Cannot read: backend call failed (%d)" }
12050E:string { "Cannot format medium: locate to partition 0, block 0 failed (%d)" }
12051E:string { "Cannot format medium: Mode Sense for Medium Partition failed (%d)" }
//unused 12052E:string { "Cannot format medium: Mode Select for Medium Partition failed (%d)" }
12053E:string { "Cannot format medium: backend call failed (%d)" }
12054E:string { "Cannot unformat medium: locate to partition 0, block 0 failed (%d)" }
12055E:string { "Cannot unformat medium: backend call failed (%d)" }
12056W:string { "Cannot get Volume Change Reference parameter: read attribute failed (%d)" }
12057W:string { "Cannot get VCI data: read attribute failed (%d)" }
12058W:string { "Cannot get VCI data: unexpected ID 0x%04x" }
12059W:string { "Cannot get VCI data: unexpected length 0x%04x" }
12060W:string { "Cannot get VCI data: unexpected VCR length 0x%04x" }
12061W:string { "Cannot get VCI data: unexpected Application Specific Info length %d" }
12062W:string { "Cannot get VCI data: unexpected Application Specific Info signature" }
12063W:string { "Cannot set VCI data: backend call failed (%d)" }
12064E:string { "Cannot write block: no space left on device" }
// unused 12065E:string { "Cannot write file marks: error during retry on out of space condition (%d). Dropping to read-only mode." }
// unused 12066E:string { "Cannot write block: error during retry on out of space condition (%d). Dropping to read-only mode." }
// Message IDs 12067 through 12499 are allocated to IBM tape device plugins.
// DO NOT add messages with those IDs to this file.
//unused 13000E:string { "Failed to open I/O scheduler backend: %s" }
//unused 13001E:string { "Failed to get scheduler operations: %s" }
//unused 13002E:string { "Scheduler backend returned an empty set of operations" }
13003E:string { "Scheduler backend does not implement all required methods" }
13004E:string { "Dentry cache backend does not implement all required methods" }
// Message IDs 13005 through 13499 are allocated to IBM I/O scheduler plugins.
// DO NOT add messages with those IDs to this file.
// Message IDs 13500-13999 are allocated to dentry cache plugins.
// DO NOT add messages with those IDs to this file.
// Message IDs 14000-14499 are reserved for the ltfs executable.
// DO NOT add messages with those IDs to this file.
// Message IDs 14500-14999 are reserved for the admin_channel interface.
// DO NOT add messages with those IDs to this file.
// Message IDs 15000-15499 are reserved for the mkltfs executable.
// DO NOT add messages with those IDs to this file.
// Message IDs 15500-15999 are reserved for the cropto plugins.
// DO NOT add messages with those IDs to this file.
// Message IDs 16000-16499 are reserved for the ltfsck executable.
// DO NOT add messages with those IDs to this file.
// Message IDs 16500-16999 are reserved for the cartrige repository plugins.
// DO NOT add messages with those IDs to this file.
17000E:string { "XML parser: not all required tags found in \'%s\'" }
17001E:string { "XML parser: duplicate required tag \'%s\'" }
17002E:string { "XML parser: duplicate optional tag \'%s\'" }
17003E:string { "XML parser: cannot determine whether tag is empty" }
17004E:string { "XML parser: tag \'%s\' must not be empty" }
17005E:string { "XML parser: extra content in tag \'%s\'" }
17006W:string { "XML parser: ignoring unrecognized tag \'%s\' inside \'%s\'" }
17007E:string { "Cannot instantiate an LTFS label parser for file \'%s\'" }
17008E:string { "Cannot parse XML label from file \'%s\'" }
17009E:string { "Cannot instantiate an LTFS label parser for a memory buffer" }
17010E:string { "Cannot parse XML label from memory" }
17011E:string { "Cannot instantiate an index parser for file \'%s\'" }
17012E:string { "Cannot parse index from file \'%s\'" }
17013E:string { "Cannot parse index: failed to determine medium position (%d)" }
17014E:string { "Cannot parse index: failed to create XML parser input buffer" }
17015E:string { "Cannot parse index: failed to create XML reader" }
17016E:string { "Cannot parse index direct from medium" }
17017E:string { "XML parser: unexpected top-level tag \'%s\'" }
17018E:string { "XML parser: unsupported encoding \'%s\'" }
17019E:string { "XML parser: no schema version found" }
17020E:string { "XML parser: invalid schema version \'%s\'" }
17021E:string { "XML parser: unsupported %s version %s" }
17022E:string { "XML parser: invalid block size %s" }
17023E:string { "XML parser: invalid generation number %s" }
17024E:string { "XML parser: invalid size criterion %s" }
17025E:string { "XML parser: failed to normalize value (%d)" }
17026E:string { "XML parser: file size is shorter than extent list" }
17027E:string { "XML parser: unsupported extended attribute type \'%s\'" }
17028E:string { "XML parser: base64 decoding failed" }
17029E:string { "XML parser: invalid UUID %s" }
17030E:string { "XML parser: failed to normalize name \'%s\'" }
17031E:string { "XML parser: invalid %s name \'%s\'" }
17032E:string { "XML parser: compression must be \'true\' (1) or \'false\' (0)" }
17033E:string { "XML parser: invalid partition \'%s\'" }
17034E:string { "XML parser: invalid time \'%s\' (%d)" }
17035E:string { "XML parser: expected a text node" }
17036E:string { "XML parser: expected a text node (received type %d)" }
17037E:string { "XML parser: failed to read from XML stream" }
17038E:string { "XML parser: unexpected end of XML stream" }
17039E:string { "XML parser: failed to read a block from the medium (%d)" }
17040E:string { "XML parser: failed to space back 1 file mark" }
17041E:string { "XML parser: read failed while looking for a file mark (%d)" }
17042E:string { "XML writer: error creating tag (%s)" }
17043E:string { "Cannot instantiate an LTFS label writer to memory" }
17044E:string { "Label writer: failed to start the document (%d)" }
17045E:string { "Label writer: failed to format time" }
17046E:string { "Label writer: failed to close the document (%d)" }
17047E:string { "Cannot generate LTFS label: failed to allocate buffer" }
17048E:string { "Cannot generate index data in memory: failed to allocate buffer" }
17049E:string { "Cannot instantiate index writer to memory" }
17050E:string { "Cannot generate index data in memory" }
17051E:string { "Cannot instantiate an index writer to file \'%s\'" }
17052E:string { "Cannot generate index data (%d) in file \'%s\'" }
17053E:string { "Cannot generate index data direct to tape: failed to create output buffer" }
17054E:string { "Cannot instantiate an index writer direct to tape" }
17055E:string { "Cannot generate index data direct to tape (%d)" }
17056E:string { "XML writer: cannot format time (gmtime failed)" }
17057E:string { "Index writer: failed to start the document (%d)" }
17058E:string { "Index writer: failed to close the document (%d)" }
17059E:string { "Index writer: cannot validate extended attribute value (%d)" }
17060E:string { "XML writer: failed to write a block to the medium (%d)" }
17061E:string { "XML writer: failed to flush cached data to the medium (%d)" }
17062E:string { "XML writer: tried to write a directory as a file" }
17063W:string { "Periodic sync thread failed to flush file data to the medium. Data might be lost (%s)." }
17064D:string { "Sync is done. (%s)" }
17065D:string { "Periodic sync thread initialized" }
17066D:string { "Periodic sync thread uninitialized" }
17067D:string { "Sync is kicked. (%s)" }
17068D:string { "Sync index" }
17069E:string { "Failed to sync index" }
//unused 17070I:string { "Tape is not loaded" }
17071I:string { "Unpartitioning the medium" }
17072E:string { "Cannot unformat: failed to unpartition the medium (%d)" }
17073I:string { "Tape Device list:" }
17074I:string { "Device Name = %s, Vender ID = %s, Product ID = %s, Serial Number = %s, Product Name = %s" }
17075E:string { "Traverse(%c): cannot read index from %d (%c)" }
17076E:string { "Traverse(%c): cannot locate to the next index position (%c)" }
17077I:string { "Traverse(%c): find target generation %d (%c)" }
17078D:string { "Traverse(%c): cannot find target generation %d (%c)" }
17079E:string { "Traverse: cannot find target generation %d" }
17080D:string { "Traverse(%c): find generation %d (%c)" }
17081E:string { "Traverse(%c): callback function failed %d (%c)" }
17082E:string { "Traverse(%c): cannot locate to the first index position (%c)" }
17083E:string { "Traverse(%c): cannot locate to the last index position (%c)" }
17084E:string { "XML parser: failed to read extent list from file (%d)" }
17085I:string { "Plugin: Loading \"%s\" %s" }
17086W:string { "Cannot get kernel version" }
17087I:string { "Kernel version: %s" }
17088W:string { "Cannot get distribution information" }
17089I:string { "Distribution: %s" }
17090W:string { "sysctl system call failed (%s)" }
17091E:string { "Cannot save tag: libxml2 could not return text for this node" }
17092E:string { "Index writer: failed to write opaque tags (%s)" }
17093E:string { "XML parser: failed to skip tag" }
17094E:string { "XML parser: comment field is longer than 64 KiB" }
17095W:string { "The index read from the tape uses an old version of the LTFS format. If this tape is modified, the index upgrades format version to %s from %d.%d.%d." }
17096W:string { "The index read from the tape uses a newer version of the LTFS format than the one supported by this software. Some functionality might be unavailable. If this tape is modified, the index downgrades format version to %s from %d.%d.%d" }
17097E:string { "XML parser: two extents overlap" }
17098E:string { "XML parser: invalid name pattern '%s\'" }
17099E:string { "Failed to spawn the periodic sync thread (%d)" }
17100E:string { "XML parser: UID on the root directory must be 1" }
17101E:string { "XML parser: UID 1 is reserved for the root directory" }
17102E:string { "Cannot set PEWS: Mode Sense for Device Configuration Extension failed (%d)" }
17103E:string { "Cannot set PEWS: Mode Select for Device Configuration Extension failed (%d)" }
17104E:string { "Cannot get PEWS: Mode Sense for Device Configuration Extension failed (%d)" }
17105E:string { "Cannot load the medium: failed to get programmable early warning size (%d)" }
17106E:string { "XML parser: UID 0 is reserved" }
17107E:string { "Version mismatch of MAM, IP=%d, DP=%d" }
17108E:string { "Cannot find partition id \'%c\'(0x%x)" }
17109E:string { "Failed to detect the final index or the final record" }
17110I:string { "The MAM was written by PGA1 or earlier" }
17111I:string { "The MAM was written by PGA2 or later" }
17112I:string { "Starting EOD recovery (GA/PGA1)" }
17113I:string { "Starting EOD recovery: reading an index from (%llu, %llu)" }
17114I:string { "Seaching the final index in IP" }
17115E:string { "Failed to search the final index in IP" }
17116I:string { "Detecting the final record in DP" }
17117E:string { "Failed to search the final index in DP" }
17118I:string { "Seeking to the final index in %s (%llu, %llu)" }
17119E:string { "Failed to seek to the final index in %s (%d)" }
17120I:string { "Reading the final index in %s (%llu, %llu)" }
17121E:string { "Failed to read the final index in %s (%d)" }
//unused 17122I:string { "Search one more index after current index (%llu, %llu)" }
17123E:string { "Unexpected genaration value (Gen = %d, MAM IP = %d, MAM DP = %d)" }
17124I:string { "Seeking to the final record in %s (%llu, %llu)" }
17125E:string { "Failed to seek to the final record in %s (%d)" }
17126E:string { "Unexpected EOD status (%d, %d)" }
17127I:string { "Detecting the final record to read by hitting read error takes about 20 minutes" }
//unused 17128W:string { "Unexpected EOD detection on the missing EOD cartridge occurred. No action required." }
17129W:string { "Unexpected read error occurred" }
17130I:string { "Expected read error occurred" }
17131I:string { "Recovering EOD at (%llu, %llu) takes about 20 minutes" }
17132E:string { "Failed to get current position" }
17133E:string { "Failed to unload the cartridge" }
17134E:string { "Failed to reload the cartridge" }
17135E:string { "Failed to seek to EOD recovery point" }
17136E:string { "Failed to erase at EOD recovery point" }
17137E:string { "Failed to recover EOD status (%d)" }
17138I:string { "Recovered EOD status successfully (%d)" }
17139I:string { "Starting a deep recovery operation: missing EOD" }
17140E:string { "Tape backend does not support missing EOD detection" }
17141I:string { "Both EODs are detected. A deep recovery operation is unnecessary." }
17142E:string { "Both EODs are missing." }
17143I:string { "EOD of %s(%d) is missing" }
17144E:string { "The MAM of %s is not usable" }
17145W:string { "Tape backend does not support missing EOD detection" }
17146E:string { "EOD of %s(%d) is missing. A deep recovery operation is required." }
17147I:string { "Attempting to mount a cartridge without EOD status check" }
17148E:string { "Use ltfsck with the --deep-recovery option" }
17149E:string { "Cannot erase: backend call failed (%d)" }
//unused 17150I:string { "PEWS field in Device Configuration Extension mode page was changed to disable programmable early warning" }
17151E:string { "Cannot set WRITE MODE: Failed to unload medium (%d)" }
17152E:string { "Cannot set WRITE MODE: Failed to load medium (%s, %d)" }
// unused 17153E:string { "Cannot set WRITE MODE: Invalid mode is specified (%x)" }
17154E:string { "Cannot set WRITE MODE: Mode Sense for Device Configuration Extension failed (%d)" }
17155E:string { "Cannot set WRITE MODE: Mode Select for Device Configuration Extension failed (%d)" }
17156E:string { "Cannot get WRITE MODE: Mode Sense for Device Configuration Extension failed (%d)" }
17157I:string { "Changing the drive setting %s" }
//unused 17158E:string { "Cannot set up tape drive" }
17159I:string { "Process was interruped by user" }
17160I:string { "Maximum device block size is %d" }
17161I:string { "EOD information (%s) is corrupted" }
17162I:string { "Trying a simple recovery that requires several minutes to complete" }
17163E:string { "Cannot reset the capacity proportion: failed to locate partition 0, block 0 (%d)" }
17164E:string { "Cannot reset the capacity proportion: backend call failed (%d)" }
17165I:string { "Resetting the medium's capacity proportion" }
17166D:string { "Coherency Data: %s (%lld, %lld, %lld, %u, %s, %c)" }
17167E:string { "Cannot read volume: failed to get capacity data (%d)" }
17168E:string { "Cannot read volume: medium is not partitioned" }
17169I:string { "Detected EOD on the missing EOD cartridge" }
17170E:string { "Failed to parse LTFS dcache configuration rules: invalid option '%s'" }
17171E:string { "Failed to parse LTFS dcache configuration rules: invalid value '%d' for option '%s'" }
17172W:string { "Time conversion is overflowed. (%04d-%02d-%02dT%02d:%02d:%02dZ)" }
17173W:string { "Time conversion is underflowed. (%04d-%02d-%02dT%02d:%02d:%02dZ)" }
17174E:string { "Key manager interface backend does not implement all required methods" }
17175E:string { "Cannot read: failed to get data key identifier (%d)" }
17176E:string { "Cannot read: failed to get data key (%d)" }
17177E:string { "Cannot read: no correct key" }
17178E:string { "Cannot read: failed to set data key (%d)" }
17179I:string { "Cleaning cartridge was loaded. (TA=%016llx)" }
17180E:string { "File %s has both of symbolic link and extents" }
17181E:string { "Cannot reopen device: failed backend reopen call" }
17182D:string { "Writing schema to disk: UUID='%s', barcode='%s'" }
17183E:string { "Error writing XML schema to file '%s' on the disk" }
17184E:string { "Error changing index cache file's permission (%d)" }
17185E:string { "Cannot read LTFS label: max transfer length is shorter than max LTFS label length (%d)" }
17186E:string { "Called releaseread_mrsw with zero or less count" }
17187E:string { "Unexpected not ready state (%d)" }
17188I:string { "Device is not ready (%d)" }
17189I:string { "Device is becoming ready (%d)" }
17190I:string { "Data key is set to enable encryption feature" }
17191I:string { "Data key is cleared to disable encryption feature" }
17192W:string { "Cannot read: medium is encrypted" }
// unused (used for backtrace function name) 17193E:string { "%p : %s" }
17194E:string { "Backtrace function address[%d]: %p" }
17195E:string { "Cannot get maximum block size : %s (%d)" }
17196W:string { "Cannot retrieve the tape attribute data: unexpected ID 0x%04x" }
17197W:string { "Cannot retrieve the tape attribute data: unexpected length 0x%04x" }
17198D:string { "Cannot get the tape attribute: 0x%04x (%s)" }
17199W:string { "Cannot update the tape attribute (type: 0x%04x): %s" }
17200E:string { "XML parser: cannot save tag, libxml2 workaround failed (%s)" }
17201I:string { "Starting a long wipe operation. This can take over 3 hours." }
17202E:string { "Failed to wipe the medium (%d)" }
17203W:string { "Truncate the tape attribute: %s (%s) to %d bytes" }
17204W:string { "Cannot set: unkown tape attribute type(0x%04x): %s" }
17205E:string { "Cannot set the tape attribute (type: 0x%04x): %s " }
17206E:string { "Cannot write XML data to file descriptor (%s, %d, %ld)" }
17207E:string { "Use the ltfsck command with the --salvage-rollback-points option and select the latest index from the list\n Then use the ltfs command with the -o rollback-mount-no-eod option by specifying the generation." }
17208I:string { "Encountered the last data on the tape (%d). The last read index generation is %d." }
17217W:string { "%s is out of range in setting time (%s:%llu sec=%lld)" }
17218W:string { "%s is out of range in parsing the label (%s)" }
17219W:string { "%s is out of range in parsing the index (%s)" }
17220W:string { "%s is out of range in parsing dentry (%s:%llu %s)" }
17221W:string { "%s is out of range in setting xattr (%s:%llu %s)" }
17222W:string { "%s is out of range in getting xattr (%s:%llu sec = %lld)" }
17223W:string { "%s is out of range in creating the label (%lld)" }
17224W:string { "%s is out of range in creating the index (%lld)" }
17225W:string { "%s is out of range in creating dentry (%lld)" }
17226W:string { "Cannot update the tape attribute: the maximum (%s) attribute length is %d" }
17227I:string { "Tape attribute: %s = %s" }
17228I:string { "Tape attribute: %s = 0x%02x" }
17229D:string { "Truncate the tape attribute: %s (%s) to %d bytes" }
17230W:string { "The bar code information is null." }
17231E:string { "Cannot %s the tape attribute: %s" }
17232E:string { "Failed to initialize file system component (%d)" }
17233E:string { "Failed to kick gcore" }
17234W:string { "The index read from the tape uses a newer version of the LTFS format than the one supported by this software. If this tape is modified, the index downgrades to format version %s from %d.%d.%d" }
// 17250 - 17299 are reserved for LE+
// DO NOT place messages with IDs 20000 or higher here!
// If you are writing a plugin for libltfs, create a separate message bundle
// containing messages with
// start_id 20000 and end_id 20999 (for driver plugins) or
// start_id 21000 and end_id 21999 (for scheduler plugins).
// See messages/README for more information.
17300D:string { "Done reading MAM attributes" }
17301W:string { "Failed to retrieve MAM attributes" }
17302W:string { "Cannot retrieve attribute (%s=0x%x)" }
17303E:string { "Barcode must be atleast 6 and atmost 32 alphanumeric ascii characters" }
17304E:string { "Barcode can contain only digits and upper case characters" }
17305I:string { "The ltfs volume is locked and needs to be unlocked for Read-Write operations" }
17306I:string { "Mounting as read-only because the volume is locked due to a hard write error" }
17307I:string { "The ltfs volume is permanently locked and so is mounted read-only. Reformat required for write operations"}
17308I:string { "The ltfs volume is locked due to write error. Run check utility to fix or reformat the cartridge"}
17309I:string { "The ltfs volume is permanently locked. Run format utility to re-use the cartridge"}
17310I:string { "Setting the LTFS Volume to be unlocked" }
17311E:string { "The LTFS Volume cannot be unlocked (%u)" }
17312I:string { "Setting the LTFS Volume to be locked" }
17313E:string { "The LTFS Volume cannot be locked (%u)" }
17314I:string { "Setting the LTFS Volume to be permanently locked" }
17315E:string { "The LTFS Volume cannot be permanently locked (%u)" }
17316I:string { "Setting the LTFS Volume to be locked due to write error" }
17317E:string { "The LTFS Volume cannot be locked due to write error (%u)" }
17318E:string { "Only 0->Unlocking, 1->Locking and 2->Permanent Locking are allowed" }
17319I:string { "%s" }
17320I:string { "Mounting as read-only with the latest index (%d) as permanent write error is set in MAM" }
//MD 22.09.2017 Added for SNIA 2.4 to allow for checking percent encoding and openforwrite
17321D:string { "Original name from platform? %s" }
17322D:string { "percent encoded name? %s" }
17323D:string { "Original name from tape? %s" }
17324D:string { "percent decoded filename? %s" }
17325D:string { "Generic string tracepoint %d, %s"}
17326D:string { "Generic number tracepoint %d, %d"}
17327I:string { "The ltfs volume is locked due to data partition write error. Run check utility to fix or reformat the cartridge"}
17328I:string { "The ltfs volume is locked due to index partition write error. Run check utility to fix or reformat the cartridge"}
17329I:string { "Setting the LTFS Volume to be locked due to data partition write error" }
17330I:string { "Setting the LTFS Volume to be locked due to index partition write error" }
17331E:string { "The LTFS Volume cannot be locked due to data partition write error (%u)" }
17332E:string { "The LTFS Volume cannot be locked due to index partition write error (%u)" }
17333I:string { "Mounting as read-only because the volume is locked due to a data partition hard write error" }
17334I:string { "Mounting as read-only because the volume is locked due to a index partition hard write error" }
17335I:string { "Mounting as read-only because the volume is locked due to both partition hard write error" }
17336I:string { "Percent encoded name has been truncated" }
17351I:string { "Volume belongs to Archive Manager spanned set, mounting as read only" }
}
}

View File

@@ -0,0 +1,77 @@
#!/bin/sh
set -e
KERNEL_NAME=`uname -s`
if [ "$KERNEL_NAME" = "Darwin" ]; then
ICU_FRAMEWORK=/Library/Frameworks/ICU.framework
export PATH=${PATH}:${ICU_FRAMEWORK}/Versions/Current/usr/bin
export DYLD_LIBRARY_PATH=${ICU_FRAMEWORK}/Versions/Current/usr/lib
GENRB=${ICU_FRAMEWORK}/Versions/Current/usr/bin/genrb
PKGDATA=${ICU_FRAMEWORK}/Versions/Current/usr/bin/pkgdata
else
GENRB=genrb
PKGDATA=pkgdata
fi
if [ "$#" -ne "1" ]; then
echo "Usage: $0 object_file"
exit 1
fi
BASENAME=`echo $1 | sed -e 's/_dat\.o$//'`
cd ${BASENAME}
make_obj() {
# Create a fresh work directory
if [ -d work ]; then
rm -rf work
fi
mkdir work
# Generate files
${GENRB} -d work -q *.txt
cd work
ls *.res >packagelist.txt
${PKGDATA} -p ${BASENAME} -m static -q packagelist.txt >/dev/null
case $KERNEL_NAME in
MINGW32_NT*)
#
# HPE_mingw_BUILD
#
# We use dynamic libraries for the package data, so use the
# -m dll switch
#
${PKGDATA} -p ${BASENAME} -m dll -q packagelist.txt >/dev/null
# Copy the resulting DLL as both a link library
# (lib*.a) and the DLL with the package data
# (*.dll). Libtool will happily use the copy of
# the DLL to link
#
cp ${BASENAME}.dll ../../lib${BASENAME}.a
cp ${BASENAME}.dll ../../${BASENAME}.dll
;;
*)
mv ${BASENAME}_dat.o ../../
;;
esac
# Clean up
cd ..
rm -rf work
}
# Check whether we need to do anything
if [ -f "../$1" ]; then
for file in *; do
if [ "$file" -nt "../$1" ]; then
make_obj
exit 0
fi
done
else
make_obj
fi

View File

@@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@@ -0,0 +1 @@
<pkgref spec="1.12" uuid="FE45DE1B-6C99-486E-9844-B05107951195"><config><identifier>com.hpe.ltfs.pkg</identifier><version>1.2</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" mod="true" includeRoot="true">../distribution/LTFS.framework</installFrom><installTo>/Library/Frameworks</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installFrom.isRelativeType</mod><mod>version</mod><mod>installFrom.path</mod><mod>identifier</mod><mod>scripts.postinstall.isRelativeType</mod><mod>parent</mod></config><scripts><postinstall relative="true" mod="true">post_install.sh</postinstall></scripts><contents><component id="com.hpe.ltfs" path="/Users/chrism/ltfs/trunk/distribution/LTFS.framework" version="1.2.0"><component id="com.hpe.ltfs" path="/Users/chrism/ltfs/trunk/distribution/LTFS.framework/Versions/1.2.0" version="1.2.0"/></component><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents></pkgref>

View File

@@ -0,0 +1 @@
<pkmkdoc spec="1.12"><properties><title>HPE StoreOpen Software 3.4.2</title><build>/Users/chrism/Documents/HPE StoreOpen Software.pkg</build><organization>com.hpe.ltfs</organization><userSees ui="easy"/><min-target os="3"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>This package installs HPE StoreOpen Software.</description><contents><choice title="LTFS" id="choice4" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.hpe.ltfs.pkg"/></choice></contents><resources bg-scale="tofit" bg-align="bottomleft"><locale lang="en"><resource relative="true" mod="true" type="background">LTFSicon.jpg</resource><resource relative="true" mod="true" type="license">LTFS_Installer_License.txt</resource><resource relative="true" mod="true" type="welcome">LTFS_Installer_Introduction.html</resource></locale></resources><requirements><requirement id="sosv" operator="ge" value="'10.5.6'"><message-title>Unable to install HPE StoreOpen Software</message-title><message>The ICU libraries have not been tested with versions of OS X earlier than 10.5.6.</message></requirement><requirement id="file" operator="eq" value="true"><file>/Library/Frameworks/OSXFUSE.framework</file><message-title>Unable to install HPE StoreOpen Software</message-title><message>The MacFuse package for 10.6/OSXFUSE package for 10.7 and above is not installed on this system. Please install it before attempting to install HPE StoreOpen Software.</message></requirement><requirement id="file" operator="eq" value="true"><file>/Library/Frameworks/ICU.framework</file><message-title>Unable to install HPE StoreOpen Software</message-title><message>The ICU framework version 50.1.2 is not installed on this system. The ICU framework version 50.1.2 is bundled with the HPE StoreOpen Software installer image file.</message></requirement></requirements><flags/><item type="file">01ltfs.xml</item><mod>properties.title</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@@ -0,0 +1,32 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1138.51">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 14.0px 0.0px; font: 14.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
p.p4 {margin: 0.0px 0.0px 14.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
li.li2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
span.s1 {text-decoration: underline ; color: #0000ee}
ul.ul1 {list-style-type: square}
</style>
</head>
<body>
<p class="p1">This is the installation package for<br>
<b>HPE StoreOpen Software version 3.4.2</b>.</p>
<p class="p1">This will install the HPE StoreOpen Software and associated utilities onto your system. Note that to use HPE StoreOpen Software, you should also have already installed the following packages:</p>
<ul class="ul1">
<li class="li2">OSXFUSE (bundled with this distribution package)</li>
<li class="li2">Refer to the <a href="http://www.hpe.com/storage/daprcompatibility"><span class="s1">HPE DAPR Compatibility Matrix</span></a> for compatibility of versions of OSXFUSE with corresponding Mac OS X versions</li>
<li class="li2">icu version 50.1.2 (attached to this distribution package)</li>
</ul>
<p class="p3"><br></p>
<p class="p2">This installer will not allow you to proceed until you have installed these two packages.</p>
<p class="p4"><br></p>
</body>
</html>

View File

@@ -0,0 +1,510 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations
below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
^L
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it
becomes a de-facto standard. To achieve this, non-free programs must
be allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
^L
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control
compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
^L
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
^L
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least
three years, to give the same user the materials specified in
Subsection 6a, above, for a charge no more than the cost of
performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
^L
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
^L
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
^L
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
^L
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms
of the ordinary General Public License).
To apply these terms, attach the following notices to the library.
It is safest to attach them to the start of each source file to most
effectively convey the exclusion of warranty; and each file should
have at least the "copyright" line and a pointer to where the full
notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the library,
if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James
Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

BIN
ltfs/osx_installer/LTFSicon.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -0,0 +1,83 @@
#!/bin/sh
LOG_FILE=/tmp/LTFS_postinstall.log
FRAMEWORK_NAME=LTFS.framework
VERSION=3.4.2
echo "" >> ${LOG_FILE}
echo "Starting post-install for ${FRAMEWORK_NAME} at `date`" >> ${LOG_FILE}
echo "User: "`who am i` >> ${LOG_FILE}
echo "PWD: "`pwd` >> ${LOG_FILE}
echo "args: "$@ >> ${LOG_FILE}
PACKAGE_LOCATION=${1}
INSTALL_DEST=${2}
DEST_VOL=${3}
INSTALL_TYPE=${4}
echo "PACKAGE_LOC: ${PACKAGE_LOCATION}" >> ${LOG_FILE}
echo "INSTALL_DEST: ${INSTALL_DEST}" >> ${LOG_FILE}
echo "DEST_VOL: ${DEST_VOL}" >> ${LOG_FILE}
echo "INSTALL_TYPE: ${INSTALL_TYPE}" >> ${LOG_FILE}
echo "PWD: "`pwd` >> ${LOG_FILE}
# Change owner...
echo "Changing owner and group..." >> ${LOG_FILE}
cd ${INSTALL_DEST}/${FRAMEWORK_NAME}
chown -R root:admin .
echo " owner and group changed" >> ${LOG_FILE}
# Change permissions...
echo "Changing Permissions..." >> ${LOG_FILE}
# set directory permissions
cd ${INSTALL_DEST}/${FRAMEWORK_NAME}
find . -type d | xargs chmod u=rwx,go=rx
echo " set directory permissions" >> ${LOG_FILE}
# set read file permissions
#cd ${INSTALL_DEST}/${FRAMEWORK_NAME}/Versions/Current/usr/include
#find . -type f | xargs chmod u=rw,go=r
#cd ${INSTALL_DEST}/${FRAMEWORK_NAME}/Versions/Current/usr/man
#find . -type f | xargs chmod u=rw,go=r
cd ${INSTALL_DEST}/${FRAMEWORK_NAME}/Versions/Current/usr/share
find . -type f | xargs chmod u=rw,go=r
echo " set read file permissions" >> ${LOG_FILE}
# set executable file permissions
cd ${INSTALL_DEST}/${FRAMEWORK_NAME}/Versions/Current/usr/bin
find . -type f | xargs chmod u+rwx,go=rx
cd ${INSTALL_DEST}/${FRAMEWORK_NAME}/Versions/Current/usr/lib
find . -type f | xargs chmod u+rwx,go=rx
echo " set executable file permissions" >> ${LOG_FILE}
# Create symlinks to save cumbersome path manipulation for users
echo "Linking executables..." >> ${LOG_FILE}
if [ ! -d /usr/local/bin/ ]
then
mkdir /usr/local/bin/
echo " created directory /usr/local/bin/" >> ${LOG_FILE}
fi
proglist=`find ${INSTALL_DEST}/${FRAMEWORK_NAME}/Versions/Current/usr/bin -type f`
for prog in $proglist
do
ln -s $prog /usr/local/bin/`basename $prog`
done
echo " symlinked executables to /usr/local/bin/" >> ${LOG_FILE}
# Create a log directory if it doesn't already exist
DUMPDIR=${HOME}/Library/Logs/LTFS
if [ ! -d $DUMPDIR ]
then
echo "Creating log directory...">> ${LOG_FILE}
mkdir $DUMPDIR
echo " created directory $DUMPDIR for drive log snapshot dumps" >> ${LOG_FILE}
ls -ld ${HOME}/Library/Logs | awk '{ printf "%s:%s %s/LTFS",$3,$4,$9 }' | xargs chown
echo " set directory permissions" >> ${LOG_FILE}
fi
echo "Finished post-install for ${FRAMEWORK_NAME} at `date`" >> ${LOG_FILE}

1451
ltfs/src/Doxyfile Normal file

File diff suppressed because it is too large Load Diff

BIN
ltfs/src/MSG00001.bin Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More