14 changed files with 3617 additions and 38 deletions
Split View
Diff Options
-
3Makefile.am
-
4Makefile.in
-
88config.h.in
-
1144configure
-
29configure.ac
-
26libasyncns/Makefile.am
-
571libasyncns/Makefile.in
-
1500libasyncns/asyncns.c
-
163libasyncns/asyncns.h
-
3src/Makefile.am
-
15src/Makefile.in
-
1src/jconf.h
-
99src/server.c
-
9src/server.h
@ -1,3 +1,2 @@ |
|||
#bin_PROGRAMS = ss-local ss-server
|
|||
SUBDIRS = libev src |
|||
SUBDIRS = libasyncns libev src |
|||
ACLOCAL_AMFLAGS = -I m4 |
1144
configure
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,26 @@ |
|||
# This file is part of libasyncns.
|
|||
#
|
|||
# Copyright 2005-2008 Lennart Poettering
|
|||
#
|
|||
# libasyncns is free software; you can redistribute it and/or modify
|
|||
# it under the terms of the GNU Lesser General Public License as
|
|||
# published by the Free Software Foundation, either version 2.1 of the
|
|||
# License, or (at your option) any later version.
|
|||
#
|
|||
# libasyncns is distributed in the hope that it will be useful, but
|
|||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|||
# Lesser General Public License for more details.
|
|||
#
|
|||
# You should have received a copy of the GNU Lesser General Public
|
|||
# License along with libasyncns. If not, see
|
|||
# <http://www.gnu.org/licenses/>.
|
|||
|
|||
AM_CFLAGS=-D__EXTENSIONS__ $(PTHREAD_CFLAGS) |
|||
|
|||
lib_LTLIBRARIES=libasyncns.la |
|||
libasyncns_la_CC=$(PTHREAD_CC) |
|||
libasyncns_la_SOURCES=asyncns.c asyncns.h |
|||
libasyncns_la_LIBADD=$(PTHREAD_LIBS) |
|||
|
|||
include_HEADERS=asyncns.h |
@ -0,0 +1,571 @@ |
|||
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
|||
# @configure_input@
|
|||
|
|||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
|||
# Foundation, Inc.
|
|||
# This Makefile.in is free software; the Free Software Foundation
|
|||
# gives unlimited permission to copy and/or distribute it,
|
|||
# with or without modifications, as long as this notice is preserved.
|
|||
|
|||
# This program is distributed in the hope that it will be useful,
|
|||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|||
# PARTICULAR PURPOSE.
|
|||
|
|||
@SET_MAKE@ |
|||
|
|||
# This file is part of libasyncns.
|
|||
#
|
|||
# Copyright 2005-2008 Lennart Poettering
|
|||
#
|
|||
# libasyncns is free software; you can redistribute it and/or modify
|
|||
# it under the terms of the GNU Lesser General Public License as
|
|||
# published by the Free Software Foundation, either version 2.1 of the
|
|||
# License, or (at your option) any later version.
|
|||
#
|
|||
# libasyncns is distributed in the hope that it will be useful, but
|
|||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|||
# Lesser General Public License for more details.
|
|||
#
|
|||
# You should have received a copy of the GNU Lesser General Public
|
|||
# License along with libasyncns. If not, see
|
|||
# <http://www.gnu.org/licenses/>.
|
|||
|
|||
|
|||
VPATH = @srcdir@ |
|||
pkgdatadir = $(datadir)/@PACKAGE@ |
|||
pkgincludedir = $(includedir)/@PACKAGE@ |
|||
pkglibdir = $(libdir)/@PACKAGE@ |
|||
pkglibexecdir = $(libexecdir)/@PACKAGE@ |
|||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
|||
install_sh_DATA = $(install_sh) -c -m 644 |
|||
install_sh_PROGRAM = $(install_sh) -c |
|||
install_sh_SCRIPT = $(install_sh) -c |
|||
INSTALL_HEADER = $(INSTALL_DATA) |
|||
transform = $(program_transform_name) |
|||
NORMAL_INSTALL = : |
|||
PRE_INSTALL = : |
|||
POST_INSTALL = : |
|||
NORMAL_UNINSTALL = : |
|||
PRE_UNINSTALL = : |
|||
POST_UNINSTALL = : |
|||
build_triplet = @build@ |
|||
host_triplet = @host@ |
|||
subdir = libasyncns |
|||
DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
|
|||
$(srcdir)/Makefile.in |
|||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
|||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
|||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
|||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
|||
$(top_srcdir)/libev/libev.m4 $(top_srcdir)/configure.ac |
|||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||
$(ACLOCAL_M4) |
|||
mkinstalldirs = $(install_sh) -d |
|||
CONFIG_HEADER = $(top_builddir)/config.h |
|||
CONFIG_CLEAN_FILES = |
|||
CONFIG_CLEAN_VPATH_FILES = |
|||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; |
|||
am__vpath_adj = case $$p in \
|
|||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
|||
*) f=$$p;; \
|
|||
esac; |
|||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; |
|||
am__install_max = 40 |
|||
am__nobase_strip_setup = \
|
|||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` |
|||
am__nobase_strip = \
|
|||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" |
|||
am__nobase_list = $(am__nobase_strip_setup); \
|
|||
for p in $$list; do echo "$$p $$p"; done | \
|
|||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
|||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
|||
if (++n[$$2] == $(am__install_max)) \
|
|||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
|||
END { for (dir in files) print dir, files[dir] }' |
|||
am__base_list = \
|
|||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
|||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' |
|||
am__uninstall_files_from_dir = { \
|
|||
test -z "$$files" \
|
|||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
|||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
|||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
|||
} |
|||
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" |
|||
LTLIBRARIES = $(lib_LTLIBRARIES) |
|||
libasyncns_la_DEPENDENCIES = |
|||
am_libasyncns_la_OBJECTS = asyncns.lo |
|||
libasyncns_la_OBJECTS = $(am_libasyncns_la_OBJECTS) |
|||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) |
|||
depcomp = $(SHELL) $(top_srcdir)/depcomp |
|||
am__depfiles_maybe = depfiles |
|||
am__mv = mv -f |
|||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) |
|||
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
|||
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) |
|||
CCLD = $(CC) |
|||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
|||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
|||
$(LDFLAGS) -o $@ |
|||
SOURCES = $(libasyncns_la_SOURCES) |
|||
DIST_SOURCES = $(libasyncns_la_SOURCES) |
|||
HEADERS = $(include_HEADERS) |
|||
ETAGS = etags |
|||
CTAGS = ctags |
|||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
|||
ACLOCAL = @ACLOCAL@ |
|||
AMTAR = @AMTAR@ |
|||
AR = @AR@ |
|||
AUTOCONF = @AUTOCONF@ |
|||
AUTOHEADER = @AUTOHEADER@ |
|||
AUTOMAKE = @AUTOMAKE@ |
|||
AWK = @AWK@ |
|||
CC = @CC@ |
|||
CCDEPMODE = @CCDEPMODE@ |
|||
CFLAGS = @CFLAGS@ |
|||
CPP = @CPP@ |
|||
CPPFLAGS = @CPPFLAGS@ |
|||
CYGPATH_W = @CYGPATH_W@ |
|||
DEFS = @DEFS@ |
|||
DEPDIR = @DEPDIR@ |
|||
DLLTOOL = @DLLTOOL@ |
|||
DSYMUTIL = @DSYMUTIL@ |
|||
DUMPBIN = @DUMPBIN@ |
|||
ECHO_C = @ECHO_C@ |
|||
ECHO_N = @ECHO_N@ |
|||
ECHO_T = @ECHO_T@ |
|||
EGREP = @EGREP@ |
|||
EXEEXT = @EXEEXT@ |
|||
FGREP = @FGREP@ |
|||
GREP = @GREP@ |
|||
INSTALL = @INSTALL@ |
|||
INSTALL_DATA = @INSTALL_DATA@ |
|||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
|||
INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
|||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ |
|||
LD = @LD@ |
|||
LDFLAGS = @LDFLAGS@ |
|||
LIBOBJS = @LIBOBJS@ |
|||
LIBS = @LIBS@ |
|||
LIBTOOL = @LIBTOOL@ |
|||
LIPO = @LIPO@ |
|||
LN_S = @LN_S@ |
|||
LTLIBOBJS = @LTLIBOBJS@ |
|||
MAKEINFO = @MAKEINFO@ |
|||
MANIFEST_TOOL = @MANIFEST_TOOL@ |
|||
MKDIR_P = @MKDIR_P@ |
|||
NM = @NM@ |
|||
NMEDIT = @NMEDIT@ |
|||
OBJDUMP = @OBJDUMP@ |
|||
OBJEXT = @OBJEXT@ |
|||
OTOOL = @OTOOL@ |
|||
OTOOL64 = @OTOOL64@ |
|||
PACKAGE = @PACKAGE@ |
|||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ |
|||
PACKAGE_NAME = @PACKAGE_NAME@ |
|||
PACKAGE_STRING = @PACKAGE_STRING@ |
|||
PACKAGE_TARNAME = @PACKAGE_TARNAME@ |
|||
PACKAGE_URL = @PACKAGE_URL@ |
|||
PACKAGE_VERSION = @PACKAGE_VERSION@ |
|||
PATH_SEPARATOR = @PATH_SEPARATOR@ |
|||
RANLIB = @RANLIB@ |
|||
SED = @SED@ |
|||
SET_MAKE = @SET_MAKE@ |
|||
SHELL = @SHELL@ |
|||
STRIP = @STRIP@ |
|||
VERSION = @VERSION@ |
|||
abs_builddir = @abs_builddir@ |
|||
abs_srcdir = @abs_srcdir@ |
|||
abs_top_builddir = @abs_top_builddir@ |
|||
abs_top_srcdir = @abs_top_srcdir@ |
|||
ac_ct_AR = @ac_ct_AR@ |
|||
ac_ct_CC = @ac_ct_CC@ |
|||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ |
|||
am__include = @am__include@ |
|||
am__leading_dot = @am__leading_dot@ |
|||
am__quote = @am__quote@ |
|||
am__tar = @am__tar@ |
|||
am__untar = @am__untar@ |
|||
bindir = @bindir@ |
|||
build = @build@ |
|||
build_alias = @build_alias@ |
|||
build_cpu = @build_cpu@ |
|||
build_os = @build_os@ |
|||
build_vendor = @build_vendor@ |
|||
builddir = @builddir@ |
|||
datadir = @datadir@ |
|||
datarootdir = @datarootdir@ |
|||
docdir = @docdir@ |
|||
dvidir = @dvidir@ |
|||
exec_prefix = @exec_prefix@ |
|||
host = @host@ |
|||
host_alias = @host_alias@ |
|||
host_cpu = @host_cpu@ |
|||
host_os = @host_os@ |
|||
host_vendor = @host_vendor@ |
|||
htmldir = @htmldir@ |
|||
includedir = @includedir@ |
|||
infodir = @infodir@ |
|||
install_sh = @install_sh@ |
|||
libdir = @libdir@ |
|||
libexecdir = @libexecdir@ |
|||
localedir = @localedir@ |
|||
localstatedir = @localstatedir@ |
|||
mandir = @mandir@ |
|||
mkdir_p = @mkdir_p@ |
|||
oldincludedir = @oldincludedir@ |
|||
pdfdir = @pdfdir@ |
|||
prefix = @prefix@ |
|||
program_transform_name = @program_transform_name@ |
|||
psdir = @psdir@ |
|||
sbindir = @sbindir@ |
|||
sharedstatedir = @sharedstatedir@ |
|||
srcdir = @srcdir@ |
|||
sysconfdir = @sysconfdir@ |
|||
target_alias = @target_alias@ |
|||
top_build_prefix = @top_build_prefix@ |
|||
top_builddir = @top_builddir@ |
|||
top_srcdir = @top_srcdir@ |
|||
AM_CFLAGS = -D__EXTENSIONS__ $(PTHREAD_CFLAGS) |
|||
lib_LTLIBRARIES = libasyncns.la |
|||
libasyncns_la_CC = $(PTHREAD_CC) |
|||
libasyncns_la_SOURCES = asyncns.c asyncns.h |
|||
libasyncns_la_LIBADD = $(PTHREAD_LIBS) |
|||
include_HEADERS = asyncns.h |
|||
all: all-am |
|||
|
|||
.SUFFIXES: |
|||
.SUFFIXES: .c .lo .o .obj |
|||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) |
|||
@for dep in $?; do \
|
|||
case '$(am__configure_deps)' in \
|
|||
*$$dep*) \
|
|||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
|||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
|||
exit 1;; \
|
|||
esac; \
|
|||
done; \
|
|||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libasyncns/Makefile'; \
|
|||
$(am__cd) $(top_srcdir) && \
|
|||
$(AUTOMAKE) --foreign libasyncns/Makefile |
|||
.PRECIOUS: Makefile |
|||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status |
|||
@case '$?' in \
|
|||
*config.status*) \
|
|||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|||
*) \
|
|||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|||
esac; |
|||
|
|||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) |
|||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
|||
|
|||
$(top_srcdir)/configure: $(am__configure_deps) |
|||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
|||
$(ACLOCAL_M4): $(am__aclocal_m4_deps) |
|||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
|||
$(am__aclocal_m4_deps): |
|||
install-libLTLIBRARIES: $(lib_LTLIBRARIES) |
|||
@$(NORMAL_INSTALL) |
|||
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" |
|||
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
|||
list2=; for p in $$list; do \
|
|||
if test -f $$p; then \
|
|||
list2="$$list2 $$p"; \
|
|||
else :; fi; \
|
|||
done; \
|
|||
test -z "$$list2" || { \
|
|||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
|
|||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
|
|||
} |
|||
|
|||
uninstall-libLTLIBRARIES: |
|||
@$(NORMAL_UNINSTALL) |
|||
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
|||
for p in $$list; do \
|
|||
$(am__strip_dir) \
|
|||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
|
|||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
|
|||
done |
|||
|
|||
clean-libLTLIBRARIES: |
|||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) |
|||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
|||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
|||
test "$$dir" != "$$p" || dir=.; \
|
|||
echo "rm -f \"$${dir}/so_locations\""; \
|
|||
rm -f "$${dir}/so_locations"; \
|
|||
done |
|||
libasyncns.la: $(libasyncns_la_OBJECTS) $(libasyncns_la_DEPENDENCIES) $(EXTRA_libasyncns_la_DEPENDENCIES) |
|||
$(LINK) -rpath $(libdir) $(libasyncns_la_OBJECTS) $(libasyncns_la_LIBADD) $(LIBS) |
|||
|
|||
mostlyclean-compile: |
|||
-rm -f *.$(OBJEXT) |
|||
|
|||
distclean-compile: |
|||
-rm -f *.tab.c |
|||
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asyncns.Plo@am__quote@ |
|||
|
|||
.c.o: |
|||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
|||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po |
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ |
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
|||
@am__fastdepCC_FALSE@ $(COMPILE) -c $< |
|||
|
|||
.c.obj: |
|||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` |
|||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po |
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ |
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
|||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` |
|||
|
|||
.c.lo: |
|||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
|||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo |
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ |
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
|||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< |
|||
|
|||
mostlyclean-libtool: |
|||
-rm -f *.lo |
|||
|
|||
clean-libtool: |
|||
-rm -rf .libs _libs |
|||
install-includeHEADERS: $(include_HEADERS) |
|||
@$(NORMAL_INSTALL) |
|||
test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" |
|||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
|||
for p in $$list; do \
|
|||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
|||
echo "$$d$$p"; \
|
|||
done | $(am__base_list) | \
|
|||
while read files; do \
|
|||
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
|
|||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
|||
done |
|||
|
|||
uninstall-includeHEADERS: |
|||
@$(NORMAL_UNINSTALL) |
|||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
|||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
|||
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) |
|||
|
|||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) |
|||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|||
unique=`for i in $$list; do \
|
|||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|||
done | \
|
|||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|||
mkid -fID $$unique |
|||
tags: TAGS |
|||
|
|||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ |
|||
$(TAGS_FILES) $(LISP) |
|||
set x; \
|
|||
here=`pwd`; \
|
|||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|||
unique=`for i in $$list; do \
|
|||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|||
done | \
|
|||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|||
shift; \
|
|||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
|||
test -n "$$unique" || unique=$$empty_fix; \
|
|||
if test $$# -gt 0; then \ |
|||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|||
"$$@" $$unique; \
|
|||
else \
|
|||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|||
$$unique; \
|
|||
fi; \
|
|||
fi |
|||
ctags: CTAGS |
|||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ |
|||
$(TAGS_FILES) $(LISP) |
|||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|||
unique=`for i in $$list; do \
|
|||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|||
done | \
|
|||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|||
test -z "$(CTAGS_ARGS)$$unique" \
|
|||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|||
$$unique |
|||
|
|||
GTAGS: |
|||
here=`$(am__cd) $(top_builddir) && pwd` \
|
|||
&& $(am__cd) $(top_srcdir) \
|
|||
&& gtags -i $(GTAGS_ARGS) "$$here" |
|||
|
|||
distclean-tags: |
|||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags |
|||
|
|||
distdir: $(DISTFILES) |
|||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|||
list='$(DISTFILES)'; \
|
|||
dist_files=`for file in $$list; do echo $$file; done | \
|
|||
sed -e "s|^$$srcdirstrip/||;t" \
|
|||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|||
case $$dist_files in \
|
|||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|||
sort -u` ;; \
|
|||
esac; \
|
|||
for file in $$dist_files; do \
|
|||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|||
if test -d $$d/$$file; then \
|
|||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|||
if test -d "$(distdir)/$$file"; then \
|
|||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|||
fi; \
|
|||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|||
fi; \
|
|||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|||
else \
|
|||
test -f "$(distdir)/$$file" \
|
|||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|||
|| exit 1; \
|
|||
fi; \
|
|||
done |
|||
check-am: all-am |
|||
check: check-am |
|||
all-am: Makefile $(LTLIBRARIES) $(HEADERS) |
|||
installdirs: |
|||
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
|
|||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
|||
done |
|||
install: install-am |
|||
install-exec: install-exec-am |
|||
install-data: install-data-am |
|||
uninstall: uninstall-am |
|||
|
|||
install-am: all-am |
|||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am |
|||
|
|||
installcheck: installcheck-am |
|||
install-strip: |
|||
if test -z '$(STRIP)'; then \
|
|||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|||
install; \
|
|||
else \
|
|||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|||
fi |
|||
mostlyclean-generic: |
|||
|
|||
clean-generic: |
|||
|
|||
distclean-generic: |
|||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) |
|||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) |
|||
|
|||
maintainer-clean-generic: |
|||
@echo "This command is intended for maintainers to use" |
|||
@echo "it deletes files that may require special tools to rebuild." |
|||
clean: clean-am |
|||
|
|||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ |
|||
mostlyclean-am |
|||
|
|||
distclean: distclean-am |
|||
-rm -rf ./$(DEPDIR) |
|||
-rm -f Makefile |
|||
distclean-am: clean-am distclean-compile distclean-generic \ |
|||
distclean-tags |
|||
|
|||
dvi: dvi-am |
|||
|
|||
dvi-am: |
|||
|
|||
html: html-am |
|||
|
|||
html-am: |
|||
|
|||
info: info-am |
|||
|
|||
info-am: |
|||
|
|||
install-data-am: install-includeHEADERS |
|||
|
|||
install-dvi: install-dvi-am |
|||
|
|||
install-dvi-am: |
|||
|
|||
install-exec-am: install-libLTLIBRARIES |
|||
|
|||
install-html: install-html-am |
|||
|
|||
install-html-am: |
|||
|
|||
install-info: install-info-am |
|||
|
|||
install-info-am: |
|||
|
|||
install-man: |
|||
|
|||
install-pdf: install-pdf-am |
|||
|
|||
install-pdf-am: |
|||
|
|||
install-ps: install-ps-am |
|||
|
|||
install-ps-am: |
|||
|
|||
installcheck-am: |
|||
|
|||
maintainer-clean: maintainer-clean-am |
|||
-rm -rf ./$(DEPDIR) |
|||
-rm -f Makefile |
|||
maintainer-clean-am: distclean-am maintainer-clean-generic |
|||
|
|||
mostlyclean: mostlyclean-am |
|||
|
|||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \ |
|||
mostlyclean-libtool |
|||
|
|||
pdf: pdf-am |
|||
|
|||
pdf-am: |
|||
|
|||
ps: ps-am |
|||
|
|||
ps-am: |
|||
|
|||
uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES |
|||
|
|||
.MAKE: install-am install-strip |
|||
|
|||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ |
|||
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
|||
distclean-compile distclean-generic distclean-libtool \
|
|||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
|||
install install-am install-data install-data-am install-dvi \
|
|||
install-dvi-am install-exec install-exec-am install-html \
|
|||
install-html-am install-includeHEADERS install-info \
|
|||
install-info-am install-libLTLIBRARIES install-man install-pdf \
|
|||
install-pdf-am install-ps install-ps-am install-strip \
|
|||
installcheck installcheck-am installdirs maintainer-clean \
|
|||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
|||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
|||
tags uninstall uninstall-am uninstall-includeHEADERS \
|
|||
uninstall-libLTLIBRARIES |
|||
|
|||
|
|||
# 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: |
1500
libasyncns/asyncns.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,163 @@ |
|||
#ifndef fooasyncnshfoo |
|||
#define fooasyncnshfoo |
|||
|
|||
/*** |
|||
This file is part of libasyncns. |
|||
|
|||
Copyright 2005-2008 Lennart Poettering |
|||
|
|||
libasyncns is free software; you can redistribute it and/or modify |
|||
it under the terms of the GNU Lesser General Public License as |
|||
published by the Free Software Foundation, either version 2.1 of the |
|||
License, or (at your option) any later version. |
|||
|
|||
libasyncns is distributed in the hope that it will be useful, but |
|||
WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|||
Lesser General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU Lesser General Public |
|||
License along with libasyncns. If not, see |
|||
<http://www.gnu.org/licenses/>. |
|||
***/ |
|||
|
|||
#include <sys/types.h> |
|||
#include <sys/socket.h> |
|||
#include <netdb.h> |
|||
|
|||
/** \mainpage |
|||
* |
|||
* \section moo Method of operation |
|||
* |
|||
* To use libasyncns allocate an asyncns_t object with |
|||
* asyncns_new(). This will spawn a number of worker threads (or processes, depending on what is available) which |
|||
* are subsequently used to process the queries the controlling |
|||
* program issues via asyncns_getaddrinfo() and |
|||
* asyncns_getnameinfo(). Use asyncns_free() to shut down the worker |
|||
* threads/processes. |
|||
* |
|||
* Since libasyncns may fork off new processes you have to make sure that |
|||
* your program is not irritated by spurious SIGCHLD signals. |
|||
*/ |
|||
|
|||
/** \example asyncns-test.c |
|||
* An example program */ |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#endif |
|||
|
|||
/** An opaque libasyncns session structure */ |
|||
typedef struct asyncns asyncns_t; |
|||
|
|||
/** An opaque libasyncns query structure */ |
|||
typedef struct asyncns_query asyncns_query_t; |
|||
|
|||
/** Allocate a new libasyncns session with n_proc worker processes/threads */ |
|||
asyncns_t* asyncns_new(unsigned n_proc); |
|||
|
|||
/** Free a libasyncns session. This destroys all attached |
|||
* asyncns_query_t objects automatically */ |
|||
void asyncns_free(asyncns_t *asyncns); |
|||
|
|||
/** Return the UNIX file descriptor to select() for readability |
|||
* on. Use this function to integrate libasyncns with your custom main |
|||
* loop. */ |
|||
int asyncns_fd(asyncns_t *asyncns); |
|||
|
|||
/** Process pending responses. After this function is called you can |
|||
* get the next completed query object(s) using asyncns_getnext(). If |
|||
* block is non-zero wait until at least one response has been |
|||
* processed. If block is zero, process all pending responses and |
|||
* return. */ |
|||
int asyncns_wait(asyncns_t *asyncns, int block); |
|||
|
|||
/** Issue a name to address query on the specified session. The |
|||
* arguments are compatible with the ones of libc's |
|||
* getaddrinfo(3). The function returns a new query object. When the |
|||
* query is completed you may retrieve the results using |
|||
* asyncns_getaddrinfo_done().*/ |
|||
asyncns_query_t* asyncns_getaddrinfo(asyncns_t *asyncns, const char *node, const char *service, const struct addrinfo *hints); |
|||
|
|||
/** Retrieve the results of a preceding asyncns_getaddrinfo() |
|||
* call. Returns a addrinfo structure and a return value compatible |
|||
* with libc's getaddrinfo(3). The query object q is destroyed by this |
|||
* call and may not be used any further. Make sure to free the |
|||
* returned addrinfo structure with asyncns_freeaddrinfo() and not |
|||
* libc's freeaddrinfo(3)! If the query is not completed yet EAI_AGAIN |
|||
* is returned.*/ |
|||
int asyncns_getaddrinfo_done(asyncns_t *asyncns, asyncns_query_t* q, struct addrinfo **ret_res); |
|||
|
|||
/** Issue an address to name query on the specified session. The |
|||
* arguments are compatible with the ones of libc's |
|||
* getnameinfo(3). The function returns a new query object. When the |
|||
* query is completed you may retrieve the results using |
|||
* asyncns_getnameinfo_done(). Set gethost (resp. getserv) to non-zero |
|||
* if you want to query the hostname (resp. the service name). */ |
|||
asyncns_query_t* asyncns_getnameinfo(asyncns_t *asyncns, const struct sockaddr *sa, socklen_t salen, int flags, int gethost, int getserv); |
|||
|
|||
/** Retrieve the results of a preceding asyncns_getnameinfo() |
|||
* call. Returns the hostname and the service name in ret_host and |
|||
* ret_serv. The query object q is destroyed by this call and may not |
|||
* be used any further. If the query is not completed yet EAI_AGAIN is |
|||
* returned. */ |
|||
int asyncns_getnameinfo_done(asyncns_t *asyncns, asyncns_query_t* q, char *ret_host, size_t hostlen, char *ret_serv, size_t servlen); |
|||
|
|||
/** Issue a resolver query on the specified session. The arguments are |
|||
* compatible with the ones of libc's res_query(3). The function returns a new |
|||
* query object. When the query is completed you may retrieve the results using |
|||
* asyncns_res_done(). */ |
|||
asyncns_query_t* asyncns_res_query(asyncns_t *asyncns, const char *dname, int class, int type); |
|||
|
|||
/** Issue an resolver query on the specified session. The arguments are |
|||
* compatible with the ones of libc's res_search(3). The function returns a new |
|||
* query object. When the query is completed you may retrieve the results using |
|||
* asyncns_res_done(). */ |
|||
asyncns_query_t* asyncns_res_search(asyncns_t *asyncns, const char *dname, int class, int type); |
|||
|
|||
/** Retrieve the results of a preceding asyncns_res_query() or |
|||
* asyncns_res_search call. The query object q is destroyed by this |
|||
* call and may not be used any further. Returns a pointer to the |
|||
* answer of the res_query call. If the query is not completed yet |
|||
* -EAGAIN is returned, on failure -errno is returned, otherwise the |
|||
* length of answer is returned. Make sure to free the answer is a |
|||
* call to asyncns_freeanswer(). */ |
|||
int asyncns_res_done(asyncns_t *asyncns, asyncns_query_t* q, unsigned char **answer); |
|||
|
|||
/** Return the next completed query object. If no query has been |
|||
* completed yet, return NULL. Please note that you need to run |
|||
* asyncns_wait() before this function will return sensible data. */ |
|||
asyncns_query_t* asyncns_getnext(asyncns_t *asyncns); |
|||
|
|||
/** Return the number of query objects (completed or not) attached to |
|||
* this session */ |
|||
int asyncns_getnqueries(asyncns_t *asyncns); |
|||
|
|||
/** Cancel a currently running query. q is is destroyed by this call |
|||
* and may not be used any futher. */ |
|||
void asyncns_cancel(asyncns_t *asyncns, asyncns_query_t* q); |
|||
|
|||
/** Free the addrinfo structure as returned by |
|||
* asyncns_getaddrinfo_done(). Make sure to use this functions instead |
|||
* of the libc's freeaddrinfo()! */ |
|||
void asyncns_freeaddrinfo(struct addrinfo *ai); |
|||
|
|||
/** Free the answer data as returned by asyncns_res_done().*/ |
|||
void asyncns_freeanswer(unsigned char *answer); |
|||
|
|||
/** Returns non-zero when the query operation specified by q has been completed */ |
|||
int asyncns_isdone(asyncns_t *asyncns, asyncns_query_t*q); |
|||
|
|||
/** Assign some opaque userdata with a query object */ |
|||
void asyncns_setuserdata(asyncns_t *asyncns, asyncns_query_t *q, void *userdata); |
|||
|
|||
/** Return userdata assigned to a query object. Use |
|||
* asyncns_setuserdata() to set this data. If no data has been set |
|||
* prior to this call it returns NULL. */ |
|||
void* asyncns_getuserdata(asyncns_t *asyncns, asyncns_query_t *q); |
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif |
|||
|
|||
#endif |
Write
Preview
Loading…
Cancel
Save