Merge branch 'master' into develop

This commit is contained in:
Glen Wiley 2013-07-15 17:57:58 -04:00
commit bd186ebca0
36 changed files with 5050 additions and 421 deletions

View File

@ -1,7 +1,7 @@
getdns API getdns API
========== ==========
* Date: 2013-06-20 * Date: 2013-06-27
* GitHub: <https://github.com/verisign/getdns> * GitHub: <https://github.com/verisign/getdns>
getdns is a [modern asynchronous DNS API](http://www.vpnc.org/getdns-api/) intended to make all types of DNS information easily available as described by Paul Hoffman. This implementation is licensed under the [MIT license](http://opensource.org/licenses/MIT). getdns is a [modern asynchronous DNS API](http://www.vpnc.org/getdns-api/) intended to make all types of DNS information easily available as described by Paul Hoffman. This implementation is licensed under the [MIT license](http://opensource.org/licenses/MIT).
@ -27,16 +27,16 @@ Non-goals (things we will not be doing) include:
Contributors Contributors
============ ============
* Neel Goyal, Verisign, Inc. Neel Goyal, Verisign, Inc.
* Allison Mankin, Verisign, Inc. Allison Mankin, Verisign, Inc.
* Melinda Shore Melinda Shore, No Mountain Software LLC
* Glen Wiley, Verisign, Inc. Glen Wiley, Verisign, Inc.
External Dependencies External Dependencies
===================== =====================
External dependencies are linked outside the getdns API build tree (we rely on configure to find them). External dependencies are linked outside the getdns API build tree (we rely on configure to find them).
The project relies on [libdns from NL](https://www.nlnetlabs.nl/projects/ldns/) for parsing and constructing DNS packets. Version 1.6.16 The project relies on [libldns from NL](https://www.nlnetlabs.nl/projects/ldns/) for parsing and constructing DNS packets. Version 1.6.16 (note that building ldns may require openssl headers and libraries)
Although [libevent](http://libevent.org) is used initially to implement the asynchronous model, future work may include a move to other mechanisms (epoll based etc.). Version 2.0.21 stable Although [libevent](http://libevent.org) is used initially to implement the asynchronous model, future work may include a move to other mechanisms (epoll based etc.). Version 2.0.21 stable

1
src/COPYING Symbolic link
View File

@ -0,0 +1 @@
/usr/share/automake-1.11/COPYING

50
src/Makefile Normal file
View File

@ -0,0 +1,50 @@
#
# Makefile. Generated from Makefile.in by configure.
#
package = getdns
version = 0.320
tarname = getdns
distdir = $(tarname)-$(version)
prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
srcdir = .
all clean getdns:
cd common && $(MAKE) $@
$(distdir): FORCE
mkdir -p $(distdir)/src
cp $(srcdir)/configure.ac $(distdir)
cp $(srcdir)/configure $(distdir)
cp $(srcdir)/Makefile.in $(distdir)
cp $(srcdir)/src/Makefile.in $(distdir)/src
distcheck: $(distdir).tar.gz
gzip -cd $(distdir).tar.gz | tar xvf -
cd $(distdir) && ./configure
cd $(distdir) && $(MAKE) all
cd $(distdir) && $(MAKE) check
cd $(distdir) && $(MAKE) DESTDIR=$${PWD}/_inst install
cd $(distdir) && $(MAKE) DESTDIR=$${PWD}/_inst uninstall
@remaining="`find $${PWD}/$(distdir)/_inst -type f | wc -l`"; \
if test "$${remaining}" -ne 0; then
echo "@@@ $${remaining} file(s) remaining in stage directory!"; \
exit 1; \
fi
cd $(distdir) && $(MAKE) clean
rm -rf $(distdir)
@echo "*** Package $(distdir).tar.gz is ready for distribution"
Makefile: Makefile.in config.status
./config.status $@
configure.status: configure
./config.status --recheck
.PHONY: all clean

View File

@ -16,7 +16,7 @@ srcdir = @srcdir@
VPATH = @srcdir@ VPATH = @srcdir@
all clean getdns: all clean getdns:
cd src && $(MAKE) $@ cd common && $(MAKE) $@
$(distdir): FORCE $(distdir): FORCE
mkdir -p $(distdir)/src mkdir -p $(distdir)/src

64
src/common/Makefile Normal file
View File

@ -0,0 +1,64 @@
#
# common/Makefile. Generated from Makefile.in by configure.
#
package = getdns
version = 0.320
tarname = getdns
distdir = $(tarname)-$(version)
prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
srcdir = .
CC=gcc
CFLAGS=-g -I$(srcdir)/ -std=c99
LDFLAGS=-L.
LDLIBS=-levent_core -lldns -lgetdns
PROGRAMS=example-simple-answers example-tree example-all-functions example-synchronous
all: libgetdns example-simple-answers example-tree example-all-functions example-synchronous
getdns_core_only.o: getdns_core_only.c
$(CC) -c -Wall -fPIC $(CFLAGS) $^
libgetdns: getdns_core_only.c
$(CC) $(CFLAGS) -shared -o libgetdns.so $^
clean:
rm -f *.o $(PROGRAMS) libgetdns.so
$(distdir): FORCE
mkdir -p $(distdir)/src
cp configure.ac $(distdir)
cp configure $(distdir)
cp Makefile.in $(distdir)
cp src/Makefile.in $(distdir)/src
distcheck: $(distdir).tar.gz
gzip -cd $(distdir).tar.gz | tar xvf -
cd $(distdir) && ./configure
cd $(distdir) && $(MAKE) all
cd $(distdir) && $(MAKE) check
cd $(distdir) && $(MAKE) DESTDIR=$${PWD}/_inst install
cd $(distdir) && $(MAKE) DESTDIR=$${PWD}/_inst uninstall
@remaining="`find $${PWD}/$(distdir)/_inst -type f | wc -l`"; \
if test "$${remaining}" -ne 0; then
echo "@@@ $${remaining} file(s) remaining in stage directory!"; \
exit 1; \
fi
cd $(distdir) && $(MAKE) clean
rm -rf $(distdir)
@echo "*** Package $(distdir).tar.gz is ready for distribution"
Makefile: Makefile.in ../config.status
cd .. && ./config.status $@
configure.status: configure
cd .. && ./config.status --recheck
.PHONY: clean

View File

@ -15,14 +15,11 @@ srcdir = @srcdir@
VPATH = @srcdir@ VPATH = @srcdir@
CC=gcc CC=gcc
CFLAGS=-g -I. -std=c99 CFLAGS=-g -I$(srcdir)/ -std=c99
LDFLAGS=-L. LDFLAGS=-L.
LDLIBS=-levent_core -lldns -lgetdns LDLIBS=-levent_core -lldns -lgetdns
PROGRAMS=example-simple-answers example-tree example-all-functions example-synchronous PROGRAMS=example-simple-answers example-tree example-all-functions example-synchronous
# example-simple-answers.c example-tree.c
# example-all-functions.c example-synchronous.c getdns_core_only.c
all: libgetdns example-simple-answers example-tree example-all-functions example-synchronous all: libgetdns example-simple-answers example-tree example-all-functions example-synchronous
getdns_core_only.o: getdns_core_only.c getdns_core_only.o: getdns_core_only.c
@ -57,11 +54,11 @@ distcheck: $(distdir).tar.gz
rm -rf $(distdir) rm -rf $(distdir)
@echo "*** Package $(distdir).tar.gz is ready for distribution" @echo "*** Package $(distdir).tar.gz is ready for distribution"
Makefile: Makefile.in config.status Makefile: Makefile.in ../config.status
./config.status $@ cd .. && ./config.status $@
configure.status: configure configure.status: configure
./config.status --recheck cd .. && ./config.status --recheck
.PHONY: clean .PHONY: clean

64
src/common/Makefile.in~ Normal file
View File

@ -0,0 +1,64 @@
#
# @configure_input@
#
package = @PACKAGE_NAME@
version = @PACKAGE_VERSION@
tarname = @PACKAGE_TARNAME@
distdir = $(tarname)-$(version)
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
srcdir = @srcdir@
VPATH = @srcdir@
CC=gcc
CFLAGS=-g -I. -std=c99
LDFLAGS=-L.
LDLIBS=-levent_core -lldns -lgetdns
PROGRAMS=example-simple-answers example-tree example-all-functions example-synchronous
all: libgetdns example-simple-answers example-tree example-all-functions example-synchronous
getdns_core_only.o: getdns_core_only.c
$(CC) -c -Wall -fPIC $(CFLAGS) $^
libgetdns: getdns_core_only.c
$(CC) $(CFLAGS) -shared -o libgetdns.so $^
clean:
rm -f *.o $(PROGRAMS) libgetdns.so
$(distdir): FORCE
mkdir -p $(distdir)/src
cp configure.ac $(distdir)
cp configure $(distdir)
cp Makefile.in $(distdir)
cp src/Makefile.in $(distdir)/src
distcheck: $(distdir).tar.gz
gzip -cd $(distdir).tar.gz | tar xvf -
cd $(distdir) && ./configure
cd $(distdir) && $(MAKE) all
cd $(distdir) && $(MAKE) check
cd $(distdir) && $(MAKE) DESTDIR=$${PWD}/_inst install
cd $(distdir) && $(MAKE) DESTDIR=$${PWD}/_inst uninstall
@remaining="`find $${PWD}/$(distdir)/_inst -type f | wc -l`"; \
if test "$${remaining}" -ne 0; then
echo "@@@ $${remaining} file(s) remaining in stage directory!"; \
exit 1; \
fi
cd $(distdir) && $(MAKE) clean
rm -rf $(distdir)
@echo "*** Package $(distdir).tar.gz is ready for distribution"
Makefile: Makefile.in ../config.status
cd .. && ./config.status $@
configure.status: configure
cd .. && ./config.status --recheck
.PHONY: clean

17
src/common/config.log Normal file
View File

@ -0,0 +1,17 @@
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by getdns config.status 0.320, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ../config.status Makefile
on ubuntu-11-10
config.status:737: creating Makefile

View File

@ -107,9 +107,9 @@ of this new API are:</p>
</ul> </ul>
<p>There is more background into the design and future goals of this API <p>There is more background into the design and future goals of this API
<a href="index.html#Commentary">later in this document</a>.</p> <a href="#Commentary">later in this document</a>.</p>
<p>This document was discussed on the <a href="../mailman/listinfo/getdns-api"> <p>This document was discussed on the <a href="http://www.vpnc.org/mailman/listinfo/getdns-api">
getdns-api mailing list</a>; future versions of the API might be discussed there as well. getdns-api mailing list</a>; future versions of the API might be discussed there as well.
(If you (If you
want to contact the editor off-list, please send mail to <a want to contact the editor off-list, please send mail to <a
@ -147,7 +147,7 @@ getdns_general(
<p class=define><code><b>context</b></code></p> <p class=define><code><b>context</b></code></p>
<p class=descrip>A pointer to the DNS context that is to be used with this call. DNS contexts are <p class=descrip>A pointer to the DNS context that is to be used with this call. DNS contexts are
described <a href="index.html#Contexts">later in this document</a>. Note that a context <i>must</i> be created described <a href="#Contexts">later in this document</a>. Note that a context <i>must</i> be created
before calling the function.</p> before calling the function.</p>
<p class=define><code><b>*name</b></code></p> <p class=define><code><b>*name</b></code></p>
@ -167,7 +167,7 @@ defined macros for most of the RRtypes by name; the definition names all start w
<p class=define><code><b>*extensions</b></code></p> <p class=define><code><b>*extensions</b></code></p>
<p class=descrip>Specifies the extensions for this request; the value may be NULL if there are no <p class=descrip>Specifies the extensions for this request; the value may be NULL if there are no
extensions. See <a href="index.html#Extensions">the section below</a> for information on how to specify extensions. See <a href="#Extensions">the section below</a> for information on how to specify
the extensions used for a request.</p> the extensions used for a request.</p>
<p class=define><code><b>*userarg</b></code></p> <p class=define><code><b>*userarg</b></code></p>
@ -197,7 +197,7 @@ the function was bad, <code>GETDNS_RETURN_BAD_CONTEXT</code> if the context poin
<code>GETDNS_RETURN_NO_SUCH_EXTENSION</code> if one or more extensions do not exist, or <code>GETDNS_RETURN_NO_SUCH_EXTENSION</code> if one or more extensions do not exist, or
<code>GETDNS_RETURN_EXTENSION_MISFORMAT</code> if the contents of one or more of the <code>GETDNS_RETURN_EXTENSION_MISFORMAT</code> if the contents of one or more of the
extensions is incorrect. All of the return values are given <a extensions is incorrect. All of the return values are given <a
href="index.html#ReturnCodes">later in this document</a>.</p> href="#ReturnCodes">later in this document</a>.</p>
<h2>1.2 <code>getdns_address()</code></h2> <h2>1.2 <code>getdns_address()</code></h2>
@ -281,8 +281,8 @@ typedef void (*getdns_callback_t)(
<p class=define><code><b>context</b></code></p> <p class=define><code><b>context</b></code></p>
<p class=descrip>The DNS context that was used in the calling function. See <a <p class=descrip>The DNS context that was used in the calling function. See <a
href="index.html#ContextInitial">below</a> for a description of the basic use of contexts, and <a href="#ContextInitial">below</a> for a description of the basic use of contexts, and <a
href="index.html#Contexts">later</a> for more advanced use.</p> href="#Contexts">later</a> for more advanced use.</p>
<p class=define><code><b>callback_type</b></code></p> <p class=define><code><b>callback_type</b></code></p>
<p class=descrip>Supplies the reason for the callback. See below for the codes and reasons.</p> <p class=descrip>Supplies the reason for the callback. See below for the codes and reasons.</p>
@ -875,7 +875,7 @@ bindata), <code>type</code> (an int), <code>class</code> (an int), <code>ttl</co
<code>rdata</code> (a dict); there is no name equivalent to the RDLENGTH field.</p> <code>rdata</code> (a dict); there is no name equivalent to the RDLENGTH field.</p>
<p>The <code>rdata</code> dict has different names for each response type. There is a <a <p>The <code>rdata</code> dict has different names for each response type. There is a <a
href="index.html#TypeList">complete list of the types defined</a> in the API. For names that end in href="#TypeList">complete list of the types defined</a> in the API. For names that end in
"-obsolete" or "-unknown", the bindata is the entire RDATA field. For example, the "-obsolete" or "-unknown", the bindata is the entire RDATA field. For example, the
<code>rdata</code> for an A record has a name <code>ipv4_address</code> (a bindata); the <code>rdata</code> for an A record has a name <code>ipv4_address</code> (a bindata); the
<code>rdata</code> for an SRV record has the names <code>priority</code> (an int), <code>rdata</code> for an SRV record has the names <code>priority</code> (an int),
@ -1758,7 +1758,7 @@ context for use on a different thread. It is just fine for an application to hav
and some DNS-heavy applications will certainly want to have many even if the application uses and some DNS-heavy applications will certainly want to have many even if the application uses
a single thread.</p> a single thread.</p>
<p>See <a href="index.html#ContextInitial">above</a> for the method for creating and destroying <p>See <a href="#ContextInitial">above</a> for the method for creating and destroying
contexts. When the context is used in the API for the first time and <code>set_from_os</code> is contexts. When the context is used in the API for the first time and <code>set_from_os</code> is
<code>true</code>, the API starts replacing some of the values with values from the OS, such as <code>true</code>, the API starts replacing some of the values with values from the OS, such as
those that would be found in res_query(3), /etc/resolv.conf, and so on, then proceeds with the new those that would be found in res_query(3), /etc/resolv.conf, and so on, then proceeds with the new
@ -1805,7 +1805,7 @@ called when any context is changed. Such changes might be from automatic
changes from the API (such as changes to /etc/resolv.conf), or might be from any of the changes from the API (such as changes to /etc/resolv.conf), or might be from any of the
API functions in this section being called. The second argument to the callback function API functions in this section being called. The second argument to the callback function
specifies which of the context changed; the context codes are listed specifies which of the context changed; the context codes are listed
<a href="index.html#ContextCodes">later in this document</a>.</p> <a href="#ContextCodes">later in this document</a>.</p>
<h2>8.3 Contexts for Basic Resolution</h2> <h2>8.3 Contexts for Basic Resolution</h2>

4781
src/configure vendored Executable file

File diff suppressed because it is too large Load Diff

31
src/configure.ac Normal file
View File

@ -0,0 +1,31 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
# @configure_input@
#
AC_PREREQ([2.68])
AC_INIT([getdns], [0.320], [melinda.shore@nomountain.net])
# AM_INIT_AUTOMAKE([getkey], [0.320])
AC_CONFIG_SRCDIR([configure.ac])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
AC_CHECK_LIB([event_core], [event_base_new])
AC_CHECK_LIB([getdns], [getdns_context_create])
AC_CHECK_LIB([ldns], [ldns_dname_new_frm_str])
# Checks for header files.
AC_CHECK_HEADERS([inttypes.h netinet/in.h stdint.h stdlib.h string.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_TYPE_SIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
AC_CONFIG_FILES([Makefile common/Makefile])
AC_OUTPUT

View File

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