Initial revision
This commit is contained in:
parent
21a17e09be
commit
177dd40152
6 changed files with 808 additions and 0 deletions
176
readline/INSTALL
Normal file
176
readline/INSTALL
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
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' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. 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 compiler output
|
||||||
|
(useful mainly for debugging `configure').
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If at some point `config.cache'
|
||||||
|
contains results you don't want to keep, you may remove or edit it.
|
||||||
|
|
||||||
|
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 simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object 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 kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package'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.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that
|
||||||
|
the `configure' script does not know about. You can give `configure'
|
||||||
|
initial values for variables by setting them in the environment. Using
|
||||||
|
a Bourne-compatible shell, you can do that on the command line like
|
||||||
|
this:
|
||||||
|
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||||
|
|
||||||
|
Or on systems that have the `env' program, you can do it like this:
|
||||||
|
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not supports the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a time
|
||||||
|
in the source code directory. After you have installed the package for
|
||||||
|
one architecture, use `make distclean' before reconfiguring for another
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PATH'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||||
|
PATH as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files will still use the regular prefix.
|
||||||
|
|
||||||
|
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'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' can not figure out
|
||||||
|
automatically, but needs to determine by the type of host the package
|
||||||
|
will run on. Usually `configure' can figure that out, but if it prints
|
||||||
|
a message saying it can not guess the host type, give it the
|
||||||
|
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name with three fields:
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the host type.
|
||||||
|
|
||||||
|
If you are building compiler tools for cross-compiling, you can also
|
||||||
|
use the `--target=TYPE' option to select the type of system they will
|
||||||
|
produce code for and the `--build=TYPE' option to select the type of
|
||||||
|
system on which you are compiling the package.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
145
readline/config.h.in
Normal file
145
readline/config.h.in
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Define if on MINIX. */
|
||||||
|
#undef _MINIX
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (int or void). */
|
||||||
|
#undef RETSIGTYPE
|
||||||
|
|
||||||
|
/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
||||||
|
#undef STAT_MACROS_BROKEN
|
||||||
|
|
||||||
|
#undef VOID_SIGHANDLER
|
||||||
|
|
||||||
|
/* Define if you have the lstat function. */
|
||||||
|
#undef HAVE_LSTAT
|
||||||
|
|
||||||
|
/* Define if you have the putenv function. */
|
||||||
|
#undef HAVE_PUTENV
|
||||||
|
|
||||||
|
/* Define if you have the select function. */
|
||||||
|
#undef HAVE_SELECT
|
||||||
|
|
||||||
|
/* Define if you have the setenv function. */
|
||||||
|
#undef HAVE_SETENV
|
||||||
|
|
||||||
|
/* Define if you have the strcasecmp function. */
|
||||||
|
#undef HAVE_STRCASECMP
|
||||||
|
|
||||||
|
/* Define if you have the setlocale function. */
|
||||||
|
#undef HAVE_SETLOCALE
|
||||||
|
|
||||||
|
/* Define if you have the tcgetattr function. */
|
||||||
|
#undef HAVE_TCGETATTR
|
||||||
|
|
||||||
|
/* Define if you have the strcoll function. */
|
||||||
|
#undef HAVE_STRCOLL
|
||||||
|
|
||||||
|
#undef STRCOLL_BROKEN
|
||||||
|
|
||||||
|
/* Define if you have the <dirent.h> header file. */
|
||||||
|
#undef HAVE_DIRENT_H
|
||||||
|
|
||||||
|
/* Define if you have the <ndir.h> header file. */
|
||||||
|
#undef HAVE_NDIR_H
|
||||||
|
|
||||||
|
/* Define if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/dir.h> header file. */
|
||||||
|
#undef HAVE_SYS_DIR_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/file.h> header file. */
|
||||||
|
#undef HAVE_SYS_FILE_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ndir.h> header file. */
|
||||||
|
#undef HAVE_SYS_NDIR_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/pte.h> header file. */
|
||||||
|
#undef HAVE_SYS_PTE_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ptem.h> header file. */
|
||||||
|
#undef HAVE_SYS_PTEM_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/select.h> header file. */
|
||||||
|
#undef HAVE_SYS_SELECT_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stream.h> header file. */
|
||||||
|
#undef HAVE_SYS_STREAM_H
|
||||||
|
|
||||||
|
/* Define if you have the <termcap.h> header file. */
|
||||||
|
#undef HAVE_TERMCAP_H
|
||||||
|
|
||||||
|
/* Define if you have the <termio.h> header file. */
|
||||||
|
#undef HAVE_TERMIO_H
|
||||||
|
|
||||||
|
/* Define if you have the <termios.h> header file. */
|
||||||
|
#undef HAVE_TERMIOS_H
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define if you have the <varargs.h> header file. */
|
||||||
|
#undef HAVE_VARARGS_H
|
||||||
|
|
||||||
|
/* Define if you have the <stdarg.h> header file. */
|
||||||
|
#undef HAVE_STDARG_H
|
||||||
|
|
||||||
|
#undef HAVE_LOCALE_H
|
||||||
|
|
||||||
|
/* Definitions pulled in from aclocal.m4. */
|
||||||
|
#undef VOID_SIGHANDLER
|
||||||
|
|
||||||
|
#undef GWINSZ_IN_SYS_IOCTL
|
||||||
|
|
||||||
|
#undef STRUCT_WINSIZE_IN_SYS_IOCTL
|
||||||
|
|
||||||
|
#undef STRUCT_WINSIZE_IN_TERMIOS
|
||||||
|
|
||||||
|
#undef TIOCSTAT_IN_SYS_IOCTL
|
||||||
|
|
||||||
|
#undef FIONREAD_IN_SYS_IOCTL
|
||||||
|
|
||||||
|
#undef SPEED_T_IN_SYS_TYPES
|
||||||
|
|
||||||
|
#undef HAVE_GETPW_DECLS
|
||||||
|
|
||||||
|
#undef STRUCT_DIRENT_HAS_D_INO
|
||||||
|
|
||||||
|
#undef STRUCT_DIRENT_HAS_D_FILENO
|
||||||
|
|
||||||
|
#undef HAVE_BSD_SIGNALS
|
||||||
|
|
||||||
|
#undef HAVE_POSIX_SIGNALS
|
||||||
|
|
||||||
|
#undef HAVE_USG_SIGHOLD
|
||||||
|
|
||||||
|
#undef MUST_REINSTALL_SIGHANDLERS
|
||||||
|
|
||||||
|
#undef HAVE_POSIX_SIGSETJMP
|
||||||
|
|
||||||
|
/* config.h.bot */
|
||||||
|
/* modify settings or make new ones based on what autoconf tells us. */
|
||||||
|
|
||||||
|
/* Ultrix botches type-ahead when switching from canonical to
|
||||||
|
non-canonical mode, at least through version 4.3 */
|
||||||
|
#if !defined (HAVE_TERMIOS_H) || !defined (HAVE_TCGETATTR) || defined (ultrix)
|
||||||
|
# define TERMIOS_MISSING
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (STRCOLL_BROKEN)
|
||||||
|
# undef HAVE_STRCOLL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__STDC__) && defined (HAVE_STDARG_H)
|
||||||
|
# define PREFER_STDARG
|
||||||
|
# define USE_VARARGS
|
||||||
|
#else
|
||||||
|
# if defined (HAVE_VARARGS_H)
|
||||||
|
# define PREFER_VARARGS
|
||||||
|
# define USE_VARARGS
|
||||||
|
# endif
|
||||||
|
#endif
|
82
readline/examples/histexamp.c
Normal file
82
readline/examples/histexamp.c
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
char line[1024], *t;
|
||||||
|
int len, done = 0;
|
||||||
|
|
||||||
|
line[0] = 0;
|
||||||
|
|
||||||
|
using_history ();
|
||||||
|
while (!done)
|
||||||
|
{
|
||||||
|
printf ("history$ ");
|
||||||
|
fflush (stdout);
|
||||||
|
t = fgets (line, sizeof (line) - 1, stdin);
|
||||||
|
if (t && *t)
|
||||||
|
{
|
||||||
|
len = strlen (t);
|
||||||
|
if (t[len - 1] == '\n')
|
||||||
|
t[len - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!t)
|
||||||
|
strcpy (line, "quit");
|
||||||
|
|
||||||
|
if (line[0])
|
||||||
|
{
|
||||||
|
char *expansion;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
using_history ();
|
||||||
|
|
||||||
|
result = history_expand (line, &expansion);
|
||||||
|
if (result)
|
||||||
|
fprintf (stderr, "%s\n", expansion);
|
||||||
|
|
||||||
|
if (result < 0 || result == 2)
|
||||||
|
{
|
||||||
|
free (expansion);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
add_history (expansion);
|
||||||
|
strncpy (line, expansion, sizeof (line) - 1);
|
||||||
|
free (expansion);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp (line, "quit") == 0)
|
||||||
|
done = 1;
|
||||||
|
else if (strcmp (line, "save") == 0)
|
||||||
|
write_history ("history_file");
|
||||||
|
else if (strcmp (line, "read") == 0)
|
||||||
|
read_history ("history_file");
|
||||||
|
else if (strcmp (line, "list") == 0)
|
||||||
|
{
|
||||||
|
register HIST_ENTRY **the_list;
|
||||||
|
register int i;
|
||||||
|
|
||||||
|
the_list = history_list ();
|
||||||
|
if (the_list)
|
||||||
|
for (i = 0; the_list[i]; i++)
|
||||||
|
printf ("%d: %s\n", i + history_base, the_list[i]->line);
|
||||||
|
}
|
||||||
|
else if (strncmp (line, "delete", 6) == 0)
|
||||||
|
{
|
||||||
|
int which;
|
||||||
|
if ((sscanf (line + 6, "%d", &which)) == 1)
|
||||||
|
{
|
||||||
|
HIST_ENTRY *entry = remove_history (which);
|
||||||
|
if (!entry)
|
||||||
|
fprintf (stderr, "No such entry %d\n", which);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
free (entry->line);
|
||||||
|
free (entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf (stderr, "non-numeric arg given to `delete'\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
138
readline/shell.c
Normal file
138
readline/shell.c
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
/* shell.c -- readline utility functions that are normally provided by
|
||||||
|
bash when readline is linked as part of the shell. */
|
||||||
|
|
||||||
|
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of the GNU Readline Library, a library for
|
||||||
|
reading lines of text with interactive input and history editing.
|
||||||
|
|
||||||
|
The GNU Readline Library 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 1, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
The GNU Readline Library is distributed in the hope that it will be
|
||||||
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
The GNU General Public License is often shipped with GNU software, and
|
||||||
|
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||||
|
have a copy of the license, write to the Free Software Foundation,
|
||||||
|
675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
#define READLINE_LIBRARY
|
||||||
|
|
||||||
|
#if defined (HAVE_CONFIG_H)
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (HAVE_UNISTD_H)
|
||||||
|
# ifdef _MINIX
|
||||||
|
# include <sys/types.h>
|
||||||
|
# endif
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif /* HAVE_UNISTD_H */
|
||||||
|
|
||||||
|
#if defined (HAVE_STDLIB_H)
|
||||||
|
# include <stdlib.h>
|
||||||
|
#else
|
||||||
|
# include "ansi_stdlib.h"
|
||||||
|
#endif /* HAVE_STDLIB_H */
|
||||||
|
|
||||||
|
#if defined (HAVE_STRING_H)
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
#endif /* !HAVE_STRING_H */
|
||||||
|
|
||||||
|
extern char *xmalloc (), *xrealloc ();
|
||||||
|
|
||||||
|
#if !defined (SHELL)
|
||||||
|
|
||||||
|
#ifdef savestring
|
||||||
|
#undef savestring
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Backwards compatibility, now that savestring has been removed from
|
||||||
|
all `public' readline header files. */
|
||||||
|
char *
|
||||||
|
savestring (s)
|
||||||
|
char *s;
|
||||||
|
{
|
||||||
|
return ((char *)strcpy (xmalloc (1 + (int)strlen (s)), (s)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Does shell-like quoting using single quotes. */
|
||||||
|
char *
|
||||||
|
single_quote (string)
|
||||||
|
char *string;
|
||||||
|
{
|
||||||
|
register int c;
|
||||||
|
char *result, *r, *s;
|
||||||
|
|
||||||
|
result = (char *)xmalloc (3 + (3 * strlen (string)));
|
||||||
|
r = result;
|
||||||
|
*r++ = '\'';
|
||||||
|
|
||||||
|
for (s = string; s && (c = *s); s++)
|
||||||
|
{
|
||||||
|
*r++ = c;
|
||||||
|
|
||||||
|
if (c == '\'')
|
||||||
|
{
|
||||||
|
*r++ = '\\'; /* insert escaped single quote */
|
||||||
|
*r++ = '\'';
|
||||||
|
*r++ = '\''; /* start new quoted string */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*r++ = '\'';
|
||||||
|
*r = '\0';
|
||||||
|
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the environment variables LINES and COLUMNS to lines and cols,
|
||||||
|
respectively. */
|
||||||
|
void
|
||||||
|
set_lines_and_columns (lines, cols)
|
||||||
|
int lines, cols;
|
||||||
|
{
|
||||||
|
char *b;
|
||||||
|
|
||||||
|
#if defined (HAVE_PUTENV)
|
||||||
|
b = xmalloc (24);
|
||||||
|
sprintf (b, "LINES=%d", lines);
|
||||||
|
putenv (b);
|
||||||
|
b = xmalloc (24);
|
||||||
|
sprintf (b, "COLUMNS=%d", cols);
|
||||||
|
putenv (b);
|
||||||
|
#else /* !HAVE_PUTENV */
|
||||||
|
# if defined (HAVE_SETENV)
|
||||||
|
b = xmalloc (8);
|
||||||
|
sprintf (b, "%d", lines);
|
||||||
|
setenv ("LINES", b, 1);
|
||||||
|
b = xmalloc (8);
|
||||||
|
sprintf (b, "%d", cols);
|
||||||
|
setenv ("COLUMNS", b, 1);
|
||||||
|
# endif /* HAVE_SETENV */
|
||||||
|
#endif /* !HAVE_PUTENV */
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
get_env_value (varname)
|
||||||
|
char *varname;
|
||||||
|
{
|
||||||
|
return ((char *)getenv (varname));
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* SHELL */
|
||||||
|
extern char *get_string_value ();
|
||||||
|
|
||||||
|
char *
|
||||||
|
get_env_value (varname)
|
||||||
|
char *varname;
|
||||||
|
{
|
||||||
|
return get_string_value (varname);
|
||||||
|
}
|
||||||
|
#endif /* SHELL */
|
235
readline/support/install.sh
Executable file
235
readline/support/install.sh
Executable file
|
@ -0,0 +1,235 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
# This comes from X11R5.
|
||||||
|
#
|
||||||
|
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
|
||||||
|
#
|
||||||
|
# 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}"
|
||||||
|
|
||||||
|
tranformbasename=""
|
||||||
|
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
|
32
readline/support/mkdirs
Executable file
32
readline/support/mkdirs
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# mkdirs - a work-alike for `mkdir -p'
|
||||||
|
#
|
||||||
|
# Chet Ramey
|
||||||
|
# chet@po.cwru.edu
|
||||||
|
|
||||||
|
for dir
|
||||||
|
do
|
||||||
|
|
||||||
|
test -d "$dir" && continue
|
||||||
|
|
||||||
|
tomake=$dir
|
||||||
|
while test -n "$dir" ; do
|
||||||
|
# dir=${dir%/*}
|
||||||
|
# dir=`expr "$dir" ':' '\(/.*\)/[^/]*'`
|
||||||
|
if dir=`expr "$dir" ':' '\(.*\)/[^/]*'`; then
|
||||||
|
tomake="$dir $tomake"
|
||||||
|
else
|
||||||
|
dir=
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for d in $tomake
|
||||||
|
do
|
||||||
|
test -d "$d" && continue
|
||||||
|
echo mkdir "$d"
|
||||||
|
mkdir "$d"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Add table
Reference in a new issue