Import version 1.3.2
This commit is contained in:
commit
3fff521fa1
22 changed files with 9652 additions and 0 deletions
7
AUTHORS
Normal file
7
AUTHORS
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Stow was written by Bob Glickstein <bobg+stow@zanshin.com>, Zanshin
|
||||||
|
Software, Inc.
|
||||||
|
|
||||||
|
Contributions from Gord Matzigkeit <gord@enci.ucalgary.ca>.
|
||||||
|
|
||||||
|
John Bazik wrote `fastcwd', the Perl subroutine for computing the
|
||||||
|
current working directory.
|
339
COPYING
Normal file
339
COPYING
Normal file
|
@ -0,0 +1,339 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
675 Mass Ave, Cambridge, MA 02139, USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, 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 or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
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 give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
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 Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
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 Program, 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 Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) 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; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, 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 executable. However, as a
|
||||||
|
special exception, the source code 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.
|
||||||
|
|
||||||
|
If distribution of executable or 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 counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program 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.
|
||||||
|
|
||||||
|
5. 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 Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program 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 to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. 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 Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program 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 Program.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program 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.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the 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 Program
|
||||||
|
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 Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, 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
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
Appendix: How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. 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 program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) 19yy <name of author>
|
||||||
|
|
||||||
|
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 of the License, 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, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
144
ChangeLog
Normal file
144
ChangeLog
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
Fri Oct 11 22:09:45 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* stow.html, configure.in: Version 1.3.2.
|
||||||
|
|
||||||
|
* README, stow.texi: Correct the URL again.
|
||||||
|
|
||||||
|
Fri Oct 11 18:20:42 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* configure.in: Version 1.3.1.
|
||||||
|
|
||||||
|
* stow.html: Update Stow manual URL. Mention version 1.3.1.
|
||||||
|
|
||||||
|
* README: Update Stow URL.
|
||||||
|
|
||||||
|
* Makefile.am: stow-manual.html -> manual.html.
|
||||||
|
|
||||||
|
* stow.texi:
|
||||||
|
Add a reference to the Stow home page on the GNU web server. Change
|
||||||
|
several occurrences of "which" to "that" for grammatical superiority.
|
||||||
|
|
||||||
|
Wed Oct 9 00:34:07 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* Makefile.am:
|
||||||
|
Add maintainer-only rules for stow-manual.html and stow-manual.texi.
|
||||||
|
|
||||||
|
Wed Oct 9 00:32:31 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* README: Refer to the new location for the Stow home page.
|
||||||
|
|
||||||
|
* stow.html: Make it right for the GNU web server.
|
||||||
|
|
||||||
|
Tue Oct 8 21:54:09 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* stow.texi: Document --restow
|
||||||
|
|
||||||
|
* stow.in: Add --restow (-R) option
|
||||||
|
|
||||||
|
* configure.in: Add "perl4" to search for Perl binary.
|
||||||
|
Bump version number to 1.3.
|
||||||
|
|
||||||
|
Mon Jun 24 23:23:03 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* stow.texi: Delete trailing whitespace.
|
||||||
|
|
||||||
|
Fri Jun 21 19:44:26 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* Makefile.am:
|
||||||
|
Don't explicitly mention version.texi. Automake now does it
|
||||||
|
automagically, by noticing the `@include version.texi' in
|
||||||
|
stow.texi. Awesome.
|
||||||
|
|
||||||
|
* stow.texi:
|
||||||
|
Use @include instead of @input. This is more Texinfoid, plus
|
||||||
|
allows Automake to automatically deduce the need for
|
||||||
|
version.texi.
|
||||||
|
|
||||||
|
* stow.in:
|
||||||
|
Elide trailing slashes from package names, then complain if
|
||||||
|
package names have slashes in them.
|
||||||
|
|
||||||
|
Tue Jun 18 23:19:04 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* README: Call it "Gnu Stow".
|
||||||
|
|
||||||
|
Tue Jun 18 22:15:45 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* configure.in:
|
||||||
|
Bump version number to 1.2.
|
||||||
|
|
||||||
|
Look for Perl under the names `perl' and `perl5'. If not found,
|
||||||
|
print a warning.
|
||||||
|
|
||||||
|
* stow.texi:
|
||||||
|
Add a section about bootstrapping. Add text about hacking Gnu
|
||||||
|
Make output.
|
||||||
|
|
||||||
|
* INSTALL:
|
||||||
|
Describe what happens when Perl isn't found during `configure'.
|
||||||
|
|
||||||
|
Mon Jun 17 19:43:25 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* THANKS: Thank Fritz.
|
||||||
|
|
||||||
|
Fri Jun 14 19:18:50 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* AUTHORS: Credit John Bazik and Gord Matzigkeit.
|
||||||
|
|
||||||
|
* stow.texi: Remove a "known bug" -- the pwd dependency is gone.
|
||||||
|
|
||||||
|
* stow.in:
|
||||||
|
Use fastcwd, from fastcwd.pl (which is GPL'd), to remove
|
||||||
|
dependency on an external pwd binary. Suggested by Gord
|
||||||
|
Matzigkeit.
|
||||||
|
|
||||||
|
* stow.in: Add a missing comma.
|
||||||
|
|
||||||
|
Thu Jun 13 21:52:10 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* stow.in:
|
||||||
|
Change three occurrences of `my' to `local' for Perl 4
|
||||||
|
compatibility.
|
||||||
|
|
||||||
|
Thu Jun 13 18:07:37 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* configure.in: Bump version number to 1.1.
|
||||||
|
|
||||||
|
* Makefile.am:
|
||||||
|
Add `stow' to the list of clean targets. Don't redirect output
|
||||||
|
directly into a make target.
|
||||||
|
|
||||||
|
* AUTHORS, README:
|
||||||
|
Use <bobg+stow@zanshin.com> as the contact address.
|
||||||
|
|
||||||
|
* TODO: New file.
|
||||||
|
|
||||||
|
* stow.in:
|
||||||
|
Refer to "Gnu Stow" in a few places. Use <bobg+stow@zanshin.com>
|
||||||
|
as the contact address. Handle long and short options. Handle
|
||||||
|
`version' and `help' options. Refer to "packages," not
|
||||||
|
"collections," for consistency with the manual.
|
||||||
|
|
||||||
|
* stow.texi:
|
||||||
|
Refer to "Gnu Stow" in a few places. Use <bobg+stow@zanshin.com>
|
||||||
|
as the contact address. Add sections on Reporting bugs and Known
|
||||||
|
bugs. Create a master menu. Minor rewording. Remove the period
|
||||||
|
from a node name.
|
||||||
|
|
||||||
|
* TODO, THANKS: New files.
|
||||||
|
|
||||||
|
Mon Jun 10 14:44:13 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* NEWS: Create NEWS file for release. 1.0 now ready.
|
||||||
|
|
||||||
|
* stow.texi: Big revisions in preparation for release.
|
||||||
|
|
||||||
|
Sun Jun 9 15:47:19 1996 Bob Glickstein <bobg@zoger.ipost.com>
|
||||||
|
|
||||||
|
* stow.in: Enhance argument parsing, losing Perl 4 support in the
|
||||||
|
process.
|
||||||
|
(later) Perl 4 support restored.
|
||||||
|
|
||||||
|
Fri Jun 7 12:13:33 1996 Bob Glickstein <bobg@hiro.zanshin.com>
|
||||||
|
|
||||||
|
* Created stow, formerly "depot."
|
108
INSTALL
Normal file
108
INSTALL
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
Stow is a Perl script. You must have Perl 4 or Perl 5 in order for it
|
||||||
|
to run.
|
||||||
|
|
||||||
|
The steps in building stow are:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the source code (and this file)
|
||||||
|
and type `./configure' to configure stow for your system. This
|
||||||
|
step will attempt to locate your copy of perl and use its location
|
||||||
|
to create `stow' from `stow.in'. If perl can't be found, you'll
|
||||||
|
have to edit line 1 of `stow' from `#!false' to `#!/path/to/perl'
|
||||||
|
(where /path/to/perl is wherever perl will be found when stow
|
||||||
|
runs).
|
||||||
|
|
||||||
|
2. Type `make' to create stow.info from stow.texi.
|
||||||
|
|
||||||
|
3. Type `make install' to install `stow' and `stow.info'.
|
||||||
|
|
||||||
|
4. You can remove the generated files from the source code directory
|
||||||
|
by typing `make clean'. To also remove the files that `configure'
|
||||||
|
created (so you can compile the package for a different computer),
|
||||||
|
type `make distclean'. There is also a `make maintainer-clean'
|
||||||
|
target, but that is intended mainly for stow's developers. If you
|
||||||
|
use it, you may have to get all sorts of other programs in order
|
||||||
|
to regenerate files that came with the distribution.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin' and `/usr/local/info'. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PATH'.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure'
|
||||||
|
the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Since `stow' is concerned with separating a package's installation
|
||||||
|
tree from its run-time tree, you might want to install `stow' into a
|
||||||
|
directory such as `/usr/local/stow/stow' but have it run out of
|
||||||
|
`/usr/local'. Do this by giving the run-time prefix (e.g.,
|
||||||
|
/usr/local) to configure as described above; then run `make'; then run
|
||||||
|
`make install prefix=/usr/local/stow/stow'. For more information on
|
||||||
|
this technique, see the Stow manual.
|
||||||
|
|
||||||
|
The configuration system
|
||||||
|
========================
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' and to create the `stow' script
|
||||||
|
itself, using Makefile.in and stow.in as templates. Finally, it
|
||||||
|
creates a shell script `config.status' that you can run in the future
|
||||||
|
to recreate the current configuration, a file `config.cache' that
|
||||||
|
saves the results of its tests to speed up reconfiguring, and a file
|
||||||
|
`config.log' containing other output.
|
||||||
|
|
||||||
|
The file `configure.in' is used to create `configure' by a program
|
||||||
|
called `autoconf'. You only need `configure.in' if you want to change
|
||||||
|
it or regenerate `configure' using a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The file `Makefile.am' is used to create `Makefile.in' by a program
|
||||||
|
called `automake'. You only need `Makefile.am' if you want to change
|
||||||
|
it or regenerate `Makefile.in' using a newer version of `automake'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share,
|
||||||
|
you can create a site shell script called `config.site' that gives
|
||||||
|
default values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Operation Controls
|
||||||
|
==================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Use and save the results of the tests in FILE instead of
|
||||||
|
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||||
|
debugging `configure'.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made.
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options.
|
||||||
|
|
18
Makefile.am
Normal file
18
Makefile.am
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
## Process this file with Automake to produce Makefile.in
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = dist-shar
|
||||||
|
|
||||||
|
bin_SCRIPTS = stow
|
||||||
|
info_TEXINFOS = stow.texi
|
||||||
|
|
||||||
|
CLEANFILES = stow manual.html manual.texi
|
||||||
|
|
||||||
|
# The rules for manual.html and manual.texi are only used by
|
||||||
|
# the developer
|
||||||
|
manual.html: manual.texi
|
||||||
|
-rm -f $@
|
||||||
|
texi2html -expandinfo -menu -monolithic -verbose $<
|
||||||
|
|
||||||
|
manual.texi: stow.texi
|
||||||
|
-rm -f $@
|
||||||
|
cp $< $@
|
279
Makefile.in
Normal file
279
Makefile.in
Normal file
|
@ -0,0 +1,279 @@
|
||||||
|
# Makefile.in generated automatically by automake 1.0 from Makefile.am
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
libdir = @libdir@
|
||||||
|
infodir = @infodir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
oldincludedir = /usr/include
|
||||||
|
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
|
top_builddir = .
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
transform = @program_transform_name@
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = dist-shar
|
||||||
|
|
||||||
|
bin_SCRIPTS = stow
|
||||||
|
info_TEXINFOS = stow.texi
|
||||||
|
|
||||||
|
CLEANFILES = stow manual.html manual.texi
|
||||||
|
ACLOCAL = aclocal.m4
|
||||||
|
mkinstalldirs = $(top_srcdir)/mkinstalldirs
|
||||||
|
SCRIPTS = $(bin_SCRIPTS)
|
||||||
|
|
||||||
|
|
||||||
|
MAKEINFO = makeinfo
|
||||||
|
TEXI2DVI = texi2dvi
|
||||||
|
INFOS = stow.info*
|
||||||
|
INFO_DEPS = stow.info
|
||||||
|
DVIS = stow.dvi
|
||||||
|
TEXINFOS = stow.texi
|
||||||
|
|
||||||
|
DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
|
||||||
|
Makefile.in NEWS README THANKS TODO aclocal.m4 configure configure.in \
|
||||||
|
install-sh mdate-sh mkinstalldirs stamp-vti stow.in texinfo.tex \
|
||||||
|
version.texi
|
||||||
|
|
||||||
|
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
|
||||||
|
DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
|
||||||
|
$(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
|
||||||
|
DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
|
||||||
|
$(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
|
||||||
|
|
||||||
|
TAR = tar
|
||||||
|
default: all
|
||||||
|
|
||||||
|
|
||||||
|
$(srcdir)/Makefile.in: Makefile.am configure.in
|
||||||
|
cd $(srcdir) && automake Makefile
|
||||||
|
|
||||||
|
# For an explanation of the following Makefile rules, see node
|
||||||
|
# `Automatic Remaking' in GNU Autoconf documentation.
|
||||||
|
Makefile: Makefile.in config.status
|
||||||
|
CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
|
||||||
|
config.status: configure
|
||||||
|
./config.status --recheck
|
||||||
|
$(srcdir)/configure: configure.in $(ACLOCAL) $(CONFIGURE_DEPENDENCIES)
|
||||||
|
cd $(srcdir) && autoconf
|
||||||
|
stow: $(top_builddir)/config.status stow.in
|
||||||
|
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
|
||||||
|
|
||||||
|
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||||
|
$(mkinstalldirs) $(bindir)
|
||||||
|
list="$(bin_SCRIPTS)"; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
$(INSTALL_SCRIPT) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||||
|
else if test -f $(srcdir)/$$p; then \
|
||||||
|
$(INSTALL_SCRIPT) $(srcdir)/$$p \
|
||||||
|
$(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||||
|
else :; fi; fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-binSCRIPTS:
|
||||||
|
list="$(bin_SCRIPTS)"; for p in $$list; do \
|
||||||
|
rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||||
|
done
|
||||||
|
|
||||||
|
version.texi: stamp-vti
|
||||||
|
|
||||||
|
stamp-vti: stow.texi $(top_srcdir)/configure.in
|
||||||
|
echo "@set UPDATED `cd $(srcdir) \
|
||||||
|
&& $(SHELL) ./mdate-sh stow.texi`" > vti.tmp
|
||||||
|
echo "@set EDITION $(VERSION)" >> vti.tmp
|
||||||
|
echo "@set VERSION $(VERSION)" >> vti.tmp
|
||||||
|
if cmp -s vti.tmp $(srcdir)/version.texi; then \
|
||||||
|
rm vti.tmp; \
|
||||||
|
else \
|
||||||
|
mv vti.tmp $(srcdir)/version.texi; \
|
||||||
|
fi
|
||||||
|
echo timestamp > $(srcdir)/stamp-vti
|
||||||
|
|
||||||
|
mostlyclean-vti:
|
||||||
|
rm -f vti.tmp
|
||||||
|
|
||||||
|
clean-vti:
|
||||||
|
|
||||||
|
distclean-vti:
|
||||||
|
|
||||||
|
maintainer-clean-vti:
|
||||||
|
rm -f stamp-vti version.texi
|
||||||
|
|
||||||
|
stow.info: stow.texi version.texi
|
||||||
|
|
||||||
|
|
||||||
|
.texi.info:
|
||||||
|
$(MAKEINFO) -I$(srcdir) $< -o $(srcdir)/$@
|
||||||
|
|
||||||
|
.texi.dvi:
|
||||||
|
TEXINPUTS=$(srcdir):$$TEXINPUTS $(TEXI2DVI) $<
|
||||||
|
|
||||||
|
install-info: $(INFO_DEPS)
|
||||||
|
$(mkinstalldirs) $(infodir)
|
||||||
|
for file in $(INFO_DEPS); do \
|
||||||
|
for ifile in `cd $(srcdir) && echo $$file*`; do \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-info:
|
||||||
|
cd $(srcdir) && for file in *.info*; do \
|
||||||
|
rm -f $(infodir)/$$file; \
|
||||||
|
done
|
||||||
|
|
||||||
|
mostlyclean-info:
|
||||||
|
rm -f stow.aux stow.cp stow.cps stow.dvi stow.fn stow.fns stow.ky \
|
||||||
|
stow.log stow.pg stow.toc stow.tp stow.vr stow.op
|
||||||
|
|
||||||
|
clean-info:
|
||||||
|
|
||||||
|
distclean-info:
|
||||||
|
|
||||||
|
maintainer-clean-info:
|
||||||
|
rm -f $(INFOS)
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
# 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
|
||||||
|
rm -rf $(distdir)
|
||||||
|
$(TAR) zxf $(distdir).tar.gz
|
||||||
|
mkdir $(distdir)/=build
|
||||||
|
mkdir $(distdir)/=inst
|
||||||
|
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
||||||
|
cd $(distdir)/=build \
|
||||||
|
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||||
|
&& $(MAKE) \
|
||||||
|
&& $(MAKE) check \
|
||||||
|
&& $(MAKE) install \
|
||||||
|
&& $(MAKE) installcheck \
|
||||||
|
&& $(MAKE) dist
|
||||||
|
rm -rf $(distdir)
|
||||||
|
@echo "========================"; \
|
||||||
|
echo "$(distdir).tar.gz is ready for distribution"; \
|
||||||
|
echo "========================"
|
||||||
|
dist: distdir
|
||||||
|
chmod -R a+r $(distdir)
|
||||||
|
$(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||||
|
rm -rf $(distdir)
|
||||||
|
dist-shar: distdir
|
||||||
|
chmod -R a+r $(distdir)
|
||||||
|
shar $(distdir) | gzip > $(distdir).shar.gz
|
||||||
|
rm -rf $(distdir)
|
||||||
|
distdir: $(DEP_DISTFILES)
|
||||||
|
rm -rf $(distdir)
|
||||||
|
mkdir $(distdir)
|
||||||
|
chmod 777 $(distdir)
|
||||||
|
@for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
|
||||||
|
|| cp -p $(srcdir)/$$file $(distdir)/$$file; \
|
||||||
|
done
|
||||||
|
info: $(INFO_DEPS)
|
||||||
|
|
||||||
|
dvi: $(DVIS)
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
install-exec: install-binSCRIPTS
|
||||||
|
|
||||||
|
install-data: install-info
|
||||||
|
|
||||||
|
install: install-exec install-data all
|
||||||
|
@:
|
||||||
|
|
||||||
|
uninstall: uninstall-binSCRIPTS uninstall-info
|
||||||
|
|
||||||
|
all: $(INFO_DEPS) $(SCRIPTS) Makefile
|
||||||
|
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
|
||||||
|
installdirs:
|
||||||
|
$(mkinstalldirs) $(bindir) $(infodir)
|
||||||
|
|
||||||
|
|
||||||
|
mostlyclean-generic:
|
||||||
|
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
rm -f Makefile $(DISTCLEANFILES)
|
||||||
|
rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||||
|
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||||
|
mostlyclean: mostlyclean-vti mostlyclean-info mostlyclean-generic
|
||||||
|
|
||||||
|
clean: clean-vti clean-info clean-generic mostlyclean
|
||||||
|
|
||||||
|
distclean: distclean-vti distclean-info distclean-generic clean
|
||||||
|
rm -f config.status
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-vti maintainer-clean-info \
|
||||||
|
maintainer-clean-generic distclean
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
rm -f config.status
|
||||||
|
|
||||||
|
.PHONY: default uninstall-binSCRIPTS install-binSCRIPTS mostlyclean-vti \
|
||||||
|
distclean-vti clean-vti maintainer-clean-vti install-info \
|
||||||
|
uninstall-info mostlyclean-info distclean-info clean-info \
|
||||||
|
maintainer-clean-info tags distdir info dvi check installcheck \
|
||||||
|
install-exec install-data install uninstall all installdirs \
|
||||||
|
mostlyclean-generic distclean-generic clean-generic \
|
||||||
|
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||||
|
|
||||||
|
|
||||||
|
# The rules for manual.html and manual.texi are only used by
|
||||||
|
# the developer
|
||||||
|
manual.html: manual.texi
|
||||||
|
-rm -f $@
|
||||||
|
texi2html -expandinfo -menu -monolithic -verbose $<
|
||||||
|
|
||||||
|
manual.texi: stow.texi
|
||||||
|
-rm -f $@
|
||||||
|
cp $< $@
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .texi .info .dvi
|
||||||
|
|
||||||
|
# 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:
|
22
NEWS
Normal file
22
NEWS
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
News file for Stow.
|
||||||
|
|
||||||
|
* Changes in version 1.3:
|
||||||
|
** Added --restow option.
|
||||||
|
** Fixed handling of slashes in package names.
|
||||||
|
** Expanded configure-time search for Perl binary.
|
||||||
|
|
||||||
|
* Changes in version 1.2:
|
||||||
|
** Dependency on `pwd' removed.
|
||||||
|
** Perl 4 compatibility fixes.
|
||||||
|
** Manual expanded even more.
|
||||||
|
|
||||||
|
* Changes in version 1.1:
|
||||||
|
** Long and short options now accepted.
|
||||||
|
** Manual expanded.
|
||||||
|
** `make clean' removes stow (which is generated from stow.in).
|
||||||
|
|
||||||
|
* Initial public release (v1.0) of Stow.
|
||||||
|
|
||||||
|
Local variables:
|
||||||
|
mode: outline
|
||||||
|
End:
|
28
README
Normal file
28
README
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
This is GNU Stow, a program for managing the installation of software
|
||||||
|
packages, keeping them separate (/usr/local/stow/emacs
|
||||||
|
vs. /usr/local/stow/perl, for example) while making them appear to be
|
||||||
|
installed in the same place (/usr/local).
|
||||||
|
|
||||||
|
Stow is a Perl script which should run correctly under Perl 4 and Perl
|
||||||
|
5. You must install Perl before running Stow. For more information
|
||||||
|
about Perl, see http://www.perl.com/perl/.
|
||||||
|
|
||||||
|
You can get the latest information about Stow from
|
||||||
|
http://www.gnu.ai.mit.edu/software/stow/stow.html.
|
||||||
|
|
||||||
|
Stow was inspired by Carnegie Mellon's "Depot" program, but is
|
||||||
|
substantially simpler. Whereas Depot requires database files to keep
|
||||||
|
things in sync, Stow stores no extra state between runs, so there's no
|
||||||
|
danger (as there is in Depot) of mangling directories when file
|
||||||
|
hierarchies don't match the database. Also unlike Depot, Stow will
|
||||||
|
never delete any files, directories, or links that appear in a Stow
|
||||||
|
directory (e.g., /usr/local/stow/emacs), so it's always possible to
|
||||||
|
rebuild the target tree (e.g., /usr/local).
|
||||||
|
|
||||||
|
Stow is free software, licensed under the GNU General Public License,
|
||||||
|
which can be found in the file COPYING.
|
||||||
|
|
||||||
|
See INSTALL for installation instructions.
|
||||||
|
|
||||||
|
Please mail comments, questions, and criticisms to the author, Bob
|
||||||
|
Glickstein, <bobg+stow@zanshin.com>.
|
16
THANKS
Normal file
16
THANKS
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
Thanks to the following people for testing, using, commenting on, and
|
||||||
|
otherwise aiding the creation of Stow:
|
||||||
|
|
||||||
|
Miles Bader <miles@gnu.ai.mit.edu>
|
||||||
|
Greg Fox <fox@zanshin.com>
|
||||||
|
David Hartmann <davidh@zanshin.com>
|
||||||
|
Ben Liblit <liblit@well.com>
|
||||||
|
Gord Matzigkeit <gord@enci.ucalgary.ca>
|
||||||
|
Roland McGrath <roland@gnu.ai.mit.edu>
|
||||||
|
Jim Meyering <meyering@asic.sc.ti.com>
|
||||||
|
Fritz Mueller <fritzm@netcom.com>
|
||||||
|
Bart Schaefer <schaefer@nbn.com>
|
||||||
|
Richard Stallman <rms@gnu.ai.mit.edu>
|
||||||
|
Spencer Sun <zorak@netcom.com>
|
||||||
|
Tom Tromey <tromey@cygnus.com>
|
||||||
|
Steve Webster <srw@zanshin.com>
|
47
TODO
Normal file
47
TODO
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
-*- outline -*-
|
||||||
|
|
||||||
|
* Autodetect "foreign" stow directories
|
||||||
|
|
||||||
|
* Fix empty-dir problem (see "Known bugs" in the manual)
|
||||||
|
|
||||||
|
* Continue after conflicts.
|
||||||
|
|
||||||
|
When detecting a conflict, affected subparts of the Stow traversal can
|
||||||
|
be skipped while continuing with other subparts.
|
||||||
|
|
||||||
|
* Traverse links in the target tree?
|
||||||
|
|
||||||
|
From e-mail with meyering@na-net.ornl.gov:
|
||||||
|
|
||||||
|
> My /usr/local/info equivalent is a symlink to /share/info
|
||||||
|
> because I want installs on all systems to put info files in that
|
||||||
|
> directory. With that set-up, stow chokes on fact that
|
||||||
|
> /usr/local/info is a symlink.
|
||||||
|
|
||||||
|
[...] Stow is designed to be paranoid about modifying anything it
|
||||||
|
doesn't "own." If it finds a symlink in the target tree (e.g.,
|
||||||
|
/usr/local/info) which doesn't point into the stow tree, its
|
||||||
|
paranoid response is to leave it the hell alone. But I can see in
|
||||||
|
this case how traversing the link and populating the directory on
|
||||||
|
the far end would be OK. Question: is that a special
|
||||||
|
circumstance, or would it always be OK to populate the far end of
|
||||||
|
a symlink in the target tree (when the symlink points to a
|
||||||
|
directory in a context where a directory is needed)? And: if it's
|
||||||
|
a special circumstance requiring a command-line option, should the
|
||||||
|
option be a mere boolean (such as, "--traverse-target-links") or
|
||||||
|
should it be an enumeration of which links are OK to traverse
|
||||||
|
(such as, "--traversable='info man doc'")?
|
||||||
|
|
||||||
|
* Develop a mechanism for sharing files between packages.
|
||||||
|
|
||||||
|
This would solve the problem of maintaining N platform-specific copies
|
||||||
|
of a package, all of which have many platform-*independent* files
|
||||||
|
which could be shared, such as man pages, info files, etc.
|
||||||
|
|
||||||
|
* Option to ignore certain files in the stow tree.
|
||||||
|
|
||||||
|
For example, --ignore='*~ .#*' (skip Emacs and CVS backup files).
|
||||||
|
|
||||||
|
* Option to ignore links in the stow tree to certain places.
|
||||||
|
|
||||||
|
For example, --ignore-link='/*' (skip absolute links).
|
7
aclocal.m4
vendored
Normal file
7
aclocal.m4
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
dnl This definition comes from automake 1.0
|
||||||
|
|
||||||
|
AC_DEFUN(fp_PROG_INSTALL,
|
||||||
|
[AC_PROG_INSTALL
|
||||||
|
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
|
||||||
|
AC_SUBST(INSTALL_SCRIPT)dnl
|
||||||
|
])
|
867
configure
vendored
Executable file
867
configure
vendored
Executable file
|
@ -0,0 +1,867 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
|
# Generated automatically using autoconf version 2.10
|
||||||
|
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This configure script is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
# Defaults:
|
||||||
|
ac_help=
|
||||||
|
ac_default_prefix=/usr/local
|
||||||
|
# Any additions from configure.in:
|
||||||
|
|
||||||
|
# Initialize some variables set by options.
|
||||||
|
# The variables have the same names as the options, with
|
||||||
|
# dashes changed to underlines.
|
||||||
|
build=NONE
|
||||||
|
cache_file=./config.cache
|
||||||
|
exec_prefix=NONE
|
||||||
|
host=NONE
|
||||||
|
no_create=
|
||||||
|
nonopt=NONE
|
||||||
|
no_recursion=
|
||||||
|
prefix=NONE
|
||||||
|
program_prefix=NONE
|
||||||
|
program_suffix=NONE
|
||||||
|
program_transform_name=s,x,x,
|
||||||
|
silent=
|
||||||
|
site=
|
||||||
|
srcdir=
|
||||||
|
target=NONE
|
||||||
|
verbose=
|
||||||
|
x_includes=NONE
|
||||||
|
x_libraries=NONE
|
||||||
|
bindir='${exec_prefix}/bin'
|
||||||
|
sbindir='${exec_prefix}/sbin'
|
||||||
|
libexecdir='${exec_prefix}/libexec'
|
||||||
|
datadir='${prefix}/share'
|
||||||
|
sysconfdir='${prefix}/etc'
|
||||||
|
sharedstatedir='${prefix}/com'
|
||||||
|
localstatedir='${prefix}/var'
|
||||||
|
libdir='${exec_prefix}/lib'
|
||||||
|
includedir='${prefix}/include'
|
||||||
|
oldincludedir='/usr/include'
|
||||||
|
infodir='${prefix}/info'
|
||||||
|
mandir='${prefix}/man'
|
||||||
|
|
||||||
|
# Initialize some other variables.
|
||||||
|
subdirs=
|
||||||
|
MFLAGS= MAKEFLAGS=
|
||||||
|
|
||||||
|
ac_prev=
|
||||||
|
for ac_option
|
||||||
|
do
|
||||||
|
|
||||||
|
# If the previous option needs an argument, assign it.
|
||||||
|
if test -n "$ac_prev"; then
|
||||||
|
eval "$ac_prev=\$ac_option"
|
||||||
|
ac_prev=
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$ac_option" in
|
||||||
|
-*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||||
|
*) ac_optarg= ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Accept the important Cygnus configure options, so we can diagnose typos.
|
||||||
|
|
||||||
|
case "$ac_option" in
|
||||||
|
|
||||||
|
-bindir | --bindir | --bindi | --bind | --bin | --bi)
|
||||||
|
ac_prev=bindir ;;
|
||||||
|
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
|
||||||
|
bindir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-build | --build | --buil | --bui | --bu)
|
||||||
|
ac_prev=build ;;
|
||||||
|
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
|
||||||
|
build="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-cache-file | --cache-file | --cache-fil | --cache-fi \
|
||||||
|
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
|
||||||
|
ac_prev=cache_file ;;
|
||||||
|
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
|
||||||
|
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
|
||||||
|
cache_file="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
|
||||||
|
ac_prev=datadir ;;
|
||||||
|
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
|
||||||
|
| --da=*)
|
||||||
|
datadir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-disable-* | --disable-*)
|
||||||
|
ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
|
||||||
|
# Reject names that are not valid shell variable names.
|
||||||
|
if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
|
||||||
|
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
|
||||||
|
eval "enable_${ac_feature}=no" ;;
|
||||||
|
|
||||||
|
-enable-* | --enable-*)
|
||||||
|
ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
|
||||||
|
# Reject names that are not valid shell variable names.
|
||||||
|
if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
|
||||||
|
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
|
||||||
|
case "$ac_option" in
|
||||||
|
*=*) ;;
|
||||||
|
*) ac_optarg=yes ;;
|
||||||
|
esac
|
||||||
|
eval "enable_${ac_feature}='$ac_optarg'" ;;
|
||||||
|
|
||||||
|
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
|
||||||
|
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
|
||||||
|
| --exec | --exe | --ex)
|
||||||
|
ac_prev=exec_prefix ;;
|
||||||
|
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
|
||||||
|
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
|
||||||
|
| --exec=* | --exe=* | --ex=*)
|
||||||
|
exec_prefix="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-gas | --gas | --ga | --g)
|
||||||
|
# Obsolete; use --with-gas.
|
||||||
|
with_gas=yes ;;
|
||||||
|
|
||||||
|
-help | --help | --hel | --he)
|
||||||
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
|
cat << EOF
|
||||||
|
Usage: configure [options] [host]
|
||||||
|
Options: [defaults in brackets after descriptions]
|
||||||
|
Configuration:
|
||||||
|
--cache-file=FILE cache test results in FILE
|
||||||
|
--help print this message
|
||||||
|
--no-create do not create output files
|
||||||
|
--quiet, --silent do not print \`checking...' messages
|
||||||
|
--version print the version of autoconf that created configure
|
||||||
|
Directory and file names:
|
||||||
|
--prefix=PREFIX install architecture-independent files in PREFIX
|
||||||
|
[$ac_default_prefix]
|
||||||
|
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
||||||
|
[same as prefix]
|
||||||
|
--bindir=DIR user executables in DIR [EPREFIX/bin]
|
||||||
|
--sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
|
||||||
|
--libexecdir=DIR program executables in DIR [EPREFIX/libexec]
|
||||||
|
--datadir=DIR read-only architecture-independent data in DIR
|
||||||
|
[PREFIX/share]
|
||||||
|
--sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
|
||||||
|
--sharedstatedir=DIR modifiable architecture-independent data in DIR
|
||||||
|
[PREFIX/com]
|
||||||
|
--localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
|
||||||
|
--libdir=DIR object code libraries in DIR [EPREFIX/lib]
|
||||||
|
--includedir=DIR C header files in DIR [PREFIX/include]
|
||||||
|
--oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
|
||||||
|
--infodir=DIR info documentation in DIR [PREFIX/info]
|
||||||
|
--mandir=DIR man documentation in DIR [PREFIX/man]
|
||||||
|
--srcdir=DIR find the sources in DIR [configure dir or ..]
|
||||||
|
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||||
|
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||||
|
--program-transform-name=PROGRAM
|
||||||
|
run sed PROGRAM on installed program names
|
||||||
|
EOF
|
||||||
|
cat << EOF
|
||||||
|
Host type:
|
||||||
|
--build=BUILD configure for building on BUILD [BUILD=HOST]
|
||||||
|
--host=HOST configure for HOST [guessed]
|
||||||
|
--target=TARGET configure for TARGET [TARGET=HOST]
|
||||||
|
Features and packages:
|
||||||
|
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||||
|
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||||
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||||
|
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||||
|
--x-includes=DIR X include files are in DIR
|
||||||
|
--x-libraries=DIR X library files are in DIR
|
||||||
|
EOF
|
||||||
|
if test -n "$ac_help"; then
|
||||||
|
echo "--enable and --with options recognized:$ac_help"
|
||||||
|
fi
|
||||||
|
exit 0 ;;
|
||||||
|
|
||||||
|
-host | --host | --hos | --ho)
|
||||||
|
ac_prev=host ;;
|
||||||
|
-host=* | --host=* | --hos=* | --ho=*)
|
||||||
|
host="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-includedir | --includedir | --includedi | --included | --include \
|
||||||
|
| --includ | --inclu | --incl | --inc)
|
||||||
|
ac_prev=includedir ;;
|
||||||
|
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
|
||||||
|
| --includ=* | --inclu=* | --incl=* | --inc=*)
|
||||||
|
includedir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-infodir | --infodir | --infodi | --infod | --info | --inf)
|
||||||
|
ac_prev=infodir ;;
|
||||||
|
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
|
||||||
|
infodir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-libdir | --libdir | --libdi | --libd)
|
||||||
|
ac_prev=libdir ;;
|
||||||
|
-libdir=* | --libdir=* | --libdi=* | --libd=*)
|
||||||
|
libdir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
|
||||||
|
| --libexe | --libex | --libe)
|
||||||
|
ac_prev=libexecdir ;;
|
||||||
|
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
|
||||||
|
| --libexe=* | --libex=* | --libe=*)
|
||||||
|
libexecdir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-localstatedir | --localstatedir | --localstatedi | --localstated \
|
||||||
|
| --localstate | --localstat | --localsta | --localst \
|
||||||
|
| --locals | --local | --loca | --loc | --lo)
|
||||||
|
ac_prev=localstatedir ;;
|
||||||
|
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
|
||||||
|
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
|
||||||
|
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
|
||||||
|
localstatedir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
|
||||||
|
ac_prev=mandir ;;
|
||||||
|
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
|
||||||
|
mandir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-nfp | --nfp | --nf)
|
||||||
|
# Obsolete; use --without-fp.
|
||||||
|
with_fp=no ;;
|
||||||
|
|
||||||
|
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
|
||||||
|
| --no-cr | --no-c)
|
||||||
|
no_create=yes ;;
|
||||||
|
|
||||||
|
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
|
||||||
|
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
|
||||||
|
no_recursion=yes ;;
|
||||||
|
|
||||||
|
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
|
||||||
|
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
|
||||||
|
| --oldin | --oldi | --old | --ol | --o)
|
||||||
|
ac_prev=oldincludedir ;;
|
||||||
|
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
|
||||||
|
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
|
||||||
|
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
|
||||||
|
oldincludedir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
|
||||||
|
ac_prev=prefix ;;
|
||||||
|
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
|
||||||
|
prefix="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-program-prefix | --program-prefix | --program-prefi | --program-pref \
|
||||||
|
| --program-pre | --program-pr | --program-p)
|
||||||
|
ac_prev=program_prefix ;;
|
||||||
|
-program-prefix=* | --program-prefix=* | --program-prefi=* \
|
||||||
|
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
|
||||||
|
program_prefix="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-program-suffix | --program-suffix | --program-suffi | --program-suff \
|
||||||
|
| --program-suf | --program-su | --program-s)
|
||||||
|
ac_prev=program_suffix ;;
|
||||||
|
-program-suffix=* | --program-suffix=* | --program-suffi=* \
|
||||||
|
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
|
||||||
|
program_suffix="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-program-transform-name | --program-transform-name \
|
||||||
|
| --program-transform-nam | --program-transform-na \
|
||||||
|
| --program-transform-n | --program-transform- \
|
||||||
|
| --program-transform | --program-transfor \
|
||||||
|
| --program-transfo | --program-transf \
|
||||||
|
| --program-trans | --program-tran \
|
||||||
|
| --progr-tra | --program-tr | --program-t)
|
||||||
|
ac_prev=program_transform_name ;;
|
||||||
|
-program-transform-name=* | --program-transform-name=* \
|
||||||
|
| --program-transform-nam=* | --program-transform-na=* \
|
||||||
|
| --program-transform-n=* | --program-transform-=* \
|
||||||
|
| --program-transform=* | --program-transfor=* \
|
||||||
|
| --program-transfo=* | --program-transf=* \
|
||||||
|
| --program-trans=* | --program-tran=* \
|
||||||
|
| --progr-tra=* | --program-tr=* | --program-t=*)
|
||||||
|
program_transform_name="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
||||||
|
| -silent | --silent | --silen | --sile | --sil)
|
||||||
|
silent=yes ;;
|
||||||
|
|
||||||
|
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||||
|
ac_prev=sbindir ;;
|
||||||
|
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||||
|
| --sbi=* | --sb=*)
|
||||||
|
sbindir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-sharedstatedir | --sharedstatedir | --sharedstatedi \
|
||||||
|
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
|
||||||
|
| --sharedst | --shareds | --shared | --share | --shar \
|
||||||
|
| --sha | --sh)
|
||||||
|
ac_prev=sharedstatedir ;;
|
||||||
|
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
|
||||||
|
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
|
||||||
|
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
|
||||||
|
| --sha=* | --sh=*)
|
||||||
|
sharedstatedir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-site | --site | --sit)
|
||||||
|
ac_prev=site ;;
|
||||||
|
-site=* | --site=* | --sit=*)
|
||||||
|
site="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
|
||||||
|
ac_prev=srcdir ;;
|
||||||
|
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
|
||||||
|
srcdir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
|
||||||
|
| --syscon | --sysco | --sysc | --sys | --sy)
|
||||||
|
ac_prev=sysconfdir ;;
|
||||||
|
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
|
||||||
|
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
|
||||||
|
sysconfdir="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-target | --target | --targe | --targ | --tar | --ta | --t)
|
||||||
|
ac_prev=target ;;
|
||||||
|
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
|
||||||
|
target="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-v | -verbose | --verbose | --verbos | --verbo | --verb)
|
||||||
|
verbose=yes ;;
|
||||||
|
|
||||||
|
-version | --version | --versio | --versi | --vers)
|
||||||
|
echo "configure generated by autoconf version 2.10"
|
||||||
|
exit 0 ;;
|
||||||
|
|
||||||
|
-with-* | --with-*)
|
||||||
|
ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
|
||||||
|
# Reject names that are not valid shell variable names.
|
||||||
|
if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
|
||||||
|
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
ac_package=`echo $ac_package| sed 's/-/_/g'`
|
||||||
|
case "$ac_option" in
|
||||||
|
*=*) ;;
|
||||||
|
*) ac_optarg=yes ;;
|
||||||
|
esac
|
||||||
|
eval "with_${ac_package}='$ac_optarg'" ;;
|
||||||
|
|
||||||
|
-without-* | --without-*)
|
||||||
|
ac_package=`echo $ac_option|sed -e 's/-*without-//'`
|
||||||
|
# Reject names that are not valid shell variable names.
|
||||||
|
if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
|
||||||
|
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
ac_package=`echo $ac_package| sed 's/-/_/g'`
|
||||||
|
eval "with_${ac_package}=no" ;;
|
||||||
|
|
||||||
|
--x)
|
||||||
|
# Obsolete; use --with-x.
|
||||||
|
with_x=yes ;;
|
||||||
|
|
||||||
|
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
|
||||||
|
| --x-incl | --x-inc | --x-in | --x-i)
|
||||||
|
ac_prev=x_includes ;;
|
||||||
|
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
|
||||||
|
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
|
||||||
|
x_includes="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-x-libraries | --x-libraries | --x-librarie | --x-librari \
|
||||||
|
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
|
||||||
|
ac_prev=x_libraries ;;
|
||||||
|
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
|
||||||
|
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
|
||||||
|
x_libraries="$ac_optarg" ;;
|
||||||
|
|
||||||
|
-*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
|
||||||
|
echo "configure: warning: $ac_option: invalid host type" 1>&2
|
||||||
|
fi
|
||||||
|
if test "x$nonopt" != xNONE; then
|
||||||
|
{ echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
nonopt="$ac_option"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$ac_prev"; then
|
||||||
|
{ echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
|
||||||
|
|
||||||
|
# File descriptor usage:
|
||||||
|
# 0 standard input
|
||||||
|
# 1 file creation
|
||||||
|
# 2 errors and warnings
|
||||||
|
# 3 some systems may open it to /dev/tty
|
||||||
|
# 4 used on the Kubota Titan
|
||||||
|
# 6 checking for... messages and results
|
||||||
|
# 5 compiler messages saved in config.log
|
||||||
|
if test "$silent" = yes; then
|
||||||
|
exec 6>/dev/null
|
||||||
|
else
|
||||||
|
exec 6>&1
|
||||||
|
fi
|
||||||
|
exec 5>./config.log
|
||||||
|
|
||||||
|
echo "\
|
||||||
|
This file contains any messages produced by compilers while
|
||||||
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
" 1>&5
|
||||||
|
|
||||||
|
# Strip out --no-create and --no-recursion so they do not pile up.
|
||||||
|
# Also quote any args containing shell metacharacters.
|
||||||
|
ac_configure_args=
|
||||||
|
for ac_arg
|
||||||
|
do
|
||||||
|
case "$ac_arg" in
|
||||||
|
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
|
||||||
|
| --no-cr | --no-c) ;;
|
||||||
|
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
|
||||||
|
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
|
||||||
|
*" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
|
||||||
|
ac_configure_args="$ac_configure_args '$ac_arg'" ;;
|
||||||
|
*) ac_configure_args="$ac_configure_args $ac_arg" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# NLS nuisances.
|
||||||
|
# Only set LANG and LC_ALL to C if already set.
|
||||||
|
# These must not be set unconditionally because not all systems understand
|
||||||
|
# e.g. LANG=C (notably SCO).
|
||||||
|
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
|
||||||
|
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
|
||||||
|
|
||||||
|
# confdefs.h avoids OS command line length limits that DEFS can exceed.
|
||||||
|
rm -rf conftest* confdefs.h
|
||||||
|
# AIX cpp loses on an empty file, so make sure it contains at least a newline.
|
||||||
|
echo > confdefs.h
|
||||||
|
|
||||||
|
# A filename unique to this package, relative to the directory that
|
||||||
|
# configure is in, which we can look for to find out if srcdir is correct.
|
||||||
|
ac_unique_file=stow.in
|
||||||
|
|
||||||
|
# Find the source files, if location was not specified.
|
||||||
|
if test -z "$srcdir"; then
|
||||||
|
ac_srcdir_defaulted=yes
|
||||||
|
# Try the directory containing this script, then its parent.
|
||||||
|
ac_prog=$0
|
||||||
|
ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
|
||||||
|
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
|
||||||
|
srcdir=$ac_confdir
|
||||||
|
if test ! -r $srcdir/$ac_unique_file; then
|
||||||
|
srcdir=..
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ac_srcdir_defaulted=no
|
||||||
|
fi
|
||||||
|
if test ! -r $srcdir/$ac_unique_file; then
|
||||||
|
if test "$ac_srcdir_defaulted" = yes; then
|
||||||
|
{ echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
|
||||||
|
else
|
||||||
|
{ echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
|
||||||
|
|
||||||
|
# Prefer explicitly selected file to automatically selected ones.
|
||||||
|
if test -z "$CONFIG_SITE"; then
|
||||||
|
if test "x$prefix" != xNONE; then
|
||||||
|
CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
|
||||||
|
else
|
||||||
|
CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
for ac_site_file in $CONFIG_SITE; do
|
||||||
|
if test -r "$ac_site_file"; then
|
||||||
|
echo "loading site script $ac_site_file"
|
||||||
|
. "$ac_site_file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -r "$cache_file"; then
|
||||||
|
echo "loading cache $cache_file"
|
||||||
|
. $cache_file
|
||||||
|
else
|
||||||
|
echo "creating cache $cache_file"
|
||||||
|
> $cache_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
ac_ext=c
|
||||||
|
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
|
||||||
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
|
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
|
||||||
|
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
|
||||||
|
|
||||||
|
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
|
||||||
|
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
|
||||||
|
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
|
||||||
|
ac_n= ac_c='
|
||||||
|
' ac_t=' '
|
||||||
|
else
|
||||||
|
ac_n=-n ac_c= ac_t=
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ac_n= ac_c='\c' ac_t=
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PACKAGE=stow
|
||||||
|
VERSION=1.3.2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if test "$program_transform_name" = s,x,x,; then
|
||||||
|
program_transform_name=
|
||||||
|
else
|
||||||
|
# Double any \ or $. echo might interpret backslashes.
|
||||||
|
cat <<\EOF_SED > conftestsed
|
||||||
|
s,\\,\\\\,g; s,\$,$$,g
|
||||||
|
EOF_SED
|
||||||
|
program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
|
||||||
|
rm -f conftestsed
|
||||||
|
fi
|
||||||
|
test "$program_prefix" != NONE &&
|
||||||
|
program_transform_name="s,^,${program_prefix},; $program_transform_name"
|
||||||
|
# Use a double $ so make ignores it.
|
||||||
|
test "$program_suffix" != NONE &&
|
||||||
|
program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
|
||||||
|
|
||||||
|
# sed with no file args requires a program.
|
||||||
|
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
|
||||||
|
|
||||||
|
|
||||||
|
ac_aux_dir=
|
||||||
|
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
|
||||||
|
if test -f $ac_dir/install-sh; then
|
||||||
|
ac_aux_dir=$ac_dir
|
||||||
|
ac_install_sh="$ac_aux_dir/install-sh -c"
|
||||||
|
break
|
||||||
|
elif test -f $ac_dir/install.sh; then
|
||||||
|
ac_aux_dir=$ac_dir
|
||||||
|
ac_install_sh="$ac_aux_dir/install.sh -c"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$ac_aux_dir"; then
|
||||||
|
{ echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
|
||||||
|
fi
|
||||||
|
ac_config_guess=$ac_aux_dir/config.guess
|
||||||
|
ac_config_sub=$ac_aux_dir/config.sub
|
||||||
|
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
||||||
|
|
||||||
|
# Find a good install program. We prefer a C program (faster),
|
||||||
|
# so one script is as good as another. But avoid the broken or
|
||||||
|
# incompatible versions:
|
||||||
|
# SysV /etc/install, /usr/sbin/install
|
||||||
|
# SunOS /usr/etc/install
|
||||||
|
# IRIX /sbin/install
|
||||||
|
# AIX /bin/install
|
||||||
|
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
||||||
|
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
||||||
|
# ./install, which can be erroneously created by make from ./install.sh.
|
||||||
|
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
||||||
|
if test -z "$INSTALL"; then
|
||||||
|
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
||||||
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
else
|
||||||
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||||
|
for ac_dir in $PATH; do
|
||||||
|
# Account for people who put trailing slashes in PATH elements.
|
||||||
|
case "$ac_dir/" in
|
||||||
|
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
|
||||||
|
*)
|
||||||
|
# OSF1 and SCO ODT 3.0 have their own names for install.
|
||||||
|
for ac_prog in ginstall installbsd scoinst install; do
|
||||||
|
if test -f $ac_dir/$ac_prog; then
|
||||||
|
if test $ac_prog = install &&
|
||||||
|
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
|
||||||
|
# AIX install. It has an incompatible calling convention.
|
||||||
|
# OSF/1 installbsd also uses dspmsg, but is usable.
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ac_cv_path_install="$ac_dir/$ac_prog -c"
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
IFS="$ac_save_ifs"
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test "${ac_cv_path_install+set}" = set; then
|
||||||
|
INSTALL="$ac_cv_path_install"
|
||||||
|
else
|
||||||
|
# As a last resort, use the slow shell script. We don't cache a
|
||||||
|
# path for INSTALL within a source directory, because that will
|
||||||
|
# break other packages using the cache if that directory is
|
||||||
|
# removed, or if the path is relative.
|
||||||
|
INSTALL="$ac_install_sh"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "$ac_t""$INSTALL" 1>&6
|
||||||
|
|
||||||
|
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
|
||||||
|
# It thinks the first close brace ends the variable substitution.
|
||||||
|
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
||||||
|
|
||||||
|
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||||
|
|
||||||
|
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
|
||||||
|
|
||||||
|
|
||||||
|
for ac_prog in perl perl5 perl4
|
||||||
|
do
|
||||||
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
|
set dummy $ac_prog; ac_word=$2
|
||||||
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
|
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
|
||||||
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
else
|
||||||
|
case "$PERL" in
|
||||||
|
/*)
|
||||||
|
ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||||
|
for ac_dir in $PATH; do
|
||||||
|
test -z "$ac_dir" && ac_dir=.
|
||||||
|
if test -f $ac_dir/$ac_word; then
|
||||||
|
ac_cv_path_PERL="$ac_dir/$ac_word"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$ac_save_ifs"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
PERL="$ac_cv_path_PERL"
|
||||||
|
if test -n "$PERL"; then
|
||||||
|
echo "$ac_t""$PERL" 1>&6
|
||||||
|
else
|
||||||
|
echo "$ac_t""no" 1>&6
|
||||||
|
fi
|
||||||
|
|
||||||
|
test -n "$PERL" && break
|
||||||
|
done
|
||||||
|
test -n "$PERL" || PERL="false"
|
||||||
|
|
||||||
|
|
||||||
|
if test "x$PERL" = xfalse
|
||||||
|
then
|
||||||
|
echo 'WARNING: Perl not found; you must edit line 1 of `stow'"'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
trap '' 1 2 15
|
||||||
|
cat > confcache <<\EOF
|
||||||
|
# This file is a shell script that caches the results of configure
|
||||||
|
# tests run on this system so they can be shared between configure
|
||||||
|
# scripts and configure runs. It is not useful on other systems.
|
||||||
|
# If it contains results you don't want to keep, you may remove or edit it.
|
||||||
|
#
|
||||||
|
# By default, configure uses ./config.cache as the cache file,
|
||||||
|
# creating it if it does not exist already. You can give configure
|
||||||
|
# the --cache-file=FILE option to use a different cache file; that is
|
||||||
|
# what configure does when it calls configure scripts in
|
||||||
|
# subdirectories, so they share the cache.
|
||||||
|
# Giving --cache-file=/dev/null disables caching, for debugging configure.
|
||||||
|
# config.status only pays attention to the cache file if you give it the
|
||||||
|
# --recheck option to rerun configure.
|
||||||
|
#
|
||||||
|
EOF
|
||||||
|
# Ultrix sh set writes to stderr and can't be redirected directly,
|
||||||
|
# and sets the high bit in the cache file unless we assign to the vars.
|
||||||
|
(set) 2>&1 |
|
||||||
|
sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
|
||||||
|
>> confcache
|
||||||
|
if cmp -s $cache_file confcache; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
if test -w $cache_file; then
|
||||||
|
echo "updating cache $cache_file"
|
||||||
|
cat confcache > $cache_file
|
||||||
|
else
|
||||||
|
echo "not updating unwritable cache $cache_file"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rm -f confcache
|
||||||
|
|
||||||
|
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
|
||||||
|
|
||||||
|
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||||
|
# Let make expand exec_prefix.
|
||||||
|
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
||||||
|
|
||||||
|
# Any assignment to VPATH causes Sun make to only execute
|
||||||
|
# the first set of double-colon rules, so remove it if not needed.
|
||||||
|
# If there is a colon in the path, we need to keep it.
|
||||||
|
if test "x$srcdir" = x.; then
|
||||||
|
ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
|
||||||
|
fi
|
||||||
|
|
||||||
|
trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
|
||||||
|
|
||||||
|
# Transform confdefs.h into DEFS.
|
||||||
|
# Protect against shell expansion while executing Makefile rules.
|
||||||
|
# Protect against Makefile macro expansion.
|
||||||
|
cat > conftest.defs <<\EOF
|
||||||
|
s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
|
||||||
|
s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
|
||||||
|
s%\[%\\&%g
|
||||||
|
s%\]%\\&%g
|
||||||
|
s%\$%$$%g
|
||||||
|
EOF
|
||||||
|
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
|
||||||
|
rm -f conftest.defs
|
||||||
|
|
||||||
|
|
||||||
|
# Without the "./", some shells look in PATH for config.status.
|
||||||
|
: ${CONFIG_STATUS=./config.status}
|
||||||
|
|
||||||
|
echo creating $CONFIG_STATUS
|
||||||
|
rm -f $CONFIG_STATUS
|
||||||
|
cat > $CONFIG_STATUS <<EOF
|
||||||
|
#! /bin/sh
|
||||||
|
# Generated automatically by configure.
|
||||||
|
# Run this file to recreate the current configuration.
|
||||||
|
# This directory was configured as follows,
|
||||||
|
# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
|
||||||
|
#
|
||||||
|
# $0 $ac_configure_args
|
||||||
|
#
|
||||||
|
# Compiler output produced by configure, useful for debugging
|
||||||
|
# configure, is in ./config.log if it exists.
|
||||||
|
|
||||||
|
ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
|
||||||
|
for ac_option
|
||||||
|
do
|
||||||
|
case "\$ac_option" in
|
||||||
|
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
|
||||||
|
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
|
||||||
|
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
|
||||||
|
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
|
||||||
|
echo "$CONFIG_STATUS generated by autoconf version 2.10"
|
||||||
|
exit 0 ;;
|
||||||
|
-help | --help | --hel | --he | --h)
|
||||||
|
echo "\$ac_cs_usage"; exit 0 ;;
|
||||||
|
*) echo "\$ac_cs_usage"; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
ac_given_srcdir=$srcdir
|
||||||
|
ac_given_INSTALL="$INSTALL"
|
||||||
|
|
||||||
|
trap 'rm -fr `echo "Makefile stow" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
|
||||||
|
EOF
|
||||||
|
cat >> $CONFIG_STATUS <<EOF
|
||||||
|
|
||||||
|
# Protect against being on the right side of a sed subst in config.status.
|
||||||
|
sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
|
||||||
|
s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
|
||||||
|
$ac_vpsub
|
||||||
|
$extrasub
|
||||||
|
s%@CFLAGS@%$CFLAGS%g
|
||||||
|
s%@CPPFLAGS@%$CPPFLAGS%g
|
||||||
|
s%@CXXFLAGS@%$CXXFLAGS%g
|
||||||
|
s%@DEFS@%$DEFS%g
|
||||||
|
s%@LDFLAGS@%$LDFLAGS%g
|
||||||
|
s%@LIBS@%$LIBS%g
|
||||||
|
s%@exec_prefix@%$exec_prefix%g
|
||||||
|
s%@prefix@%$prefix%g
|
||||||
|
s%@program_transform_name@%$program_transform_name%g
|
||||||
|
s%@bindir@%$bindir%g
|
||||||
|
s%@sbindir@%$sbindir%g
|
||||||
|
s%@libexecdir@%$libexecdir%g
|
||||||
|
s%@datadir@%$datadir%g
|
||||||
|
s%@sysconfdir@%$sysconfdir%g
|
||||||
|
s%@sharedstatedir@%$sharedstatedir%g
|
||||||
|
s%@localstatedir@%$localstatedir%g
|
||||||
|
s%@libdir@%$libdir%g
|
||||||
|
s%@includedir@%$includedir%g
|
||||||
|
s%@oldincludedir@%$oldincludedir%g
|
||||||
|
s%@infodir@%$infodir%g
|
||||||
|
s%@mandir@%$mandir%g
|
||||||
|
s%@PACKAGE@%$PACKAGE%g
|
||||||
|
s%@VERSION@%$VERSION%g
|
||||||
|
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
|
||||||
|
s%@INSTALL_DATA@%$INSTALL_DATA%g
|
||||||
|
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
|
||||||
|
s%@PERL@%$PERL%g
|
||||||
|
|
||||||
|
CEOF
|
||||||
|
EOF
|
||||||
|
cat >> $CONFIG_STATUS <<EOF
|
||||||
|
|
||||||
|
CONFIG_FILES=\${CONFIG_FILES-"Makefile stow"}
|
||||||
|
EOF
|
||||||
|
cat >> $CONFIG_STATUS <<\EOF
|
||||||
|
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
||||||
|
# Support "outfile[:infile]", defaulting infile="outfile.in".
|
||||||
|
case "$ac_file" in
|
||||||
|
*:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
|
||||||
|
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||||
|
*) ac_file_in="${ac_file}.in" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Adjust relative srcdir, etc. for subdirectories.
|
||||||
|
|
||||||
|
# Remove last slash and all that follows it. Not all systems have dirname.
|
||||||
|
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
|
||||||
|
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
|
||||||
|
# The file is in a subdirectory.
|
||||||
|
test ! -d "$ac_dir" && mkdir "$ac_dir"
|
||||||
|
ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
|
||||||
|
# A "../" for each directory in $ac_dir_suffix.
|
||||||
|
ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
|
||||||
|
else
|
||||||
|
ac_dir_suffix= ac_dots=
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$ac_given_srcdir" in
|
||||||
|
.) srcdir=.
|
||||||
|
if test -z "$ac_dots"; then top_srcdir=.
|
||||||
|
else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
|
||||||
|
/*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
|
||||||
|
*) # Relative path.
|
||||||
|
srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
|
||||||
|
top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$ac_given_INSTALL" in
|
||||||
|
[/$]*) INSTALL="$ac_given_INSTALL" ;;
|
||||||
|
*) INSTALL="$ac_dots$ac_given_INSTALL" ;;
|
||||||
|
esac
|
||||||
|
echo creating "$ac_file"
|
||||||
|
rm -f "$ac_file"
|
||||||
|
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
|
||||||
|
case "$ac_file" in
|
||||||
|
*Makefile*) ac_comsub="1i\\
|
||||||
|
# $configure_input" ;;
|
||||||
|
*) ac_comsub= ;;
|
||||||
|
esac
|
||||||
|
sed -e "$ac_comsub
|
||||||
|
s%@configure_input@%$configure_input%g
|
||||||
|
s%@srcdir@%$srcdir%g
|
||||||
|
s%@top_srcdir@%$top_srcdir%g
|
||||||
|
s%@INSTALL@%$INSTALL%g
|
||||||
|
" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
|
||||||
|
fi; done
|
||||||
|
rm -f conftest.subs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
chmod +x $CONFIG_STATUS
|
||||||
|
rm -fr confdefs* $ac_clean_files
|
||||||
|
test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
|
||||||
|
|
21
configure.in
Normal file
21
configure.in
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
dnl Process this file with Autoconf to produce configure
|
||||||
|
|
||||||
|
AC_INIT(stow.in)
|
||||||
|
|
||||||
|
PACKAGE=stow
|
||||||
|
VERSION=1.3.2
|
||||||
|
AC_SUBST(PACKAGE)
|
||||||
|
AC_SUBST(VERSION)
|
||||||
|
|
||||||
|
AC_ARG_PROGRAM
|
||||||
|
|
||||||
|
fp_PROG_INSTALL
|
||||||
|
|
||||||
|
AC_PATH_PROGS(PERL, perl perl5 perl4, false)
|
||||||
|
|
||||||
|
if test "x$PERL" = xfalse
|
||||||
|
then
|
||||||
|
echo 'WARNING: Perl not found; you must edit line 1 of `stow'"'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile stow)
|
238
install-sh
Executable file
238
install-sh
Executable file
|
@ -0,0 +1,238 @@
|
||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
# This comes from X11R5.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
transformbasename=""
|
||||||
|
transform_arg=""
|
||||||
|
instcmd="$mvprog"
|
||||||
|
chmodcmd="$chmodprog 0755"
|
||||||
|
chowncmd=""
|
||||||
|
chgrpcmd=""
|
||||||
|
stripcmd=""
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=""
|
||||||
|
dst=""
|
||||||
|
dir_arg=""
|
||||||
|
|
||||||
|
while [ x"$1" != x ]; do
|
||||||
|
case $1 in
|
||||||
|
-c) instcmd="$cpprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd="$stripprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
*) if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
src=$1
|
||||||
|
else
|
||||||
|
# this colon is to work around a 386BSD /bin/sh bug
|
||||||
|
:
|
||||||
|
dst=$1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no input file specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]; then
|
||||||
|
dst=$src
|
||||||
|
src=""
|
||||||
|
|
||||||
|
if [ -d $dst ]; then
|
||||||
|
instcmd=:
|
||||||
|
else
|
||||||
|
instcmd=mkdir
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
|
||||||
|
if [ -f $src -o -d $src ]
|
||||||
|
then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
echo "install: $src does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dst" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; if your system
|
||||||
|
# does not like double slashes in filenames, you may need to add some logic
|
||||||
|
|
||||||
|
if [ -d $dst ]
|
||||||
|
then
|
||||||
|
dst="$dst"/`basename $src`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
## this sed command emulates the dirname command
|
||||||
|
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||||
|
|
||||||
|
# Make sure that the destination directory exists.
|
||||||
|
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||||
|
|
||||||
|
# Skip lots of stat calls in the usual case.
|
||||||
|
if [ ! -d "$dstdir" ]; then
|
||||||
|
defaultIFS='
|
||||||
|
'
|
||||||
|
IFS="${IFS-${defaultIFS}}"
|
||||||
|
|
||||||
|
oIFS="${IFS}"
|
||||||
|
# Some sh's can't handle IFS=/ for some reason.
|
||||||
|
IFS='%'
|
||||||
|
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||||
|
IFS="${oIFS}"
|
||||||
|
|
||||||
|
pathcomp=''
|
||||||
|
|
||||||
|
while [ $# -ne 0 ] ; do
|
||||||
|
pathcomp="${pathcomp}${1}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ ! -d "${pathcomp}" ] ;
|
||||||
|
then
|
||||||
|
$mkdirprog "${pathcomp}"
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="${pathcomp}/"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]
|
||||||
|
then
|
||||||
|
$doit $instcmd $dst &&
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# If we're going to rename the final executable, determine the name now.
|
||||||
|
|
||||||
|
if [ x"$transformarg" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
dstfile=`basename $dst $transformbasename |
|
||||||
|
sed $transformarg`$transformbasename
|
||||||
|
fi
|
||||||
|
|
||||||
|
# don't allow the sed command to completely eliminate the filename
|
||||||
|
|
||||||
|
if [ x"$dstfile" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make a temp file name in the proper directory.
|
||||||
|
|
||||||
|
dsttmp=$dstdir/#inst.$$#
|
||||||
|
|
||||||
|
# Move or copy the file name to the temp name
|
||||||
|
|
||||||
|
$doit $instcmd $src $dsttmp &&
|
||||||
|
|
||||||
|
trap "rm -f ${dsttmp}" 0 &&
|
||||||
|
|
||||||
|
# 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 $instcmd $src $dsttmp" command.
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||||
|
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||||
|
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
91
mdate-sh
Executable file
91
mdate-sh
Executable file
|
@ -0,0 +1,91 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# mdate-sh - get modification time of a file and pretty-print it
|
||||||
|
# Copyright (C) 1995 Software Foundation, Inc.
|
||||||
|
# Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||||
|
#
|
||||||
|
# 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, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
# Prevent date giving response in another language.
|
||||||
|
LANG=C
|
||||||
|
export LANG
|
||||||
|
LC_ALL=C
|
||||||
|
export LC_ALL
|
||||||
|
LC_TIME=C
|
||||||
|
export LC_TIME
|
||||||
|
|
||||||
|
# Get the extended ls output of the file.
|
||||||
|
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||||
|
set - `ls -L -l $1`
|
||||||
|
else
|
||||||
|
set - `ls -l $1`
|
||||||
|
fi
|
||||||
|
# The month is at least the fourth argument.
|
||||||
|
# (3 shifts here, the next inside the loop)
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
|
||||||
|
# Find the month. Next argument is day, followed by the year or time.
|
||||||
|
month=
|
||||||
|
until test $month
|
||||||
|
do
|
||||||
|
shift
|
||||||
|
case $1 in
|
||||||
|
Jan) month=January; nummonth=1;;
|
||||||
|
Feb) month=February; nummonth=2;;
|
||||||
|
Mar) month=March; nummonth=3;;
|
||||||
|
Apr) month=April; nummonth=4;;
|
||||||
|
May) month=May; nummonth=5;;
|
||||||
|
Jun) month=June; nummonth=6;;
|
||||||
|
Jul) month=July; nummonth=7;;
|
||||||
|
Aug) month=August; nummonth=8;;
|
||||||
|
Sep) month=September; nummonth=9;;
|
||||||
|
Oct) month=October; nummonth=10;;
|
||||||
|
Nov) month=November; nummonth=11;;
|
||||||
|
Dec) month=December; nummonth=12;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
day=$2
|
||||||
|
|
||||||
|
# Here we have to deal with the problem that the ls output gives either
|
||||||
|
# the time of day or the year.
|
||||||
|
case $3 in
|
||||||
|
*:*) set `date`; eval year=\$$#
|
||||||
|
case $2 in
|
||||||
|
Jan) nummonthtod=1;;
|
||||||
|
Feb) nummonthtod=2;;
|
||||||
|
Mar) nummonthtod=3;;
|
||||||
|
Apr) nummonthtod=4;;
|
||||||
|
May) nummonthtod=5;;
|
||||||
|
Jun) nummonthtod=6;;
|
||||||
|
Jul) nummonthtod=7;;
|
||||||
|
Aug) nummonthtod=8;;
|
||||||
|
Sep) nummonthtod=9;;
|
||||||
|
Oct) nummonthtod=10;;
|
||||||
|
Nov) nummonthtod=11;;
|
||||||
|
Dec) nummonthtod=12;;
|
||||||
|
esac
|
||||||
|
# For the first six month of the year the time notation can also
|
||||||
|
# be used for files modified in the last year.
|
||||||
|
if (expr $nummonth \> $nummonthtod) > /dev/null;
|
||||||
|
then
|
||||||
|
year=`expr $year - 1`
|
||||||
|
fi;;
|
||||||
|
*) year=$3;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# The result.
|
||||||
|
echo $day $month $year
|
36
mkinstalldirs
Executable file
36
mkinstalldirs
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# mkinstalldirs --- make directory hierarchy
|
||||||
|
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||||
|
# Created: 1993-05-16
|
||||||
|
# Last modified: 1994-03-25
|
||||||
|
# Public domain
|
||||||
|
|
||||||
|
errstatus=0
|
||||||
|
|
||||||
|
for file in ${1+"$@"} ; do
|
||||||
|
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||||
|
shift
|
||||||
|
|
||||||
|
pathcomp=
|
||||||
|
for d in ${1+"$@"} ; do
|
||||||
|
pathcomp="$pathcomp$d"
|
||||||
|
case "$pathcomp" in
|
||||||
|
-* ) pathcomp=./$pathcomp ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
echo "mkdir $pathcomp" 1>&2
|
||||||
|
mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
errstatus=$lasterr
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="$pathcomp/"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $errstatus
|
||||||
|
|
||||||
|
# mkinstalldirs ends here
|
1
stamp-vti
Normal file
1
stamp-vti
Normal file
|
@ -0,0 +1 @@
|
||||||
|
timestamp
|
542
stow.in
Normal file
542
stow.in
Normal file
|
@ -0,0 +1,542 @@
|
||||||
|
#!@PERL@
|
||||||
|
|
||||||
|
# GNU Stow - manage the installation of multiple software packages
|
||||||
|
# Copyright 1993, 1994, 1995, 1996 by Bob Glickstein
|
||||||
|
#
|
||||||
|
# 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 of the License, 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, write to the Free Software
|
||||||
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
$ProgramName = $0;
|
||||||
|
$ProgramName =~ s,.*/,,;
|
||||||
|
|
||||||
|
$Version = '@VERSION@';
|
||||||
|
|
||||||
|
$Conflicts = 0;
|
||||||
|
$Delete = 0;
|
||||||
|
$NotReally = 0;
|
||||||
|
$Verbose = 0;
|
||||||
|
$ReportHelp = 0;
|
||||||
|
$Stow = &fastcwd;
|
||||||
|
$Target = undef;
|
||||||
|
$Restow = 0;
|
||||||
|
|
||||||
|
while (@ARGV && ($_ = $ARGV[0]) && /^-/) {
|
||||||
|
$opt = $';
|
||||||
|
shift;
|
||||||
|
last if /^--$/;
|
||||||
|
|
||||||
|
if ($opt =~ /^-/) {
|
||||||
|
$opt = $';
|
||||||
|
if ($opt =~ /^no?$/i) {
|
||||||
|
$NotReally = 1;
|
||||||
|
} elsif ($opt =~ /^c(o(n(f(l(i(c(ts?)?)?)?)?)?)?)?$/i) {
|
||||||
|
$Conflicts = 1;
|
||||||
|
$NotReally = 1;
|
||||||
|
} elsif ($opt =~ /^dir?/i) {
|
||||||
|
$remainder = $';
|
||||||
|
if ($remainder =~ /^=/) {
|
||||||
|
$Stow = $'; # the stuff after the =
|
||||||
|
} else {
|
||||||
|
$Stow = shift;
|
||||||
|
}
|
||||||
|
} elsif ($opt =~ /^t(a(r(g(et?)?)?)?)?/i) {
|
||||||
|
$remainder = $';
|
||||||
|
if ($remainder =~ /^=/) {
|
||||||
|
$Target = $'; # the stuff after the =
|
||||||
|
} else {
|
||||||
|
$Target = shift;
|
||||||
|
}
|
||||||
|
} elsif ($opt =~ /^verb(o(se?)?)?/i) {
|
||||||
|
$remainder = $';
|
||||||
|
if ($remainder =~ /^=(\d+)/) {
|
||||||
|
$Verbose = $1;
|
||||||
|
} else {
|
||||||
|
++$Verbose;
|
||||||
|
}
|
||||||
|
} elsif ($opt =~ /^de(l(e(te?)?)?)?$/i) {
|
||||||
|
$Delete = 1;
|
||||||
|
} elsif ($opt =~ /^r(e(s(t(o(w?)?)?)?)?)?$/i) {
|
||||||
|
$Restow = 1;
|
||||||
|
} elsif ($opt =~ /^vers(i(on?)?)?$/i) {
|
||||||
|
&version();
|
||||||
|
} else {
|
||||||
|
&usage(($opt =~ /^h(e(lp?)?)?$/) ? undef :
|
||||||
|
"unknown or ambiguous option: $opt");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
@opts = split(//, $opt);
|
||||||
|
while ($_ = shift(@opts)) {
|
||||||
|
if ($_ eq 'n') {
|
||||||
|
$NotReally = 1;
|
||||||
|
} elsif ($_ eq 'c') {
|
||||||
|
$Conflicts = 1;
|
||||||
|
$NotReally = 1;
|
||||||
|
} elsif ($_ eq 'd') {
|
||||||
|
$Stow = (join('', @opts) || shift);
|
||||||
|
@opts = ();
|
||||||
|
} elsif ($_ eq 't') {
|
||||||
|
$Target = (join('', @opts) || shift);
|
||||||
|
@opts = ();
|
||||||
|
} elsif ($_ eq 'v') {
|
||||||
|
++$Verbose;
|
||||||
|
} elsif ($_ eq 'D') {
|
||||||
|
$Delete = 1;
|
||||||
|
} elsif ($_ eq 'R') {
|
||||||
|
$Restow = 1;
|
||||||
|
} elsif ($_ eq 'V') {
|
||||||
|
&version();
|
||||||
|
} else {
|
||||||
|
&usage(($_ eq 'h') ? undef : "unknown option: $_");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&usage("No packages named") unless @ARGV;
|
||||||
|
|
||||||
|
$Target = &parent($Stow) unless $Target;
|
||||||
|
|
||||||
|
chdir($Target) || die "Cannot chdir to target tree $Target ($!)\n";
|
||||||
|
$Target = &fastcwd;
|
||||||
|
|
||||||
|
foreach $package (@ARGV) {
|
||||||
|
$package =~ s,/+$,,; # delete trailing slashes
|
||||||
|
if ($package =~ m,/,) {
|
||||||
|
die "$ProgramName: slashes not permitted in package names\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Delete || $Restow) {
|
||||||
|
@Collections = @ARGV;
|
||||||
|
&Unstow('', &RelativePath($Target, $Stow));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$Delete || $Restow) {
|
||||||
|
foreach $Collection (@ARGV) {
|
||||||
|
warn "Stowing package $Collection...\n" if $Verbose;
|
||||||
|
&StowContents($Collection, &RelativePath($Target, $Stow));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub CommonParent {
|
||||||
|
local($dir1, $dir2) = @_;
|
||||||
|
local($result, $x);
|
||||||
|
local(@d1) = split(/\/+/, $dir1);
|
||||||
|
local(@d2) = split(/\/+/, $dir2);
|
||||||
|
|
||||||
|
while (@d1 && @d2 && (($x = shift(@d1)) eq shift(@d2))) {
|
||||||
|
$result .= "$x/";
|
||||||
|
}
|
||||||
|
chop($result);
|
||||||
|
$result;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub RelativePath {
|
||||||
|
local($a, $b) = @_;
|
||||||
|
local($c) = &CommonParent($a, $b);
|
||||||
|
local(@a) = split(/\/+/, $a);
|
||||||
|
local(@b) = split(/\/+/, $b);
|
||||||
|
local(@c) = split(/\/+/, $c);
|
||||||
|
|
||||||
|
splice(@a, 0, @c + 0);
|
||||||
|
splice(@b, 0, @c + 0);
|
||||||
|
unshift(@b, (('..') x (@a + 0)));
|
||||||
|
&JoinPaths(@b);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub JoinPaths {
|
||||||
|
local(@paths, @parts);
|
||||||
|
local ($x, $y);
|
||||||
|
local($result) = '';
|
||||||
|
|
||||||
|
$result = '/' if ($_[0] =~ /^\//);
|
||||||
|
foreach $x (@_) {
|
||||||
|
@parts = split(/\/+/, $x);
|
||||||
|
foreach $y (@parts) {
|
||||||
|
push(@paths, $y) if $y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result .= join('/', @paths);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub Unstow {
|
||||||
|
local($targetdir, $stow) = @_;
|
||||||
|
local(@contents);
|
||||||
|
local($content);
|
||||||
|
local($linktarget, $stowmember, $collection);
|
||||||
|
local(@stowmember);
|
||||||
|
local($pure, $othercollection) = (1, '');
|
||||||
|
local($subpure, $subother);
|
||||||
|
local(@puresubdirs);
|
||||||
|
|
||||||
|
return (0, '') if (&JoinPaths($Target, $targetdir) eq $Stow);
|
||||||
|
return (0, '') if (-e &JoinPaths($Target, $targetdir, '.stow'));
|
||||||
|
warn sprintf("Unstowing in %s\n", &JoinPaths($Target, $targetdir))
|
||||||
|
if ($Verbose > 1);
|
||||||
|
opendir(DIR, &JoinPaths($Target, $targetdir)) ||
|
||||||
|
die "$ProgramName: Cannot read directory \"$dir\" ($!)\n";
|
||||||
|
@contents = readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
foreach $content (@contents) {
|
||||||
|
next if (($content eq '.') || ($content eq '..'));
|
||||||
|
if (-l &JoinPaths($Target, $targetdir, $content)) {
|
||||||
|
($linktarget = readlink(&JoinPaths($Target,
|
||||||
|
$targetdir,
|
||||||
|
$content)))
|
||||||
|
|| die sprintf("%s: Cannot read link %s (%s)\n",
|
||||||
|
$ProgramName,
|
||||||
|
&JoinPaths($Target, $targetdir, $content),
|
||||||
|
$!);
|
||||||
|
if ($stowmember = &FindStowMember(&JoinPaths($Target,
|
||||||
|
$targetdir),
|
||||||
|
$linktarget)) {
|
||||||
|
@stowmember = split(/\/+/, $stowmember);
|
||||||
|
$collection = shift(@stowmember);
|
||||||
|
if (grep(($collection eq $_), @Collections)) {
|
||||||
|
&DoUnlink(&JoinPaths($Target, $targetdir, $content));
|
||||||
|
} elsif ($pure) {
|
||||||
|
if ($othercollection) {
|
||||||
|
$pure = 0 if ($collection ne $othercollection);
|
||||||
|
} else {
|
||||||
|
$othercollection = $collection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pure = 0;
|
||||||
|
}
|
||||||
|
} elsif (-d &JoinPaths($Target, $targetdir, $content)) {
|
||||||
|
($subpure, $subother) = &Unstow(&JoinPaths($targetdir, $content),
|
||||||
|
&JoinPaths('..', $stow));
|
||||||
|
if ($subpure) {
|
||||||
|
push(@puresubdirs, "$content/$subother");
|
||||||
|
}
|
||||||
|
if ($pure) {
|
||||||
|
if ($subpure) {
|
||||||
|
if ($othercollection) {
|
||||||
|
if ($subother) {
|
||||||
|
if ($othercollection ne $subother) {
|
||||||
|
$pure = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elsif ($subother) {
|
||||||
|
$othercollection = $subother;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pure = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pure = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((!$pure || !$targetdir) && @puresubdirs) {
|
||||||
|
&CoalesceTrees($targetdir, $stow, @puresubdirs);
|
||||||
|
}
|
||||||
|
($pure, $othercollection);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub CoalesceTrees {
|
||||||
|
local($parent, $stow, @trees) = @_;
|
||||||
|
local($tree, $collection, $x);
|
||||||
|
|
||||||
|
foreach $x (@trees) {
|
||||||
|
($tree, $collection) = ($x =~ /^(.*)\/(.*)/);
|
||||||
|
&EmptyTree(&JoinPaths($Target, $parent, $tree));
|
||||||
|
&DoRmdir(&JoinPaths($Target, $parent, $tree));
|
||||||
|
if ($collection) {
|
||||||
|
&DoLink(&JoinPaths($stow, $collection, $parent, $tree),
|
||||||
|
&JoinPaths($Target, $parent, $tree));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub EmptyTree {
|
||||||
|
local($dir) = @_;
|
||||||
|
local(@contents);
|
||||||
|
local($content);
|
||||||
|
|
||||||
|
opendir(DIR, $dir)
|
||||||
|
|| die "$ProgramName: Cannot read directory \"$dir\" ($!)\n";
|
||||||
|
@contents = readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
foreach $content (@contents) {
|
||||||
|
next if (($content eq '.') || ($content eq '..'));
|
||||||
|
if (-l &JoinPaths($dir, $content)) {
|
||||||
|
&DoUnlink(&JoinPaths($dir, $content));
|
||||||
|
} elsif (-d &JoinPaths($dir, $content)) {
|
||||||
|
&EmptyTree(&JoinPaths($dir, $content));
|
||||||
|
&DoRmdir(&JoinPaths($dir, $content));
|
||||||
|
} else {
|
||||||
|
&DoUnlink(&JoinPaths($dir, $content));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub StowContents {
|
||||||
|
local($dir, $stow) = @_;
|
||||||
|
local(@contents);
|
||||||
|
local($content);
|
||||||
|
|
||||||
|
warn "Stowing contents of $dir\n" if ($Verbose > 1);
|
||||||
|
opendir(DIR, &JoinPaths($Stow, $dir))
|
||||||
|
|| die "$ProgramName: Cannot read directory \"$dir\" ($!)\n";
|
||||||
|
@contents = readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
foreach $content (@contents) {
|
||||||
|
next if (($content eq '.') || ($content eq '..'));
|
||||||
|
if (-d &JoinPaths($Stow, $dir, $content)) {
|
||||||
|
&StowDir(&JoinPaths($dir, $content), $stow);
|
||||||
|
} else {
|
||||||
|
&StowNondir(&JoinPaths($dir, $content), $stow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub StowDir {
|
||||||
|
local($dir, $stow) = @_;
|
||||||
|
local(@dir) = split(/\/+/, $dir);
|
||||||
|
local($collection) = shift(@dir);
|
||||||
|
local($subdir) = join('/', @dir);
|
||||||
|
local($linktarget, $stowsubdir);
|
||||||
|
|
||||||
|
warn "Stowing directory $dir\n" if ($Verbose > 1);
|
||||||
|
if (-l &JoinPaths($Target, $subdir)) {
|
||||||
|
($linktarget = readlink(&JoinPaths($Target, $subdir)))
|
||||||
|
|| die sprintf("%s: Could not read link %s (%s)\n",
|
||||||
|
$ProgramName,
|
||||||
|
&JoinPaths($Target, $subdir),
|
||||||
|
$!);
|
||||||
|
($stowsubdir =
|
||||||
|
&FindStowMember(sprintf('%s/%s', $Target,
|
||||||
|
join('/', @dir[0..($#dir - 1)])),
|
||||||
|
$linktarget))
|
||||||
|
|| (&Conflict($dir, $subdir), return);
|
||||||
|
if (-e &JoinPaths($Stow, $stowsubdir)) {
|
||||||
|
if ($stowsubdir eq $dir) {
|
||||||
|
warn sprintf("%s already points to %s\n",
|
||||||
|
&JoinPaths($Target, $subdir),
|
||||||
|
&JoinPaths($Stow, $dir))
|
||||||
|
if ($Verbose > 2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (-d &JoinPaths($Stow, $stowsubdir)) {
|
||||||
|
&DoUnlink(&JoinPaths($Target, $subdir));
|
||||||
|
&DoMkdir(&JoinPaths($Target, $subdir));
|
||||||
|
&StowContents($stowsubdir, &JoinPaths('..', $stow));
|
||||||
|
&StowContents($dir, &JoinPaths('..', $stow));
|
||||||
|
} else {
|
||||||
|
(&Conflict($dir, $subdir), return);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
&DoUnlink(&JoinPaths($Target, $subdir));
|
||||||
|
&DoLink(&JoinPaths($stow, $dir),
|
||||||
|
&JoinPaths($Target, $subdir));
|
||||||
|
}
|
||||||
|
} elsif (-e &JoinPaths($Target, $subdir)) {
|
||||||
|
if (-d &JoinPaths($Target, $subdir)) {
|
||||||
|
&StowContents($dir, &JoinPaths('..', $stow));
|
||||||
|
} else {
|
||||||
|
&Conflict($dir, $subdir);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
&DoLink(&JoinPaths($stow, $dir),
|
||||||
|
&JoinPaths($Target, $subdir));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub StowNondir {
|
||||||
|
local($file, $stow) = @_;
|
||||||
|
local(@file) = split(/\/+/, $file);
|
||||||
|
local($collection) = shift(@file);
|
||||||
|
local($subfile) = join('/', @file);
|
||||||
|
local($linktarget, $stowsubfile);
|
||||||
|
|
||||||
|
if (-l &JoinPaths($Target, $subfile)) {
|
||||||
|
($linktarget = readlink(&JoinPaths($Target, $subfile)))
|
||||||
|
|| die sprintf("%s: Could not read link %s (%s)\n",
|
||||||
|
$ProgramName,
|
||||||
|
&JoinPaths($Target, $subfile),
|
||||||
|
$!);
|
||||||
|
($stowsubfile =
|
||||||
|
&FindStowMember(sprintf('%s/%s', $Target,
|
||||||
|
join('/', @file[0..($#file - 1)])),
|
||||||
|
$linktarget))
|
||||||
|
|| (&Conflict($file, $subfile), return);
|
||||||
|
if (-e &JoinPaths($Stow, $stowsubfile)) {
|
||||||
|
(&Conflict($file, $subfile), return)
|
||||||
|
unless ($stowsubfile eq $file);
|
||||||
|
warn sprintf("%s already points to %s\n",
|
||||||
|
&JoinPaths($Target, $subfile),
|
||||||
|
&JoinPaths($Stow, $file))
|
||||||
|
if ($Verbose > 2);
|
||||||
|
} else {
|
||||||
|
&DoUnlink(&JoinPaths($Target, $subfile));
|
||||||
|
&DoLink(&JoinPaths($stow, $file),
|
||||||
|
&JoinPaths($Target, $subfile));
|
||||||
|
}
|
||||||
|
} elsif (-e &JoinPaths($Target, $subfile)) {
|
||||||
|
&Conflict($file, $subfile);
|
||||||
|
} else {
|
||||||
|
&DoLink(&JoinPaths($stow, $file),
|
||||||
|
&JoinPaths($Target, $subfile));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub DoUnlink {
|
||||||
|
local($file) = @_;
|
||||||
|
|
||||||
|
warn "UNLINK $file\n" if $Verbose;
|
||||||
|
(unlink($file) || die "$ProgramName: Could not unlink $file ($!)\n")
|
||||||
|
unless $NotReally;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub DoRmdir {
|
||||||
|
local($dir) = @_;
|
||||||
|
|
||||||
|
warn "RMDIR $dir\n" if $Verbose;
|
||||||
|
(rmdir($dir) || die "$ProgramName: Could not rmdir $dir ($!)\n")
|
||||||
|
unless $NotReally;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub DoLink {
|
||||||
|
local($target, $name) = @_;
|
||||||
|
|
||||||
|
warn "LINK $name to $target\n" if $Verbose;
|
||||||
|
(symlink($target, $name) ||
|
||||||
|
die "$ProgramName: Could not symlink $name to $target ($!)\n")
|
||||||
|
unless $NotReally;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub DoMkdir {
|
||||||
|
local($dir) = @_;
|
||||||
|
|
||||||
|
warn "MKDIR $dir\n" if $Verbose;
|
||||||
|
(mkdir($dir, 0777)
|
||||||
|
|| die "$ProgramName: Could not make directory $dir ($!)\n")
|
||||||
|
unless $NotReally;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub Conflict {
|
||||||
|
local($a, $b) = @_;
|
||||||
|
|
||||||
|
if ($Conflicts) {
|
||||||
|
warn sprintf("CONFLICT: %s vs. %s\n", &JoinPaths($Stow, $a),
|
||||||
|
&JoinPaths($Target, $b));
|
||||||
|
} else {
|
||||||
|
die sprintf("%s: CONFLICT: %s vs. %s\n",
|
||||||
|
$ProgramName,
|
||||||
|
&JoinPaths($Stow, $a),
|
||||||
|
&JoinPaths($Target, $b));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub FindStowMember {
|
||||||
|
local($start, $path) = @_;
|
||||||
|
local(@x) = split(/\/+/, $start);
|
||||||
|
local(@path) = split(/\/+/, $path);
|
||||||
|
local($x);
|
||||||
|
local(@d) = split(/\/+/, $Stow);
|
||||||
|
|
||||||
|
while (@path) {
|
||||||
|
$x = shift(@path);
|
||||||
|
if ($x eq '..') {
|
||||||
|
pop(@x);
|
||||||
|
return '' unless @x;
|
||||||
|
} elsif ($x) {
|
||||||
|
push(@x, $x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (@x && @d) {
|
||||||
|
if (($x = shift(@x)) ne shift(@d)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '' if @d;
|
||||||
|
join('/', @x);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub parent {
|
||||||
|
local($path) = join('/', @_);
|
||||||
|
local(@elts) = split(/\/+/, $path);
|
||||||
|
pop(@elts);
|
||||||
|
join('/', @elts);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub usage {
|
||||||
|
local($msg) = shift;
|
||||||
|
|
||||||
|
if ($msg) {
|
||||||
|
print "$ProgramName: $msg\n";
|
||||||
|
}
|
||||||
|
print "$ProgramName (GNU Stow) version $Version\n\n";
|
||||||
|
print "Usage: $ProgramName [OPTION ...] PACKAGE ...\n";
|
||||||
|
print <<EOT;
|
||||||
|
-n, --no Do not actually make changes
|
||||||
|
-c, --conflicts Scan for conflicts, implies -n
|
||||||
|
-d DIR, --dir=DIR Set stow dir to DIR (default is current dir)
|
||||||
|
-t DIR, --target=DIR Set target to DIR (default is parent of stow dir)
|
||||||
|
-v, --verbose[=N] Increase verboseness (levels are 0,1,2,3;
|
||||||
|
-v or --verbose adds 1; --verbose=N sets level)
|
||||||
|
-D, --delete Unstow instead of stow
|
||||||
|
-R, --restow Restow (like stow -D followed by stow)
|
||||||
|
-V, --version Show Stow version number
|
||||||
|
-h, --help Show this help
|
||||||
|
EOT
|
||||||
|
exit($msg ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub version {
|
||||||
|
print "$ProgramName (GNU Stow) version $Version\n";
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is from Perl 4's fastcwd.pl, by John Bazik.
|
||||||
|
#
|
||||||
|
# Usage: $cwd = &fastcwd;
|
||||||
|
#
|
||||||
|
# This is a faster version of getcwd. It's also more dangerous
|
||||||
|
# because you might chdir out of a directory that you can't chdir back
|
||||||
|
# into.
|
||||||
|
|
||||||
|
sub fastcwd {
|
||||||
|
local($odev, $oino, $cdev, $cino, $tdev, $tino);
|
||||||
|
local(@path, $path);
|
||||||
|
local(*DIR);
|
||||||
|
|
||||||
|
($cdev, $cino) = stat('.');
|
||||||
|
for (;;) {
|
||||||
|
($odev, $oino) = ($cdev, $cino);
|
||||||
|
chdir('..');
|
||||||
|
($cdev, $cino) = stat('.');
|
||||||
|
last if $odev == $cdev && $oino == $cino;
|
||||||
|
opendir(DIR, '.');
|
||||||
|
for (;;) {
|
||||||
|
$_ = readdir(DIR);
|
||||||
|
next if $_ eq '.';
|
||||||
|
next if $_ eq '..';
|
||||||
|
|
||||||
|
last unless $_;
|
||||||
|
($tdev, $tino) = lstat($_);
|
||||||
|
last unless $tdev != $odev || $tino != $oino;
|
||||||
|
}
|
||||||
|
closedir(DIR);
|
||||||
|
unshift(@path, $_);
|
||||||
|
}
|
||||||
|
chdir($path = '/' . join('/', @path));
|
||||||
|
$path;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# mode: perl
|
||||||
|
# End:
|
4506
texinfo.tex
Normal file
4506
texinfo.tex
Normal file
File diff suppressed because it is too large
Load diff
3
version.texi
Normal file
3
version.texi
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
@set UPDATED 11 October 1996
|
||||||
|
@set EDITION 1.3.2
|
||||||
|
@set VERSION 1.3.2
|
Loading…
Reference in a new issue