Initial commit

This commit is contained in:
Johannes Findeisen 2009-10-15 19:27:15 +02:00
commit 4eef3a1d5a
153 changed files with 178754 additions and 0 deletions

1
AUTHORS Normal file
View file

@ -0,0 +1 @@
Johannes Findeisen <you@hanez.org>

340
COPYING Normal file
View file

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
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
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) <year> <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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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) year 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.

0
CREDITS Normal file
View file

0
ChangeLog Normal file
View file

1
INSTALL Symbolic link
View file

@ -0,0 +1 @@
/usr/share/automake-1.10/INSTALL

769
Makefile Normal file
View file

@ -0,0 +1,769 @@
# Makefile.in generated by automake 1.10.2 from Makefile.am.
# Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 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.
pkgdatadir = $(datadir)/zynk
pkglibdir = $(libdir)/zynk
pkgincludedir = $(includedir)/zynk
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 = i686-pc-linux-gnu
host_triplet = i686-pc-linux-gnu
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
config.guess config.sub depcomp install-sh ltmain.sh missing \
mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(Applicationsdir)" \
"$(DESTDIR)$(schemadir)"
ApplicationsDATA_INSTALL = $(INSTALL_DATA)
schemaDATA_INSTALL = $(INSTALL_DATA)
DATA = $(Applications_DATA) $(schema_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /home/hanez/Zynk/missing --run aclocal-1.10
ALL_LINGUAS = de
AMTAR = ${SHELL} /home/hanez/Zynk/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /home/hanez/Zynk/missing --run autoconf
AUTOHEADER = ${SHELL} /home/hanez/Zynk/missing --run autoheader
AUTOMAKE = ${SHELL} /home/hanez/Zynk/missing --run automake-1.10
AWK = gawk
CATALOGS = de.gmo
CATOBJEXT = .gmo
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DATADIRNAME = share
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
DUMPBIN =
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
FGREP = /bin/grep -F
GCONFTOOL = /usr/bin/gconftool-2
GCONF_SCHEMA_CONFIG_SOURCE = xml:merged:/etc/gconf/gconf.xml.defaults
GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas
GETTEXT_PACKAGE = zynk
GMOFILES = de.gmo
GMSGFMT = /usr/bin/gmsgfmt
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
INSTOBJEXT = .mo
INTLLIBS =
INTLTOOL_CAVES_RULE = %.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_DESKTOP_RULE = %.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_EXTRACT = /usr/bin/intltool-extract
INTLTOOL_KBD_RULE = %.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_KEYS_RULE = %.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_MERGE = /usr/bin/intltool-merge
INTLTOOL_OAF_RULE = %.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
INTLTOOL_PERL = /usr/bin/perl
INTLTOOL_POLICY_RULE = %.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_PONG_RULE = %.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_PROP_RULE = %.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SCHEMAS_RULE = %.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SERVER_RULE = %.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SERVICE_RULE = %.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SHEET_RULE = %.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_THEME_RULE = %.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_UI_RULE = %.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_UPDATE = /usr/bin/intltool-update
INTLTOOL_XAM_RULE = %.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_XML_NOMERGE_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
INTLTOOL_XML_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
LD = /usr/i686-pc-linux-gnu/bin/ld
LDFLAGS =
LIBOBJS =
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =
LN_S = ln -s
LTLIBOBJS =
MAINT =
MAKEINFO = ${SHELL} /home/hanez/Zynk/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
MKINSTALLDIRS = ./mkinstalldirs
MSGFMT = /usr/bin/msgfmt
MSGFMT_OPTS = -c
MSGMERGE = /usr/bin/msgmerge
NM = /usr/bin/nm -B
NMEDIT =
OBJDUMP = objdump
OBJEXT = o
OTOOL =
OTOOL64 =
PACKAGE = zynk
PACKAGE_BUGREPORT =
PACKAGE_NAME =
PACKAGE_STRING =
PACKAGE_TARNAME =
PACKAGE_VERSION =
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
POFILES = de.po
POSUB = po
PO_IN_DATADIR_FALSE =
PO_IN_DATADIR_TRUE =
RANLIB = ranlib
SED = /bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
USE_NLS = yes
VERSION = 1.0
WARN_CFLAGS = -Wall -Wmissing-prototypes
XGETTEXT = /usr/bin/xgettext
ZYNK_CFLAGS = -DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/orbit-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gnome-keyring-1 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libglade-2.0
ZYNK_LIBS = -pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lrt -lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
abs_builddir = /home/hanez/Zynk
abs_srcdir = /home/hanez/Zynk
abs_top_builddir = /home/hanez/Zynk
abs_top_srcdir = /home/hanez/Zynk
ac_ct_CC = gcc
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = i686-pc-linux-gnu
build_alias =
build_cpu = i686
build_os = linux-gnu
build_vendor = pc
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i686-pc-linux-gnu
host_alias =
host_cpu = i686
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /home/hanez/Zynk/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
lt_ECHO = echo
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix =
top_builddir = .
top_srcdir = .
SUBDIRS = po src pixmaps examples
schema_in_files = zynk.schemas.in
schemadir = $(sysconfdir)/gconf/schemas
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
Applicationsdir = $(prefix)/share/applications
Applications_in_files = zynk.desktop.in
Applications_DATA = $(Applications_in_files:.desktop.in=.desktop)
EXTRA_DIST = autogen.sh \
CREDITS \
intltool-extract.in \
intltool-merge.in \
intltool-update.in \
$(schema_in_files) \
$(Applications_in_files) \
$(Applications_DATA)
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool config.lt
install-ApplicationsDATA: $(Applications_DATA)
@$(NORMAL_INSTALL)
test -z "$(Applicationsdir)" || $(MKDIR_P) "$(DESTDIR)$(Applicationsdir)"
@list='$(Applications_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(ApplicationsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(Applicationsdir)/$$f'"; \
$(ApplicationsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(Applicationsdir)/$$f"; \
done
uninstall-ApplicationsDATA:
@$(NORMAL_UNINSTALL)
@list='$(Applications_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(Applicationsdir)/$$f'"; \
rm -f "$(DESTDIR)$(Applicationsdir)/$$f"; \
done
install-schemaDATA: $(schema_DATA)
@$(NORMAL_INSTALL)
test -z "$(schemadir)" || $(MKDIR_P) "$(DESTDIR)$(schemadir)"
@list='$(schema_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(schemaDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(schemadir)/$$f'"; \
$(schemaDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(schemadir)/$$f"; \
done
uninstall-schemaDATA:
@$(NORMAL_UNINSTALL)
@list='$(schema_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(schemadir)/$$f'"; \
rm -f "$(DESTDIR)$(schemadir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(Applicationsdir)" "$(DESTDIR)$(schemadir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-ApplicationsDATA install-data-local \
install-schemaDATA
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-ApplicationsDATA uninstall-schemaDATA
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install \
install-ApplicationsDATA install-am install-data \
install-data-am install-data-local install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-schemaDATA \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-recursive uninstall \
uninstall-ApplicationsDATA uninstall-am uninstall-schemaDATA
%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
install-data-local:
-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
clean:
rm -r zynk.desktop
rm -r src/zynk
rm -r src/*.o
rm -r zynk.schemas
rm -f example.keys
rm -f po/*.gmo
rm -f po/.intltool-merge-cache
# 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:

37
Makefile.am Normal file
View file

@ -0,0 +1,37 @@
SUBDIRS = po src pixmaps examples
schema_in_files = zynk.schemas.in
schemadir = @GCONF_SCHEMA_FILE_DIR@
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
@INTLTOOL_SCHEMAS_RULE@
Applicationsdir = $(prefix)/share/applications
Applications_in_files = zynk.desktop.in
Applications_DATA = $(Applications_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
EXTRA_DIST = autogen.sh \
CREDITS \
intltool-extract.in \
intltool-merge.in \
intltool-update.in \
$(schema_in_files) \
$(Applications_in_files) \
$(Applications_DATA)
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update
install-data-local:
-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
clean:
rm -r zynk.desktop
rm -r src/zynk
rm -r src/*.o
rm -r zynk.schemas
rm -f example.keys
rm -f po/*.gmo
rm -f po/.intltool-merge-cache

769
Makefile.in Normal file
View file

@ -0,0 +1,769 @@
# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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 = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
config.guess config.sub depcomp install-sh ltmain.sh missing \
mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(Applicationsdir)" \
"$(DESTDIR)$(schemadir)"
ApplicationsDATA_INSTALL = $(INSTALL_DATA)
schemaDATA_INSTALL = $(INSTALL_DATA)
DATA = $(Applications_DATA) $(schema_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GCONFTOOL = @GCONFTOOL@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
POFILES = @POFILES@
POSUB = @POSUB@
PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
XGETTEXT = @XGETTEXT@
ZYNK_CFLAGS = @ZYNK_CFLAGS@
ZYNK_LIBS = @ZYNK_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = po src pixmaps examples
schema_in_files = zynk.schemas.in
schemadir = @GCONF_SCHEMA_FILE_DIR@
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
Applicationsdir = $(prefix)/share/applications
Applications_in_files = zynk.desktop.in
Applications_DATA = $(Applications_in_files:.desktop.in=.desktop)
EXTRA_DIST = autogen.sh \
CREDITS \
intltool-extract.in \
intltool-merge.in \
intltool-update.in \
$(schema_in_files) \
$(Applications_in_files) \
$(Applications_DATA)
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool config.lt
install-ApplicationsDATA: $(Applications_DATA)
@$(NORMAL_INSTALL)
test -z "$(Applicationsdir)" || $(MKDIR_P) "$(DESTDIR)$(Applicationsdir)"
@list='$(Applications_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(ApplicationsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(Applicationsdir)/$$f'"; \
$(ApplicationsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(Applicationsdir)/$$f"; \
done
uninstall-ApplicationsDATA:
@$(NORMAL_UNINSTALL)
@list='$(Applications_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(Applicationsdir)/$$f'"; \
rm -f "$(DESTDIR)$(Applicationsdir)/$$f"; \
done
install-schemaDATA: $(schema_DATA)
@$(NORMAL_INSTALL)
test -z "$(schemadir)" || $(MKDIR_P) "$(DESTDIR)$(schemadir)"
@list='$(schema_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(schemaDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(schemadir)/$$f'"; \
$(schemaDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(schemadir)/$$f"; \
done
uninstall-schemaDATA:
@$(NORMAL_UNINSTALL)
@list='$(schema_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(schemadir)/$$f'"; \
rm -f "$(DESTDIR)$(schemadir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(Applicationsdir)" "$(DESTDIR)$(schemadir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-ApplicationsDATA install-data-local \
install-schemaDATA
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-ApplicationsDATA uninstall-schemaDATA
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install \
install-ApplicationsDATA install-am install-data \
install-data-am install-data-local install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-schemaDATA \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-recursive uninstall \
uninstall-ApplicationsDATA uninstall-am uninstall-schemaDATA
@INTLTOOL_SCHEMAS_RULE@
@INTLTOOL_DESKTOP_RULE@
install-data-local:
-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
clean:
rm -r zynk.desktop
rm -r src/zynk
rm -r src/*.o
rm -r zynk.schemas
rm -f example.keys
rm -f po/*.gmo
rm -f po/.intltool-merge-cache
# 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:

0
NEWS Normal file
View file

0
README Normal file
View file

9885
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load diff

159
autogen.sh Executable file
View file

@ -0,0 +1,159 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
DIE=0
if [ -n "$GNOME2_DIR" ]; then
ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS"
LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH"
PATH="$GNOME2_DIR/bin:$PATH"
export PATH
export LD_LIBRARY_PATH
fi
(test -f $srcdir/configure.in) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level package directory"
exit 1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`autoconf' installed."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && {
(intltoolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`intltool' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && {
(xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`xml-i18n-toolize' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
(libtool --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtool' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
}
(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && {
(grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \
(glib-gettextize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`glib' installed."
echo "You can get it from: ftp://ftp.gtk.org/pub/gtk"
DIE=1
}
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`automake' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
NO_AUTOMAKE=yes
}
# if no automake, don't bother testing for aclocal
test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: Missing \`aclocal'. The version of \`automake'"
echo "installed doesn't appear recent enough."
echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
if test -z "$*"; then
echo "**Warning**: I am going to run \`configure' with no arguments."
echo "If you wish to pass any to it, please specify them on the"
echo \`$0\'" command line."
echo
fi
case $CC in
xlc )
am_opt=--include-deps;;
esac
for coin in `find $srcdir -path $srcdir/CVS -prune -o -name configure.in -print`
do
dr=`dirname $coin`
if test -f $dr/NO-AUTO-GEN; then
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
( cd $dr
aclocalinclude="$ACLOCAL_FLAGS"
if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
echo "Running intltoolize..."
intltoolize --copy --force --automake
fi
if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then
echo "Running xml-i18n-toolize..."
xml-i18n-toolize --copy --force --automake
fi
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
if test -z "$NO_LIBTOOLIZE" ; then
echo "Running libtoolize..."
libtoolize --force --copy
fi
fi
echo "Running aclocal $aclocalinclude ..."
aclocal $aclocalinclude
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
echo "Running autoheader..."
autoheader
fi
echo "Running automake --gnu $am_opt ..."
automake --add-missing --gnu $am_opt
echo "Running autoconf ..."
autoconf
)
fi
done
conf_flags="--enable-maintainer-mode"
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure $conf_flags "$@" ...
$srcdir/configure $conf_flags "$@" \
&& echo Now type \`make\' to compile. || exit 1
else
echo Skipping configure process.
fi

25983
autom4te.cache/output.0 Normal file

File diff suppressed because it is too large Load diff

17877
autom4te.cache/output.1 Normal file

File diff suppressed because it is too large Load diff

17881
autom4te.cache/output.2 Normal file

File diff suppressed because it is too large Load diff

472
autom4te.cache/requests Normal file
View file

@ -0,0 +1,472 @@
# This file was generated.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal/gconf-2.m4',
'/usr/share/aclocal/glib-gettext.m4',
'/usr/share/aclocal/gnome-compiler-flags.m4',
'/usr/share/aclocal/intltool.m4',
'/usr/share/aclocal/libtool.m4',
'/usr/share/aclocal/nls.m4',
'/usr/share/aclocal/pkg.m4',
'/usr/share/aclocal-1.10/amversion.m4',
'/usr/share/aclocal-1.10/auxdir.m4',
'/usr/share/aclocal-1.10/ccstdc.m4',
'/usr/share/aclocal-1.10/cond.m4',
'/usr/share/aclocal-1.10/depend.m4',
'/usr/share/aclocal-1.10/depout.m4',
'/usr/share/aclocal-1.10/header.m4',
'/usr/share/aclocal-1.10/init.m4',
'/usr/share/aclocal-1.10/install-sh.m4',
'/usr/share/aclocal-1.10/lead-dot.m4',
'/usr/share/aclocal-1.10/maintainer.m4',
'/usr/share/aclocal-1.10/make.m4',
'/usr/share/aclocal-1.10/missing.m4',
'/usr/share/aclocal-1.10/mkdirp.m4',
'/usr/share/aclocal-1.10/options.m4',
'/usr/share/aclocal-1.10/runlog.m4',
'/usr/share/aclocal-1.10/sanity.m4',
'/usr/share/aclocal-1.10/strip.m4',
'/usr/share/aclocal-1.10/substnot.m4',
'/usr/share/aclocal-1.10/tar.m4',
'configure.in'
],
{
'AM_ENABLE_STATIC' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'_LT_AC_SHELL_INIT' => 1,
'AC_DEFUN' => 1,
'AC_PROG_LIBTOOL' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_MISSING_PROG' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'_m4_warn' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AM_SANITY_CHECK' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'_AM_PROG_TAR' => 1,
'AC_LIBTOOL_GCJ' => 1,
'_LT_VERSION_CHECK' => 1,
'_LT_AC_LANG_F77' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'AM_DISABLE_SHARED' => 1,
'AM_PROG_LIBTOOL' => 1,
'_LT_AC_LANG_CXX' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AM_PROG_LD' => 1,
'AU_DEFUN' => 1,
'AC_PROG_NM' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'AC_PROG_LD' => 1,
'IT_PROG_INTLTOOL' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'AC_PROG_LD_GNU' => 1,
'AM_GCONF_SOURCE_2' => 1,
'_AM_SET_OPTION' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'GLIB_RUN_PROG' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AC_DEFUN_ONCE' => 1,
'_LT_AC_LANG_GCJ' => 1,
'fp_PROG_CC_STDC' => 1,
'AC_LIBTOOL_RC' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'include' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'LT_AC_PROG_SED' => 1,
'AM_ENABLE_SHARED' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'AC_ENABLE_SHARED' => 1,
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'_LT_AC_TAGVAR' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AM_CONDITIONAL' => 1,
'm4_include' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AC_PROG_EGREP' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_PATH_MAGIC' => 1,
'AM_MAKE_INCLUDE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_DISABLE_SHARED' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AM_GLIB_GNU_GETTEXT' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AM_MISSING_HAS_RUN' => 1,
'IT_PO_SUBDIR' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AM_NLS' => 1,
'_PKG_SHORT_ERRORS_SUPPORTED' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'PKG_CHECK_EXISTS' => 1,
'LT_AC_PROG_RC' => 1,
'AC_LIBTOOL_CXX' => 1,
'LT_AC_PROG_GCJ' => 1,
'AM_DISABLE_STATIC' => 1,
'_LT_AC_PROG_CXXCPP' => 1,
'AM_DEP_TRACK' => 1,
'_AC_PROG_LIBTOOL' => 1,
'AM_CONFIG_HEADER' => 1,
'AM_PROG_CC_STDC' => 1,
'_AM_IF_OPTION' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'm4_pattern_allow' => 1,
'AC_LIBTOOL_F77' => 1,
'AM_SET_LEADING_DOT' => 1,
'_AM_DEPENDENCIES' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'AM_PROG_NM' => 1,
'PKG_CHECK_MODULES' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'jm_MAINTAINER_MODE' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AM_GLIB_DEFINE_LOCALEDIR' => 1,
'AM_INIT_AUTOMAKE' => 1,
'GNOME_CXX_WARNINGS' => 1,
'AC_DISABLE_STATIC' => 1,
'GNOME_COMPILE_WARNINGS' => 1,
'AM_MAINTAINER_MODE' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'AC_PROG_INTLTOOL' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_AM_SET_OPTIONS' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AM_RUN_LOG' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AC_CHECK_LIBM' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'_AM_MANGLE_OPTION' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AM_SET_DEPDIR' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'_LT_CC_BASENAME' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.in'
],
{
'_LT_AC_TAGCONFIG' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_SUBST' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_FC_SRCEXT' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_CONFIG_LINKS' => 1,
'm4_sinclude' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
'AM_PROG_CXX_C_O' => 1,
'_AM_COND_ENDIF' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'LT_INIT' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_LIBSOURCE' => 1,
'AM_PROG_FC_C_O' => 1,
'AC_CANONICAL_BUILD' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'sinclude' => 1,
'AM_PROG_CC_C_O' => 1,
'm4_pattern_allow' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_CONDITIONAL' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'm4_include' => 1,
'_AM_COND_ELSE' => 1,
'AC_SUBST_TRACE' => 1
}
], 'Autom4te::Request' ),
bless( [
'2',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal/argz.m4',
'/usr/share/aclocal/gconf-2.m4',
'/usr/share/aclocal/glib-gettext.m4',
'/usr/share/aclocal/gnome-compiler-flags.m4',
'/usr/share/aclocal/intltool.m4',
'/usr/share/aclocal/libtool.m4',
'/usr/share/aclocal/ltdl.m4',
'/usr/share/aclocal/ltoptions.m4',
'/usr/share/aclocal/ltsugar.m4',
'/usr/share/aclocal/ltversion.m4',
'/usr/share/aclocal/lt~obsolete.m4',
'/usr/share/aclocal/nls.m4',
'/usr/share/aclocal/pkg.m4',
'/usr/share/aclocal-1.10/amversion.m4',
'/usr/share/aclocal-1.10/auxdir.m4',
'/usr/share/aclocal-1.10/ccstdc.m4',
'/usr/share/aclocal-1.10/cond.m4',
'/usr/share/aclocal-1.10/depend.m4',
'/usr/share/aclocal-1.10/depout.m4',
'/usr/share/aclocal-1.10/header.m4',
'/usr/share/aclocal-1.10/init.m4',
'/usr/share/aclocal-1.10/install-sh.m4',
'/usr/share/aclocal-1.10/lead-dot.m4',
'/usr/share/aclocal-1.10/maintainer.m4',
'/usr/share/aclocal-1.10/make.m4',
'/usr/share/aclocal-1.10/missing.m4',
'/usr/share/aclocal-1.10/mkdirp.m4',
'/usr/share/aclocal-1.10/options.m4',
'/usr/share/aclocal-1.10/runlog.m4',
'/usr/share/aclocal-1.10/sanity.m4',
'/usr/share/aclocal-1.10/strip.m4',
'/usr/share/aclocal-1.10/substnot.m4',
'/usr/share/aclocal-1.10/tar.m4',
'configure.in'
],
{
'AM_ENABLE_STATIC' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'_LT_AC_SHELL_INIT' => 1,
'AC_DEFUN' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_MISSING_PROG' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'_m4_warn' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'gl_FUNC_ARGZ' => 1,
'AM_SANITY_CHECK' => 1,
'LTOBSOLETE_VERSION' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'LT_LIB_M' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'LTSUGAR_VERSION' => 1,
'_LT_PROG_LTMAIN' => 1,
'LT_SYS_SYMBOL_USCORE' => 1,
'_AM_PROG_TAR' => 1,
'AC_LIBTOOL_GCJ' => 1,
'LT_SYS_DLOPEN_DEPLIBS' => 1,
'LT_FUNC_DLSYM_USCORE' => 1,
'_LT_AC_LANG_F77' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_LTDL_DLLIB' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'AM_DISABLE_SHARED' => 1,
'_LTDL_SETUP' => 1,
'AM_PROG_LIBTOOL' => 1,
'_LT_AC_LANG_CXX' => 1,
'AC_LIB_LTDL' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AM_PROG_LD' => 1,
'AU_DEFUN' => 1,
'AC_PROG_NM' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'AC_PROG_LD' => 1,
'IT_PROG_INTLTOOL' => 1,
'AC_PROG_LD_GNU' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'AM_GCONF_SOURCE_2' => 1,
'AC_LIBTOOL_FC' => 1,
'LTDL_CONVENIENCE' => 1,
'_AM_SET_OPTION' => 1,
'AC_LTDL_PREOPEN' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'GLIB_RUN_PROG' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'gl_PREREQ_ARGZ' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'LT_PROG_RC' => 1,
'LT_SYS_MODULE_EXT' => 1,
'AC_DEFUN_ONCE' => 1,
'_LT_AC_LANG_GCJ' => 1,
'fp_PROG_CC_STDC' => 1,
'AC_LTDL_OBJDIR' => 1,
'_LT_PATH_TOOL_PREFIX' => 1,
'AC_LIBTOOL_RC' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'include' => 1,
'LT_AC_PROG_SED' => 1,
'AM_ENABLE_SHARED' => 1,
'LTDL_INSTALLABLE' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'AC_ENABLE_SHARED' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'_LT_AC_TAGVAR' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AM_CONDITIONAL' => 1,
'LT_LIB_DLLOAD' => 1,
'LTDL_INIT' => 1,
'LTVERSION_VERSION' => 1,
'AM_PROG_INSTALL_SH' => 1,
'm4_include' => 1,
'AC_PROG_EGREP' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_PATH_MAGIC' => 1,
'AC_LTDL_SYSSEARCHPATH' => 1,
'AM_MAKE_INCLUDE' => 1,
'LT_CMD_MAX_LEN' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'_LT_LINKER_OPTION' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_DISABLE_SHARED' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AM_GLIB_GNU_GETTEXT' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AC_LTDL_DLSYM_USCORE' => 1,
'AM_MISSING_HAS_RUN' => 1,
'LT_LANG' => 1,
'LT_SYS_DLSEARCH_PATH' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'IT_PO_SUBDIR' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'LT_OUTPUT' => 1,
'AM_NLS' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'_PKG_SHORT_ERRORS_SUPPORTED' => 1,
'AC_WITH_LTDL' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'PKG_CHECK_EXISTS' => 1,
'LT_AC_PROG_RC' => 1,
'AC_LIBTOOL_CXX' => 1,
'LT_INIT' => 1,
'LT_AC_PROG_GCJ' => 1,
'LT_SYS_DLOPEN_SELF' => 1,
'AM_DEP_TRACK' => 1,
'AM_DISABLE_STATIC' => 1,
'AM_CONFIG_HEADER' => 1,
'_AC_PROG_LIBTOOL' => 1,
'AM_PROG_CC_STDC' => 1,
'_AM_IF_OPTION' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'AC_LIBTOOL_F77' => 1,
'm4_pattern_allow' => 1,
'AM_SET_LEADING_DOT' => 1,
'LT_AC_PROG_EGREP' => 1,
'_AM_DEPENDENCIES' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'LTOPTIONS_VERSION' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'AM_PROG_NM' => 1,
'PKG_CHECK_MODULES' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'jm_MAINTAINER_MODE' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AC_LTDL_ENABLE_INSTALL' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'LT_PROG_GCJ' => 1,
'AM_GLIB_DEFINE_LOCALEDIR' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_DISABLE_STATIC' => 1,
'GNOME_CXX_WARNINGS' => 1,
'GNOME_COMPILE_WARNINGS' => 1,
'LT_PATH_NM' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_LTDL_SHLIBEXT' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'LT_SYS_MODULE_PATH' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'LT_WITH_LTDL' => 1,
'AC_PROG_INTLTOOL' => 1,
'AC_LTDL_SHLIBPATH' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_AM_SET_OPTIONS' => 1,
'_LT_COMPILER_OPTION' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AM_RUN_LOG' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'LT_PATH_LD' => 1,
'AC_CHECK_LIBM' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'_AM_MANGLE_OPTION' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AM_SET_DEPDIR' => 1,
'_LT_CC_BASENAME' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'_LT_LIBOBJ' => 1
}
], 'Autom4te::Request' )
);

10155
autom4te.cache/traces.0 Normal file

File diff suppressed because it is too large Load diff

877
autom4te.cache/traces.1 Normal file
View file

@ -0,0 +1,877 @@
m4trace:configure.in:4: -1- AC_INIT([configure.in])
m4trace:configure.in:4: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.in:4: -1- m4_pattern_forbid([_AC_])
m4trace:configure.in:4: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.in:4: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.in:4: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.in:4: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.in:4: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.in:4: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([SHELL])
m4trace:configure.in:4: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.in:4: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
m4trace:configure.in:4: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_NAME])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_STRING])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.in:4: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([exec_prefix])
m4trace:configure.in:4: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.in:4: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([prefix])
m4trace:configure.in:4: -1- m4_pattern_allow([^prefix$])
m4trace:configure.in:4: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([program_transform_name])
m4trace:configure.in:4: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.in:4: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([bindir])
m4trace:configure.in:4: -1- m4_pattern_allow([^bindir$])
m4trace:configure.in:4: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([sbindir])
m4trace:configure.in:4: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.in:4: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([libexecdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.in:4: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.in:4: -1- AC_SUBST([datadir], ['${datarootdir}'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([datadir])
m4trace:configure.in:4: -1- m4_pattern_allow([^datadir$])
m4trace:configure.in:4: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([sysconfdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.in:4: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([sharedstatedir])
m4trace:configure.in:4: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.in:4: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([localstatedir])
m4trace:configure.in:4: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.in:4: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([includedir])
m4trace:configure.in:4: -1- m4_pattern_allow([^includedir$])
m4trace:configure.in:4: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([oldincludedir])
m4trace:configure.in:4: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.in:4: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([docdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^docdir$])
m4trace:configure.in:4: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([infodir])
m4trace:configure.in:4: -1- m4_pattern_allow([^infodir$])
m4trace:configure.in:4: -1- AC_SUBST([htmldir], ['${docdir}'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([htmldir])
m4trace:configure.in:4: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.in:4: -1- AC_SUBST([dvidir], ['${docdir}'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([dvidir])
m4trace:configure.in:4: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.in:4: -1- AC_SUBST([pdfdir], ['${docdir}'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([pdfdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.in:4: -1- AC_SUBST([psdir], ['${docdir}'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([psdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^psdir$])
m4trace:configure.in:4: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([libdir])
m4trace:configure.in:4: -1- m4_pattern_allow([^libdir$])
m4trace:configure.in:4: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.in:4: -1- m4_pattern_allow([^localedir$])
m4trace:configure.in:4: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([mandir])
m4trace:configure.in:4: -1- m4_pattern_allow([^mandir$])
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
#undef PACKAGE_NAME])
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME])
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
#undef PACKAGE_VERSION])
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
#undef PACKAGE_STRING])
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT])
m4trace:configure.in:4: -1- AC_SUBST([DEFS])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([DEFS])
m4trace:configure.in:4: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.in:4: -1- AC_SUBST([ECHO_C])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([ECHO_C])
m4trace:configure.in:4: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.in:4: -1- AC_SUBST([ECHO_N])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([ECHO_N])
m4trace:configure.in:4: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.in:4: -1- AC_SUBST([ECHO_T])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([ECHO_T])
m4trace:configure.in:4: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.in:4: -1- AC_SUBST([LIBS])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.in:4: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.in:4: -1- AC_SUBST([build_alias])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([build_alias])
m4trace:configure.in:4: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.in:4: -1- AC_SUBST([host_alias])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([host_alias])
m4trace:configure.in:4: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.in:4: -1- AC_SUBST([target_alias])
m4trace:configure.in:4: -1- AC_SUBST_TRACE([target_alias])
m4trace:configure.in:4: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.in:7: -1- AC_CONFIG_AUX_DIR([.])
m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_PROG_INTLTOOL' is obsolete.
You should run autoupdate.], [aclocal.m4:814: AC_PROG_INTLTOOL is expanded from...
configure.in:8: the top level])
m4trace:configure.in:8: -1- AC_SUBST([USE_NLS])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([USE_NLS])
m4trace:configure.in:8: -1- m4_pattern_allow([^USE_NLS$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_UPDATE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_UPDATE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_UPDATE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_MERGE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_MERGE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_MERGE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_EXTRACT])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_EXTRACT])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_EXTRACT$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_DESKTOP_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_DESKTOP_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_DESKTOP_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_DIRECTORY_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_DIRECTORY_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_DIRECTORY_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_KEYS_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_KEYS_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_KEYS_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_PROP_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_PROP_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_PROP_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_OAF_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_OAF_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_OAF_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_PONG_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_PONG_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_PONG_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_SERVER_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_SERVER_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_SERVER_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_SHEET_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_SHEET_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_SHEET_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_SOUNDLIST_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_SOUNDLIST_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_SOUNDLIST_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_UI_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_UI_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_UI_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_XAM_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_XAM_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_XAM_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_KBD_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_KBD_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_KBD_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_XML_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_XML_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_XML_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_XML_NOMERGE_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_XML_NOMERGE_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_XML_NOMERGE_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_CAVES_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_CAVES_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_CAVES_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_SCHEMAS_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_SCHEMAS_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_SCHEMAS_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_THEME_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_THEME_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_THEME_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_SERVICE_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_SERVICE_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_SERVICE_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_POLICY_RULE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_POLICY_RULE])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_POLICY_RULE$])
m4trace:configure.in:8: -1- AC_SUBST([XGETTEXT])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([XGETTEXT])
m4trace:configure.in:8: -1- m4_pattern_allow([^XGETTEXT$])
m4trace:configure.in:8: -1- AC_SUBST([MSGMERGE])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([MSGMERGE])
m4trace:configure.in:8: -1- m4_pattern_allow([^MSGMERGE$])
m4trace:configure.in:8: -1- AC_SUBST([MSGFMT])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([MSGFMT])
m4trace:configure.in:8: -1- m4_pattern_allow([^MSGFMT$])
m4trace:configure.in:8: -1- AC_SUBST([GMSGFMT])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([GMSGFMT])
m4trace:configure.in:8: -1- m4_pattern_allow([^GMSGFMT$])
m4trace:configure.in:8: -1- AC_SUBST([INTLTOOL_PERL])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([INTLTOOL_PERL])
m4trace:configure.in:8: -1- m4_pattern_allow([^INTLTOOL_PERL$])
m4trace:configure.in:8: -1- AC_SUBST([ALL_LINGUAS])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([ALL_LINGUAS])
m4trace:configure.in:8: -1- m4_pattern_allow([^ALL_LINGUAS$])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:8: -1- AC_SUBST([CFLAGS])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.in:8: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.in:8: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.in:8: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.in:8: -1- AC_SUBST([LIBS])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.in:8: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.in:8: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:8: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.in:8: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.in:8: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([EXEEXT])
m4trace:configure.in:8: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.in:8: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([OBJEXT])
m4trace:configure.in:8: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.in:8: -1- AC_SUBST([DATADIRNAME])
m4trace:configure.in:8: -1- AC_SUBST_TRACE([DATADIRNAME])
m4trace:configure.in:8: -1- m4_pattern_allow([^DATADIRNAME$])
m4trace:configure.in:11: -1- AM_INIT_AUTOMAKE([zynk], [1.0])
m4trace:configure.in:11: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.in:11: -1- AM_AUTOMAKE_VERSION([1.10.2])
m4trace:configure.in:11: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.in:11: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.in:11: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.in:11: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.in:11: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.in:11: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.in:11: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.in:11: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__isrc])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.in:11: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.in:11: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([CYGPATH_W])
m4trace:configure.in:11: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.in:11: -1- AC_SUBST([PACKAGE], [zynk])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([PACKAGE])
m4trace:configure.in:11: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.in:11: -1- AC_SUBST([VERSION], [1.0])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([VERSION])
m4trace:configure.in:11: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.in:11: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.in:11: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.in:11: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
#undef PACKAGE])
m4trace:configure.in:11: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.in:11: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.in:11: -1- AH_OUTPUT([VERSION], [/* Version number of package */
#undef VERSION])
m4trace:configure.in:11: -1- AC_REQUIRE_AUX_FILE([missing])
m4trace:configure.in:11: -1- AC_SUBST([ACLOCAL])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([ACLOCAL])
m4trace:configure.in:11: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.in:11: -1- AC_SUBST([AUTOCONF])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AUTOCONF])
m4trace:configure.in:11: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.in:11: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AUTOMAKE])
m4trace:configure.in:11: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.in:11: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AUTOHEADER])
m4trace:configure.in:11: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.in:11: -1- AC_SUBST([MAKEINFO])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([MAKEINFO])
m4trace:configure.in:11: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.in:11: -1- AC_SUBST([install_sh])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([install_sh])
m4trace:configure.in:11: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.in:11: -1- AC_SUBST([STRIP])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.in:11: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.in:11: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
m4trace:configure.in:11: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.in:11: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.in:11: -1- AC_SUBST([MKDIR_P])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.in:11: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.in:11: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([mkdir_p])
m4trace:configure.in:11: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.in:11: -1- AC_SUBST([AWK])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AWK])
m4trace:configure.in:11: -1- m4_pattern_allow([^AWK$])
m4trace:configure.in:11: -1- AC_SUBST([SET_MAKE])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.in:11: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.in:11: -1- AC_SUBST([am__leading_dot])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__leading_dot])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.in:11: -1- AC_SUBST([AMTAR])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AMTAR])
m4trace:configure.in:11: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.in:11: -1- AC_SUBST([am__tar])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__tar])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.in:11: -1- AC_SUBST([am__untar])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__untar])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.in:11: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([DEPDIR])
m4trace:configure.in:11: -1- m4_pattern_allow([^DEPDIR$])
m4trace:configure.in:11: -1- AC_SUBST([am__include])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__include])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__include$])
m4trace:configure.in:11: -1- AC_SUBST([am__quote])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__quote])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__quote$])
m4trace:configure.in:11: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.in:11: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AMDEP_TRUE])
m4trace:configure.in:11: -1- m4_pattern_allow([^AMDEP_TRUE$])
m4trace:configure.in:11: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AMDEP_FALSE])
m4trace:configure.in:11: -1- m4_pattern_allow([^AMDEP_FALSE$])
m4trace:configure.in:11: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
m4trace:configure.in:11: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
m4trace:configure.in:11: -1- AC_SUBST([AMDEPBACKSLASH])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
m4trace:configure.in:11: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
m4trace:configure.in:11: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
m4trace:configure.in:11: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([CCDEPMODE])
m4trace:configure.in:11: -1- m4_pattern_allow([^CCDEPMODE$])
m4trace:configure.in:11: -1- AM_CONDITIONAL([am__fastdepCC], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.in:11: -1- AC_SUBST([am__fastdepCC_TRUE])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
m4trace:configure.in:11: -1- AC_SUBST([am__fastdepCC_FALSE])
m4trace:configure.in:11: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
m4trace:configure.in:11: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
m4trace:configure.in:11: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
m4trace:configure.in:11: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete.
You should run autoupdate.], [aclocal.m4:9359: AM_CONFIG_HEADER is expanded from...
configure.in:12: the top level])
m4trace:configure.in:12: -1- AC_CONFIG_HEADERS([config.h])
m4trace:configure.in:13: -1- AM_MAINTAINER_MODE
m4trace:configure.in:13: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
m4trace:configure.in:13: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
m4trace:configure.in:13: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE])
m4trace:configure.in:13: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
m4trace:configure.in:13: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
m4trace:configure.in:13: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE])
m4trace:configure.in:13: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
m4trace:configure.in:13: -1- AC_SUBST([MAINT])
m4trace:configure.in:13: -1- AC_SUBST_TRACE([MAINT])
m4trace:configure.in:13: -1- m4_pattern_allow([^MAINT$])
m4trace:configure.in:15: -1- _m4_warn([obsolete], [The macro `AC_ISC_POSIX' is obsolete.
You should run autoupdate.], [../../lib/autoconf/specific.m4:464: AC_ISC_POSIX is expanded from...
configure.in:15: the top level])
m4trace:configure.in:16: -1- AC_SUBST([CC])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:16: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:16: -1- AC_SUBST([CFLAGS])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.in:16: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.in:16: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.in:16: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.in:16: -1- AC_SUBST([LIBS])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.in:16: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.in:16: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.in:16: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.in:16: -1- AC_SUBST([CC])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:16: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:16: -1- AC_SUBST([CC])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:16: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:16: -1- AC_SUBST([CC])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:16: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:16: -1- AC_SUBST([CC])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:16: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:16: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:16: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.in:16: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AM_PROG_CC_STDC' is obsolete.
You should run autoupdate.], [aclocal.m4:9067: AM_PROG_CC_STDC is expanded from...
configure.in:17: the top level])
m4trace:configure.in:17: -1- AC_SUBST([CC])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:17: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:17: -1- AC_SUBST([CFLAGS])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.in:17: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.in:17: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.in:17: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.in:17: -1- AC_SUBST([LIBS])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.in:17: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.in:17: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.in:17: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.in:17: -1- AC_SUBST([CC])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:17: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:17: -1- AC_SUBST([CC])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:17: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:17: -1- AC_SUBST([CC])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:17: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:17: -1- AC_SUBST([CC])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([CC])
m4trace:configure.in:17: -1- m4_pattern_allow([^CC$])
m4trace:configure.in:17: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:17: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.in:17: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.in:17: -1- _m4_warn([obsolete], [AM_PROG_CC_STDC:
your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
`ac_cv_prog_cc_stdc'. Remove this warning and the assignment when
you adjust the code. You can also remove the above call to
AC_PROG_CC if you already called it elsewhere.], [aclocal.m4:9067: AM_PROG_CC_STDC is expanded from...
configure.in:17: the top level])
m4trace:configure.in:18: -1- AC_SUBST([CPP])
m4trace:configure.in:18: -1- AC_SUBST_TRACE([CPP])
m4trace:configure.in:18: -1- m4_pattern_allow([^CPP$])
m4trace:configure.in:18: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:18: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.in:18: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.in:18: -1- AC_SUBST([CPP])
m4trace:configure.in:18: -1- AC_SUBST_TRACE([CPP])
m4trace:configure.in:18: -1- m4_pattern_allow([^CPP$])
m4trace:configure.in:18: -1- AC_SUBST([GREP])
m4trace:configure.in:18: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.in:18: -1- m4_pattern_allow([^GREP$])
m4trace:configure.in:18: -1- AC_SUBST([EGREP])
m4trace:configure.in:18: -1- AC_SUBST_TRACE([EGREP])
m4trace:configure.in:18: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.in:18: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.in:18: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.in:18: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS])
m4trace:configure.in:19: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.in:19: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.in:19: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.in:19: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.in:19: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.in:19: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.in:19: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.in:19: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.in:19: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.in:19: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.in:20: -1- AC_SUBST([SET_MAKE])
m4trace:configure.in:20: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.in:20: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.in:21: -1- _m4_warn([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
You should run autoupdate.], [aclocal.m4:921: AM_PROG_LIBTOOL is expanded from...
configure.in:21: the top level])
m4trace:configure.in:21: -1- LT_INIT
m4trace:configure.in:21: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.in:21: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.in:21: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.in:21: -1- AC_SUBST([LIBTOOL])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([LIBTOOL])
m4trace:configure.in:21: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.in:21: -1- AC_CANONICAL_HOST
m4trace:configure.in:21: -1- AC_CANONICAL_BUILD
m4trace:configure.in:21: -1- AC_REQUIRE_AUX_FILE([config.sub])
m4trace:configure.in:21: -1- AC_REQUIRE_AUX_FILE([config.guess])
m4trace:configure.in:21: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([build])
m4trace:configure.in:21: -1- m4_pattern_allow([^build$])
m4trace:configure.in:21: -1- AC_SUBST([build_cpu], [$[1]])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([build_cpu])
m4trace:configure.in:21: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.in:21: -1- AC_SUBST([build_vendor], [$[2]])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([build_vendor])
m4trace:configure.in:21: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.in:21: -1- AC_SUBST([build_os])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([build_os])
m4trace:configure.in:21: -1- m4_pattern_allow([^build_os$])
m4trace:configure.in:21: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([host])
m4trace:configure.in:21: -1- m4_pattern_allow([^host$])
m4trace:configure.in:21: -1- AC_SUBST([host_cpu], [$[1]])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.in:21: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.in:21: -1- AC_SUBST([host_vendor], [$[2]])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.in:21: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.in:21: -1- AC_SUBST([host_os])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.in:21: -1- m4_pattern_allow([^host_os$])
m4trace:configure.in:21: -1- AC_SUBST([SED])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([SED])
m4trace:configure.in:21: -1- m4_pattern_allow([^SED$])
m4trace:configure.in:21: -1- AC_SUBST([FGREP])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([FGREP])
m4trace:configure.in:21: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.in:21: -1- AC_SUBST([GREP])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.in:21: -1- m4_pattern_allow([^GREP$])
m4trace:configure.in:21: -1- AC_SUBST([LD])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([LD])
m4trace:configure.in:21: -1- m4_pattern_allow([^LD$])
m4trace:configure.in:21: -1- AC_SUBST([DUMPBIN])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.in:21: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.in:21: -1- AC_SUBST([ac_ct_DUMPBIN])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
m4trace:configure.in:21: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.in:21: -1- AC_SUBST([DUMPBIN])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.in:21: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.in:21: -1- AC_SUBST([NM])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([NM])
m4trace:configure.in:21: -1- m4_pattern_allow([^NM$])
m4trace:configure.in:21: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([LN_S])
m4trace:configure.in:21: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.in:21: -1- AC_SUBST([OBJDUMP])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.in:21: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.in:21: -1- AC_SUBST([OBJDUMP])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.in:21: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.in:21: -1- AC_SUBST([AR])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([AR])
m4trace:configure.in:21: -1- m4_pattern_allow([^AR$])
m4trace:configure.in:21: -1- AC_SUBST([STRIP])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.in:21: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.in:21: -1- AC_SUBST([RANLIB])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([RANLIB])
m4trace:configure.in:21: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.in:21: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.in:21: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
m4trace:configure.in:21: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.in:21: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR])
m4trace:configure.in:21: -1- AC_SUBST([lt_ECHO])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([lt_ECHO])
m4trace:configure.in:21: -1- m4_pattern_allow([^lt_ECHO$])
m4trace:configure.in:21: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.in:21: -1- AC_SUBST([DSYMUTIL])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([DSYMUTIL])
m4trace:configure.in:21: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.in:21: -1- AC_SUBST([NMEDIT])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([NMEDIT])
m4trace:configure.in:21: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.in:21: -1- AC_SUBST([LIPO])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([LIPO])
m4trace:configure.in:21: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.in:21: -1- AC_SUBST([OTOOL])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([OTOOL])
m4trace:configure.in:21: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.in:21: -1- AC_SUBST([OTOOL64])
m4trace:configure.in:21: -1- AC_SUBST_TRACE([OTOOL64])
m4trace:configure.in:21: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H])
m4trace:configure.in:21: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H])
m4trace:configure.in:23: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
aclocal.m4:502: GNOME_COMPILE_WARNINGS is expanded from...
configure.in:23: the top level])
m4trace:configure.in:23: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE is expanded from...
aclocal.m4:502: GNOME_COMPILE_WARNINGS is expanded from...
configure.in:23: the top level])
m4trace:configure.in:23: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
aclocal.m4:502: GNOME_COMPILE_WARNINGS is expanded from...
configure.in:23: the top level])
m4trace:configure.in:23: -1- AC_SUBST([WARN_CFLAGS])
m4trace:configure.in:23: -1- AC_SUBST_TRACE([WARN_CFLAGS])
m4trace:configure.in:23: -1- m4_pattern_allow([^WARN_CFLAGS$])
m4trace:configure.in:25: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
aclocal.m4:29: AM_GCONF_SOURCE_2 is expanded from...
configure.in:25: the top level])
m4trace:configure.in:25: -1- AC_SUBST([GCONF_SCHEMA_CONFIG_SOURCE])
m4trace:configure.in:25: -1- AC_SUBST_TRACE([GCONF_SCHEMA_CONFIG_SOURCE])
m4trace:configure.in:25: -1- m4_pattern_allow([^GCONF_SCHEMA_CONFIG_SOURCE$])
m4trace:configure.in:25: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
aclocal.m4:29: AM_GCONF_SOURCE_2 is expanded from...
configure.in:25: the top level])
m4trace:configure.in:25: -1- AC_SUBST([GCONF_SCHEMA_FILE_DIR])
m4trace:configure.in:25: -1- AC_SUBST_TRACE([GCONF_SCHEMA_FILE_DIR])
m4trace:configure.in:25: -1- m4_pattern_allow([^GCONF_SCHEMA_FILE_DIR$])
m4trace:configure.in:25: -1- AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
m4trace:configure.in:25: -1- AC_SUBST([GCONF_SCHEMAS_INSTALL_TRUE])
m4trace:configure.in:25: -1- AC_SUBST_TRACE([GCONF_SCHEMAS_INSTALL_TRUE])
m4trace:configure.in:25: -1- m4_pattern_allow([^GCONF_SCHEMAS_INSTALL_TRUE$])
m4trace:configure.in:25: -1- AC_SUBST([GCONF_SCHEMAS_INSTALL_FALSE])
m4trace:configure.in:25: -1- AC_SUBST_TRACE([GCONF_SCHEMAS_INSTALL_FALSE])
m4trace:configure.in:25: -1- m4_pattern_allow([^GCONF_SCHEMAS_INSTALL_FALSE$])
m4trace:configure.in:25: -1- _AM_SUBST_NOTMAKE([GCONF_SCHEMAS_INSTALL_TRUE])
m4trace:configure.in:25: -1- _AM_SUBST_NOTMAKE([GCONF_SCHEMAS_INSTALL_FALSE])
m4trace:configure.in:27: -1- AC_SUBST([GCONFTOOL])
m4trace:configure.in:27: -1- AC_SUBST_TRACE([GCONFTOOL])
m4trace:configure.in:27: -1- m4_pattern_allow([^GCONFTOOL$])
m4trace:configure.in:40: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4trace:configure.in:40: -1- m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
m4trace:configure.in:40: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.in:40: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.in:40: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.in:40: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.in:40: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.in:40: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.in:40: -1- AC_SUBST([ZYNK_CFLAGS])
m4trace:configure.in:40: -1- AC_SUBST_TRACE([ZYNK_CFLAGS])
m4trace:configure.in:40: -1- m4_pattern_allow([^ZYNK_CFLAGS$])
m4trace:configure.in:40: -1- AC_SUBST([ZYNK_LIBS])
m4trace:configure.in:40: -1- AC_SUBST_TRACE([ZYNK_LIBS])
m4trace:configure.in:40: -1- m4_pattern_allow([^ZYNK_LIBS$])
m4trace:configure.in:48: -1- AC_SUBST([ZYNK_CFLAGS])
m4trace:configure.in:48: -1- AC_SUBST_TRACE([ZYNK_CFLAGS])
m4trace:configure.in:48: -1- m4_pattern_allow([^ZYNK_CFLAGS$])
m4trace:configure.in:49: -1- AC_SUBST([ZYNK_LIBS])
m4trace:configure.in:49: -1- AC_SUBST_TRACE([ZYNK_LIBS])
m4trace:configure.in:49: -1- m4_pattern_allow([^ZYNK_LIBS$])
m4trace:configure.in:51: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
aclocal.m4:29: AM_GCONF_SOURCE_2 is expanded from...
configure.in:51: the top level])
m4trace:configure.in:51: -1- AC_SUBST([GCONF_SCHEMA_CONFIG_SOURCE])
m4trace:configure.in:51: -1- AC_SUBST_TRACE([GCONF_SCHEMA_CONFIG_SOURCE])
m4trace:configure.in:51: -1- m4_pattern_allow([^GCONF_SCHEMA_CONFIG_SOURCE$])
m4trace:configure.in:51: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
aclocal.m4:29: AM_GCONF_SOURCE_2 is expanded from...
configure.in:51: the top level])
m4trace:configure.in:51: -1- AC_SUBST([GCONF_SCHEMA_FILE_DIR])
m4trace:configure.in:51: -1- AC_SUBST_TRACE([GCONF_SCHEMA_FILE_DIR])
m4trace:configure.in:51: -1- m4_pattern_allow([^GCONF_SCHEMA_FILE_DIR$])
m4trace:configure.in:51: -1- AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
m4trace:configure.in:51: -1- AC_SUBST([GCONF_SCHEMAS_INSTALL_TRUE])
m4trace:configure.in:51: -1- AC_SUBST_TRACE([GCONF_SCHEMAS_INSTALL_TRUE])
m4trace:configure.in:51: -1- m4_pattern_allow([^GCONF_SCHEMAS_INSTALL_TRUE$])
m4trace:configure.in:51: -1- AC_SUBST([GCONF_SCHEMAS_INSTALL_FALSE])
m4trace:configure.in:51: -1- AC_SUBST_TRACE([GCONF_SCHEMAS_INSTALL_FALSE])
m4trace:configure.in:51: -1- m4_pattern_allow([^GCONF_SCHEMAS_INSTALL_FALSE$])
m4trace:configure.in:51: -1- _AM_SUBST_NOTMAKE([GCONF_SCHEMAS_INSTALL_TRUE])
m4trace:configure.in:51: -1- _AM_SUBST_NOTMAKE([GCONF_SCHEMAS_INSTALL_FALSE])
m4trace:configure.in:56: -1- AC_SUBST([GETTEXT_PACKAGE])
m4trace:configure.in:56: -1- AC_SUBST_TRACE([GETTEXT_PACKAGE])
m4trace:configure.in:56: -1- m4_pattern_allow([^GETTEXT_PACKAGE$])
m4trace:configure.in:57: -1- AC_DEFINE_TRACE_LITERAL([GETTEXT_PACKAGE])
m4trace:configure.in:57: -1- m4_pattern_allow([^GETTEXT_PACKAGE$])
m4trace:configure.in:57: -1- AH_OUTPUT([GETTEXT_PACKAGE], [/* Useful for glib-gettextize */
#undef GETTEXT_PACKAGE])
m4trace:configure.in:58: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H])
m4trace:configure.in:58: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:113: GLIB_LC_MESSAGES is expanded from...
aclocal.m4:377: GLIB_GNU_GETTEXT is expanded from...
aclocal.m4:477: AM_GLIB_GNU_GETTEXT is expanded from...
configure.in:58: the top level])
m4trace:configure.in:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
m4trace:configure.in:58: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$])
m4trace:configure.in:58: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES])
m4trace:configure.in:58: -1- AC_SUBST([USE_NLS])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([USE_NLS])
m4trace:configure.in:58: -1- m4_pattern_allow([^USE_NLS$])
m4trace:configure.in:58: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/headers.m4:87: AC_CHECK_HEADER is expanded from...
aclocal.m4:167: GLIB_WITH_NLS is expanded from...
aclocal.m4:377: GLIB_GNU_GETTEXT is expanded from...
aclocal.m4:477: AM_GLIB_GNU_GETTEXT is expanded from...
configure.in:58: the top level])
m4trace:configure.in:58: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/headers.m4:87: AC_CHECK_HEADER is expanded from...
aclocal.m4:167: GLIB_WITH_NLS is expanded from...
aclocal.m4:377: GLIB_GNU_GETTEXT is expanded from...
aclocal.m4:477: AM_GLIB_GNU_GETTEXT is expanded from...
configure.in:58: the top level])
m4trace:configure.in:58: -1- AH_OUTPUT([HAVE_BIND_TEXTDOMAIN_CODESET], [/* Define to 1 if you have the `bind_textdomain_codeset\' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET])
m4trace:configure.in:58: -1- AH_OUTPUT([HAVE_BIND_TEXTDOMAIN_CODESET], [/* Define to 1 if you have the `bind_textdomain_codeset\' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET])
m4trace:configure.in:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
m4trace:configure.in:58: -1- m4_pattern_allow([^HAVE_GETTEXT$])
m4trace:configure.in:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT])
m4trace:configure.in:58: -1- AC_SUBST([MSGFMT])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([MSGFMT])
m4trace:configure.in:58: -1- m4_pattern_allow([^MSGFMT$])
m4trace:configure.in:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
#undef HAVE_DCGETTEXT])
m4trace:configure.in:58: -1- AC_SUBST([MSGFMT_OPTS])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([MSGFMT_OPTS])
m4trace:configure.in:58: -1- m4_pattern_allow([^MSGFMT_OPTS$])
m4trace:configure.in:58: -1- AC_SUBST([GMSGFMT])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([GMSGFMT])
m4trace:configure.in:58: -1- m4_pattern_allow([^GMSGFMT$])
m4trace:configure.in:58: -1- AC_SUBST([XGETTEXT])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([XGETTEXT])
m4trace:configure.in:58: -1- m4_pattern_allow([^XGETTEXT$])
m4trace:configure.in:58: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/headers.m4:87: AC_CHECK_HEADER is expanded from...
aclocal.m4:167: GLIB_WITH_NLS is expanded from...
aclocal.m4:377: GLIB_GNU_GETTEXT is expanded from...
aclocal.m4:477: AM_GLIB_GNU_GETTEXT is expanded from...
configure.in:58: the top level])
m4trace:configure.in:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
m4trace:configure.in:58: -1- m4_pattern_allow([^ENABLE_NLS$])
m4trace:configure.in:58: -1- AH_OUTPUT([ENABLE_NLS], [/* always defined to indicate that i18n is enabled */
#undef ENABLE_NLS])
m4trace:configure.in:58: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
You should run autoupdate.], [../../lib/autoconf/status.m4:1022: AC_OUTPUT_COMMANDS is expanded from...
aclocal.m4:167: GLIB_WITH_NLS is expanded from...
aclocal.m4:377: GLIB_GNU_GETTEXT is expanded from...
aclocal.m4:477: AM_GLIB_GNU_GETTEXT is expanded from...
configure.in:58: the top level])
m4trace:configure.in:58: -1- AC_SUBST([CATALOGS])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([CATALOGS])
m4trace:configure.in:58: -1- m4_pattern_allow([^CATALOGS$])
m4trace:configure.in:58: -1- AC_SUBST([CATOBJEXT])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([CATOBJEXT])
m4trace:configure.in:58: -1- m4_pattern_allow([^CATOBJEXT$])
m4trace:configure.in:58: -1- AC_SUBST([DATADIRNAME])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([DATADIRNAME])
m4trace:configure.in:58: -1- m4_pattern_allow([^DATADIRNAME$])
m4trace:configure.in:58: -1- AC_SUBST([GMOFILES])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([GMOFILES])
m4trace:configure.in:58: -1- m4_pattern_allow([^GMOFILES$])
m4trace:configure.in:58: -1- AC_SUBST([INSTOBJEXT])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([INSTOBJEXT])
m4trace:configure.in:58: -1- m4_pattern_allow([^INSTOBJEXT$])
m4trace:configure.in:58: -1- AC_SUBST([INTLLIBS])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([INTLLIBS])
m4trace:configure.in:58: -1- m4_pattern_allow([^INTLLIBS$])
m4trace:configure.in:58: -1- AC_SUBST([PO_IN_DATADIR_TRUE])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([PO_IN_DATADIR_TRUE])
m4trace:configure.in:58: -1- m4_pattern_allow([^PO_IN_DATADIR_TRUE$])
m4trace:configure.in:58: -1- AC_SUBST([PO_IN_DATADIR_FALSE])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([PO_IN_DATADIR_FALSE])
m4trace:configure.in:58: -1- m4_pattern_allow([^PO_IN_DATADIR_FALSE$])
m4trace:configure.in:58: -1- AC_SUBST([POFILES])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([POFILES])
m4trace:configure.in:58: -1- m4_pattern_allow([^POFILES$])
m4trace:configure.in:58: -1- AC_SUBST([POSUB])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([POSUB])
m4trace:configure.in:58: -1- m4_pattern_allow([^POSUB$])
m4trace:configure.in:58: -1- AC_SUBST([MKINSTALLDIRS])
m4trace:configure.in:58: -1- AC_SUBST_TRACE([MKINSTALLDIRS])
m4trace:configure.in:58: -1- m4_pattern_allow([^MKINSTALLDIRS$])
m4trace:configure.in:62: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_LOCALE_DIR])
m4trace:configure.in:62: -1- m4_pattern_allow([^PACKAGE_LOCALE_DIR$])
m4trace:configure.in:62: -1- AH_OUTPUT([PACKAGE_LOCALE_DIR], [/* Localization */
#undef PACKAGE_LOCALE_DIR])
m4trace:configure.in:64: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_LOCALE_DIR])
m4trace:configure.in:64: -1- m4_pattern_allow([^PACKAGE_LOCALE_DIR$])
m4trace:configure.in:64: -1- AH_OUTPUT([PACKAGE_LOCALE_DIR], [/* Localization */
#undef PACKAGE_LOCALE_DIR])
m4trace:configure.in:69: -1- AC_CONFIG_FILES([
Makefile
src/Makefile
src/xpm/Makefile
po/Makefile.in
pixmaps/Makefile
examples/Makefile
])
m4trace:configure.in:69: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
You should run autoupdate.], [])
m4trace:configure.in:69: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.in:69: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.in:69: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.in:69: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.in:69: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.in:69: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])

2964
autom4te.cache/traces.2 Normal file

File diff suppressed because it is too large Load diff

281
autoscan-2.59.log Normal file
View file

@ -0,0 +1,281 @@
autoscan-2.59: warning: missing AC_CHECK_FUNCS([memset]) wanted by:
src/rsync.c:287
zynk-0.1.0/src/rsync.c:287
autoscan-2.59: warning: missing AC_CHECK_FUNCS([strchr]) wanted by:
src/zynk_signals.c:1047
zynk-0.1.0/src/zynk_signals.c:1047
autoscan-2.59: warning: missing AC_C_CONST wanted by:
src/settings.c:32
src/settings.c:34
src/settings.c:34
src/settings.c:34
src/settings.c:50
src/settings.c:50
src/settings.c:76
src/settings.c:106
src/settings.c:112
src/settings.c:118
src/settings.c:120
src/settings.c:124
src/settings.c:126
src/settings.c:130
src/settings.c:132
src/settings.c:136
src/settings.c:138
src/settings.c:142
src/settings.c:144
src/settings.c:148
src/settings.c:150
src/settings.c:154
src/settings.c:156
src/settings.c:160
src/settings.c:162
src/settings.c:166
src/settings.c:168
src/settings.c:172
src/settings.c:174
src/settings.c:178
src/settings.c:180
src/settings.c:184
src/settings.c:186
src/settings.c:190
src/settings.c:192
src/settings.c:196
src/settings.c:202
src/settings.c:204
src/settings.c:208
src/settings.c:210
src/settings.c:214
src/settings.c:216
src/settings.c:220
src/settings.c:222
src/settings.c:226
src/settings.c:228
src/settings.c:232
src/settings.c:234
src/settings.c:238
src/settings.c:240
src/settings.c:244
src/settings.c:246
src/settings.c:250
src/settings.c:252
src/settings.c:256
src/settings.c:258
src/settings.c:262
src/settings.c:268
src/settings.c:270
src/settings.c:274
src/settings.c:276
src/settings.c:280
src/settings.c:282
src/settings.c:286
src/settings.c:288
src/settings.c:292
src/settings.c:294
src/settings.c:298
src/settings.c:300
src/settings.c:304
src/settings.c:306
src/settings.c:310
src/settings.c:316
src/settings.c:322
src/settings.c:328
src/settings.c:330
src/settings.c:334
src/settings.c:336
src/settings.c:340
src/settings.c:342
src/settings.c:346
src/settings.c:348
src/settings.c:352
src/settings.c:354
src/settings.c:358
src/settings.c:360
src/settings.c:364
src/settings.c:366
src/settings.c:370
src/settings.c:372
src/settings.c:376
src/settings.c:378
src/settings.c:382
src/settings.c:384
src/settings.c:388
src/settings.c:390
src/settings.c:394
src/settings.c:396
src/settings.c:400
src/settings.c:402
src/settings.c:406
src/settings.c:412
src/settings.c:418
src/settings.c:424
src/settings.c:430
src/settings.c:436
src/settings.c:442
src/settings.c:444
src/settings.c:448
src/settings.c:450
src/settings.c:454
src/settings.c:456
src/settings.c:460
src/settings.c:466
src/settings.c:472
src/settings.c:478
src/settings.c:480
src/settings.c:484
src/settings.c:490
src/settings.c:492
src/settings.c:496
src/settings.c:498
src/settings.c:502
src/settings.c:504
src/settings.c:513
src/settings.c:531
src/settings.c:538
src/settings.c:550
src/settings.c:811
src/settings.h:156
src/settings.h:158
src/zynk_signals.c:116
src/xpm/zynk-pixbufs.h:7
src/xpm/zynk-pixbufs.h:9
zynk-0.1.0/src/zynk_signals.c:116
zynk-0.1.0/src/settings.c:32
zynk-0.1.0/src/settings.c:34
zynk-0.1.0/src/settings.c:34
zynk-0.1.0/src/settings.c:34
zynk-0.1.0/src/settings.c:50
zynk-0.1.0/src/settings.c:50
zynk-0.1.0/src/settings.c:76
zynk-0.1.0/src/settings.c:106
zynk-0.1.0/src/settings.c:112
zynk-0.1.0/src/settings.c:118
zynk-0.1.0/src/settings.c:120
zynk-0.1.0/src/settings.c:124
zynk-0.1.0/src/settings.c:126
zynk-0.1.0/src/settings.c:130
zynk-0.1.0/src/settings.c:132
zynk-0.1.0/src/settings.c:136
zynk-0.1.0/src/settings.c:138
zynk-0.1.0/src/settings.c:142
zynk-0.1.0/src/settings.c:144
zynk-0.1.0/src/settings.c:148
zynk-0.1.0/src/settings.c:150
zynk-0.1.0/src/settings.c:154
zynk-0.1.0/src/settings.c:156
zynk-0.1.0/src/settings.c:160
zynk-0.1.0/src/settings.c:162
zynk-0.1.0/src/settings.c:166
zynk-0.1.0/src/settings.c:168
zynk-0.1.0/src/settings.c:172
zynk-0.1.0/src/settings.c:174
zynk-0.1.0/src/settings.c:178
zynk-0.1.0/src/settings.c:180
zynk-0.1.0/src/settings.c:184
zynk-0.1.0/src/settings.c:186
zynk-0.1.0/src/settings.c:190
zynk-0.1.0/src/settings.c:192
zynk-0.1.0/src/settings.c:196
zynk-0.1.0/src/settings.c:202
zynk-0.1.0/src/settings.c:204
zynk-0.1.0/src/settings.c:208
zynk-0.1.0/src/settings.c:210
zynk-0.1.0/src/settings.c:214
zynk-0.1.0/src/settings.c:216
zynk-0.1.0/src/settings.c:220
zynk-0.1.0/src/settings.c:222
zynk-0.1.0/src/settings.c:226
zynk-0.1.0/src/settings.c:228
zynk-0.1.0/src/settings.c:232
zynk-0.1.0/src/settings.c:234
zynk-0.1.0/src/settings.c:238
zynk-0.1.0/src/settings.c:240
zynk-0.1.0/src/settings.c:244
zynk-0.1.0/src/settings.c:246
zynk-0.1.0/src/settings.c:250
zynk-0.1.0/src/settings.c:252
zynk-0.1.0/src/settings.c:256
zynk-0.1.0/src/settings.c:258
zynk-0.1.0/src/settings.c:262
zynk-0.1.0/src/settings.c:268
zynk-0.1.0/src/settings.c:270
zynk-0.1.0/src/settings.c:274
zynk-0.1.0/src/settings.c:276
zynk-0.1.0/src/settings.c:280
zynk-0.1.0/src/settings.c:282
zynk-0.1.0/src/settings.c:286
zynk-0.1.0/src/settings.c:288
zynk-0.1.0/src/settings.c:292
zynk-0.1.0/src/settings.c:294
zynk-0.1.0/src/settings.c:298
zynk-0.1.0/src/settings.c:300
zynk-0.1.0/src/settings.c:304
zynk-0.1.0/src/settings.c:306
zynk-0.1.0/src/settings.c:310
zynk-0.1.0/src/settings.c:316
zynk-0.1.0/src/settings.c:322
zynk-0.1.0/src/settings.c:328
zynk-0.1.0/src/settings.c:330
zynk-0.1.0/src/settings.c:334
zynk-0.1.0/src/settings.c:336
zynk-0.1.0/src/settings.c:340
zynk-0.1.0/src/settings.c:342
zynk-0.1.0/src/settings.c:346
zynk-0.1.0/src/settings.c:348
zynk-0.1.0/src/settings.c:352
zynk-0.1.0/src/settings.c:354
zynk-0.1.0/src/settings.c:358
zynk-0.1.0/src/settings.c:360
zynk-0.1.0/src/settings.c:364
zynk-0.1.0/src/settings.c:366
zynk-0.1.0/src/settings.c:370
zynk-0.1.0/src/settings.c:372
zynk-0.1.0/src/settings.c:376
zynk-0.1.0/src/settings.c:378
zynk-0.1.0/src/settings.c:382
zynk-0.1.0/src/settings.c:384
zynk-0.1.0/src/settings.c:388
zynk-0.1.0/src/settings.c:390
zynk-0.1.0/src/settings.c:394
zynk-0.1.0/src/settings.c:396
zynk-0.1.0/src/settings.c:400
zynk-0.1.0/src/settings.c:402
zynk-0.1.0/src/settings.c:406
zynk-0.1.0/src/settings.c:412
zynk-0.1.0/src/settings.c:418
zynk-0.1.0/src/settings.c:424
zynk-0.1.0/src/settings.c:430
zynk-0.1.0/src/settings.c:436
zynk-0.1.0/src/settings.c:442
zynk-0.1.0/src/settings.c:444
zynk-0.1.0/src/settings.c:448
zynk-0.1.0/src/settings.c:450
zynk-0.1.0/src/settings.c:454
zynk-0.1.0/src/settings.c:456
zynk-0.1.0/src/settings.c:460
zynk-0.1.0/src/settings.c:466
zynk-0.1.0/src/settings.c:472
zynk-0.1.0/src/settings.c:478
zynk-0.1.0/src/settings.c:480
zynk-0.1.0/src/settings.c:484
zynk-0.1.0/src/settings.c:490
zynk-0.1.0/src/settings.c:492
zynk-0.1.0/src/settings.c:496
zynk-0.1.0/src/settings.c:498
zynk-0.1.0/src/settings.c:502
zynk-0.1.0/src/settings.c:504
zynk-0.1.0/src/settings.c:513
zynk-0.1.0/src/settings.c:531
zynk-0.1.0/src/settings.c:538
zynk-0.1.0/src/settings.c:550
zynk-0.1.0/src/settings.c:811
zynk-0.1.0/src/settings.h:156
zynk-0.1.0/src/settings.h:158
zynk-0.1.0/src/xpm/zynk-pixbufs.h:7
zynk-0.1.0/src/xpm/zynk-pixbufs.h:9
autoscan-2.59: warning: missing AC_PROG_RANLIB wanted by:
ltmain.sh:6917
zynk-0.1.0/ltmain.sh:6917
autoscan-2.59: warning: missing AC_TYPE_SIZE_T wanted by:
src/settings.c:72
zynk-0.1.0/src/settings.c:72

92
commands.txt Normal file
View file

@ -0,0 +1,92 @@
! -v, --verbose increase verbosity #!#
! -q, --quiet suppress non-error messages
! -c, --checksum skip based on checksum, not mod-time & size
> -a, --archive archive mode; same as -rlptgoD (no -H)
! -r, --recursive recurse into directories
! -R, --relative use relative path names
! --no-relative turn off --relative
! --no-implied-dirs don't send implied dirs with -R
-b, --backup make backups (see --suffix & --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
--suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
! -u, --update skip files that are newer on the receiver
! --inplace update destination files in-place
! -d, --dirs transfer directories without recursing
! -l, --links copy symlinks as symlinks
! -L, --copy-links transform symlink into referent file/dir
! --copy-unsafe-links only "unsafe" symlinks are transformed
! --safe-links ignore symlinks that point outside the tree
! -H, --hard-links preserve hard links
! -K, --keep-dirlinks treat symlinked dir on receiver as dir
! -p, --perms preserve permissions
! -o, --owner preserve owner (root only)
! -g, --group preserve group
! -D, --devices preserve devices (root only)
! -t, --times preserve times
! -O, --omit-dir-times omit directories when preserving times
! -S, --sparse handle sparse files efficiently
! -n, --dry-run show what would have been transferred
! -W, --whole-file copy files whole (without rsync algorithm)
! --no-whole-file always use incremental rsync algorithm
! -x, --one-file-system don't cross filesystem boundaries
! -B, --block-size=SIZE force a fixed checksum block-size
! -e, --rsh=COMMAND specify the remote shell to use
! --rsync-path=PROGRAM specify the rsync to run on remote machine
! --existing only update files that already exist
! --ignore-existing ignore files that already exist on receiver
! --remove-sent-files sent files/symlinks are removed from sender
! --del an alias for --delete-during
! --delete delete files that don't exist on sender
! --delete-before receiver deletes before transfer (default)
! --delete-during receiver deletes during xfer, not before
! --delete-after receiver deletes after transfer, not before
! --delete-excluded also delete excluded files on receiver
! --ignore-errors delete even if there are I/O errors
! --force force deletion of dirs even if not empty
! --max-delete=NUM don't delete more than NUM files
! --max-size=SIZE don't transfer any file larger than SIZE
! --partial keep partially transferred files
! --partial-dir=DIR put a partially transferred file into DIR
! --delay-updates put all updated files into place at end
! --numeric-ids don't map uid/gid values by user/group name
! --timeout=TIME set I/O timeout in seconds
! -I, --ignore-times don't skip files that match size and time
! --size-only skip files that match in size
! --modify-window=NUM compare mod-times with reduced accuracy
! -T, --temp-dir=DIR create temporary files in directory DIR
! -y, --fuzzy find similar file for basis if no dest file
--compare-dest=DIR also compare received files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
! -z, --compress compress file data during the transfer
! -C, --cvs-exclude auto-ignore files in the same way CVS does
-f, --filter=RULE add a file-filtering RULE
-F same as --filter='dir-merge /.rsync-filter'
repeated: --filter='- .rsync-filter'
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *from/filter files are delimited by 0s
--address=ADDRESS bind address for outgoing socket to daemon
! --port=PORT specify double-colon alternate port number
--blocking-io use blocking I/O for the remote shell
--no-blocking-io turn off blocking I/O when it is default
> --stats give some file-transfer stats
> --progress show progress during transfer
# -P same as --partial --progress
> -i, --itemize-changes output a change-summary for all updates
--log-format=FORMAT output filenames using the specified format
--password-file=FILE read password from FILE
> --list-only list the files instead of copying them
! --bwlimit=KBPS limit I/O bandwidth; KBytes per second
--write-batch=FILE write a batched update to FILE
--only-write-batch=FILE like --write-batch but w/o updating dest
--read-batch=FILE read a batched update from FILE
--protocol=NUM force an older protocol version to be used
--checksum-seed=NUM set block/file checksum seed (advanced)
! -4, --ipv4 prefer IPv4
! -6, --ipv6 prefer IPv6
> --version print version number
> -h, --help show this help screen

1548
config.guess vendored Executable file

File diff suppressed because it is too large Load diff

84
config.h Normal file
View file

@ -0,0 +1,84 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.in by autoheader. */
/* always defined to indicate that i18n is enabled */
#define ENABLE_NLS 1
/* Useful for glib-gettextize */
#define GETTEXT_PACKAGE "zynk"
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#define HAVE_BIND_TEXTDOMAIN_CODESET 1
/* Define to 1 if you have the `dcgettext' function. */
#define HAVE_DCGETTEXT 1
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define if the GNU gettext() function is already present or preinstalled. */
#define HAVE_GETTEXT 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define if your <locale.h> file defines LC_MESSAGES. */
#define HAVE_LC_MESSAGES 1
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#define LT_OBJDIR ".libs/"
/* Name of package */
#define PACKAGE "zynk"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""
/* Localization */
#define PACKAGE_LOCALE_DIR "/usr/local/share/locale"
/* Define to the full name of this package. */
#define PACKAGE_NAME ""
/* Define to the full name and version of this package. */
#define PACKAGE_STRING ""
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME ""
/* Define to the version of this package. */
#define PACKAGE_VERSION ""
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.0"

83
config.h.in Normal file
View file

@ -0,0 +1,83 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* always defined to indicate that i18n is enabled */
#undef ENABLE_NLS
/* Useful for glib-gettextize */
#undef GETTEXT_PACKAGE
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET
/* Define to 1 if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Localization */
#undef PACKAGE_LOCALE_DIR
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION

79
config.h.in~ Normal file
View file

@ -0,0 +1,79 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* always defined to indicate that i18n is enabled */
#undef ENABLE_NLS
/* Useful for glib-gettextize */
#undef GETTEXT_PACKAGE
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET
/* Define to 1 if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Localization */
#undef PACKAGE_LOCALE_DIR
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION

807
config.log Normal file
View file

@ -0,0 +1,807 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by configure, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ ./configure --enable-maintainer-mode
## --------- ##
## Platform. ##
## --------- ##
hostname = phantom
uname -m = i686
uname -r = 2.6.28-gentoo-r5
uname -s = Linux
uname -v = #1 SMP Tue May 5 23:33:49 CEST 2009
/usr/bin/uname -p = AMD Athlon(tm) 64 Processor 3000+
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /opt/bin
PATH: /usr/i686-pc-linux-gnu/avr/gcc-bin/4.1.2
PATH: /usr/i486-pc-linux-gnu/gcc-bin/4.1.2
PATH: /usr/i686-pc-linux-gnu/gcc-bin/4.1.2
PATH: /opt/blackdown-jdk-1.4.2.03/bin
PATH: /opt/blackdown-jdk-1.4.2.03/jre/bin
PATH: /usr/kde/3.5/bin
PATH: /usr/qt/3/bin
PATH: /opt/android-sdk-1.5/tools
PATH: /opt/android-sdk-1.5/platforms/android-1.5/tools
PATH: /usr/games/bin
PATH: /home/hanez/bin
## ----------- ##
## Core tests. ##
## ----------- ##
configure:2118: checking whether NLS is requested
configure:2127: result: yes
configure:2179: checking for gcc
configure:2195: found /usr/bin/gcc
configure:2206: result: gcc
configure:2438: checking for C compiler version
configure:2446: gcc --version >&5
gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:2450: $? = 0
configure:2457: gcc -v >&5
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.1)
configure:2461: $? = 0
configure:2468: gcc -V >&5
gcc: '-V' option must have argument
configure:2472: $? = 1
configure:2495: checking for C compiler default output file name
configure:2517: gcc conftest.c >&5
configure:2521: $? = 0
configure:2559: result: a.out
configure:2578: checking whether the C compiler works
configure:2588: ./a.out
configure:2592: $? = 0
configure:2611: result: yes
configure:2618: checking whether we are cross compiling
configure:2620: result: no
configure:2623: checking for suffix of executables
configure:2630: gcc -o conftest conftest.c >&5
configure:2634: $? = 0
configure:2660: result:
configure:2666: checking for suffix of object files
configure:2692: gcc -c conftest.c >&5
configure:2696: $? = 0
configure:2721: result: o
configure:2725: checking whether we are using the GNU C compiler
configure:2754: gcc -c conftest.c >&5
configure:2761: $? = 0
configure:2778: result: yes
configure:2787: checking whether gcc accepts -g
configure:2817: gcc -c -g conftest.c >&5
configure:2824: $? = 0
configure:2925: result: yes
configure:2942: checking for gcc option to accept ISO C89
configure:3016: gcc -c -g -O2 conftest.c >&5
configure:3023: $? = 0
configure:3046: result: none needed
configure:3078: checking for intltool >= 0.30
configure:3085: result: 0.40.5 found
configure:3095: checking for intltool-update
configure:3113: found /usr/bin/intltool-update
configure:3125: result: /usr/bin/intltool-update
configure:3135: checking for intltool-merge
configure:3153: found /usr/bin/intltool-merge
configure:3165: result: /usr/bin/intltool-merge
configure:3175: checking for intltool-extract
configure:3193: found /usr/bin/intltool-extract
configure:3205: result: /usr/bin/intltool-extract
configure:3262: checking for xgettext
configure:3280: found /usr/bin/xgettext
configure:3292: result: /usr/bin/xgettext
configure:3302: checking for msgmerge
configure:3320: found /usr/bin/msgmerge
configure:3332: result: /usr/bin/msgmerge
configure:3342: checking for msgfmt
configure:3360: found /usr/bin/msgfmt
configure:3372: result: /usr/bin/msgfmt
configure:3382: checking for gmsgfmt
configure:3400: found /usr/bin/gmsgfmt
configure:3413: result: /usr/bin/gmsgfmt
configure:3437: checking for perl
configure:3455: found /usr/bin/perl
configure:3467: result: /usr/bin/perl
configure:3486: checking for XML::Parser
configure:3489: result: ok
configure:3526: gcc -o conftest -g -O2 conftest.c >&5
configure:3533: $? = 0
configure:3672: checking for a BSD-compatible install
configure:3740: result: /usr/bin/install -c
configure:3751: checking whether build environment is sane
configure:3794: result: yes
configure:3819: checking for a thread-safe mkdir -p
configure:3858: result: /bin/mkdir -p
configure:3871: checking for gawk
configure:3887: found /usr/bin/gawk
configure:3898: result: gawk
configure:3909: checking whether make sets $(MAKE)
configure:3931: result: yes
configure:3961: checking for style of include used by make
configure:3989: result: GNU
configure:4178: checking dependency style of gcc
configure:4269: result: gcc3
configure:4287: checking whether to enable maintainer-specific portions of Makefiles
configure:4296: result: yes
configure:4310: checking for library containing strerror
configure:4351: gcc -o conftest -g -O2 conftest.c >&5
configure:4358: $? = 0
configure:4389: result: none required
configure:4445: checking for gcc
configure:4472: result: gcc
configure:4704: checking for C compiler version
configure:4712: gcc --version >&5
gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:4716: $? = 0
configure:4723: gcc -v >&5
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.1)
configure:4727: $? = 0
configure:4734: gcc -V >&5
gcc: '-V' option must have argument
configure:4738: $? = 1
configure:4741: checking whether we are using the GNU C compiler
configure:4794: result: yes
configure:4803: checking whether gcc accepts -g
configure:4941: result: yes
configure:4958: checking for gcc option to accept ISO C89
configure:5062: result: none needed
configure:5128: checking for gcc
configure:5155: result: gcc
configure:5387: checking for C compiler version
configure:5395: gcc --version >&5
gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:5399: $? = 0
configure:5406: gcc -v >&5
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.1)
configure:5410: $? = 0
configure:5417: gcc -V >&5
gcc: '-V' option must have argument
configure:5421: $? = 1
configure:5424: checking whether we are using the GNU C compiler
configure:5477: result: yes
configure:5486: checking whether gcc accepts -g
configure:5624: result: yes
configure:5641: checking for gcc option to accept ISO C89
configure:5745: result: none needed
configure:5771: checking how to run the C preprocessor
configure:5811: gcc -E conftest.c
configure:5818: $? = 0
configure:5849: gcc -E conftest.c
conftest.c:10:28: error: ac_nonexistent.h: No such file or directory
configure:5856: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "zynk"
| #define VERSION "1.0"
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:5889: result: gcc -E
configure:5918: gcc -E conftest.c
configure:5925: $? = 0
configure:5956: gcc -E conftest.c
conftest.c:10:28: error: ac_nonexistent.h: No such file or directory
configure:5963: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE "zynk"
| #define VERSION "1.0"
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:6003: checking for grep that handles long lines and -e
configure:6063: result: /bin/grep
configure:6068: checking for egrep
configure:6132: result: /bin/grep -E
configure:6137: checking for ANSI C header files
configure:6167: gcc -c -g -O2 conftest.c >&5
configure:6174: $? = 0
configure:6273: gcc -o conftest -g -O2 conftest.c >&5
configure:6277: $? = 0
configure:6283: ./conftest
configure:6287: $? = 0
configure:6305: result: yes
configure:6329: checking for a BSD-compatible install
configure:6397: result: /usr/bin/install -c
configure:6408: checking whether make sets $(MAKE)
configure:6430: result: yes
configure:6470: checking build system type
configure:6488: result: i686-pc-linux-gnu
configure:6510: checking host system type
configure:6525: result: i686-pc-linux-gnu
configure:6547: checking for a sed that does not truncate output
configure:6613: result: /bin/sed
configure:6631: checking for fgrep
configure:6695: result: /bin/grep -F
configure:6730: checking for ld used by gcc
configure:6797: result: /usr/i686-pc-linux-gnu/bin/ld
configure:6806: checking if the linker (/usr/i686-pc-linux-gnu/bin/ld) is GNU ld
configure:6821: result: yes
configure:6833: checking for BSD- or MS-compatible name lister (nm)
configure:6882: result: /usr/bin/nm -B
configure:7000: checking the name lister (/usr/bin/nm -B) interface
configure:7007: gcc -c -g -O2 conftest.c >&5
configure:7010: /usr/bin/nm -B "conftest.o"
configure:7013: output
00000000 B some_variable
configure:7020: result: BSD nm
configure:7023: checking whether ln -s works
configure:7027: result: yes
configure:7035: checking the maximum length of command line arguments
configure:7155: result: 1572864
configure:7172: checking whether the shell understands some XSI constructs
configure:7182: result: yes
configure:7186: checking whether the shell understands "+="
configure:7192: result: yes
configure:7227: checking for /usr/i686-pc-linux-gnu/bin/ld option to reload object files
configure:7234: result: -r
configure:7303: checking for objdump
configure:7319: found /usr/bin/objdump
configure:7330: result: objdump
configure:7362: checking how to recognize dependent libraries
configure:7558: result: pass_all
configure:7618: checking for ar
configure:7634: found /usr/bin/ar
configure:7645: result: ar
configure:7723: checking for strip
configure:7739: found /usr/bin/strip
configure:7750: result: strip
configure:7822: checking for ranlib
configure:7838: found /usr/bin/ranlib
configure:7849: result: ranlib
configure:7939: checking command to parse /usr/bin/nm -B output from gcc object
configure:8057: gcc -c -g -O2 conftest.c >&5
configure:8060: $? = 0
configure:8064: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm
configure:8067: $? = 0
configure:8121: gcc -o conftest -g -O2 conftest.c conftstm.o >&5
configure:8124: $? = 0
configure:8162: result: ok
configure:9037: checking for sys/types.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for sys/stat.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for stdlib.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for string.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for memory.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for strings.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for inttypes.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for stdint.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9037: checking for unistd.h
configure:9058: gcc -c -g -O2 conftest.c >&5
configure:9065: $? = 0
configure:9082: result: yes
configure:9100: checking for dlfcn.h
configure:9121: gcc -c -g -O2 conftest.c >&5
configure:9128: $? = 0
configure:9145: result: yes
configure:9331: checking for objdir
configure:9346: result: .libs
configure:9638: checking if gcc supports -fno-rtti -fno-exceptions
configure:9656: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5
cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C
configure:9660: $? = 0
configure:9673: result: no
configure:9693: checking for gcc option to produce PIC
configure:9965: result: -fPIC -DPIC
configure:9977: checking if gcc PIC flag -fPIC -DPIC works
configure:9995: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5
configure:9999: $? = 0
configure:10012: result: yes
configure:10036: checking if gcc static flag -static works
configure:10064: result: yes
configure:10079: checking if gcc supports -c -o file.o
configure:10100: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5
configure:10104: $? = 0
configure:10126: result: yes
configure:10134: checking if gcc supports -c -o file.o
configure:10181: result: yes
configure:10214: checking whether the gcc linker (/usr/i686-pc-linux-gnu/bin/ld) supports shared libraries
configure:11288: result: yes
configure:11325: checking whether -lc should be explicitly linked in
configure:11330: gcc -c -g -O2 conftest.c >&5
configure:11333: $? = 0
configure:11348: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1
configure:11351: $? = 0
configure:11363: result: no
configure:11527: checking dynamic linker characteristics
configure:11983: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5
configure:11990: $? = 0
configure:12223: result: GNU/Linux ld.so
configure:12325: checking how to hardcode library paths into programs
configure:12350: result: immediate
configure:13183: checking whether stripping libraries is possible
configure:13188: result: yes
configure:13223: checking if libtool supports shared libraries
configure:13225: result: yes
configure:13228: checking whether to build shared libraries
configure:13249: result: yes
configure:13252: checking whether to build static libraries
configure:13256: result: yes
configure:13391: checking what warning flags to pass to the C compiler
configure:13393: result: -Wall -Wmissing-prototypes
configure:13404: checking what language compliance flags to pass to the C compiler
configure:13419: result:
configure:13441: result: Using config source xml:merged:/etc/gconf/gconf.xml.defaults for schema installation
configure:13456: result: Using $(sysconfdir)/gconf/schemas as install directory for schema files
configure:13481: checking for gconftool-2
configure:13499: found /usr/bin/gconftool-2
configure:13512: result: /usr/bin/gconftool-2
configure:13583: checking for pkg-config
configure:13601: found /usr/bin/pkg-config
configure:13613: result: /usr/bin/pkg-config
configure:13638: checking pkg-config is at least version 0.9.0
configure:13641: result: yes
configure:13652: checking for ZYNK
configure:13664: $PKG_CONFIG --exists --print-errors "libgnome-2.0 >= $LIBGNOME_REQUIRED
libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED
libxml-2.0 >= $LIBXML_REQUIRED
gtk+-2.0 >= $GTK_REQUIRED
gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED
libglade-2.0 >= $LIBGLADE_REQUIRED"
configure:13672: $? = 0
configure:13695: $PKG_CONFIG --exists --print-errors "libgnome-2.0 >= $LIBGNOME_REQUIRED
libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED
libxml-2.0 >= $LIBXML_REQUIRED
gtk+-2.0 >= $GTK_REQUIRED
gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED
libglade-2.0 >= $LIBGLADE_REQUIRED"
configure:13703: $? = 0
configure:13805: result: yes
configure:13828: result: Using config source xml:merged:/etc/gconf/gconf.xml.defaults for schema installation
configure:13843: result: Using $(sysconfdir)/gconf/schemas as install directory for schema files
configure:13891: checking locale.h usability
configure:13908: gcc -c -g -O2 conftest.c >&5
configure:13915: $? = 0
configure:13929: result: yes
configure:13933: checking locale.h presence
configure:13948: gcc -E conftest.c
configure:13955: $? = 0
configure:13969: result: yes
configure:13997: checking for locale.h
configure:14006: result: yes
configure:14022: checking for LC_MESSAGES
configure:14048: gcc -o conftest -g -O2 conftest.c >&5
configure:14055: $? = 0
configure:14075: result: yes
configure:14104: checking libintl.h usability
configure:14121: gcc -c -g -O2 conftest.c >&5
configure:14128: $? = 0
configure:14142: result: yes
configure:14146: checking libintl.h presence
configure:14161: gcc -E conftest.c
configure:14168: $? = 0
configure:14182: result: yes
configure:14210: checking for libintl.h
configure:14217: result: yes
configure:14228: checking for ngettext in libc
configure:14256: gcc -o conftest -g -O2 conftest.c >&5
configure:14263: $? = 0
configure:14284: result: yes
configure:14288: checking for dgettext in libc
configure:14316: gcc -o conftest -g -O2 conftest.c >&5
configure:14323: $? = 0
configure:14344: result: yes
configure:14353: checking for bind_textdomain_codeset
configure:14409: gcc -o conftest -g -O2 conftest.c >&5
configure:14416: $? = 0
configure:14438: result: yes
configure:14954: checking for msgfmt
configure:14981: result: /usr/bin/msgfmt
configure:14994: checking for dcgettext
configure:15050: gcc -o conftest -g -O2 conftest.c >&5
conftest.c:50: warning: conflicting types for built-in function 'dcgettext'
configure:15057: $? = 0
configure:15079: result: yes
configure:15092: checking if msgfmt accepts -c
configure:15107: $MSGFMT -c -o /dev/null conftest.foo
configure:15110: $? = 0
configure:15112: result: yes
configure:15122: checking for gmsgfmt
configure:15153: result: /usr/bin/gmsgfmt
configure:15163: checking for xgettext
configure:15190: result: /usr/bin/xgettext
configure:15219: gcc -o conftest -g -O2 conftest.c >&5
configure:15226: $? = 0
configure:15402: checking for catalogs to be installed
configure:15427: result: de
configure:15619: creating ./config.status
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by config.status, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on phantom
config.status:1075: creating Makefile
config.status:1075: creating src/Makefile
config.status:1075: creating src/xpm/Makefile
config.status:1075: creating po/Makefile.in
config.status:1075: creating pixmaps/Makefile
config.status:1075: creating examples/Makefile
config.status:1075: creating config.h
config.status:1349: executing depfiles commands
config.status:1349: executing libtool commands
config.status:1349: executing default-1 commands
config.status:1349: executing po/stamp-it commands
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=i686-pc-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_ZYNK_CFLAGS_set=
ac_cv_env_ZYNK_CFLAGS_value=
ac_cv_env_ZYNK_LIBS_set=
ac_cv_env_ZYNK_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_func_bind_textdomain_codeset=yes
ac_cv_func_dcgettext=yes
ac_cv_header_dlfcn_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_libintl_h=yes
ac_cv_header_locale_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=i686-pc-linux-gnu
ac_cv_objext=o
ac_cv_path_EGREP='/bin/grep -E'
ac_cv_path_FGREP='/bin/grep -F'
ac_cv_path_GCONFTOOL=/usr/bin/gconftool-2
ac_cv_path_GMSGFMT=/usr/bin/gmsgfmt
ac_cv_path_GREP=/bin/grep
ac_cv_path_INTLTOOL_EXTRACT=/usr/bin/intltool-extract
ac_cv_path_INTLTOOL_MERGE=/usr/bin/intltool-merge
ac_cv_path_INTLTOOL_PERL=/usr/bin/perl
ac_cv_path_INTLTOOL_UPDATE=/usr/bin/intltool-update
ac_cv_path_MSGFMT=/usr/bin/msgfmt
ac_cv_path_MSGMERGE=/usr/bin/msgmerge
ac_cv_path_SED=/bin/sed
ac_cv_path_XGETTEXT=/usr/bin/xgettext
ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_AR=ar
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_OBJDUMP=objdump
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_ac_ct_STRIP=strip
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_make_make_set=yes
ac_cv_search_strerror='none required'
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_prog_cc_stdc=
am_cv_val_LC_MESSAGES=yes
gt_cv_func_dgettext_libc=yes
gt_cv_func_dgettext_libintl=no
gt_cv_func_ngettext_libc=yes
gt_cv_have_gettext=yes
lt_cv_deplibs_check_method=pass_all
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_ld_reload_flag=-r
lt_cv_nm_interface='BSD nm'
lt_cv_objdir=.libs
lt_cv_path_LD=/usr/i686-pc-linux-gnu/bin/ld
lt_cv_path_NM='/usr/bin/nm -B'
lt_cv_prog_compiler_c_o=yes
lt_cv_prog_compiler_pic_works=yes
lt_cv_prog_compiler_rtti_exceptions=no
lt_cv_prog_compiler_static_works=yes
lt_cv_prog_gnu_ld=yes
lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'''
lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\'''
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\'''
lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
lt_cv_sys_max_cmd_len=1572864
pkg_cv_ZYNK_CFLAGS='-DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/orbit-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gnome-keyring-1 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libglade-2.0 '
pkg_cv_ZYNK_LIBS='-pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lrt -lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 '
## ----------------- ##
## Output variables. ##
## ----------------- ##
ACLOCAL='${SHELL} /home/hanez/Zynk/missing --run aclocal-1.10 '
ALL_LINGUAS='de'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='${SHELL} /home/hanez/Zynk/missing --run tar'
AR='ar'
AUTOCONF='${SHELL} /home/hanez/Zynk/missing --run autoconf'
AUTOHEADER='${SHELL} /home/hanez/Zynk/missing --run autoheader'
AUTOMAKE='${SHELL} /home/hanez/Zynk/missing --run automake-1.10'
AWK='gawk'
CATALOGS=' de.gmo'
CATOBJEXT='.gmo'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2'
CPP='gcc -E'
CPPFLAGS=''
CYGPATH_W='echo'
DATADIRNAME='share'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/bin/grep -E'
EXEEXT=''
FGREP='/bin/grep -F'
GCONFTOOL='/usr/bin/gconftool-2'
GCONF_SCHEMAS_INSTALL_FALSE='#'
GCONF_SCHEMAS_INSTALL_TRUE=''
GCONF_SCHEMA_CONFIG_SOURCE='xml:merged:/etc/gconf/gconf.xml.defaults'
GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
GETTEXT_PACKAGE='zynk'
GMOFILES=' de.gmo'
GMSGFMT='/usr/bin/gmsgfmt'
GREP='/bin/grep'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
INSTOBJEXT='.mo'
INTLLIBS=''
INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_EXTRACT='/usr/bin/intltool-extract'
INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_MERGE='/usr/bin/intltool-merge'
INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
INTLTOOL_PERL='/usr/bin/perl'
INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_UPDATE='/usr/bin/intltool-update'
INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
LD='/usr/i686-pc-linux-gnu/bin/ld'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
LIPO=''
LN_S='ln -s'
LTLIBOBJS=''
MAINT=''
MAINTAINER_MODE_FALSE='#'
MAINTAINER_MODE_TRUE=''
MAKEINFO='${SHELL} /home/hanez/Zynk/missing --run makeinfo'
MKDIR_P='/bin/mkdir -p'
MKINSTALLDIRS='./mkinstalldirs'
MSGFMT='/usr/bin/msgfmt'
MSGFMT_OPTS='-c'
MSGMERGE='/usr/bin/msgmerge'
NM='/usr/bin/nm -B'
NMEDIT=''
OBJDUMP='objdump'
OBJEXT='o'
OTOOL64=''
OTOOL=''
PACKAGE='zynk'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PKG_CONFIG='/usr/bin/pkg-config'
POFILES=' de.po'
POSUB='po'
PO_IN_DATADIR_FALSE=''
PO_IN_DATADIR_TRUE=''
RANLIB='ranlib'
SED='/bin/sed'
SET_MAKE=''
SHELL='/bin/sh'
STRIP='strip'
USE_NLS='yes'
VERSION='1.0'
WARN_CFLAGS='-Wall -Wmissing-prototypes '
XGETTEXT='/usr/bin/xgettext'
ZYNK_CFLAGS='-DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/orbit-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gnome-keyring-1 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libglade-2.0 '
ZYNK_LIBS='-pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lrt -lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 '
ac_ct_CC='gcc'
ac_ct_DUMPBIN=''
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__include='include'
am__isrc=''
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build='i686-pc-linux-gnu'
build_alias=''
build_cpu='i686'
build_os='linux-gnu'
build_vendor='pc'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host='i686-pc-linux-gnu'
host_alias=''
host_cpu='i686'
host_os='linux-gnu'
host_vendor='pc'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='$(SHELL) /home/hanez/Zynk/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
lt_ECHO='echo'
mandir='${datarootdir}/man'
mkdir_p='/bin/mkdir -p'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''
## ----------- ##
## confdefs.h. ##
## ----------- ##
#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#define PACKAGE "zynk"
#define VERSION "1.0"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
#define GETTEXT_PACKAGE "zynk"
#define HAVE_LOCALE_H 1
#define HAVE_LC_MESSAGES 1
#define HAVE_BIND_TEXTDOMAIN_CODESET 1
#define HAVE_GETTEXT 1
#define HAVE_DCGETTEXT 1
#define ENABLE_NLS 1
#define PACKAGE_LOCALE_DIR "/usr/local/share/locale"
configure: exit 0

2154
config.status Executable file

File diff suppressed because it is too large Load diff

1695
config.sub vendored Executable file

File diff suppressed because it is too large Load diff

17877
configure vendored Executable file

File diff suppressed because it is too large Load diff

77
configure.in Normal file
View file

@ -0,0 +1,77 @@
dnl Process this file with autoconf to produce a configure script.
dnl init autoconf
AC_INIT(configure.in)
AC_PREREQ(2.50)
AC_CONFIG_SRCDIR(src/zynk.c)
AC_CONFIG_AUX_DIR(.)
AC_PROG_INTLTOOL([0.30])
dnl init automake
AM_INIT_AUTOMAKE(zynk, 1.0)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
AC_ISC_POSIX
AC_PROG_CC
AM_PROG_CC_STDC
AC_HEADER_STDC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AM_PROG_LIBTOOL
GNOME_COMPILE_WARNINGS
AM_GCONF_SOURCE_2
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
if test x"$GCONFTOOL" = xno; then
AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf2])
fi
LIBGNOME_REQUIRED=2.14.1
LIBGNOMEUI_REQUIRED=2.14.1
LIBXML_REQUIRED=2.6.26
GTK_REQUIRED=2.8.19
GNOME_VFS_REQUIRED=2.14.2
LIBGLADE_REQUIRED=2.5.1
PKG_CHECK_MODULES(ZYNK,
libgnome-2.0 >= $LIBGNOME_REQUIRED
libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED
libxml-2.0 >= $LIBXML_REQUIRED
gtk+-2.0 >= $GTK_REQUIRED
gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED
libglade-2.0 >= $LIBGLADE_REQUIRED)
AC_SUBST(ZYNK_CFLAGS)
AC_SUBST(ZYNK_LIBS)
AM_GCONF_SOURCE_2
dnl i18n
ALL_LINGUAS="de"
GETTEXT_PACKAGE=zynk
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Useful for glib-gettextize])
AM_GLIB_GNU_GETTEXT
dnl Set PACKAGE_LOCALE_DIR in config.h.
if test "x${prefix}" = "xNONE"; then
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale", [Localization])
else
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale", [Localization])
fi
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
AC_OUTPUT([
Makefile
src/Makefile
src/xpm/Makefile
po/Makefile.in
pixmaps/Makefile
examples/Makefile
])

41
configure.scan Normal file
View file

@ -0,0 +1,41 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
# Checks for libraries.
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([string.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
# Checks for library functions.
AC_CHECK_FUNCS([memset strchr])
AC_CONFIG_FILES([Makefile
examples/Makefile
pixmaps/Makefile
src/Makefile
src/xpm/Makefile
zynk-0.1.0/Makefile
zynk-0.1.0/examples/Makefile
zynk-0.1.0/pixmaps/Makefile
zynk-0.1.0/src/Makefile
zynk-0.1.0/src/xpm/Makefile])
AC_OUTPUT

1
depcomp Symbolic link
View file

@ -0,0 +1 @@
/usr/share/automake-1.10/depcomp

18
examples/AAA.zynk Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<zynk>
<values>
<sourcepath>/home/www/hanez.org/htdocs/</sourcepath>
<destinationpath>/var/www/hanez.org/www/htdocs/</destinationpath>
<hostname>hanez.org</hostname>
<username>hanez</username>
<password></password>
<custom_args>--exclude=search/ --exclude=CVS/ --exclude=*~ --exclude=photos/</custom_args>
<sync_to_host>TRUE</sync_to_host>
<use_ssh>TRUE</use_ssh>
<use_ssh_keyauth>TRUE</use_ssh_keyauth>
<delete_files_in_destination>TRUE</delete_files_in_destination>
<sync_recursive>TRUE</sync_recursive>
<preserve_permissions>TRUE</preserve_permissions>
<increase_verbosity>FALSE</increase_verbosity>
</values>
</zynk>

408
examples/Makefile Normal file
View file

@ -0,0 +1,408 @@
# Makefile.in generated by automake 1.10.2 from Makefile.am.
# examples/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 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.
pkgdatadir = $(datadir)/zynk
pkglibdir = $(libdir)/zynk
pkgincludedir = $(includedir)/zynk
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 = i686-pc-linux-gnu
host_triplet = i686-pc-linux-gnu
subdir = examples
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(exampledir)"
exampleDATA_INSTALL = $(INSTALL_DATA)
DATA = $(example_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/hanez/Zynk/missing --run aclocal-1.10
ALL_LINGUAS = de
AMTAR = ${SHELL} /home/hanez/Zynk/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /home/hanez/Zynk/missing --run autoconf
AUTOHEADER = ${SHELL} /home/hanez/Zynk/missing --run autoheader
AUTOMAKE = ${SHELL} /home/hanez/Zynk/missing --run automake-1.10
AWK = gawk
CATALOGS = de.gmo
CATOBJEXT = .gmo
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DATADIRNAME = share
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
DUMPBIN =
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
FGREP = /bin/grep -F
GCONFTOOL = /usr/bin/gconftool-2
GCONF_SCHEMA_CONFIG_SOURCE = xml:merged:/etc/gconf/gconf.xml.defaults
GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas
GETTEXT_PACKAGE = zynk
GMOFILES = de.gmo
GMSGFMT = /usr/bin/gmsgfmt
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
INSTOBJEXT = .mo
INTLLIBS =
INTLTOOL_CAVES_RULE = %.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_DESKTOP_RULE = %.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_EXTRACT = /usr/bin/intltool-extract
INTLTOOL_KBD_RULE = %.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_KEYS_RULE = %.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_MERGE = /usr/bin/intltool-merge
INTLTOOL_OAF_RULE = %.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
INTLTOOL_PERL = /usr/bin/perl
INTLTOOL_POLICY_RULE = %.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_PONG_RULE = %.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_PROP_RULE = %.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SCHEMAS_RULE = %.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SERVER_RULE = %.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SERVICE_RULE = %.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SHEET_RULE = %.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_THEME_RULE = %.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_UI_RULE = %.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_UPDATE = /usr/bin/intltool-update
INTLTOOL_XAM_RULE = %.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_XML_NOMERGE_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
INTLTOOL_XML_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
LD = /usr/i686-pc-linux-gnu/bin/ld
LDFLAGS =
LIBOBJS =
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =
LN_S = ln -s
LTLIBOBJS =
MAINT =
MAKEINFO = ${SHELL} /home/hanez/Zynk/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
MKINSTALLDIRS = ./mkinstalldirs
MSGFMT = /usr/bin/msgfmt
MSGFMT_OPTS = -c
MSGMERGE = /usr/bin/msgmerge
NM = /usr/bin/nm -B
NMEDIT =
OBJDUMP = objdump
OBJEXT = o
OTOOL =
OTOOL64 =
PACKAGE = zynk
PACKAGE_BUGREPORT =
PACKAGE_NAME =
PACKAGE_STRING =
PACKAGE_TARNAME =
PACKAGE_VERSION =
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
POFILES = de.po
POSUB = po
PO_IN_DATADIR_FALSE =
PO_IN_DATADIR_TRUE =
RANLIB = ranlib
SED = /bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
USE_NLS = yes
VERSION = 1.0
WARN_CFLAGS = -Wall -Wmissing-prototypes
XGETTEXT = /usr/bin/xgettext
ZYNK_CFLAGS = -DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/orbit-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gnome-keyring-1 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libglade-2.0
ZYNK_LIBS = -pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lrt -lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
abs_builddir = /home/hanez/Zynk/examples
abs_srcdir = /home/hanez/Zynk/examples
abs_top_builddir = /home/hanez/Zynk
abs_top_srcdir = /home/hanez/Zynk
ac_ct_CC = gcc
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = i686-pc-linux-gnu
build_alias =
build_cpu = i686
build_os = linux-gnu
build_vendor = pc
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i686-pc-linux-gnu
host_alias =
host_cpu = i686
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /home/hanez/Zynk/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
lt_ECHO = echo
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix = ../
top_builddir = ..
top_srcdir = ..
exampledir = $(datadir)/zynk/examples
example_DATA = default.zynk
EXTRA_DIST = $(example_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu examples/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
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-exampleDATA: $(example_DATA)
@$(NORMAL_INSTALL)
test -z "$(exampledir)" || $(MKDIR_P) "$(DESTDIR)$(exampledir)"
@list='$(example_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(exampleDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(exampledir)/$$f'"; \
$(exampleDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(exampledir)/$$f"; \
done
uninstall-exampleDATA:
@$(NORMAL_UNINSTALL)
@list='$(example_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(exampledir)/$$f'"; \
rm -f "$(DESTDIR)$(exampledir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(exampledir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-exampleDATA
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-exampleDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exampleDATA install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-exampleDATA
# 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:

6
examples/Makefile.am Normal file
View file

@ -0,0 +1,6 @@
exampledir = $(datadir)/zynk/examples
example_DATA = default.zynk
EXTRA_DIST = $(example_DATA)

408
examples/Makefile.in Normal file
View file

@ -0,0 +1,408 @@
# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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 = examples
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(exampledir)"
exampleDATA_INSTALL = $(INSTALL_DATA)
DATA = $(example_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GCONFTOOL = @GCONFTOOL@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
POFILES = @POFILES@
POSUB = @POSUB@
PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
XGETTEXT = @XGETTEXT@
ZYNK_CFLAGS = @ZYNK_CFLAGS@
ZYNK_LIBS = @ZYNK_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
exampledir = $(datadir)/zynk/examples
example_DATA = default.zynk
EXTRA_DIST = $(example_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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) --gnu examples/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu examples/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-exampleDATA: $(example_DATA)
@$(NORMAL_INSTALL)
test -z "$(exampledir)" || $(MKDIR_P) "$(DESTDIR)$(exampledir)"
@list='$(example_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(exampleDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(exampledir)/$$f'"; \
$(exampleDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(exampledir)/$$f"; \
done
uninstall-exampleDATA:
@$(NORMAL_UNINSTALL)
@list='$(example_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(exampledir)/$$f'"; \
rm -f "$(DESTDIR)$(exampledir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(exampledir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-exampleDATA
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-exampleDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exampleDATA install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-exampleDATA
# 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:

72
examples/default.zynk Normal file
View file

@ -0,0 +1,72 @@
<?xml version="1.0"?>
<zynk>
<values>
<sourcepath>/home/hanez/test/</sourcepath>
<destinationpath>/home/hanez/test2/</destinationpath>
<increase_verbosity>True</increase_verbosity>
<suppres_non_error_messages>False</suppres_non_error_messages>
<recurse_into_directories>True</recurse_into_directories>
<use_relative_path_names>False</use_relative_path_names>
<turn_off_relative>False</turn_off_relative>
<dont_send_implied_dirs_with_relative>False</dont_send_implied_dirs_with_relative>
<transfer_directories_without_recursing>False</transfer_directories_without_recursing>
<preserve_permissions>True</preserve_permissions>
<preserve_owner>False</preserve_owner>
<preserve_group>False</preserve_group>
<preserve_devices>False</preserve_devices>
<preserve_times>True</preserve_times>
<omit_directories_when_preserving_times>False</omit_directories_when_preserving_times>
<dont_delete_more_then_num_files></dont_delete_more_then_num_files>
<update_destination_files_inplace>False</update_destination_files_inplace>
<only_update_files_that_already_exist>False</only_update_files_that_already_exist>
<sent_files_are_removed_from_sender>False</sent_files_are_removed_from_sender>
<delete_files_that_dont_exist_on_sender>False</delete_files_that_dont_exist_on_sender>
<receiver_deletes_before_transfer>False</receiver_deletes_before_transfer>
<receiver_deletes_during_xfer>False</receiver_deletes_during_xfer>
<receiver_deletes_after_transfer>False</receiver_deletes_after_transfer>
<also_delete_excluded_files_on_receiver>False</also_delete_excluded_files_on_receiver>
<delete_even_if_there_are_io_errors>False</delete_even_if_there_are_io_errors>
<force_deletion_of_dirs_even_if_not_empty>False</force_deletion_of_dirs_even_if_not_empty>
<dont_transfer_any_file_larger_than_size></dont_transfer_any_file_larger_than_size>
<dont_skip_files_that_match_size_and_time>False</dont_skip_files_that_match_size_and_time>
<skip_files_that_match_in_size>False</skip_files_that_match_in_size>
<skip_based_on_checksum>False</skip_based_on_checksum>
<skip_files_that_are_newer_on_the_receiver>False</skip_files_that_are_newer_on_the_receiver>
<ignore_files_that_already_exist_on_receiver>False</ignore_files_that_already_exist_on_receiver>
<autoignore_files_in_the_same_way_cvs_does>False</autoignore_files_in_the_same_way_cvs_does>
<dont_cross_filesystem_boundaries>False</dont_cross_filesystem_boundaries>
<set_io_timeout_in_seconds></set_io_timeout_in_seconds>
<put_a_partially_transferred_files_into_dir></put_a_partially_transferred_files_into_dir>
<limit_io_bandwith_kbytes_per_second></limit_io_bandwith_kbytes_per_second>
<copy_files_whole>False</copy_files_whole>
<always_use_incremental_rsync_algorithm>False</always_use_incremental_rsync_algorithm>
<put_all_updated_files_into_place_at_end>False</put_all_updated_files_into_place_at_end>
<dont_map_uid_gid_values_by_user_group_name>False</dont_map_uid_gid_values_by_user_group_name>
<find_similiar_file_for_basis_if_no_dest_file>False</find_similiar_file_for_basis_if_no_dest_file>
<compress_file_data_during_the_transfer>False</compress_file_data_during_the_transfer>
<keep_partially_transfered_files>False</keep_partially_transfered_files>
<copy_symlinks_as_symlinks>False</copy_symlinks_as_symlinks>
<transform_symlink_into_referent_file_dir>False</transform_symlink_into_referent_file_dir>
<only_unsafe_symlinks_are_transformed>False</only_unsafe_symlinks_are_transformed>
<ignore_symlinks_that_point_outside_the_tree>False</ignore_symlinks_that_point_outside_the_tree>
<preserve_hardlinks>False</preserve_hardlinks>
<treat_symlinked_dir_on_receiver_as_dir>False</treat_symlinked_dir_on_receiver_as_dir>
<hostname>hanez.orgaaaa</hostname>
<port></port>
<username>hanez</username>
<password></password>
<remote_shell>ssh -p 23</remote_shell>
<remote_rsync></remote_rsync>
<sync_to_host>False</sync_to_host>
<specify_the_remote_shell_to_use>True</specify_the_remote_shell_to_use>
<specify_the_rsync_to_run_on_remote_machine>False</specify_the_rsync_to_run_on_remote_machine>
<create_temporary_files_in_dir></create_temporary_files_in_dir>
<custom_args></custom_args>
<archive_mode>False</archive_mode>
<force_a_fixed_checksum_blocksize></force_a_fixed_checksum_blocksize>
<compare_mod_times_with_reduced_accuracy></compare_mod_times_with_reduced_accuracy>
<handle_sparse_files_effeciently>False</handle_sparse_files_effeciently>
<prefer_ipv4>False</prefer_ipv4>
<prefer_ipv6>False</prefer_ipv6>
</values>
</zynk>

18
examples/hanez.org.zynk Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<zynk>
<values>
<sourcepath>/home/www/hanez.org/htdocs/</sourcepath>
<destinationpath>/var/www/hanez.org/www/htdocs/</destinationpath>
<hostname>hanez.org</hostname>
<username>hanez</username>
<password></password>
<custom_args>--exclude=photos/ --exclude=search/ --exclude=CVS/</custom_args>
<sync_to_host>1</sync_to_host>
<use_ssh>0</use_ssh>
<use_ssh_keyauth>1</use_ssh_keyauth>
<delete_files_in_destination>1</delete_files_in_destination>
<sync_recursive>1</sync_recursive>
<preserve_permissions>1</preserve_permissions>
<increase_verbosity>1</increase_verbosity>
</values>
</zynk>

1
install-sh Symbolic link
View file

@ -0,0 +1 @@
/usr/share/automake-1.10/install-sh

861
intltool-extract Executable file
View file

@ -0,0 +1,861 @@
#!/usr/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
# The Intltool Message Extractor
#
# Copyright (C) 2000-2001, 2003 Free Software Foundation.
#
# Intltool 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.
#
# Intltool 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.
#
# 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.
#
# Authors: Kenneth Christiansen <kenneth@gnu.org>
# Darin Adler <darin@bentspoon.com>
#
## Release information
my $PROGRAM = "intltool-extract";
my $PACKAGE = "intltool";
my $VERSION = "0.35.5";
## Loaded modules
use strict;
use File::Basename;
use Getopt::Long;
## Scalars used by the option stuff
my $TYPE_ARG = "0";
my $LOCAL_ARG = "0";
my $HELP_ARG = "0";
my $VERSION_ARG = "0";
my $UPDATE_ARG = "0";
my $QUIET_ARG = "0";
my $SRCDIR_ARG = ".";
my $FILE;
my $OUTFILE;
my $gettext_type = "";
my $input;
my %messages = ();
my %loc = ();
my %count = ();
my %comments = ();
my $strcount = 0;
my $XMLCOMMENT = "";
## Use this instead of \w for XML files to handle more possible characters.
my $w = "[-A-Za-z0-9._:]";
## Always print first
$| = 1;
## Handle options
GetOptions (
"type=s" => \$TYPE_ARG,
"local|l" => \$LOCAL_ARG,
"help|h" => \$HELP_ARG,
"version|v" => \$VERSION_ARG,
"update" => \$UPDATE_ARG,
"quiet|q" => \$QUIET_ARG,
"srcdir=s" => \$SRCDIR_ARG,
) or &error;
&split_on_argument;
## Check for options.
## This section will check for the different options.
sub split_on_argument {
if ($VERSION_ARG) {
&version;
} elsif ($HELP_ARG) {
&help;
} elsif ($LOCAL_ARG) {
&place_local;
&extract;
} elsif ($UPDATE_ARG) {
&place_normal;
&extract;
} elsif (@ARGV > 0) {
&place_normal;
&message;
&extract;
} else {
&help;
}
}
sub place_normal {
$FILE = $ARGV[0];
$OUTFILE = "$FILE.h";
my $dirname = dirname ($OUTFILE);
if (! -d "$dirname" && $dirname ne "") {
system ("mkdir -p $dirname");
}
}
sub place_local {
$FILE = $ARGV[0];
$OUTFILE = fileparse($FILE, ());
if (!-e "tmp/") {
system("mkdir tmp/");
}
$OUTFILE = "./tmp/$OUTFILE.h"
}
sub determine_type {
if ($TYPE_ARG =~ /^gettext\/(.*)/) {
$gettext_type=$1
}
}
## Sub for printing release information
sub version{
print <<_EOF_;
${PROGRAM} (${PACKAGE}) $VERSION
Copyright (C) 2000, 2003 Free Software Foundation, Inc.
Written by Kenneth Christiansen, 2000.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
_EOF_
exit;
}
## Sub for printing usage information
sub help {
print <<_EOF_;
Usage: ${PROGRAM} [OPTION]... [FILENAME]
Generates a header file from an XML source file.
It grabs all strings between <_translatable_node> and its end tag in
XML files. Read manpage (man ${PROGRAM}) for more info.
--type=TYPE Specify the file type of FILENAME. Currently supports:
"gettext/glade", "gettext/ini", "gettext/keys"
"gettext/rfc822deb", "gettext/schemas",
"gettext/scheme", "gettext/xml", "gettext/quoted"
-l, --local Writes output into current working directory
(conflicts with --update)
--update Writes output into the same directory the source file
reside (conflicts with --local)
--srcdir Root of the source tree
-v, --version Output version information and exit
-h, --help Display this help and exit
-q, --quiet Quiet mode
Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
or send email to <xml-i18n-tools\@gnome.org>.
_EOF_
exit;
}
## Sub for printing error messages
sub error{
print STDERR "Try `${PROGRAM} --help' for more information.\n";
exit;
}
sub message {
print "Generating C format header file for translation.\n" unless $QUIET_ARG;
}
sub extract {
&determine_type;
&convert;
open OUT, ">$OUTFILE";
binmode (OUT) if $^O eq 'MSWin32';
&msg_write;
close OUT;
print "Wrote $OUTFILE\n" unless $QUIET_ARG;
}
sub convert {
## Reading the file
{
local (*IN);
local $/; #slurp mode
open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!";
$input = <IN>;
}
&type_ini if $gettext_type eq "ini";
&type_keys if $gettext_type eq "keys";
&type_xml if $gettext_type eq "xml";
&type_glade if $gettext_type eq "glade";
&type_scheme if $gettext_type eq "scheme";
&type_schemas if $gettext_type eq "schemas";
&type_rfc822deb if $gettext_type eq "rfc822deb";
&type_quoted if $gettext_type eq "quoted";
}
sub entity_decode_minimal
{
local ($_) = @_;
s/&apos;/'/g; # '
s/&quot;/"/g; # "
s/&amp;/&/g;
return $_;
}
sub entity_decode
{
local ($_) = @_;
s/&apos;/'/g; # '
s/&quot;/"/g; # "
s/&amp;/&/g;
s/&lt;/</g;
s/&gt;/>/g;
return $_;
}
sub escape_char
{
return '\"' if $_ eq '"';
return '\n' if $_ eq "\n";
return '\\\\' if $_ eq '\\';
return $_;
}
sub escape
{
my ($string) = @_;
return join "", map &escape_char, split //, $string;
}
sub type_ini {
### For generic translatable desktop files ###
while ($input =~ /^(#(.+)\n)?^_.*=(.*)$/mg) {
if (defined($2)) {
$comments{$3} = $2;
}
$messages{$3} = [];
}
}
sub type_keys {
### For generic translatable mime/keys files ###
while ($input =~ /^\s*_\w+=(.*)$/mg) {
$messages{$1} = [];
}
}
sub type_xml {
### For generic translatable XML files ###
my $tree = readXml($input);
parseTree(0, $tree);
}
sub print_var {
my $var = shift;
my $vartype = ref $var;
if ($vartype =~ /ARRAY/) {
my @arr = @{$var};
print "[ ";
foreach my $el (@arr) {
print_var($el);
print ", ";
}
print "] ";
} elsif ($vartype =~ /HASH/) {
my %hash = %{$var};
print "{ ";
foreach my $key (keys %hash) {
print "$key => ";
print_var($hash{$key});
print ", ";
}
print "} ";
} else {
print $var;
}
}
# Same syntax as getAttributeString in intltool-merge.in.in, similar logic (look for ## differences comment)
sub getAttributeString
{
my $sub = shift;
my $do_translate = shift || 1;
my $language = shift || "";
my $translate = shift;
my $result = "";
foreach my $e (reverse(sort(keys %{ $sub }))) {
my $key = $e;
my $string = $sub->{$e};
my $quote = '"';
$string =~ s/^[\s]+//;
$string =~ s/[\s]+$//;
if ($string =~ /^'.*'$/)
{
$quote = "'";
}
$string =~ s/^['"]//g;
$string =~ s/['"]$//g;
## differences from intltool-merge.in.in
if ($key =~ /^_/) {
$comments{entity_decode($string)} = $XMLCOMMENT if $XMLCOMMENT;
$messages{entity_decode($string)} = [];
$$translate = 2;
}
## differences end here from intltool-merge.in.in
$result .= " $key=$quote$string$quote";
}
return $result;
}
# Verbatim copy from intltool-merge.in.in
sub getXMLstring
{
my $ref = shift;
my $spacepreserve = shift || 0;
my @list = @{ $ref };
my $result = "";
my $count = scalar(@list);
my $attrs = $list[0];
my $index = 1;
$spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
$spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
while ($index < $count) {
my $type = $list[$index];
my $content = $list[$index+1];
if (! $type ) {
# We've got CDATA
if ($content) {
# lets strip the whitespace here, and *ONLY* here
$content =~ s/\s+/ /gs if (!$spacepreserve);
$result .= $content;
}
} elsif ( "$type" ne "1" ) {
# We've got another element
$result .= "<$type";
$result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
if ($content) {
my $subresult = getXMLstring($content, $spacepreserve);
if ($subresult) {
$result .= ">".$subresult . "</$type>";
} else {
$result .= "/>";
}
} else {
$result .= "/>";
}
}
$index += 2;
}
return $result;
}
# Verbatim copy from intltool-merge.in.in, except for MULTIPLE_OUTPUT handling removed
# Translate list of nodes if necessary
sub translate_subnodes
{
my $fh = shift;
my $content = shift;
my $language = shift || "";
my $singlelang = shift || 0;
my $spacepreserve = shift || 0;
my @nodes = @{ $content };
my $count = scalar(@nodes);
my $index = 0;
while ($index < $count) {
my $type = $nodes[$index];
my $rest = $nodes[$index+1];
traverse($fh, $type, $rest, $language, $spacepreserve);
$index += 2;
}
}
# Based on traverse() in intltool-merge.in.in
sub traverse
{
my $fh = shift; # unused, to allow us to sync code between -merge and -extract
my $nodename = shift;
my $content = shift;
my $language = shift || "";
my $spacepreserve = shift || 0;
if ($nodename && "$nodename" eq "1") {
$XMLCOMMENT = $content;
} elsif ($nodename) {
# element
my @all = @{ $content };
my $attrs = shift @all;
my $translate = 0;
my $outattr = getAttributeString($attrs, 1, $language, \$translate);
if ($nodename =~ /^_/) {
$translate = 1;
$nodename =~ s/^_//;
}
my $lookup = '';
$spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
$spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
if ($translate) {
$lookup = getXMLstring($content, $spacepreserve);
if (!$spacepreserve) {
$lookup =~ s/^\s+//s;
$lookup =~ s/\s+$//s;
}
if ($lookup && $translate != 2) {
$comments{$lookup} = $XMLCOMMENT if $XMLCOMMENT;
$messages{$lookup} = [];
} elsif ($translate == 2) {
translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
}
} else {
$XMLCOMMENT = "";
my $count = scalar(@all);
if ($count > 0) {
my $index = 0;
while ($index < $count) {
my $type = $all[$index];
my $rest = $all[$index+1];
traverse($fh, $type, $rest, $language, $spacepreserve);
$index += 2;
}
}
}
$XMLCOMMENT = "";
}
}
# Verbatim copy from intltool-merge.in.in, $fh for compatibility
sub parseTree
{
my $fh = shift;
my $ref = shift;
my $language = shift || "";
my $name = shift @{ $ref };
my $cont = shift @{ $ref };
while (!$name || "$name" eq "1") {
$name = shift @{ $ref };
$cont = shift @{ $ref };
}
my $spacepreserve = 0;
my $attrs = @{$cont}[0];
$spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
traverse($fh, $name, $cont, $language, $spacepreserve);
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_comment
{
my $expat = shift;
my $data = $expat->original_string();
my $clist = $expat->{Curlist};
my $pos = $#$clist;
$data =~ s/^<!--//s;
$data =~ s/-->$//s;
push @$clist, 1 => $data;
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_cdatastart
{
my $expat = shift;
my $clist = $expat->{Curlist};
my $pos = $#$clist;
push @$clist, 0 => $expat->original_string();
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_cdataend
{
my $expat = shift;
my $clist = $expat->{Curlist};
my $pos = $#$clist;
$clist->[$pos] .= $expat->original_string();
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_char
{
my $expat = shift;
my $text = shift;
my $clist = $expat->{Curlist};
my $pos = $#$clist;
# Use original_string so that we retain escaped entities
# in CDATA sections.
#
if ($pos > 0 and $clist->[$pos - 1] eq '0') {
$clist->[$pos] .= $expat->original_string();
} else {
push @$clist, 0 => $expat->original_string();
}
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_start
{
my $expat = shift;
my $tag = shift;
my @origlist = ();
# Use original_string so that we retain escaped entities
# in attribute values. We must convert the string to an
# @origlist array to conform to the structure of the Tree
# Style.
#
my @original_array = split /\x/, $expat->original_string();
my $source = $expat->original_string();
# Remove leading tag.
#
$source =~ s|^\s*<\s*(\S+)||s;
# Grab attribute key/value pairs and push onto @origlist array.
#
while ($source)
{
if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
{
$source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
push @origlist, $1;
push @origlist, '"' . $2 . '"';
}
elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
{
$source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
push @origlist, $1;
push @origlist, "'" . $2 . "'";
}
else
{
last;
}
}
my $ol = [ { @origlist } ];
push @{ $expat->{Lists} }, $expat->{Curlist};
push @{ $expat->{Curlist} }, $tag => $ol;
$expat->{Curlist} = $ol;
}
# Copied from intltool-merge.in.in and added comment handler.
sub readXml
{
my $xmldoc = shift || return;
my $ret = eval 'require XML::Parser';
if(!$ret) {
die "You must have XML::Parser installed to run $0\n\n";
}
my $xp = new XML::Parser(Style => 'Tree');
$xp->setHandlers(Char => \&intltool_tree_char);
$xp->setHandlers(Start => \&intltool_tree_start);
$xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
$xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
## differences from intltool-merge.in.in
$xp->setHandlers(Comment => \&intltool_tree_comment);
## differences end here from intltool-merge.in.in
my $tree = $xp->parse($xmldoc);
#print_var($tree);
# <foo><!-- comment --><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
# would be:
# [foo, [{}, 1, "comment", head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], bar,
# [{}, 0, "Howdy", ref, [{}]], 0, "do" ] ]
return $tree;
}
sub type_schemas {
### For schemas XML files ###
# FIXME: We should handle escaped < (less than)
while ($input =~ /
<locale\ name="C">\s*
(<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)?
(<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)?
(<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)?
<\/locale>
/sgx) {
my @totranslate = ($3,$6,$9);
my @eachcomment = ($2,$5,$8);
foreach (@totranslate) {
my $currentcomment = shift @eachcomment;
next if !$_;
s/\s+/ /g;
$messages{entity_decode_minimal($_)} = [];
$comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
}
}
}
sub type_rfc822deb {
### For rfc822-style Debian configuration files ###
my $lineno = 1;
my $type = '';
while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg)
{
my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5);
while ($pre =~ m/\n/g)
{
$lineno ++;
}
$lineno += length($newline);
my @str_list = rfc822deb_split(length($underscore), $text);
for my $str (@str_list)
{
$strcount++;
$messages{$str} = [];
$loc{$str} = $lineno;
$count{$str} = $strcount;
my $usercomment = '';
while($pre =~ s/(^|\n)#([^\n]*)$//s)
{
$usercomment = "\n" . $2 . $usercomment;
}
$comments{$str} = $tag . $usercomment;
}
$lineno += ($text =~ s/\n//g);
}
}
sub rfc822deb_split {
# Debian defines a special way to deal with rfc822-style files:
# when a value contain newlines, it consists of
# 1. a short form (first line)
# 2. a long description, all lines begin with a space,
# and paragraphs are separated by a single dot on a line
# This routine returns an array of all paragraphs, and reformat
# them.
# When first argument is 2, the string is a comma separated list of
# values.
my $type = shift;
my $text = shift;
$text =~ s/^[ \t]//mg;
return (split(/, */, $text, 0)) if $type ne 1;
return ($text) if $text !~ /\n/;
$text =~ s/([^\n]*)\n//;
my @list = ($1);
my $str = '';
for my $line (split (/\n/, $text))
{
chomp $line;
if ($line =~ /^\.\s*$/)
{
# New paragraph
$str =~ s/\s*$//;
push(@list, $str);
$str = '';
}
elsif ($line =~ /^\s/)
{
# Line which must not be reformatted
$str .= "\n" if length ($str) && $str !~ /\n$/;
$line =~ s/\s+$//;
$str .= $line."\n";
}
else
{
# Continuation line, remove newline
$str .= " " if length ($str) && $str !~ /\n$/;
$str .= $line;
}
}
$str =~ s/\s*$//;
push(@list, $str) if length ($str);
return @list;
}
sub type_quoted {
while ($input =~ /\"(([^\"]|\\\")*[^\\\"])\"/g) {
my $message = $1;
my $before = $`;
$message =~ s/\\\"/\"/g;
$before =~ s/[^\n]//g;
$messages{$message} = [];
$loc{$message} = length ($before) + 2;
}
}
sub type_glade {
### For translatable Glade XML files ###
my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message";
while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) {
# Glade sometimes uses tags that normally mark translatable things for
# little bits of non-translatable content. We work around this by not
# translating strings that only includes something like label4 or window1.
$messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/;
}
while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
for my $item (split (/\n/, $1)) {
$messages{entity_decode($item)} = [];
}
}
## handle new glade files
while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
$messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/;
if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) {
$comments{entity_decode($3)} = entity_decode($2) ;
}
}
while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
$messages{entity_decode_minimal($2)} = [];
}
}
sub type_scheme {
my ($line, $i, $state, $str, $trcomment, $char);
for $line (split(/\n/, $input)) {
$i = 0;
$state = 0; # 0 - nothing, 1 - string, 2 - translatable string
while ($i < length($line)) {
if (substr($line,$i,1) eq "\"") {
if ($state == 2) {
$comments{$str} = $trcomment if ($trcomment);
$messages{$str} = [];
$str = '';
$state = 0; $trcomment = "";
} elsif ($state == 1) {
$str = '';
$state = 0; $trcomment = "";
} else {
$state = 1;
$str = '';
if ($i>0 && substr($line,$i-1,1) eq '_') {
$state = 2;
}
}
} elsif (!$state) {
if (substr($line,$i,1) eq ";") {
$trcomment = substr($line,$i+1);
$trcomment =~ s/^;*\s*//;
$i = length($line);
} elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) {
$trcomment = "";
}
} else {
if (substr($line,$i,1) eq "\\") {
$char = substr($line,$i+1,1);
if ($char ne "\"" && $char ne "\\") {
$str = $str . "\\";
}
$i++;
}
$str = $str . substr($line,$i,1);
}
$i++;
}
}
}
sub msg_write {
my @msgids;
if (%count)
{
@msgids = sort { $count{$a} <=> $count{$b} } keys %count;
}
else
{
@msgids = sort keys %messages;
}
for my $message (@msgids)
{
my $offsetlines = 1;
$offsetlines++ if $message =~ /%/;
if (defined ($comments{$message}))
{
while ($comments{$message} =~ m/\n/g)
{
$offsetlines++;
}
}
print OUT "# ".($loc{$message} - $offsetlines). " \"$FILE\"\n"
if defined $loc{$message};
print OUT "/* ".$comments{$message}." */\n"
if defined $comments{$message};
print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/;
my @lines = split (/\n/, $message, -1);
for (my $n = 0; $n < @lines; $n++)
{
if ($n == 0)
{
print OUT "char *s = N_(\"";
}
else
{
print OUT " \"";
}
print OUT escape($lines[$n]);
if ($n < @lines - 1)
{
print OUT "\\n\"\n";
}
else
{
print OUT "\");\n";
}
}
}
}

861
intltool-extract.in Normal file
View file

@ -0,0 +1,861 @@
#!@INTLTOOL_PERL@ -w
# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
# The Intltool Message Extractor
#
# Copyright (C) 2000-2001, 2003 Free Software Foundation.
#
# Intltool 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.
#
# Intltool 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.
#
# 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.
#
# Authors: Kenneth Christiansen <kenneth@gnu.org>
# Darin Adler <darin@bentspoon.com>
#
## Release information
my $PROGRAM = "intltool-extract";
my $PACKAGE = "intltool";
my $VERSION = "0.35.5";
## Loaded modules
use strict;
use File::Basename;
use Getopt::Long;
## Scalars used by the option stuff
my $TYPE_ARG = "0";
my $LOCAL_ARG = "0";
my $HELP_ARG = "0";
my $VERSION_ARG = "0";
my $UPDATE_ARG = "0";
my $QUIET_ARG = "0";
my $SRCDIR_ARG = ".";
my $FILE;
my $OUTFILE;
my $gettext_type = "";
my $input;
my %messages = ();
my %loc = ();
my %count = ();
my %comments = ();
my $strcount = 0;
my $XMLCOMMENT = "";
## Use this instead of \w for XML files to handle more possible characters.
my $w = "[-A-Za-z0-9._:]";
## Always print first
$| = 1;
## Handle options
GetOptions (
"type=s" => \$TYPE_ARG,
"local|l" => \$LOCAL_ARG,
"help|h" => \$HELP_ARG,
"version|v" => \$VERSION_ARG,
"update" => \$UPDATE_ARG,
"quiet|q" => \$QUIET_ARG,
"srcdir=s" => \$SRCDIR_ARG,
) or &error;
&split_on_argument;
## Check for options.
## This section will check for the different options.
sub split_on_argument {
if ($VERSION_ARG) {
&version;
} elsif ($HELP_ARG) {
&help;
} elsif ($LOCAL_ARG) {
&place_local;
&extract;
} elsif ($UPDATE_ARG) {
&place_normal;
&extract;
} elsif (@ARGV > 0) {
&place_normal;
&message;
&extract;
} else {
&help;
}
}
sub place_normal {
$FILE = $ARGV[0];
$OUTFILE = "$FILE.h";
my $dirname = dirname ($OUTFILE);
if (! -d "$dirname" && $dirname ne "") {
system ("mkdir -p $dirname");
}
}
sub place_local {
$FILE = $ARGV[0];
$OUTFILE = fileparse($FILE, ());
if (!-e "tmp/") {
system("mkdir tmp/");
}
$OUTFILE = "./tmp/$OUTFILE.h"
}
sub determine_type {
if ($TYPE_ARG =~ /^gettext\/(.*)/) {
$gettext_type=$1
}
}
## Sub for printing release information
sub version{
print <<_EOF_;
${PROGRAM} (${PACKAGE}) $VERSION
Copyright (C) 2000, 2003 Free Software Foundation, Inc.
Written by Kenneth Christiansen, 2000.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
_EOF_
exit;
}
## Sub for printing usage information
sub help {
print <<_EOF_;
Usage: ${PROGRAM} [OPTION]... [FILENAME]
Generates a header file from an XML source file.
It grabs all strings between <_translatable_node> and its end tag in
XML files. Read manpage (man ${PROGRAM}) for more info.
--type=TYPE Specify the file type of FILENAME. Currently supports:
"gettext/glade", "gettext/ini", "gettext/keys"
"gettext/rfc822deb", "gettext/schemas",
"gettext/scheme", "gettext/xml", "gettext/quoted"
-l, --local Writes output into current working directory
(conflicts with --update)
--update Writes output into the same directory the source file
reside (conflicts with --local)
--srcdir Root of the source tree
-v, --version Output version information and exit
-h, --help Display this help and exit
-q, --quiet Quiet mode
Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
or send email to <xml-i18n-tools\@gnome.org>.
_EOF_
exit;
}
## Sub for printing error messages
sub error{
print STDERR "Try `${PROGRAM} --help' for more information.\n";
exit;
}
sub message {
print "Generating C format header file for translation.\n" unless $QUIET_ARG;
}
sub extract {
&determine_type;
&convert;
open OUT, ">$OUTFILE";
binmode (OUT) if $^O eq 'MSWin32';
&msg_write;
close OUT;
print "Wrote $OUTFILE\n" unless $QUIET_ARG;
}
sub convert {
## Reading the file
{
local (*IN);
local $/; #slurp mode
open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!";
$input = <IN>;
}
&type_ini if $gettext_type eq "ini";
&type_keys if $gettext_type eq "keys";
&type_xml if $gettext_type eq "xml";
&type_glade if $gettext_type eq "glade";
&type_scheme if $gettext_type eq "scheme";
&type_schemas if $gettext_type eq "schemas";
&type_rfc822deb if $gettext_type eq "rfc822deb";
&type_quoted if $gettext_type eq "quoted";
}
sub entity_decode_minimal
{
local ($_) = @_;
s/&apos;/'/g; # '
s/&quot;/"/g; # "
s/&amp;/&/g;
return $_;
}
sub entity_decode
{
local ($_) = @_;
s/&apos;/'/g; # '
s/&quot;/"/g; # "
s/&amp;/&/g;
s/&lt;/</g;
s/&gt;/>/g;
return $_;
}
sub escape_char
{
return '\"' if $_ eq '"';
return '\n' if $_ eq "\n";
return '\\\\' if $_ eq '\\';
return $_;
}
sub escape
{
my ($string) = @_;
return join "", map &escape_char, split //, $string;
}
sub type_ini {
### For generic translatable desktop files ###
while ($input =~ /^(#(.+)\n)?^_.*=(.*)$/mg) {
if (defined($2)) {
$comments{$3} = $2;
}
$messages{$3} = [];
}
}
sub type_keys {
### For generic translatable mime/keys files ###
while ($input =~ /^\s*_\w+=(.*)$/mg) {
$messages{$1} = [];
}
}
sub type_xml {
### For generic translatable XML files ###
my $tree = readXml($input);
parseTree(0, $tree);
}
sub print_var {
my $var = shift;
my $vartype = ref $var;
if ($vartype =~ /ARRAY/) {
my @arr = @{$var};
print "[ ";
foreach my $el (@arr) {
print_var($el);
print ", ";
}
print "] ";
} elsif ($vartype =~ /HASH/) {
my %hash = %{$var};
print "{ ";
foreach my $key (keys %hash) {
print "$key => ";
print_var($hash{$key});
print ", ";
}
print "} ";
} else {
print $var;
}
}
# Same syntax as getAttributeString in intltool-merge.in.in, similar logic (look for ## differences comment)
sub getAttributeString
{
my $sub = shift;
my $do_translate = shift || 1;
my $language = shift || "";
my $translate = shift;
my $result = "";
foreach my $e (reverse(sort(keys %{ $sub }))) {
my $key = $e;
my $string = $sub->{$e};
my $quote = '"';
$string =~ s/^[\s]+//;
$string =~ s/[\s]+$//;
if ($string =~ /^'.*'$/)
{
$quote = "'";
}
$string =~ s/^['"]//g;
$string =~ s/['"]$//g;
## differences from intltool-merge.in.in
if ($key =~ /^_/) {
$comments{entity_decode($string)} = $XMLCOMMENT if $XMLCOMMENT;
$messages{entity_decode($string)} = [];
$$translate = 2;
}
## differences end here from intltool-merge.in.in
$result .= " $key=$quote$string$quote";
}
return $result;
}
# Verbatim copy from intltool-merge.in.in
sub getXMLstring
{
my $ref = shift;
my $spacepreserve = shift || 0;
my @list = @{ $ref };
my $result = "";
my $count = scalar(@list);
my $attrs = $list[0];
my $index = 1;
$spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
$spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
while ($index < $count) {
my $type = $list[$index];
my $content = $list[$index+1];
if (! $type ) {
# We've got CDATA
if ($content) {
# lets strip the whitespace here, and *ONLY* here
$content =~ s/\s+/ /gs if (!$spacepreserve);
$result .= $content;
}
} elsif ( "$type" ne "1" ) {
# We've got another element
$result .= "<$type";
$result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
if ($content) {
my $subresult = getXMLstring($content, $spacepreserve);
if ($subresult) {
$result .= ">".$subresult . "</$type>";
} else {
$result .= "/>";
}
} else {
$result .= "/>";
}
}
$index += 2;
}
return $result;
}
# Verbatim copy from intltool-merge.in.in, except for MULTIPLE_OUTPUT handling removed
# Translate list of nodes if necessary
sub translate_subnodes
{
my $fh = shift;
my $content = shift;
my $language = shift || "";
my $singlelang = shift || 0;
my $spacepreserve = shift || 0;
my @nodes = @{ $content };
my $count = scalar(@nodes);
my $index = 0;
while ($index < $count) {
my $type = $nodes[$index];
my $rest = $nodes[$index+1];
traverse($fh, $type, $rest, $language, $spacepreserve);
$index += 2;
}
}
# Based on traverse() in intltool-merge.in.in
sub traverse
{
my $fh = shift; # unused, to allow us to sync code between -merge and -extract
my $nodename = shift;
my $content = shift;
my $language = shift || "";
my $spacepreserve = shift || 0;
if ($nodename && "$nodename" eq "1") {
$XMLCOMMENT = $content;
} elsif ($nodename) {
# element
my @all = @{ $content };
my $attrs = shift @all;
my $translate = 0;
my $outattr = getAttributeString($attrs, 1, $language, \$translate);
if ($nodename =~ /^_/) {
$translate = 1;
$nodename =~ s/^_//;
}
my $lookup = '';
$spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
$spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
if ($translate) {
$lookup = getXMLstring($content, $spacepreserve);
if (!$spacepreserve) {
$lookup =~ s/^\s+//s;
$lookup =~ s/\s+$//s;
}
if ($lookup && $translate != 2) {
$comments{$lookup} = $XMLCOMMENT if $XMLCOMMENT;
$messages{$lookup} = [];
} elsif ($translate == 2) {
translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
}
} else {
$XMLCOMMENT = "";
my $count = scalar(@all);
if ($count > 0) {
my $index = 0;
while ($index < $count) {
my $type = $all[$index];
my $rest = $all[$index+1];
traverse($fh, $type, $rest, $language, $spacepreserve);
$index += 2;
}
}
}
$XMLCOMMENT = "";
}
}
# Verbatim copy from intltool-merge.in.in, $fh for compatibility
sub parseTree
{
my $fh = shift;
my $ref = shift;
my $language = shift || "";
my $name = shift @{ $ref };
my $cont = shift @{ $ref };
while (!$name || "$name" eq "1") {
$name = shift @{ $ref };
$cont = shift @{ $ref };
}
my $spacepreserve = 0;
my $attrs = @{$cont}[0];
$spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
traverse($fh, $name, $cont, $language, $spacepreserve);
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_comment
{
my $expat = shift;
my $data = $expat->original_string();
my $clist = $expat->{Curlist};
my $pos = $#$clist;
$data =~ s/^<!--//s;
$data =~ s/-->$//s;
push @$clist, 1 => $data;
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_cdatastart
{
my $expat = shift;
my $clist = $expat->{Curlist};
my $pos = $#$clist;
push @$clist, 0 => $expat->original_string();
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_cdataend
{
my $expat = shift;
my $clist = $expat->{Curlist};
my $pos = $#$clist;
$clist->[$pos] .= $expat->original_string();
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_char
{
my $expat = shift;
my $text = shift;
my $clist = $expat->{Curlist};
my $pos = $#$clist;
# Use original_string so that we retain escaped entities
# in CDATA sections.
#
if ($pos > 0 and $clist->[$pos - 1] eq '0') {
$clist->[$pos] .= $expat->original_string();
} else {
push @$clist, 0 => $expat->original_string();
}
}
# Verbatim copy from intltool-merge.in.in
sub intltool_tree_start
{
my $expat = shift;
my $tag = shift;
my @origlist = ();
# Use original_string so that we retain escaped entities
# in attribute values. We must convert the string to an
# @origlist array to conform to the structure of the Tree
# Style.
#
my @original_array = split /\x/, $expat->original_string();
my $source = $expat->original_string();
# Remove leading tag.
#
$source =~ s|^\s*<\s*(\S+)||s;
# Grab attribute key/value pairs and push onto @origlist array.
#
while ($source)
{
if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
{
$source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
push @origlist, $1;
push @origlist, '"' . $2 . '"';
}
elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
{
$source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
push @origlist, $1;
push @origlist, "'" . $2 . "'";
}
else
{
last;
}
}
my $ol = [ { @origlist } ];
push @{ $expat->{Lists} }, $expat->{Curlist};
push @{ $expat->{Curlist} }, $tag => $ol;
$expat->{Curlist} = $ol;
}
# Copied from intltool-merge.in.in and added comment handler.
sub readXml
{
my $xmldoc = shift || return;
my $ret = eval 'require XML::Parser';
if(!$ret) {
die "You must have XML::Parser installed to run $0\n\n";
}
my $xp = new XML::Parser(Style => 'Tree');
$xp->setHandlers(Char => \&intltool_tree_char);
$xp->setHandlers(Start => \&intltool_tree_start);
$xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
$xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
## differences from intltool-merge.in.in
$xp->setHandlers(Comment => \&intltool_tree_comment);
## differences end here from intltool-merge.in.in
my $tree = $xp->parse($xmldoc);
#print_var($tree);
# <foo><!-- comment --><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
# would be:
# [foo, [{}, 1, "comment", head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], bar,
# [{}, 0, "Howdy", ref, [{}]], 0, "do" ] ]
return $tree;
}
sub type_schemas {
### For schemas XML files ###
# FIXME: We should handle escaped < (less than)
while ($input =~ /
<locale\ name="C">\s*
(<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)?
(<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)?
(<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)?
<\/locale>
/sgx) {
my @totranslate = ($3,$6,$9);
my @eachcomment = ($2,$5,$8);
foreach (@totranslate) {
my $currentcomment = shift @eachcomment;
next if !$_;
s/\s+/ /g;
$messages{entity_decode_minimal($_)} = [];
$comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
}
}
}
sub type_rfc822deb {
### For rfc822-style Debian configuration files ###
my $lineno = 1;
my $type = '';
while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg)
{
my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5);
while ($pre =~ m/\n/g)
{
$lineno ++;
}
$lineno += length($newline);
my @str_list = rfc822deb_split(length($underscore), $text);
for my $str (@str_list)
{
$strcount++;
$messages{$str} = [];
$loc{$str} = $lineno;
$count{$str} = $strcount;
my $usercomment = '';
while($pre =~ s/(^|\n)#([^\n]*)$//s)
{
$usercomment = "\n" . $2 . $usercomment;
}
$comments{$str} = $tag . $usercomment;
}
$lineno += ($text =~ s/\n//g);
}
}
sub rfc822deb_split {
# Debian defines a special way to deal with rfc822-style files:
# when a value contain newlines, it consists of
# 1. a short form (first line)
# 2. a long description, all lines begin with a space,
# and paragraphs are separated by a single dot on a line
# This routine returns an array of all paragraphs, and reformat
# them.
# When first argument is 2, the string is a comma separated list of
# values.
my $type = shift;
my $text = shift;
$text =~ s/^[ \t]//mg;
return (split(/, */, $text, 0)) if $type ne 1;
return ($text) if $text !~ /\n/;
$text =~ s/([^\n]*)\n//;
my @list = ($1);
my $str = '';
for my $line (split (/\n/, $text))
{
chomp $line;
if ($line =~ /^\.\s*$/)
{
# New paragraph
$str =~ s/\s*$//;
push(@list, $str);
$str = '';
}
elsif ($line =~ /^\s/)
{
# Line which must not be reformatted
$str .= "\n" if length ($str) && $str !~ /\n$/;
$line =~ s/\s+$//;
$str .= $line."\n";
}
else
{
# Continuation line, remove newline
$str .= " " if length ($str) && $str !~ /\n$/;
$str .= $line;
}
}
$str =~ s/\s*$//;
push(@list, $str) if length ($str);
return @list;
}
sub type_quoted {
while ($input =~ /\"(([^\"]|\\\")*[^\\\"])\"/g) {
my $message = $1;
my $before = $`;
$message =~ s/\\\"/\"/g;
$before =~ s/[^\n]//g;
$messages{$message} = [];
$loc{$message} = length ($before) + 2;
}
}
sub type_glade {
### For translatable Glade XML files ###
my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message";
while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) {
# Glade sometimes uses tags that normally mark translatable things for
# little bits of non-translatable content. We work around this by not
# translating strings that only includes something like label4 or window1.
$messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/;
}
while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
for my $item (split (/\n/, $1)) {
$messages{entity_decode($item)} = [];
}
}
## handle new glade files
while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
$messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/;
if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) {
$comments{entity_decode($3)} = entity_decode($2) ;
}
}
while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
$messages{entity_decode_minimal($2)} = [];
}
}
sub type_scheme {
my ($line, $i, $state, $str, $trcomment, $char);
for $line (split(/\n/, $input)) {
$i = 0;
$state = 0; # 0 - nothing, 1 - string, 2 - translatable string
while ($i < length($line)) {
if (substr($line,$i,1) eq "\"") {
if ($state == 2) {
$comments{$str} = $trcomment if ($trcomment);
$messages{$str} = [];
$str = '';
$state = 0; $trcomment = "";
} elsif ($state == 1) {
$str = '';
$state = 0; $trcomment = "";
} else {
$state = 1;
$str = '';
if ($i>0 && substr($line,$i-1,1) eq '_') {
$state = 2;
}
}
} elsif (!$state) {
if (substr($line,$i,1) eq ";") {
$trcomment = substr($line,$i+1);
$trcomment =~ s/^;*\s*//;
$i = length($line);
} elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) {
$trcomment = "";
}
} else {
if (substr($line,$i,1) eq "\\") {
$char = substr($line,$i+1,1);
if ($char ne "\"" && $char ne "\\") {
$str = $str . "\\";
}
$i++;
}
$str = $str . substr($line,$i,1);
}
$i++;
}
}
}
sub msg_write {
my @msgids;
if (%count)
{
@msgids = sort { $count{$a} <=> $count{$b} } keys %count;
}
else
{
@msgids = sort keys %messages;
}
for my $message (@msgids)
{
my $offsetlines = 1;
$offsetlines++ if $message =~ /%/;
if (defined ($comments{$message}))
{
while ($comments{$message} =~ m/\n/g)
{
$offsetlines++;
}
}
print OUT "# ".($loc{$message} - $offsetlines). " \"$FILE\"\n"
if defined $loc{$message};
print OUT "/* ".$comments{$message}." */\n"
if defined $comments{$message};
print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/;
my @lines = split (/\n/, $message, -1);
for (my $n = 0; $n < @lines; $n++)
{
if ($n == 0)
{
print OUT "char *s = N_(\"";
}
else
{
print OUT " \"";
}
print OUT escape($lines[$n]);
if ($n < @lines - 1)
{
print OUT "\\n\"\n";
}
else
{
print OUT "\");\n";
}
}
}
}

1403
intltool-merge Executable file

File diff suppressed because it is too large Load diff

1403
intltool-merge.in Normal file

File diff suppressed because it is too large Load diff

1098
intltool-update Executable file

File diff suppressed because it is too large Load diff

1098
intltool-update.in Normal file

File diff suppressed because it is too large Load diff

91
lib/uci/Makefile Normal file
View file

@ -0,0 +1,91 @@
VERSION=0.8
# optional features
PLUGIN_SUPPORT=1
DEBUG=0
DEBUG_TYPECAST=0
include Makefile.inc
LIBS=-lc -ldl
SHLIB_FILE=libuci.$(SHLIB_EXT).$(VERSION)
define add_feature
@echo "$(if $(findstring 1,$($(1))),#define UCI_$(1) 1,#undef UCI_$(1))" >> $@.tmp
endef
LIBUCI_DEPS=file.c history.c list.c util.c uci.h uci_config.h uci_internal.h
all: uci libuci.$(SHLIB_EXT) uci-static ucimap-example
cli.o: cli.c uci.h uci_config.h
ucimap.o: ucimap.c uci.h uci_config.h ucimap.h
uci_config.h: FORCE
@rm -f "$@.tmp"
@echo "#define UCI_PREFIX \"$(prefix)\"" > "$@.tmp"
$(call add_feature,PLUGIN_SUPPORT)
$(call add_feature,DEBUG)
$(call add_feature,DEBUG_TYPECAST)
@if [ \! -f "$@" ] || ! cmp "$@.tmp" "$@" >/dev/null; then \
mv "$@.tmp" "$@"; \
else \
rm -f "$@.tmp"; \
fi
%.o: %.c
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
%-shared.o: %.c
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(FPIC) $<
%-static.o: %.c
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
uci: cli.o libuci.$(SHLIB_EXT)
$(CC) -o $@ $< -L. -luci $(LIBS)
uci-static: cli.o libuci.a
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
libuci-static.o: libuci.c $(LIBUCI_DEPS)
libuci-shared.o: libuci.c $(LIBUCI_DEPS)
ucimap-static.o: ucimap.c $(LIBUCI_DEPS) ucimap.h
ucimap-shared.o: ucimap.c $(LIBUCI_DEPS) ucimap.h
libuci.a: libuci-static.o ucimap-static.o
rm -f $@
$(AR) rc $@ $^
$(RANLIB) $@
libuci.$(SHLIB_EXT): libuci-shared.o ucimap-shared.o
$(LINK) $(SHLIB_FLAGS) -o $(SHLIB_FILE) $^ $(LIBS)
ln -sf $(SHLIB_FILE) $@
ucimap-example.o: ucimap-example.c list.h
ucimap-example: ucimap-example.o libuci.a
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
clean:
rm -f uci uci-static *.[oa] *.so* *.dylib* uci_config.h ucimap-example
install: install-bin install-dev
install-dev: all
$(MKDIR) -p $(DESTDIR)$(prefix)/lib
$(MKDIR) -p $(DESTDIR)$(prefix)/include
$(INSTALL) -m0644 libuci.a $(DESTDIR)$(prefix)/lib/
$(INSTALL) -m0644 uci_config.h uci.h ucimap.h $(DESTDIR)$(prefix)/include/
install-bin: all
$(MKDIR) -p $(DESTDIR)$(prefix)/lib
$(INSTALL) -m0755 $(SHLIB_FILE) $(DESTDIR)$(prefix)/lib/
ln -sf $(SHLIB_FILE) $(DESTDIR)$(prefix)/lib/libuci.$(SHLIB_EXT)
$(MKDIR) -p $(DESTDIR)$(prefix)/bin
$(INSTALL) -m0755 uci $(DESTDIR)$(prefix)/bin/
test: all ucimap-example
make -C test
FORCE: ;
.PHONY: FORCE

31
lib/uci/Makefile.inc Normal file
View file

@ -0,0 +1,31 @@
prefix=/usr
DESTDIR=
COPTS=-O2
WOPTS=-pedantic -Werror -Wall
FPIC=-fPIC
CFLAGS=$(COPTS) $(WOPTS) -std=gnu99
CPPFLAGS=-I.
AR=ar
LD=ld
CC=gcc
RANLIB=ranlib
INSTALL=install
MKDIR=mkdir
ifeq ($(DEBUG),1)
COPTS = -O0
CFLAGS += -g3
endif
OS=$(shell uname)
ifeq ($(OS),Darwin)
LINK=$(LD)
SHLIB_EXT=dylib
SHLIB_FLAGS=-dylib
else
LINK=$(CC)
SHLIB_EXT=so
SHLIB_FLAGS=-shared -Wl,-soname,$(SHLIB_FILE)
endif

698
lib/uci/cli.c Normal file
View file

@ -0,0 +1,698 @@
/*
* cli - Command Line Interface for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation
*
* 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.
*/
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "uci.h"
#define MAX_ARGS 4 /* max command line arguments for batch mode */
static const char *delimiter = " ";
static const char *appname;
static enum {
CLI_FLAG_MERGE = (1 << 0),
CLI_FLAG_QUIET = (1 << 1),
CLI_FLAG_NOCOMMIT = (1 << 2),
CLI_FLAG_BATCH = (1 << 3),
CLI_FLAG_SHOW_EXT = (1 << 4),
CLI_FLAG_NOPLUGINS= (1 << 5),
} flags;
static FILE *input;
static struct uci_context *ctx;
enum {
/* section cmds */
CMD_GET,
CMD_SET,
CMD_ADD_LIST,
CMD_DEL,
CMD_RENAME,
CMD_REVERT,
CMD_REORDER,
/* package cmds */
CMD_SHOW,
CMD_CHANGES,
CMD_EXPORT,
CMD_COMMIT,
/* other cmds */
CMD_ADD,
CMD_IMPORT,
CMD_HELP,
};
struct uci_type_list {
unsigned int idx;
const char *name;
struct uci_type_list *next;
};
static struct uci_type_list *type_list = NULL;
static char *typestr = NULL;
static const char *cur_section_ref = NULL;
static int uci_cmd(int argc, char **argv);
static void
uci_reset_typelist(void)
{
struct uci_type_list *type;
while (type_list != NULL) {
type = type_list;
type_list = type_list->next;
free(type);
}
if (typestr) {
free(typestr);
typestr = NULL;
}
cur_section_ref = NULL;
}
static char *
uci_lookup_section_ref(struct uci_section *s)
{
struct uci_type_list *ti = type_list;
int maxlen;
if (!s->anonymous || !(flags & CLI_FLAG_SHOW_EXT))
return s->e.name;
/* look up in section type list */
while (ti) {
if (strcmp(ti->name, s->type) == 0)
break;
ti = ti->next;
}
if (!ti) {
ti = malloc(sizeof(struct uci_type_list));
memset(ti, 0, sizeof(struct uci_type_list));
ti->next = type_list;
type_list = ti;
ti->name = s->type;
}
maxlen = strlen(s->type) + 1 + 2 + 10;
if (!typestr) {
typestr = malloc(maxlen);
} else {
typestr = realloc(typestr, maxlen);
}
sprintf(typestr, "@%s[%d]", ti->name, ti->idx);
ti->idx++;
return typestr;
}
static void uci_usage(void)
{
fprintf(stderr,
"Usage: %s [<options>] <command> [<arguments>]\n\n"
"Commands:\n"
"\tbatch\n"
"\texport [<config>]\n"
"\timport [<config>]\n"
"\tchanges [<config>]\n"
"\tcommit [<config>]\n"
"\tadd <config> <section-type>\n"
"\tadd_list <config>.<section>.<option>=<string>\n"
"\tshow [<config>[.<section>[.<option>]]]\n"
"\tget <config>.<section>[.<option>]\n"
"\tset <config>.<section>[.<option>]=<value>\n"
"\tdelete <config>[.<section[.<option>]]\n"
"\trename <config>.<section>[.<option>]=<name>\n"
"\trevert <config>[.<section>[.<option>]]\n"
"\treorder <config>.<section>=<position>\n"
"\n"
"Options:\n"
"\t-c <path> set the search path for config files (default: /etc/config)\n"
"\t-d <str> set the delimiter for list values in uci show\n"
"\t-f <file> use <file> as input instead of stdin\n"
"\t-L do not load any plugins\n"
"\t-m when importing, merge data into an existing package\n"
"\t-n name unnamed sections on export (default)\n"
"\t-N don't name unnamed sections\n"
"\t-p <path> add a search path for config change files\n"
"\t-P <path> add a search path for config change files and use as default\n"
"\t-q quiet mode (don't print error messages)\n"
"\t-s force strict mode (stop on parser errors, default)\n"
"\t-S disable strict mode\n"
"\t-X do not use extended syntax on 'show'\n"
"\n",
appname
);
}
static void cli_perror(void)
{
if (flags & CLI_FLAG_QUIET)
return;
uci_perror(ctx, appname);
}
static void uci_show_value(struct uci_option *o)
{
struct uci_element *e;
bool sep = false;
switch(o->type) {
case UCI_TYPE_STRING:
printf("%s\n", o->v.string);
break;
case UCI_TYPE_LIST:
uci_foreach_element(&o->v.list, e) {
printf("%s%s", (sep ? delimiter : ""), e->name);
sep = true;
}
printf("\n");
break;
default:
printf("<unknown>\n");
break;
}
}
static void uci_show_option(struct uci_option *o)
{
printf("%s.%s.%s=",
o->section->package->e.name,
(cur_section_ref ? cur_section_ref : o->section->e.name),
o->e.name);
uci_show_value(o);
}
static void uci_show_section(struct uci_section *s)
{
struct uci_element *e;
const char *cname;
const char *sname;
cname = s->package->e.name;
sname = (cur_section_ref ? cur_section_ref : s->e.name);
printf("%s.%s=%s\n", cname, sname, s->type);
uci_foreach_element(&s->options, e) {
uci_show_option(uci_to_option(e));
}
}
static void uci_show_package(struct uci_package *p)
{
struct uci_element *e;
uci_reset_typelist();
uci_foreach_element( &p->sections, e) {
struct uci_section *s = uci_to_section(e);
cur_section_ref = uci_lookup_section_ref(s);
uci_show_section(s);
}
uci_reset_typelist();
}
static void uci_show_changes(struct uci_package *p)
{
struct uci_element *e;
uci_foreach_element(&p->saved_history, e) {
struct uci_history *h = uci_to_history(e);
char *prefix = "";
char *op = "=";
switch(h->cmd) {
case UCI_CMD_REMOVE:
prefix = "-";
break;
case UCI_CMD_LIST_ADD:
op = "+=";
break;
default:
break;
}
printf("%s%s.%s", prefix, p->e.name, h->section);
if (e->name)
printf(".%s", e->name);
if (h->cmd != UCI_CMD_REMOVE)
printf("%s%s", op, h->value);
printf("\n");
}
}
static int package_cmd(int cmd, char *tuple)
{
struct uci_element *e = NULL;
struct uci_ptr ptr;
if (uci_lookup_ptr(ctx, &ptr, tuple, true) != UCI_OK) {
cli_perror();
return 1;
}
e = ptr.last;
switch(cmd) {
case CMD_CHANGES:
uci_show_changes(ptr.p);
break;
case CMD_COMMIT:
if (flags & CLI_FLAG_NOCOMMIT)
return 0;
if (uci_commit(ctx, &ptr.p, false) != UCI_OK)
cli_perror();
break;
case CMD_EXPORT:
uci_export(ctx, stdout, ptr.p, true);
break;
case CMD_SHOW:
if (!(ptr.flags & UCI_LOOKUP_COMPLETE)) {
ctx->err = UCI_ERR_NOTFOUND;
cli_perror();
return 1;
}
switch(e->type) {
case UCI_TYPE_PACKAGE:
uci_show_package(ptr.p);
break;
case UCI_TYPE_SECTION:
uci_show_section(ptr.s);
break;
case UCI_TYPE_OPTION:
uci_show_option(ptr.o);
break;
default:
/* should not happen */
return 1;
}
break;
}
uci_unload(ctx, ptr.p);
return 0;
}
static int uci_do_import(int argc, char **argv)
{
struct uci_package *package = NULL;
char *name = NULL;
int ret = UCI_OK;
bool merge = false;
if (argc > 2)
return 255;
if (argc == 2)
name = argv[1];
else if (flags & CLI_FLAG_MERGE)
/* need a package to merge */
return 255;
if (flags & CLI_FLAG_MERGE) {
if (uci_load(ctx, name, &package) != UCI_OK)
package = NULL;
else
merge = true;
}
ret = uci_import(ctx, input, name, &package, (name != NULL));
if (ret == UCI_OK) {
if (merge) {
ret = uci_save(ctx, package);
} else {
struct uci_element *e;
/* loop through all config sections and overwrite existing data */
uci_foreach_element(&ctx->root, e) {
struct uci_package *p = uci_to_package(e);
ret = uci_commit(ctx, &p, true);
}
}
}
if (ret != UCI_OK) {
cli_perror();
return 1;
}
return 0;
}
static int uci_do_package_cmd(int cmd, int argc, char **argv)
{
char **configs = NULL;
char **p;
if (argc > 2)
return 255;
if (argc == 2)
return package_cmd(cmd, argv[1]);
if ((uci_list_configs(ctx, &configs) != UCI_OK) || !configs) {
cli_perror();
return 1;
}
for (p = configs; *p; p++) {
package_cmd(cmd, *p);
}
return 0;
}
static int uci_do_add(int argc, char **argv)
{
struct uci_package *p = NULL;
struct uci_section *s = NULL;
int ret;
if (argc != 3)
return 255;
ret = uci_load(ctx, argv[1], &p);
if (ret != UCI_OK)
goto done;
ret = uci_add_section(ctx, p, argv[2], &s);
if (ret != UCI_OK)
goto done;
ret = uci_save(ctx, p);
done:
if (ret != UCI_OK)
cli_perror();
else if (s)
fprintf(stdout, "%s\n", s->e.name);
return ret;
}
static int uci_do_section_cmd(int cmd, int argc, char **argv)
{
struct uci_element *e;
struct uci_ptr ptr;
int ret = UCI_OK;
if (argc != 2)
return 255;
if (uci_lookup_ptr(ctx, &ptr, argv[1], true) != UCI_OK) {
cli_perror();
return 1;
}
if (ptr.value && (cmd != CMD_SET) && (cmd != CMD_ADD_LIST) && (cmd != CMD_RENAME) && (cmd != CMD_REORDER))
return 1;
e = ptr.last;
switch(cmd) {
case CMD_GET:
if (!(ptr.flags & UCI_LOOKUP_COMPLETE)) {
ctx->err = UCI_ERR_NOTFOUND;
cli_perror();
return 1;
}
switch(e->type) {
case UCI_TYPE_SECTION:
printf("%s\n", ptr.s->type);
break;
case UCI_TYPE_OPTION:
uci_show_value(ptr.o);
break;
default:
break;
}
/* throw the value to stdout */
break;
case CMD_RENAME:
ret = uci_rename(ctx, &ptr);
break;
case CMD_REVERT:
ret = uci_revert(ctx, &ptr);
break;
case CMD_SET:
ret = uci_set(ctx, &ptr);
break;
case CMD_ADD_LIST:
ret = uci_add_list(ctx, &ptr);
break;
case CMD_REORDER:
if (!ptr.s) {
ctx->err = UCI_ERR_NOTFOUND;
cli_perror();
return 1;
}
ret = uci_reorder_section(ctx, ptr.s, strtoul(ptr.value, NULL, 10));
break;
case CMD_DEL:
ret = uci_delete(ctx, &ptr);
break;
}
/* no save necessary for get */
if ((cmd == CMD_GET) || (cmd == CMD_REVERT))
return 0;
/* save changes, but don't commit them yet */
if (ret == UCI_OK)
ret = uci_save(ctx, ptr.p);
if (ret != UCI_OK) {
cli_perror();
return 1;
}
return 0;
}
static int uci_batch_cmd(void)
{
char *argv[MAX_ARGS + 2];
char *str = NULL;
int ret = 0;
int i, j;
for(i = 0; i <= MAX_ARGS; i++) {
if (i == MAX_ARGS) {
fprintf(stderr, "Too many arguments\n");
return 1;
}
argv[i] = NULL;
if ((ret = uci_parse_argument(ctx, input, &str, &argv[i])) != UCI_OK) {
cli_perror();
i = 0;
break;
}
if (!argv[i][0])
break;
argv[i] = strdup(argv[i]);
if (!argv[i]) {
perror("uci");
return 1;
}
}
argv[i] = NULL;
if (i > 0) {
if (!strcasecmp(argv[0], "exit"))
return 254;
ret = uci_cmd(i, argv);
} else
return 0;
for (j = 0; j < i; j++) {
if (argv[j])
free(argv[j]);
}
return ret;
}
static int uci_batch(void)
{
int ret = 0;
flags |= CLI_FLAG_BATCH;
while (!feof(input)) {
struct uci_element *e, *tmp;
ret = uci_batch_cmd();
if (ret == 254)
return 0;
else if (ret == 255)
fprintf(stderr, "Unknown command\n");
/* clean up */
uci_foreach_element_safe(&ctx->root, tmp, e) {
uci_unload(ctx, uci_to_package(e));
}
}
flags &= ~CLI_FLAG_BATCH;
return 0;
}
static int uci_cmd(int argc, char **argv)
{
int cmd = 0;
if (!strcasecmp(argv[0], "batch") && !(flags & CLI_FLAG_BATCH))
return uci_batch();
else if (!strcasecmp(argv[0], "show"))
cmd = CMD_SHOW;
else if (!strcasecmp(argv[0], "changes"))
cmd = CMD_CHANGES;
else if (!strcasecmp(argv[0], "export"))
cmd = CMD_EXPORT;
else if (!strcasecmp(argv[0], "commit"))
cmd = CMD_COMMIT;
else if (!strcasecmp(argv[0], "get"))
cmd = CMD_GET;
else if (!strcasecmp(argv[0], "set"))
cmd = CMD_SET;
else if (!strcasecmp(argv[0], "ren") ||
!strcasecmp(argv[0], "rename"))
cmd = CMD_RENAME;
else if (!strcasecmp(argv[0], "revert"))
cmd = CMD_REVERT;
else if (!strcasecmp(argv[0], "reorder"))
cmd = CMD_REORDER;
else if (!strcasecmp(argv[0], "del") ||
!strcasecmp(argv[0], "delete"))
cmd = CMD_DEL;
else if (!strcasecmp(argv[0], "import"))
cmd = CMD_IMPORT;
else if (!strcasecmp(argv[0], "help"))
cmd = CMD_HELP;
else if (!strcasecmp(argv[0], "add"))
cmd = CMD_ADD;
else if (!strcasecmp(argv[0], "add_list"))
cmd = CMD_ADD_LIST;
else
cmd = -1;
switch(cmd) {
case CMD_ADD_LIST:
case CMD_GET:
case CMD_SET:
case CMD_DEL:
case CMD_RENAME:
case CMD_REVERT:
case CMD_REORDER:
return uci_do_section_cmd(cmd, argc, argv);
case CMD_SHOW:
case CMD_EXPORT:
case CMD_COMMIT:
case CMD_CHANGES:
return uci_do_package_cmd(cmd, argc, argv);
case CMD_IMPORT:
return uci_do_import(argc, argv);
case CMD_ADD:
return uci_do_add(argc, argv);
case CMD_HELP:
uci_usage();
return 0;
default:
return 255;
}
}
int main(int argc, char **argv)
{
int ret;
int c;
flags = CLI_FLAG_SHOW_EXT;
appname = argv[0];
input = stdin;
ctx = uci_alloc_context();
if (!ctx) {
fprintf(stderr, "Out of memory\n");
return 1;
}
while((c = getopt(argc, argv, "c:d:f:LmnNp:P:sSqX")) != -1) {
switch(c) {
case 'c':
uci_set_confdir(ctx, optarg);
break;
case 'd':
delimiter = optarg;
break;
case 'f':
input = fopen(optarg, "r");
if (!input) {
perror("uci");
return 1;
}
break;
case 'L':
flags |= CLI_FLAG_NOPLUGINS;
break;
case 'm':
flags |= CLI_FLAG_MERGE;
break;
case 's':
ctx->flags |= UCI_FLAG_STRICT;
break;
case 'S':
ctx->flags &= ~UCI_FLAG_STRICT;
ctx->flags |= UCI_FLAG_PERROR;
break;
case 'n':
ctx->flags |= UCI_FLAG_EXPORT_NAME;
break;
case 'N':
ctx->flags &= ~UCI_FLAG_EXPORT_NAME;
break;
case 'p':
uci_add_history_path(ctx, optarg);
break;
case 'P':
uci_add_history_path(ctx, ctx->savedir);
uci_set_savedir(ctx, optarg);
flags |= CLI_FLAG_NOCOMMIT;
break;
case 'q':
flags |= CLI_FLAG_QUIET;
break;
case 'X':
flags &= ~CLI_FLAG_SHOW_EXT;
break;
default:
uci_usage();
return 0;
}
}
if (optind > 1)
argv[optind - 1] = argv[0];
argv += optind - 1;
argc -= optind - 1;
if (argc < 2) {
uci_usage();
return 0;
}
if (!(flags & CLI_FLAG_NOPLUGINS))
uci_load_plugins(ctx, NULL);
ret = uci_cmd(argc - 1, argv + 1);
if (input != stdin)
fclose(input);
if (ret == 255) {
uci_usage();
return 0;
}
uci_free_context(ctx);
return ret;
}

581
lib/uci/file.c Normal file
View file

@ -0,0 +1,581 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/*
* This file contains the code for parsing uci config files
*/
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/file.h>
#include <stdbool.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <ctype.h>
#include <glob.h>
static struct uci_backend uci_file_backend;
/*
* verify that the end of the line or command is reached.
* throw an error if extra arguments are given on the command line
*/
static void assert_eol(struct uci_context *ctx, char **str)
{
char *tmp;
skip_whitespace(ctx, str);
tmp = next_arg(ctx, str, false, false);
if (*tmp && (ctx->flags & UCI_FLAG_STRICT))
uci_parse_error(ctx, *str, "too many arguments");
}
/*
* switch to a different config, either triggered by uci_load, or by a
* 'package <...>' statement in the import file
*/
static void uci_switch_config(struct uci_context *ctx)
{
struct uci_parse_context *pctx;
struct uci_element *e;
const char *name;
pctx = ctx->pctx;
name = pctx->name;
/* add the last config to main config file list */
if (pctx->package) {
pctx->package->backend = ctx->backend;
uci_list_add(&ctx->root, &pctx->package->e.list);
pctx->package = NULL;
pctx->section = NULL;
}
if (!name)
return;
/*
* if an older config under the same name exists, unload it
* ignore errors here, e.g. if the config was not found
*/
e = uci_lookup_list(&ctx->root, name);
if (e)
UCI_THROW(ctx, UCI_ERR_DUPLICATE);
pctx->package = uci_alloc_package(ctx, name);
}
/*
* parse the 'package' uci command (next config package)
*/
static void uci_parse_package(struct uci_context *ctx, char **str, bool single)
{
char *name = NULL;
/* command string null-terminated by strtok */
*str += strlen(*str) + 1;
name = next_arg(ctx, str, true, true);
assert_eol(ctx, str);
if (single)
return;
ctx->pctx->name = name;
uci_switch_config(ctx);
}
/*
* parse the 'config' uci command (open a section)
*/
static void uci_parse_config(struct uci_context *ctx, char **str)
{
struct uci_parse_context *pctx = ctx->pctx;
struct uci_element *e;
struct uci_ptr ptr;
char *name = NULL;
char *type = NULL;
uci_fixup_section(ctx, ctx->pctx->section);
if (!ctx->pctx->package) {
if (!ctx->pctx->name)
uci_parse_error(ctx, *str, "attempting to import a file without a package name");
uci_switch_config(ctx);
}
/* command string null-terminated by strtok */
*str += strlen(*str) + 1;
type = next_arg(ctx, str, true, false);
if (!uci_validate_type(type))
uci_parse_error(ctx, type, "invalid character in field");
name = next_arg(ctx, str, false, true);
assert_eol(ctx, str);
if (!name) {
ctx->internal = !pctx->merge;
UCI_NESTED(uci_add_section, ctx, pctx->package, type, &pctx->section);
} else {
UCI_NESTED(uci_fill_ptr, ctx, &ptr, &pctx->package->e, false);
e = uci_lookup_list(&pctx->package->sections, name);
if (e)
ptr.s = uci_to_section(e);
ptr.section = name;
ptr.value = type;
ctx->internal = !pctx->merge;
UCI_NESTED(uci_set, ctx, &ptr);
pctx->section = uci_to_section(ptr.last);
}
}
/*
* parse the 'option' uci command (open a value)
*/
static void uci_parse_option(struct uci_context *ctx, char **str, bool list)
{
struct uci_parse_context *pctx = ctx->pctx;
struct uci_element *e;
struct uci_ptr ptr;
char *name = NULL;
char *value = NULL;
if (!pctx->section)
uci_parse_error(ctx, *str, "option/list command found before the first section");
/* command string null-terminated by strtok */
*str += strlen(*str) + 1;
name = next_arg(ctx, str, true, true);
value = next_arg(ctx, str, false, false);
assert_eol(ctx, str);
UCI_NESTED(uci_fill_ptr, ctx, &ptr, &pctx->section->e, false);
e = uci_lookup_list(&pctx->section->options, name);
if (e)
ptr.o = uci_to_option(e);
ptr.option = name;
ptr.value = value;
ctx->internal = !pctx->merge;
if (list)
UCI_NESTED(uci_add_list, ctx, &ptr);
else
UCI_NESTED(uci_set, ctx, &ptr);
}
/*
* parse a complete input line, split up combined commands by ';'
*/
static void uci_parse_line(struct uci_context *ctx, bool single)
{
struct uci_parse_context *pctx = ctx->pctx;
char *word, *brk;
word = pctx->buf;
do {
brk = NULL;
word = strtok_r(word, " \t", &brk);
if (!word)
return;
switch(word[0]) {
case 0:
case '#':
return;
case 'p':
if ((word[1] == 0) || !strcmp(word + 1, "ackage"))
uci_parse_package(ctx, &word, single);
else
goto invalid;
break;
case 'c':
if ((word[1] == 0) || !strcmp(word + 1, "onfig"))
uci_parse_config(ctx, &word);
else
goto invalid;
break;
case 'o':
if ((word[1] == 0) || !strcmp(word + 1, "ption"))
uci_parse_option(ctx, &word, false);
else
goto invalid;
break;
case 'l':
if ((word[1] == 0) || !strcmp(word + 1, "ist"))
uci_parse_option(ctx, &word, true);
else
goto invalid;
break;
default:
goto invalid;
}
continue;
invalid:
uci_parse_error(ctx, word, "invalid command");
} while (1);
}
/* max number of characters that escaping adds to the string */
#define UCI_QUOTE_ESCAPE "'\\''"
/*
* escape an uci string for export
*/
static char *uci_escape(struct uci_context *ctx, const char *str)
{
const char *end;
int ofs = 0;
if (!ctx->buf) {
ctx->bufsz = LINEBUF;
ctx->buf = malloc(LINEBUF);
}
while (1) {
int len;
end = strchr(str, '\'');
if (!end)
end = str + strlen(str);
len = end - str;
/* make sure that we have enough room in the buffer */
while (ofs + len + sizeof(UCI_QUOTE_ESCAPE) + 1 > ctx->bufsz) {
ctx->bufsz *= 2;
ctx->buf = uci_realloc(ctx, ctx->buf, ctx->bufsz);
}
/* copy the string until the character before the quote */
memcpy(&ctx->buf[ofs], str, len);
ofs += len;
/* end of string? return the buffer */
if (*end == 0)
break;
memcpy(&ctx->buf[ofs], UCI_QUOTE_ESCAPE, sizeof(UCI_QUOTE_ESCAPE));
ofs += strlen(&ctx->buf[ofs]);
str = end + 1;
}
ctx->buf[ofs] = 0;
return ctx->buf;
}
/*
* export a single config package to a file stream
*/
static void uci_export_package(struct uci_package *p, FILE *stream, bool header)
{
struct uci_context *ctx = p->ctx;
struct uci_element *s, *o, *i;
if (header)
fprintf(stream, "package '%s'\n", uci_escape(ctx, p->e.name));
uci_foreach_element(&p->sections, s) {
struct uci_section *sec = uci_to_section(s);
fprintf(stream, "\nconfig '%s'", uci_escape(ctx, sec->type));
if (!sec->anonymous || (ctx->flags & UCI_FLAG_EXPORT_NAME))
fprintf(stream, " '%s'", uci_escape(ctx, sec->e.name));
fprintf(stream, "\n");
uci_foreach_element(&sec->options, o) {
struct uci_option *opt = uci_to_option(o);
switch(opt->type) {
case UCI_TYPE_STRING:
fprintf(stream, "\toption '%s'", uci_escape(ctx, opt->e.name));
fprintf(stream, " '%s'\n", uci_escape(ctx, opt->v.string));
break;
case UCI_TYPE_LIST:
uci_foreach_element(&opt->v.list, i) {
fprintf(stream, "\tlist '%s'", uci_escape(ctx, opt->e.name));
fprintf(stream, " '%s'\n", uci_escape(ctx, i->name));
}
break;
default:
fprintf(stream, "\t# unknown type for option '%s'\n", uci_escape(ctx, opt->e.name));
break;
}
}
}
fprintf(stream, "\n");
}
int uci_export(struct uci_context *ctx, FILE *stream, struct uci_package *package, bool header)
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, stream != NULL);
if (package)
uci_export_package(package, stream, header);
else {
uci_foreach_element(&ctx->root, e) {
uci_export_package(uci_to_package(e), stream, header);
}
}
return 0;
}
int uci_import(struct uci_context *ctx, FILE *stream, const char *name, struct uci_package **package, bool single)
{
struct uci_parse_context *pctx;
UCI_HANDLE_ERR(ctx);
/* make sure no memory from previous parse attempts is leaked */
uci_cleanup(ctx);
uci_alloc_parse_context(ctx);
pctx = ctx->pctx;
pctx->file = stream;
if (*package && single) {
pctx->package = *package;
pctx->merge = true;
}
/*
* If 'name' was supplied, assume that the supplied stream does not contain
* the appropriate 'package <name>' string to specify the config name
* NB: the config file can still override the package name
*/
if (name) {
UCI_ASSERT(ctx, uci_validate_package(name));
pctx->name = name;
}
while (!feof(pctx->file)) {
uci_getln(ctx, 0);
UCI_TRAP_SAVE(ctx, error);
if (pctx->buf[0])
uci_parse_line(ctx, single);
UCI_TRAP_RESTORE(ctx);
continue;
error:
if (ctx->flags & UCI_FLAG_PERROR)
uci_perror(ctx, NULL);
if ((ctx->err != UCI_ERR_PARSE) ||
(ctx->flags & UCI_FLAG_STRICT))
UCI_THROW(ctx, ctx->err);
}
uci_fixup_section(ctx, ctx->pctx->section);
if (!pctx->package && name)
uci_switch_config(ctx);
if (package)
*package = pctx->package;
if (pctx->merge)
pctx->package = NULL;
pctx->name = NULL;
uci_switch_config(ctx);
/* no error happened, we can get rid of the parser context now */
uci_cleanup(ctx);
return 0;
}
static char *uci_config_path(struct uci_context *ctx, const char *name)
{
char *filename;
UCI_ASSERT(ctx, uci_validate_package(name));
filename = uci_malloc(ctx, strlen(name) + strlen(ctx->confdir) + 2);
sprintf(filename, "%s/%s", ctx->confdir, name);
return filename;
}
void uci_file_commit(struct uci_context *ctx, struct uci_package **package, bool overwrite)
{
struct uci_package *p = *package;
FILE *f = NULL;
char *name = NULL;
char *path = NULL;
if (!p->path) {
if (overwrite)
p->path = uci_config_path(ctx, p->e.name);
else
UCI_THROW(ctx, UCI_ERR_INVAL);
}
/* open the config file for writing now, so that it is locked */
f = uci_open_stream(ctx, p->path, SEEK_SET, true, true);
/* flush unsaved changes and reload from history file */
UCI_TRAP_SAVE(ctx, done);
if (p->has_history) {
if (!overwrite) {
name = uci_strdup(ctx, p->e.name);
path = uci_strdup(ctx, p->path);
/* dump our own changes to the history file */
if (!uci_list_empty(&p->history))
UCI_INTERNAL(uci_save, ctx, p);
/*
* other processes might have modified the config
* as well. dump and reload
*/
uci_free_package(&p);
uci_cleanup(ctx);
UCI_INTERNAL(uci_import, ctx, f, name, &p, true);
p->path = path;
p->has_history = true;
*package = p;
/* freed together with the uci_package */
path = NULL;
}
/* flush history */
if (!uci_load_history(ctx, p, true))
goto done;
}
rewind(f);
if (ftruncate(fileno(f), 0) < 0)
UCI_THROW(ctx, UCI_ERR_IO);
uci_export(ctx, f, p, false);
UCI_TRAP_RESTORE(ctx);
done:
if (name)
free(name);
if (path)
free(path);
uci_close_stream(f);
if (ctx->err)
UCI_THROW(ctx, ctx->err);
}
/*
* This function returns the filename by returning the string
* after the last '/' character. By checking for a non-'\0'
* character afterwards, directories are ignored (glob marks
* those with a trailing '/'
*/
static inline char *get_filename(char *path)
{
char *p;
p = strrchr(path, '/');
p++;
if (!*p)
return NULL;
return p;
}
static char **uci_list_config_files(struct uci_context *ctx)
{
char **configs;
glob_t globbuf;
int size, i;
char *buf;
char *dir;
dir = uci_malloc(ctx, strlen(ctx->confdir) + 1 + sizeof("/*"));
sprintf(dir, "%s/*", ctx->confdir);
if (glob(dir, GLOB_MARK, NULL, &globbuf) != 0)
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
size = sizeof(char *) * (globbuf.gl_pathc + 1);
for(i = 0; i < globbuf.gl_pathc; i++) {
char *p;
p = get_filename(globbuf.gl_pathv[i]);
if (!p)
continue;
size += strlen(p) + 1;
}
configs = uci_malloc(ctx, size);
buf = (char *) &configs[globbuf.gl_pathc + 1];
for(i = 0; i < globbuf.gl_pathc; i++) {
char *p;
p = get_filename(globbuf.gl_pathv[i]);
if (!p)
continue;
if (!uci_validate_package(p))
continue;
configs[i] = buf;
strcpy(buf, p);
buf += strlen(buf) + 1;
}
free(dir);
globfree(&globbuf);
return configs;
}
static struct uci_package *uci_file_load(struct uci_context *ctx, const char *name)
{
struct uci_package *package = NULL;
char *filename;
bool confdir;
FILE *file = NULL;
switch (name[0]) {
case '.':
/* relative path outside of /etc/config */
if (name[1] != '/')
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
/* fall through */
case '/':
/* absolute path outside of /etc/config */
filename = uci_strdup(ctx, name);
name = strrchr(name, '/') + 1;
confdir = false;
break;
default:
/* config in /etc/config */
filename = uci_config_path(ctx, name);
confdir = true;
break;
}
file = uci_open_stream(ctx, filename, SEEK_SET, false, false);
ctx->err = 0;
UCI_TRAP_SAVE(ctx, done);
UCI_INTERNAL(uci_import, ctx, file, name, &package, true);
UCI_TRAP_RESTORE(ctx);
if (package) {
package->path = filename;
package->has_history = confdir;
uci_load_history(ctx, package, false);
}
done:
uci_close_stream(file);
if (ctx->err)
UCI_THROW(ctx, ctx->err);
return package;
}
static UCI_BACKEND(uci_file_backend, "file",
.load = uci_file_load,
.commit = uci_file_commit,
.list_configs = uci_list_config_files,
);

483
lib/uci/history.c Normal file
View file

@ -0,0 +1,483 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/*
* This file contains the code for handling uci config history files
*/
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <stdbool.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <ctype.h>
/* record a change that was done to a package */
void
uci_add_history(struct uci_context *ctx, struct uci_list *list, int cmd, const char *section, const char *option, const char *value)
{
struct uci_history *h;
int size = strlen(section) + 1;
char *ptr;
if (value)
size += strlen(value) + 1;
h = uci_alloc_element(ctx, history, option, size);
ptr = uci_dataptr(h);
h->cmd = cmd;
h->section = strcpy(ptr, section);
if (value) {
ptr += strlen(ptr) + 1;
h->value = strcpy(ptr, value);
}
uci_list_add(list, &h->e.list);
}
void
uci_free_history(struct uci_history *h)
{
if (!h)
return;
if ((h->section != NULL) &&
(h->section != uci_dataptr(h))) {
free(h->section);
free(h->value);
}
uci_free_element(&h->e);
}
int uci_set_savedir(struct uci_context *ctx, const char *dir)
{
char *sdir;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, dir != NULL);
sdir = uci_strdup(ctx, dir);
if (ctx->savedir != uci_savedir)
free(ctx->savedir);
ctx->savedir = sdir;
return 0;
}
int uci_add_history_path(struct uci_context *ctx, const char *dir)
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, dir != NULL);
e = uci_alloc_generic(ctx, UCI_TYPE_PATH, dir, sizeof(struct uci_element));
uci_list_add(&ctx->history_path, &e->list);
return 0;
}
static inline int uci_parse_history_tuple(struct uci_context *ctx, char **buf, struct uci_ptr *ptr)
{
int c = UCI_CMD_CHANGE;
switch(**buf) {
case '^':
c = UCI_CMD_REORDER;
break;
case '-':
c = UCI_CMD_REMOVE;
break;
case '@':
c = UCI_CMD_RENAME;
break;
case '+':
/* UCI_CMD_ADD is used for anonymous sections or list values */
c = UCI_CMD_ADD;
break;
case '|':
c = UCI_CMD_LIST_ADD;
break;
}
if (c != UCI_CMD_CHANGE)
*buf += 1;
UCI_INTERNAL(uci_parse_ptr, ctx, ptr, *buf);
if (!ptr->section)
goto error;
if (ptr->flags & UCI_LOOKUP_EXTENDED)
goto error;
switch(c) {
case UCI_CMD_REORDER:
if (!ptr->value || ptr->option)
goto error;
break;
case UCI_CMD_RENAME:
if (!ptr->value || !uci_validate_name(ptr->value))
goto error;
break;
case UCI_CMD_LIST_ADD:
if (!ptr->option)
goto error;
}
return c;
error:
UCI_THROW(ctx, UCI_ERR_INVAL);
return 0;
}
static void uci_parse_history_line(struct uci_context *ctx, struct uci_package *p, char *buf)
{
struct uci_element *e = NULL;
struct uci_ptr ptr;
int cmd;
cmd = uci_parse_history_tuple(ctx, &buf, &ptr);
if (strcmp(ptr.package, p->e.name) != 0)
goto error;
if (ctx->flags & UCI_FLAG_SAVED_HISTORY)
uci_add_history(ctx, &p->saved_history, cmd, ptr.section, ptr.option, ptr.value);
switch(cmd) {
case UCI_CMD_REORDER:
expand_ptr(ctx, &ptr, true);
if (!ptr.s)
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
UCI_INTERNAL(uci_reorder_section, ctx, ptr.s, strtoul(ptr.value, NULL, 10));
break;
case UCI_CMD_RENAME:
UCI_INTERNAL(uci_rename, ctx, &ptr);
break;
case UCI_CMD_REMOVE:
UCI_INTERNAL(uci_delete, ctx, &ptr);
break;
case UCI_CMD_LIST_ADD:
UCI_INTERNAL(uci_add_list, ctx, &ptr);
break;
case UCI_CMD_ADD:
case UCI_CMD_CHANGE:
UCI_INTERNAL(uci_set, ctx, &ptr);
e = ptr.last;
if (!ptr.option && e && (cmd == UCI_CMD_ADD))
uci_to_section(e)->anonymous = true;
break;
}
return;
error:
UCI_THROW(ctx, UCI_ERR_PARSE);
}
/* returns the number of changes that were successfully parsed */
static int uci_parse_history(struct uci_context *ctx, FILE *stream, struct uci_package *p)
{
struct uci_parse_context *pctx;
int changes = 0;
/* make sure no memory from previous parse attempts is leaked */
uci_cleanup(ctx);
pctx = (struct uci_parse_context *) uci_malloc(ctx, sizeof(struct uci_parse_context));
ctx->pctx = pctx;
pctx->file = stream;
while (!feof(pctx->file)) {
uci_getln(ctx, 0);
if (!pctx->buf[0])
continue;
/*
* ignore parse errors in single lines, we want to preserve as much
* history as possible
*/
UCI_TRAP_SAVE(ctx, error);
uci_parse_history_line(ctx, p, pctx->buf);
UCI_TRAP_RESTORE(ctx);
changes++;
error:
continue;
}
/* no error happened, we can get rid of the parser context now */
uci_cleanup(ctx);
return changes;
}
/* returns the number of changes that were successfully parsed */
static int uci_load_history_file(struct uci_context *ctx, struct uci_package *p, char *filename, FILE **f, bool flush)
{
FILE *stream = NULL;
int changes = 0;
UCI_TRAP_SAVE(ctx, done);
stream = uci_open_stream(ctx, filename, SEEK_SET, flush, false);
if (p)
changes = uci_parse_history(ctx, stream, p);
UCI_TRAP_RESTORE(ctx);
done:
if (f)
*f = stream;
else if (stream)
uci_close_stream(stream);
return changes;
}
/* returns the number of changes that were successfully parsed */
static int uci_load_history(struct uci_context *ctx, struct uci_package *p, bool flush)
{
struct uci_element *e;
char *filename = NULL;
FILE *f = NULL;
int changes = 0;
if (!p->has_history)
return 0;
uci_foreach_element(&ctx->history_path, e) {
if ((asprintf(&filename, "%s/%s", e->name, p->e.name) < 0) || !filename)
UCI_THROW(ctx, UCI_ERR_MEM);
uci_load_history_file(ctx, p, filename, NULL, false);
free(filename);
}
if ((asprintf(&filename, "%s/%s", ctx->savedir, p->e.name) < 0) || !filename)
UCI_THROW(ctx, UCI_ERR_MEM);
changes = uci_load_history_file(ctx, p, filename, &f, flush);
if (flush && f && (changes > 0)) {
rewind(f);
if (ftruncate(fileno(f), 0) < 0) {
uci_close_stream(f);
UCI_THROW(ctx, UCI_ERR_IO);
}
}
if (filename)
free(filename);
uci_close_stream(f);
ctx->err = 0;
return changes;
}
static void uci_filter_history(struct uci_context *ctx, const char *name, const char *section, const char *option)
{
struct uci_parse_context *pctx;
struct uci_element *e, *tmp;
struct uci_list list;
char *filename = NULL;
struct uci_ptr ptr;
FILE *f = NULL;
uci_list_init(&list);
uci_alloc_parse_context(ctx);
pctx = ctx->pctx;
if ((asprintf(&filename, "%s/%s", ctx->savedir, name) < 0) || !filename)
UCI_THROW(ctx, UCI_ERR_MEM);
UCI_TRAP_SAVE(ctx, done);
f = uci_open_stream(ctx, filename, SEEK_SET, true, false);
pctx->file = f;
while (!feof(f)) {
struct uci_element *e;
char *buf;
uci_getln(ctx, 0);
buf = pctx->buf;
if (!buf[0])
continue;
/* NB: need to allocate the element before the call to
* uci_parse_history_tuple, otherwise the original string
* gets modified before it is saved */
e = uci_alloc_generic(ctx, UCI_TYPE_HISTORY, pctx->buf, sizeof(struct uci_element));
uci_list_add(&list, &e->list);
uci_parse_history_tuple(ctx, &buf, &ptr);
if (section) {
if (!ptr.section || (strcmp(section, ptr.section) != 0))
continue;
}
if (option) {
if (!ptr.option || (strcmp(option, ptr.option) != 0))
continue;
}
/* match, drop this element again */
uci_free_element(e);
}
/* rebuild the history file */
rewind(f);
if (ftruncate(fileno(f), 0) < 0)
UCI_THROW(ctx, UCI_ERR_IO);
uci_foreach_element_safe(&list, tmp, e) {
fprintf(f, "%s\n", e->name);
uci_free_element(e);
}
UCI_TRAP_RESTORE(ctx);
done:
if (filename)
free(filename);
uci_close_stream(pctx->file);
uci_foreach_element_safe(&list, tmp, e) {
uci_free_element(e);
}
uci_cleanup(ctx);
}
int uci_revert(struct uci_context *ctx, struct uci_ptr *ptr)
{
char *package = NULL;
char *section = NULL;
char *option = NULL;
UCI_HANDLE_ERR(ctx);
expand_ptr(ctx, ptr, false);
UCI_ASSERT(ctx, ptr->p->has_history);
/*
* - flush unwritten changes
* - save the package name
* - unload the package
* - filter the history
* - reload the package
*/
UCI_TRAP_SAVE(ctx, error);
UCI_INTERNAL(uci_save, ctx, ptr->p);
/* NB: need to clone package, section and option names,
* as they may get freed on uci_free_package() */
package = uci_strdup(ctx, ptr->p->e.name);
if (ptr->section)
section = uci_strdup(ctx, ptr->section);
if (ptr->option)
option = uci_strdup(ctx, ptr->option);
uci_free_package(&ptr->p);
uci_filter_history(ctx, package, section, option);
UCI_INTERNAL(uci_load, ctx, package, &ptr->p);
UCI_TRAP_RESTORE(ctx);
ctx->err = 0;
error:
if (package)
free(package);
if (section)
free(section);
if (option)
free(option);
if (ctx->err)
UCI_THROW(ctx, ctx->err);
return 0;
}
int uci_save(struct uci_context *ctx, struct uci_package *p)
{
FILE *f = NULL;
char *filename = NULL;
struct uci_element *e, *tmp;
struct stat statbuf;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
/*
* if the config file was outside of the /etc/config path,
* don't save the history to a file, update the real file
* directly.
* does not modify the uci_package pointer
*/
if (!p->has_history)
return uci_commit(ctx, &p, false);
if (uci_list_empty(&p->history))
return 0;
if (stat(ctx->savedir, &statbuf) < 0)
mkdir(ctx->savedir, UCI_DIRMODE);
else if ((statbuf.st_mode & S_IFMT) != S_IFDIR)
UCI_THROW(ctx, UCI_ERR_IO);
if ((asprintf(&filename, "%s/%s", ctx->savedir, p->e.name) < 0) || !filename)
UCI_THROW(ctx, UCI_ERR_MEM);
uci_foreach_element(&ctx->hooks, tmp) {
struct uci_hook *hook = uci_to_hook(tmp);
if (!hook->ops->set)
continue;
uci_foreach_element(&p->history, e) {
hook->ops->set(hook->ops, p, uci_to_history(e));
}
}
ctx->err = 0;
UCI_TRAP_SAVE(ctx, done);
f = uci_open_stream(ctx, filename, SEEK_END, true, true);
UCI_TRAP_RESTORE(ctx);
uci_foreach_element_safe(&p->history, tmp, e) {
struct uci_history *h = uci_to_history(e);
char *prefix = "";
switch(h->cmd) {
case UCI_CMD_REMOVE:
prefix = "-";
break;
case UCI_CMD_RENAME:
prefix = "@";
break;
case UCI_CMD_ADD:
prefix = "+";
break;
case UCI_CMD_REORDER:
prefix = "^";
break;
case UCI_CMD_LIST_ADD:
prefix = "|";
break;
default:
break;
}
fprintf(f, "%s%s.%s", prefix, p->e.name, h->section);
if (e->name)
fprintf(f, ".%s", e->name);
if (h->cmd == UCI_CMD_REMOVE)
fprintf(f, "\n");
else
fprintf(f, "=%s\n", h->value);
uci_free_history(h);
}
done:
uci_close_stream(f);
if (filename)
free(filename);
if (ctx->err)
UCI_THROW(ctx, ctx->err);
return 0;
}

391
lib/uci/libuci.c Normal file
View file

@ -0,0 +1,391 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/*
* This file contains some common code for the uci library
*/
#define _GNU_SOURCE
#include <sys/types.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
#include <glob.h>
#include "uci.h"
static const char *uci_confdir = UCI_CONFDIR;
static const char *uci_savedir = UCI_SAVEDIR;
static const char *uci_errstr[] = {
[UCI_OK] = "Success",
[UCI_ERR_MEM] = "Out of memory",
[UCI_ERR_INVAL] = "Invalid argument",
[UCI_ERR_NOTFOUND] = "Entry not found",
[UCI_ERR_IO] = "I/O error",
[UCI_ERR_PARSE] = "Parse error",
[UCI_ERR_DUPLICATE] = "Duplicate entry",
[UCI_ERR_UNKNOWN] = "Unknown error",
};
static void uci_cleanup(struct uci_context *ctx);
static void uci_unload_plugin(struct uci_context *ctx, struct uci_plugin *p);
#include "uci_internal.h"
#include "util.c"
#include "list.c"
#include "history.c"
#include "file.c"
/* exported functions */
struct uci_context *uci_alloc_context(void)
{
struct uci_context *ctx;
ctx = (struct uci_context *) malloc(sizeof(struct uci_context));
if (!ctx)
return NULL;
memset(ctx, 0, sizeof(struct uci_context));
uci_list_init(&ctx->root);
uci_list_init(&ctx->history_path);
uci_list_init(&ctx->backends);
uci_list_init(&ctx->hooks);
uci_list_init(&ctx->plugins);
ctx->flags = UCI_FLAG_STRICT | UCI_FLAG_SAVED_HISTORY;
ctx->confdir = (char *) uci_confdir;
ctx->savedir = (char *) uci_savedir;
uci_list_add(&ctx->backends, &uci_file_backend.e.list);
ctx->backend = &uci_file_backend;
return ctx;
}
void uci_free_context(struct uci_context *ctx)
{
struct uci_element *e, *tmp;
if (ctx->confdir != uci_confdir)
free(ctx->confdir);
if (ctx->savedir != uci_savedir)
free(ctx->savedir);
uci_cleanup(ctx);
UCI_TRAP_SAVE(ctx, ignore);
uci_foreach_element_safe(&ctx->root, tmp, e) {
struct uci_package *p = uci_to_package(e);
uci_free_package(&p);
}
uci_foreach_element_safe(&ctx->history_path, tmp, e) {
uci_free_element(e);
}
UCI_TRAP_RESTORE(ctx);
uci_foreach_element_safe(&ctx->root, tmp, e) {
uci_unload_plugin(ctx, uci_to_plugin(e));
}
free(ctx);
ignore:
return;
}
int uci_set_confdir(struct uci_context *ctx, const char *dir)
{
char *cdir;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, dir != NULL);
cdir = uci_strdup(ctx, dir);
if (ctx->confdir != uci_confdir)
free(ctx->confdir);
ctx->confdir = cdir;
return 0;
}
static void uci_cleanup(struct uci_context *ctx)
{
struct uci_parse_context *pctx;
if (ctx->buf) {
free(ctx->buf);
ctx->buf = NULL;
ctx->bufsz = 0;
}
pctx = ctx->pctx;
if (!pctx)
return;
ctx->pctx = NULL;
if (pctx->package)
uci_free_package(&pctx->package);
if (pctx->buf)
free(pctx->buf);
free(pctx);
}
void
uci_perror(struct uci_context *ctx, const char *str)
{
uci_get_errorstr(ctx, NULL, str);
}
void
uci_get_errorstr(struct uci_context *ctx, char **dest, const char *prefix)
{
static char error_info[128];
int err;
const char *format =
"%s%s" /* prefix */
"%s%s" /* function */
"%s" /* error */
"%s"; /* details */
error_info[0] = 0;
if (!ctx)
err = UCI_ERR_INVAL;
else
err = ctx->err;
if ((err < 0) || (err >= UCI_ERR_LAST))
err = UCI_ERR_UNKNOWN;
switch (err) {
case UCI_ERR_PARSE:
if (ctx->pctx) {
snprintf(error_info, sizeof(error_info) - 1, " (%s) at line %d, byte %d", (ctx->pctx->reason ? ctx->pctx->reason : "unknown"), ctx->pctx->line, ctx->pctx->byte);
break;
}
break;
default:
break;
}
if (dest) {
err = asprintf(dest, format,
(prefix ? prefix : ""), (prefix ? ": " : ""),
(ctx->func ? ctx->func : ""), (ctx->func ? ": " : ""),
uci_errstr[err],
error_info);
if (err < 0)
*dest = NULL;
} else {
strcat(error_info, "\n");
fprintf(stderr, format,
(prefix ? prefix : ""), (prefix ? ": " : ""),
(ctx->func ? ctx->func : ""), (ctx->func ? ": " : ""),
uci_errstr[err],
error_info);
}
}
int uci_list_configs(struct uci_context *ctx, char ***list)
{
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, list != NULL);
UCI_ASSERT(ctx, ctx->backend && ctx->backend->list_configs);
*list = ctx->backend->list_configs(ctx);
return 0;
}
int uci_commit(struct uci_context *ctx, struct uci_package **package, bool overwrite)
{
struct uci_package *p;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, package != NULL);
p = *package;
UCI_ASSERT(ctx, p != NULL);
UCI_ASSERT(ctx, p->backend && p->backend->commit);
p->backend->commit(ctx, package, overwrite);
return 0;
}
int uci_load(struct uci_context *ctx, const char *name, struct uci_package **package)
{
struct uci_package *p;
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, ctx->backend && ctx->backend->load);
p = ctx->backend->load(ctx, name);
uci_foreach_element(&ctx->hooks, e) {
struct uci_hook *h = uci_to_hook(e);
if (h->ops->load)
h->ops->load(h->ops, p);
}
if (package)
*package = p;
return 0;
}
#ifdef UCI_PLUGIN_SUPPORT
__plugin int uci_add_backend(struct uci_context *ctx, struct uci_backend *b)
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
e = uci_lookup_list(&ctx->backends, b->e.name);
if (e)
UCI_THROW(ctx, UCI_ERR_DUPLICATE);
e = uci_malloc(ctx, sizeof(struct uci_backend));
memcpy(e, b, sizeof(struct uci_backend));
uci_list_add(&ctx->backends, &e->list);
return 0;
}
__plugin int uci_del_backend(struct uci_context *ctx, struct uci_backend *b)
{
struct uci_element *e, *tmp;
UCI_HANDLE_ERR(ctx);
e = uci_lookup_list(&ctx->backends, b->e.name);
if (!e || uci_to_backend(e)->ptr != b->ptr)
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
b = uci_to_backend(e);
if (ctx->backend && ctx->backend->ptr == b->ptr)
ctx->backend = &uci_file_backend;
uci_foreach_element_safe(&ctx->root, tmp, e) {
struct uci_package *p = uci_to_package(e);
if (!p->backend)
continue;
if (p->backend->ptr == b->ptr)
UCI_INTERNAL(uci_unload, ctx, p);
}
uci_list_del(&b->e.list);
free(b);
return 0;
}
#endif
int uci_set_backend(struct uci_context *ctx, const char *name)
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, name != NULL);
e = uci_lookup_list(&ctx->backends, name);
if (!e)
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
ctx->backend = uci_to_backend(e);
return 0;
}
int uci_add_hook(struct uci_context *ctx, const struct uci_hook_ops *ops)
{
struct uci_element *e;
struct uci_hook *h;
UCI_HANDLE_ERR(ctx);
/* check for duplicate elements */
uci_foreach_element(&ctx->hooks, e) {
h = uci_to_hook(e);
if (h->ops == ops)
return UCI_ERR_INVAL;
}
h = uci_alloc_element(ctx, hook, "", 0);
h->ops = ops;
uci_list_init(&h->e.list);
uci_list_add(&ctx->hooks, &h->e.list);
return 0;
}
int uci_remove_hook(struct uci_context *ctx, const struct uci_hook_ops *ops)
{
struct uci_element *e;
uci_foreach_element(&ctx->hooks, e) {
struct uci_hook *h = uci_to_hook(e);
if (h->ops == ops) {
uci_list_del(&e->list);
return 0;
}
}
return UCI_ERR_NOTFOUND;
}
int uci_load_plugin(struct uci_context *ctx, const char *filename)
{
struct uci_plugin *p;
const struct uci_plugin_ops *ops;
void *dlh;
UCI_HANDLE_ERR(ctx);
dlh = dlopen(filename, RTLD_GLOBAL|RTLD_NOW);
if (!dlh)
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
ops = dlsym(dlh, "uci_plugin");
if (!ops || !ops->attach || (ops->attach(ctx) != 0)) {
if (!ops)
fprintf(stderr, "No ops\n");
else if (!ops->attach)
fprintf(stderr, "No attach\n");
else
fprintf(stderr, "Other weirdness\n");
dlclose(dlh);
UCI_THROW(ctx, UCI_ERR_INVAL);
}
p = uci_alloc_element(ctx, plugin, filename, 0);
p->dlh = dlh;
p->ops = ops;
uci_list_add(&ctx->plugins, &p->e.list);
return 0;
}
static void uci_unload_plugin(struct uci_context *ctx, struct uci_plugin *p)
{
if (p->ops->detach)
p->ops->detach(ctx);
dlclose(p->dlh);
uci_free_element(&p->e);
}
int uci_load_plugins(struct uci_context *ctx, const char *pattern)
{
glob_t gl;
int i;
if (!pattern)
pattern = UCI_PREFIX "/lib/uci_*.so";
memset(&gl, 0, sizeof(gl));
glob(pattern, 0, NULL, &gl);
for (i = 0; i < gl.gl_pathc; i++)
uci_load_plugin(ctx, gl.gl_pathv[i]);
return 0;
}

719
lib/uci/list.c Normal file
View file

@ -0,0 +1,719 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/* initialize a list head/item */
static inline void uci_list_init(struct uci_list *ptr)
{
ptr->prev = ptr;
ptr->next = ptr;
}
/* inserts a new list entry after a given entry */
static inline void uci_list_insert(struct uci_list *list, struct uci_list *ptr)
{
list->next->prev = ptr;
ptr->prev = list;
ptr->next = list->next;
list->next = ptr;
}
/* inserts a new list entry at the tail of the list */
static inline void uci_list_add(struct uci_list *head, struct uci_list *ptr)
{
/* NB: head->prev points at the tail */
uci_list_insert(head->prev, ptr);
}
static inline void uci_list_del(struct uci_list *ptr)
{
struct uci_list *next, *prev;
next = ptr->next;
prev = ptr->prev;
prev->next = next;
next->prev = prev;
uci_list_init(ptr);
}
static inline void uci_list_set_pos(struct uci_list *head, struct uci_list *ptr, int pos)
{
struct uci_list *new_head = head;
struct uci_element *p = NULL;
uci_list_del(ptr);
uci_foreach_element(head, p) {
new_head = &p->list;
if (pos-- <= 0)
break;
}
uci_list_add(new_head, ptr);
}
static inline void uci_list_fixup(struct uci_list *ptr)
{
ptr->prev->next = ptr;
ptr->next->prev = ptr;
}
/*
* uci_alloc_generic allocates a new uci_element with payload
* payload is appended to the struct to save memory and reduce fragmentation
*/
static struct uci_element *
uci_alloc_generic(struct uci_context *ctx, int type, const char *name, int size)
{
struct uci_element *e;
int datalen = size;
void *ptr;
ptr = uci_malloc(ctx, datalen);
e = (struct uci_element *) ptr;
e->type = type;
if (name) {
UCI_TRAP_SAVE(ctx, error);
e->name = uci_strdup(ctx, name);
UCI_TRAP_RESTORE(ctx);
}
uci_list_init(&e->list);
goto done;
error:
free(ptr);
UCI_THROW(ctx, ctx->err);
done:
return e;
}
static void
uci_free_element(struct uci_element *e)
{
if (e->name)
free(e->name);
if (!uci_list_empty(&e->list))
uci_list_del(&e->list);
free(e);
}
static struct uci_option *
uci_alloc_option(struct uci_section *s, const char *name, const char *value)
{
struct uci_package *p = s->package;
struct uci_context *ctx = p->ctx;
struct uci_option *o;
o = uci_alloc_element(ctx, option, name, strlen(value) + 1);
o->type = UCI_TYPE_STRING;
o->v.string = uci_dataptr(o);
o->section = s;
strcpy(o->v.string, value);
uci_list_add(&s->options, &o->e.list);
return o;
}
static inline void
uci_free_option(struct uci_option *o)
{
struct uci_element *e, *tmp;
switch(o->type) {
case UCI_TYPE_STRING:
if ((o->v.string != uci_dataptr(o)) &&
(o->v.string != NULL))
free(o->v.string);
break;
case UCI_TYPE_LIST:
uci_foreach_element_safe(&o->v.list, tmp, e) {
uci_free_element(e);
}
break;
default:
break;
}
uci_free_element(&o->e);
}
static struct uci_option *
uci_alloc_list(struct uci_section *s, const char *name)
{
struct uci_package *p = s->package;
struct uci_context *ctx = p->ctx;
struct uci_option *o;
o = uci_alloc_element(ctx, option, name, 0);
o->type = UCI_TYPE_LIST;
o->section = s;
uci_list_init(&o->v.list);
uci_list_add(&s->options, &o->e.list);
return o;
}
/* fix up an unnamed section, e.g. after adding options to it */
static void uci_fixup_section(struct uci_context *ctx, struct uci_section *s)
{
unsigned int hash = ~0;
struct uci_element *e;
char buf[16];
if (!s || s->e.name)
return;
/*
* Generate a name for unnamed sections. This is used as reference
* when locating or updating the section from apps/scripts.
* To make multiple concurrent versions somewhat safe for updating,
* the name is generated from a hash of its type and name/value
* pairs of its option, and it is prefixed by a counter value.
* If the order of the unnamed sections changes for some reason,
* updates to them will be rejected.
*/
hash = djbhash(hash, s->type);
uci_foreach_element(&s->options, e) {
struct uci_option *o;
hash = djbhash(hash, e->name);
o = uci_to_option(e);
switch(o->type) {
case UCI_TYPE_STRING:
hash = djbhash(hash, o->v.string);
break;
default:
break;
}
}
sprintf(buf, "cfg%02x%04x", ++s->package->n_section, hash % (1 << 16));
s->e.name = uci_strdup(ctx, buf);
}
static struct uci_section *
uci_alloc_section(struct uci_package *p, const char *type, const char *name)
{
struct uci_context *ctx = p->ctx;
struct uci_section *s;
if (name && !name[0])
name = NULL;
s = uci_alloc_element(ctx, section, name, strlen(type) + 1);
uci_list_init(&s->options);
s->type = uci_dataptr(s);
s->package = p;
strcpy(s->type, type);
if (name == NULL)
s->anonymous = true;
p->n_section++;
uci_list_add(&p->sections, &s->e.list);
return s;
}
static void
uci_free_section(struct uci_section *s)
{
struct uci_element *o, *tmp;
uci_foreach_element_safe(&s->options, tmp, o) {
uci_free_option(uci_to_option(o));
}
if ((s->type != uci_dataptr(s)) &&
(s->type != NULL))
free(s->type);
uci_free_element(&s->e);
}
__plugin struct uci_package *
uci_alloc_package(struct uci_context *ctx, const char *name)
{
struct uci_package *p;
p = uci_alloc_element(ctx, package, name, 0);
p->ctx = ctx;
uci_list_init(&p->sections);
uci_list_init(&p->history);
uci_list_init(&p->saved_history);
return p;
}
static void
uci_free_package(struct uci_package **package)
{
struct uci_element *e, *tmp;
struct uci_package *p = *package;
if(!p)
return;
if (p->path)
free(p->path);
uci_foreach_element_safe(&p->sections, tmp, e) {
uci_free_section(uci_to_section(e));
}
uci_foreach_element_safe(&p->history, tmp, e) {
uci_free_history(uci_to_history(e));
}
uci_foreach_element_safe(&p->saved_history, tmp, e) {
uci_free_history(uci_to_history(e));
}
uci_free_element(&p->e);
*package = NULL;
}
static void
uci_free_any(struct uci_element **e)
{
switch((*e)->type) {
case UCI_TYPE_SECTION:
uci_free_section(uci_to_section(*e));
break;
case UCI_TYPE_OPTION:
uci_free_option(uci_to_option(*e));
break;
default:
break;
}
*e = NULL;
}
static inline struct uci_element *
uci_lookup_list(struct uci_list *list, const char *name)
{
struct uci_element *e;
uci_foreach_element(list, e) {
if (!strcmp(e->name, name))
return e;
}
return NULL;
}
static struct uci_element *
uci_lookup_ext_section(struct uci_context *ctx, struct uci_ptr *ptr)
{
char *idxstr, *t, *section, *name;
struct uci_element *e = NULL;
struct uci_section *s;
int idx, c;
section = uci_strdup(ctx, ptr->section);
name = idxstr = section + 1;
if (section[0] != '@')
goto error;
/* parse the section index part */
idxstr = strchr(idxstr, '[');
if (!idxstr)
goto error;
*idxstr = 0;
idxstr++;
t = strchr(idxstr, ']');
if (!t)
goto error;
if (t[1] != 0)
goto error;
*t = 0;
t = NULL;
idx = strtol(idxstr, &t, 10);
if (t && *t)
goto error;
if (!*name)
name = NULL;
else if (!uci_validate_type(name))
goto error;
/* if the given index is negative, it specifies the section number from
* the end of the list */
if (idx < 0) {
c = 0;
uci_foreach_element(&ptr->p->sections, e) {
s = uci_to_section(e);
if (name && (strcmp(s->type, name) != 0))
continue;
c++;
}
idx += c;
}
c = 0;
uci_foreach_element(&ptr->p->sections, e) {
s = uci_to_section(e);
if (name && (strcmp(s->type, name) != 0))
continue;
if (idx == c)
goto done;
c++;
}
e = NULL;
goto done;
error:
e = NULL;
memset(ptr, 0, sizeof(struct uci_ptr));
UCI_THROW(ctx, UCI_ERR_INVAL);
done:
free(section);
if (e)
ptr->section = e->name;
return e;
}
int
uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool extended)
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, ptr != NULL);
if (str)
UCI_INTERNAL(uci_parse_ptr, ctx, ptr, str);
ptr->flags |= UCI_LOOKUP_DONE;
/* look up the package first */
e = uci_lookup_list(&ctx->root, ptr->package);
if (!e) {
UCI_INTERNAL(uci_load, ctx, ptr->package, &ptr->p);
if (!ptr->p)
goto notfound;
ptr->last = &ptr->p->e;
} else {
ptr->p = uci_to_package(e);
ptr->last = e;
}
if (!ptr->section)
goto complete;
/* if the section name validates as a regular name, pass through
* to the regular uci_lookup function call */
if (ptr->flags & UCI_LOOKUP_EXTENDED)
e = uci_lookup_ext_section(ctx, ptr);
else
e = uci_lookup_list(&ptr->p->sections, ptr->section);
if (!e)
goto abort;
ptr->last = e;
ptr->s = uci_to_section(e);
if (ptr->option) {
e = uci_lookup_list(&ptr->s->options, ptr->option);
if (!e)
goto abort;
ptr->o = uci_to_option(e);
ptr->last = e;
}
complete:
ptr->flags |= UCI_LOOKUP_COMPLETE;
abort:
return 0;
notfound:
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
return 0;
}
int
uci_fill_ptr(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_element *e, bool complete)
{
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, ptr != NULL);
UCI_ASSERT(ctx, e != NULL);
memset(ptr, 0, sizeof(struct uci_ptr));
switch(e->type) {
case UCI_TYPE_OPTION:
ptr->o = uci_to_option(e);
goto fill_option;
case UCI_TYPE_SECTION:
ptr->s = uci_to_section(e);
goto fill_section;
case UCI_TYPE_PACKAGE:
ptr->p = uci_to_package(e);
goto fill_package;
default:
UCI_THROW(ctx, UCI_ERR_INVAL);
}
fill_option:
ptr->option = ptr->o->e.name;
ptr->s = ptr->o->section;
fill_section:
ptr->section = ptr->s->e.name;
ptr->p = ptr->s->package;
fill_package:
ptr->package = ptr->p->e.name;
ptr->flags |= UCI_LOOKUP_DONE;
if (complete)
ptr->flags |= UCI_LOOKUP_COMPLETE;
return 0;
}
static struct uci_element *
expand_ptr(struct uci_context *ctx, struct uci_ptr *ptr, bool complete)
{
UCI_ASSERT(ctx, ptr != NULL);
if (!(ptr->flags & UCI_LOOKUP_DONE))
UCI_INTERNAL(uci_lookup_ptr, ctx, ptr, NULL, 1);
if (complete && !(ptr->flags & UCI_LOOKUP_COMPLETE))
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
UCI_ASSERT(ctx, ptr->p != NULL);
/* fill in missing string info */
if (ptr->p && !ptr->package)
ptr->package = ptr->p->e.name;
if (ptr->s && !ptr->section)
ptr->section = ptr->s->e.name;
if (ptr->o && !ptr->option)
ptr->option = ptr->o->e.name;
if (ptr->o)
return &ptr->o->e;
if (ptr->s)
return &ptr->s->e;
if (ptr->p)
return &ptr->p->e;
else
return NULL;
}
static void uci_add_element_list(struct uci_context *ctx, struct uci_ptr *ptr, bool internal)
{
struct uci_element *e;
struct uci_package *p;
p = ptr->p;
if (!internal && p->has_history)
uci_add_history(ctx, &p->history, UCI_CMD_LIST_ADD, ptr->section, ptr->option, ptr->value);
e = uci_alloc_generic(ctx, UCI_TYPE_ITEM, ptr->value, sizeof(struct uci_option));
uci_list_add(&ptr->o->v.list, &e->list);
}
int uci_rename(struct uci_context *ctx, struct uci_ptr *ptr)
{
/* NB: UCI_INTERNAL use means without history tracking */
bool internal = ctx->internal;
struct uci_element *e;
struct uci_package *p;
char *n;
UCI_HANDLE_ERR(ctx);
e = expand_ptr(ctx, ptr, true);
p = ptr->p;
UCI_ASSERT(ctx, ptr->s);
UCI_ASSERT(ctx, ptr->value);
if (!internal && p->has_history)
uci_add_history(ctx, &p->history, UCI_CMD_RENAME, ptr->section, ptr->option, ptr->value);
n = uci_strdup(ctx, ptr->value);
if (e->name)
free(e->name);
e->name = n;
if (e->type == UCI_TYPE_SECTION)
uci_to_section(e)->anonymous = false;
return 0;
}
int uci_reorder_section(struct uci_context *ctx, struct uci_section *s, int pos)
{
struct uci_package *p = s->package;
char order[32];
UCI_HANDLE_ERR(ctx);
uci_list_set_pos(&s->package->sections, &s->e.list, pos);
if (!ctx->internal && p->has_history) {
sprintf(order, "%d", pos);
uci_add_history(ctx, &p->history, UCI_CMD_REORDER, s->e.name, NULL, order);
}
return 0;
}
int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res)
{
bool internal = ctx->internal;
struct uci_section *s;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
s = uci_alloc_section(p, type, NULL);
uci_fixup_section(ctx, s);
*res = s;
if (!internal && p->has_history)
uci_add_history(ctx, &p->history, UCI_CMD_ADD, s->e.name, NULL, type);
return 0;
}
int uci_delete(struct uci_context *ctx, struct uci_ptr *ptr)
{
/* NB: pass on internal flag to uci_del_element */
bool internal = ctx->internal;
struct uci_package *p;
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
e = expand_ptr(ctx, ptr, true);
p = ptr->p;
UCI_ASSERT(ctx, ptr->s);
if (!internal && p->has_history)
uci_add_history(ctx, &p->history, UCI_CMD_REMOVE, ptr->section, ptr->option, NULL);
uci_free_any(&e);
if (ptr->option)
ptr->o = NULL;
else if (ptr->section)
ptr->s = NULL;
return 0;
}
int uci_add_list(struct uci_context *ctx, struct uci_ptr *ptr)
{
/* NB: UCI_INTERNAL use means without history tracking */
bool internal = ctx->internal;
struct uci_option *prev = NULL;
const char *value2 = NULL;
UCI_HANDLE_ERR(ctx);
expand_ptr(ctx, ptr, false);
UCI_ASSERT(ctx, ptr->s);
UCI_ASSERT(ctx, ptr->value);
if (ptr->o) {
switch (ptr->o->type) {
case UCI_TYPE_STRING:
/* we already have a string value, convert that to a list */
prev = ptr->o;
value2 = ptr->value;
ptr->value = ptr->o->v.string;
break;
case UCI_TYPE_LIST:
uci_add_element_list(ctx, ptr, internal);
return 0;
default:
UCI_THROW(ctx, UCI_ERR_INVAL);
break;
}
}
ptr->o = uci_alloc_list(ptr->s, ptr->option);
if (prev) {
uci_add_element_list(ctx, ptr, true);
uci_free_option(prev);
ptr->value = value2;
}
uci_add_element_list(ctx, ptr, internal);
return 0;
}
int uci_set(struct uci_context *ctx, struct uci_ptr *ptr)
{
/* NB: UCI_INTERNAL use means without history tracking */
bool internal = ctx->internal;
UCI_HANDLE_ERR(ctx);
expand_ptr(ctx, ptr, false);
UCI_ASSERT(ctx, ptr->value);
UCI_ASSERT(ctx, ptr->s || (!ptr->option && ptr->section));
if (!ptr->option && ptr->value[0]) {
UCI_ASSERT(ctx, uci_validate_type(ptr->value));
}
if (!ptr->o && ptr->s && ptr->option) {
struct uci_element *e;
e = uci_lookup_list(&ptr->s->options, ptr->option);
if (e)
ptr->o = uci_to_option(e);
}
if (!ptr->value[0]) {
/* if setting a nonexistant option/section to a nonexistant value,
* exit without errors */
if (!(ptr->flags & UCI_LOOKUP_COMPLETE))
return 0;
return uci_delete(ctx, ptr);
} else if (!ptr->o && ptr->option) { /* new option */
ptr->o = uci_alloc_option(ptr->s, ptr->option, ptr->value);
ptr->last = &ptr->o->e;
} else if (!ptr->s && ptr->section) { /* new section */
ptr->s = uci_alloc_section(ptr->p, ptr->value, ptr->section);
ptr->last = &ptr->s->e;
} else if (ptr->o && ptr->option) { /* update option */
if ((ptr->o->type == UCI_TYPE_STRING) &&
!strcmp(ptr->o->v.string, ptr->value))
return 0;
uci_free_option(ptr->o);
ptr->o = uci_alloc_option(ptr->s, ptr->option, ptr->value);
ptr->last = &ptr->o->e;
} else if (ptr->s && ptr->section) { /* update section */
char *s = uci_strdup(ctx, ptr->value);
if (ptr->s->type == uci_dataptr(ptr->s)) {
ptr->last = NULL;
ptr->last = uci_realloc(ctx, ptr->s, sizeof(struct uci_section));
ptr->s = uci_to_section(ptr->last);
uci_list_fixup(&ptr->s->e.list);
} else {
free(ptr->s->type);
}
ptr->s->type = s;
} else {
UCI_THROW(ctx, UCI_ERR_INVAL);
}
if (!internal && ptr->p->has_history)
uci_add_history(ctx, &ptr->p->history, UCI_CMD_CHANGE, ptr->section, ptr->option, ptr->value);
return 0;
}
int uci_unload(struct uci_context *ctx, struct uci_package *p)
{
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
uci_free_package(&p);
return 0;
}

601
lib/uci/list.h Normal file
View file

@ -0,0 +1,601 @@
#ifndef _LINUX_LIST_H
#define _LINUX_LIST_H
#include <stddef.h>
/**
* container_of - cast a member of a structure out to the containing structure
* @ptr: the pointer to the member.
* @type: the type of the container struct this is embedded in.
* @member: the name of the member within the struct.
*
*/
#ifndef container_of
#define container_of(ptr, type, member) ( \
(type *)( (char *)ptr - offsetof(type,member) ))
#endif
/*
* Simple doubly linked list implementation.
*
* Some of the internal functions ("__xxx") are useful when
* manipulating whole lists rather than single entries, as
* sometimes we already know the next/prev entries and we can
* generate better code by using them directly rather than
* using the generic single-entry routines.
*/
struct list_head {
struct list_head *next, *prev;
};
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
static inline void INIT_LIST_HEAD(struct list_head *list)
{
list->next = list;
list->prev = list;
}
/*
* Insert a new entry between two known consecutive entries.
*
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
static inline void __list_add(struct list_head *new,
struct list_head *prev,
struct list_head *next)
{
next->prev = new;
new->next = next;
new->prev = prev;
prev->next = new;
}
/**
* list_add - add a new entry
* @new: new entry to be added
* @head: list head to add it after
*
* Insert a new entry after the specified head.
* This is good for implementing stacks.
*/
static inline void list_add(struct list_head *new, struct list_head *head)
{
__list_add(new, head, head->next);
}
/**
* list_add_tail - add a new entry
* @new: new entry to be added
* @head: list head to add it before
*
* Insert a new entry before the specified head.
* This is useful for implementing queues.
*/
static inline void list_add_tail(struct list_head *new, struct list_head *head)
{
__list_add(new, head->prev, head);
}
/*
* Delete a list entry by making the prev/next entries
* point to each other.
*
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
static inline void __list_del(struct list_head * prev, struct list_head * next)
{
next->prev = prev;
prev->next = next;
}
/**
* list_del - deletes entry from list.
* @entry: the element to delete from the list.
* Note: list_empty() on entry does not return true after this, the entry is
* in an undefined state.
*/
static inline void list_del(struct list_head *entry)
{
__list_del(entry->prev, entry->next);
entry->next = NULL;
entry->prev = NULL;
}
/**
* list_replace - replace old entry by new one
* @old : the element to be replaced
* @new : the new element to insert
*
* If @old was empty, it will be overwritten.
*/
static inline void list_replace(struct list_head *old,
struct list_head *new)
{
new->next = old->next;
new->next->prev = new;
new->prev = old->prev;
new->prev->next = new;
}
static inline void list_replace_init(struct list_head *old,
struct list_head *new)
{
list_replace(old, new);
INIT_LIST_HEAD(old);
}
/**
* list_del_init - deletes entry from list and reinitialize it.
* @entry: the element to delete from the list.
*/
static inline void list_del_init(struct list_head *entry)
{
__list_del(entry->prev, entry->next);
INIT_LIST_HEAD(entry);
}
/**
* list_move - delete from one list and add as another's head
* @list: the entry to move
* @head: the head that will precede our entry
*/
static inline void list_move(struct list_head *list, struct list_head *head)
{
__list_del(list->prev, list->next);
list_add(list, head);
}
/**
* list_move_tail - delete from one list and add as another's tail
* @list: the entry to move
* @head: the head that will follow our entry
*/
static inline void list_move_tail(struct list_head *list,
struct list_head *head)
{
__list_del(list->prev, list->next);
list_add_tail(list, head);
}
/**
* list_is_last - tests whether @list is the last entry in list @head
* @list: the entry to test
* @head: the head of the list
*/
static inline int list_is_last(const struct list_head *list,
const struct list_head *head)
{
return list->next == head;
}
/**
* list_empty - tests whether a list is empty
* @head: the list to test.
*/
static inline int list_empty(const struct list_head *head)
{
return head->next == head;
}
/**
* list_empty_careful - tests whether a list is empty and not being modified
* @head: the list to test
*
* Description:
* tests whether a list is empty _and_ checks that no other CPU might be
* in the process of modifying either member (next or prev)
*
* NOTE: using list_empty_careful() without synchronization
* can only be safe if the only activity that can happen
* to the list entry is list_del_init(). Eg. it cannot be used
* if another CPU could re-list_add() it.
*/
static inline int list_empty_careful(const struct list_head *head)
{
struct list_head *next = head->next;
return (next == head) && (next == head->prev);
}
static inline void __list_splice(struct list_head *list,
struct list_head *head)
{
struct list_head *first = list->next;
struct list_head *last = list->prev;
struct list_head *at = head->next;
first->prev = head;
head->next = first;
last->next = at;
at->prev = last;
}
/**
* list_splice - join two lists
* @list: the new list to add.
* @head: the place to add it in the first list.
*/
static inline void list_splice(struct list_head *list, struct list_head *head)
{
if (!list_empty(list))
__list_splice(list, head);
}
/**
* list_splice_init - join two lists and reinitialise the emptied list.
* @list: the new list to add.
* @head: the place to add it in the first list.
*
* The list at @list is reinitialised
*/
static inline void list_splice_init(struct list_head *list,
struct list_head *head)
{
if (!list_empty(list)) {
__list_splice(list, head);
INIT_LIST_HEAD(list);
}
}
/**
* list_entry - get the struct for this entry
* @ptr: the &struct list_head pointer.
* @type: the type of the struct this is embedded in.
* @member: the name of the list_struct within the struct.
*/
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)
/**
* list_first_entry - get the first element from a list
* @ptr: the list head to take the element from.
* @type: the type of the struct this is embedded in.
* @member: the name of the list_struct within the struct.
*
* Note, that list is expected to be not empty.
*/
#define list_first_entry(ptr, type, member) \
list_entry((ptr)->next, type, member)
/**
* list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
*/
#define list_for_each(pos, head) \
for (pos = (head)->next; pos != (head); \
pos = pos->next)
/**
* __list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
*
* This variant differs from list_for_each() in that it's the
* simplest possible list iteration code, no prefetching is done.
* Use this for code that knows the list to be very short (empty
* or 1 entry) most of the time.
*/
#define __list_for_each(pos, head) \
for (pos = (head)->next; pos != (head); pos = pos->next)
/**
* list_for_each_prev - iterate over a list backwards
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
*/
#define list_for_each_prev(pos, head) \
for (pos = (head)->prev; pos != (head); \
pos = pos->prev)
/**
* list_for_each_safe - iterate over a list safe against removal of list entry
* @pos: the &struct list_head to use as a loop cursor.
* @n: another &struct list_head to use as temporary storage
* @head: the head for your list.
*/
#define list_for_each_safe(pos, n, head) \
for (pos = (head)->next, n = pos->next; pos != (head); \
pos = n, n = pos->next)
/**
* list_for_each_prev_safe - iterate over a list backwards safe against removal of list entry
* @pos: the &struct list_head to use as a loop cursor.
* @n: another &struct list_head to use as temporary storage
* @head: the head for your list.
*/
#define list_for_each_prev_safe(pos, n, head) \
for (pos = (head)->prev, n = pos->prev; \
pos != (head); \
pos = n, n = pos->prev)
/**
* list_for_each_entry - iterate over list of given type
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
#define list_for_each_entry(pos, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member); \
&pos->member != (head); \
pos = list_entry(pos->member.next, typeof(*pos), member))
/**
* list_for_each_entry_reverse - iterate backwards over list of given type.
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
#define list_for_each_entry_reverse(pos, head, member) \
for (pos = list_entry((head)->prev, typeof(*pos), member); \
&pos->member != (head); \
pos = list_entry(pos->member.prev, typeof(*pos), member))
/**
* list_prepare_entry - prepare a pos entry for use in list_for_each_entry_continue()
* @pos: the type * to use as a start point
* @head: the head of the list
* @member: the name of the list_struct within the struct.
*
* Prepares a pos entry for use as a start point in list_for_each_entry_continue().
*/
#define list_prepare_entry(pos, head, member) \
((pos) ? : list_entry(head, typeof(*pos), member))
/**
* list_for_each_entry_continue - continue iteration over list of given type
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*
* Continue to iterate over list of given type, continuing after
* the current position.
*/
#define list_for_each_entry_continue(pos, head, member) \
for (pos = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
pos = list_entry(pos->member.next, typeof(*pos), member))
/**
* list_for_each_entry_continue_reverse - iterate backwards from the given point
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*
* Start to iterate over list of given type backwards, continuing after
* the current position.
*/
#define list_for_each_entry_continue_reverse(pos, head, member) \
for (pos = list_entry(pos->member.prev, typeof(*pos), member); \
&pos->member != (head); \
pos = list_entry(pos->member.prev, typeof(*pos), member))
/**
* list_for_each_entry_from - iterate over list of given type from the current point
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*
* Iterate over list of given type, continuing from current position.
*/
#define list_for_each_entry_from(pos, head, member) \
for (; &pos->member != (head); \
pos = list_entry(pos->member.next, typeof(*pos), member))
/**
* list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
#define list_for_each_entry_safe(pos, n, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member), \
n = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.next, typeof(*n), member))
/**
* list_for_each_entry_safe_continue
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*
* Iterate over list of given type, continuing after current point,
* safe against removal of list entry.
*/
#define list_for_each_entry_safe_continue(pos, n, head, member) \
for (pos = list_entry(pos->member.next, typeof(*pos), member), \
n = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.next, typeof(*n), member))
/**
* list_for_each_entry_safe_from
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*
* Iterate over list of given type from current point, safe against
* removal of list entry.
*/
#define list_for_each_entry_safe_from(pos, n, head, member) \
for (n = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.next, typeof(*n), member))
/**
* list_for_each_entry_safe_reverse
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*
* Iterate backwards over list of given type, safe against removal
* of list entry.
*/
#define list_for_each_entry_safe_reverse(pos, n, head, member) \
for (pos = list_entry((head)->prev, typeof(*pos), member), \
n = list_entry(pos->member.prev, typeof(*pos), member); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.prev, typeof(*n), member))
/*
* Double linked lists with a single pointer list head.
* Mostly useful for hash tables where the two pointer list head is
* too wasteful.
* You lose the ability to access the tail in O(1).
*/
struct hlist_head {
struct hlist_node *first;
};
struct hlist_node {
struct hlist_node *next, **pprev;
};
#define HLIST_HEAD_INIT { .first = NULL }
#define HLIST_HEAD(name) struct hlist_head name = { .first = NULL }
#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)
static inline void INIT_HLIST_NODE(struct hlist_node *h)
{
h->next = NULL;
h->pprev = NULL;
}
static inline int hlist_unhashed(const struct hlist_node *h)
{
return !h->pprev;
}
static inline int hlist_empty(const struct hlist_head *h)
{
return !h->first;
}
static inline void __hlist_del(struct hlist_node *n)
{
struct hlist_node *next = n->next;
struct hlist_node **pprev = n->pprev;
*pprev = next;
if (next)
next->pprev = pprev;
}
static inline void hlist_del(struct hlist_node *n)
{
__hlist_del(n);
n->next = NULL;
n->pprev = NULL;
}
static inline void hlist_del_init(struct hlist_node *n)
{
if (!hlist_unhashed(n)) {
__hlist_del(n);
INIT_HLIST_NODE(n);
}
}
static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
{
struct hlist_node *first = h->first;
n->next = first;
if (first)
first->pprev = &n->next;
h->first = n;
n->pprev = &h->first;
}
/* next must be != NULL */
static inline void hlist_add_before(struct hlist_node *n,
struct hlist_node *next)
{
n->pprev = next->pprev;
n->next = next;
next->pprev = &n->next;
*(n->pprev) = n;
}
static inline void hlist_add_after(struct hlist_node *n,
struct hlist_node *next)
{
next->next = n->next;
n->next = next;
next->pprev = &n->next;
if(next->next)
next->next->pprev = &next->next;
}
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
#define hlist_for_each(pos, head) \
for (pos = (head)->first; pos; pos = pos->next)
#define hlist_for_each_safe(pos, n, head) \
for (pos = (head)->first; pos; pos = n)
/**
* hlist_for_each_entry - iterate over list of given type
* @tpos: the type * to use as a loop cursor.
* @pos: the &struct hlist_node to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the hlist_node within the struct.
*/
#define hlist_for_each_entry(tpos, pos, head, member) \
for (pos = (head)->first; pos && \
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
pos = pos->next)
/**
* hlist_for_each_entry_continue - iterate over a hlist continuing after current point
* @tpos: the type * to use as a loop cursor.
* @pos: the &struct hlist_node to use as a loop cursor.
* @member: the name of the hlist_node within the struct.
*/
#define hlist_for_each_entry_continue(tpos, pos, member) \
for (pos = (pos)->next; pos && \
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
pos = pos->next)
/**
* hlist_for_each_entry_from - iterate over a hlist continuing from current point
* @tpos: the type * to use as a loop cursor.
* @pos: the &struct hlist_node to use as a loop cursor.
* @member: the name of the hlist_node within the struct.
*/
#define hlist_for_each_entry_from(tpos, pos, member) \
for (; pos && \
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
pos = pos->next)
/**
* hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry
* @tpos: the type * to use as a loop cursor.
* @pos: the &struct hlist_node to use as a loop cursor.
* @n: another &struct hlist_node to use as temporary storage
* @head: the head for your list.
* @member: the name of the hlist_node within the struct.
*/
#define hlist_for_each_entry_safe(tpos, pos, n, head, member) \
for (pos = (head)->first; \
pos && ({ n = pos->next; 1; }) && \
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
pos = n)
#endif

44
lib/uci/lua/Makefile Normal file
View file

@ -0,0 +1,44 @@
include ../Makefile.inc
LUA_VERSION=5.1
PREFIX_SEARCH=/usr /usr/local /opt/local
LUA_PLUGINDIR=$(firstword \
$(foreach ldir,$(subst ;, ,$(shell lua -e 'print(package.cpath)')), \
$(if $(findstring lib/lua/,$(ldir)),$(patsubst %/?.so,%,$(ldir))) \
) \
)
# find lua prefix
LUA_PREFIX=$(firstword \
$(foreach prefix,$(PREFIX_SEARCH),\
$(if $(wildcard $(prefix)/include/lua.h),$(prefix)) \
) \
)
libdir=$(prefix)/libs
luadir=$(if $(LUA_PLUGINDIR),$(LUA_PLUGINDIR),$(libdir)/lua/$(LUA_VERSION))
luainc=$(shell pkg-config --silence-errors --cflags lua$(LUA_VERSION))
CPPFLAGS=-I.. $(if $(luainc),$(luainc), -I$(LUA_PREFIX)/include)
LIBS=-L.. -luci $(shell pkg-config --silence-errors --libs lua$(LUA_VERSION))
PLUGIN_LD=$(CC)
ifeq ($(OS),Darwin)
PLUGIN_LDFLAGS=-bundle -undefined dynamic_lookup
else
PLUGIN_LDFLAGS=-shared -Wl,-soname,$(SHLIB_FILE)
endif
all: uci.so
uci.so: uci.o
$(PLUGIN_LD) $(PLUGIN_LDFLAGS) -o $@ $^ $(LIBS)
%.o: %.c
$(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $<
install:
mkdir -p $(DESTDIR)$(luadir)
$(INSTALL) -m0644 uci.so $(DESTDIR)$(luadir)/
clean:
rm -f *.so *.o uci.so

928
lib/uci/lua/uci.c Normal file
View file

@ -0,0 +1,928 @@
/*
* libuci plugin for Lua
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation
*
* 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.
*/
#include <sys/types.h>
#include <sys/time.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <lauxlib.h>
#include <uci.h>
#define MODNAME "uci"
#define METANAME MODNAME ".meta"
//#define DEBUG 1
#ifdef DEBUG
#define DPRINTF(...) fprintf(stderr, __VA_ARGS__)
#else
#define DPRINTF(...) do {} while (0)
#endif
static struct uci_context *global_ctx = NULL;
static struct uci_context *
find_context(lua_State *L, int *offset)
{
struct uci_context **ctx;
if (!lua_isuserdata(L, 1)) {
if (!global_ctx) {
global_ctx = uci_alloc_context();
if (!global_ctx)
luaL_error(L, "failed to allocate UCI context");
}
if (offset)
*offset = 0;
return global_ctx;
}
if (offset)
*offset = 1;
ctx = luaL_checkudata(L, 1, METANAME);
if (!ctx || !*ctx)
luaL_error(L, "failed to get UCI context");
return *ctx;
}
static struct uci_package *
find_package(lua_State *L, struct uci_context *ctx, const char *str, bool al)
{
struct uci_package *p = NULL;
struct uci_element *e;
char *sep;
char *name;
sep = strchr(str, '.');
if (sep) {
name = malloc(1 + sep - str);
if (!name)
luaL_error(L, "out of memory");
strncpy(name, str, sep - str);
name[sep - str] = 0;
} else
name = (char *) str;
uci_foreach_element(&ctx->root, e) {
if (strcmp(e->name, name) != 0)
continue;
p = uci_to_package(e);
goto done;
}
if (al == true)
uci_load(ctx, name, &p);
else if (al) {
uci_load(ctx, name, &p);
}
done:
if (name != str)
free(name);
return p;
}
static int
lookup_args(lua_State *L, struct uci_context *ctx, int offset, struct uci_ptr *ptr, char **buf)
{
char *s = NULL;
int n;
n = lua_gettop(L);
luaL_checkstring(L, 1 + offset);
s = strdup(lua_tostring(L, 1 + offset));
if (!s)
goto error;
memset(ptr, 0, sizeof(struct uci_ptr));
if (!find_package(L, ctx, s, true))
goto error;
switch (n - offset) {
case 4:
case 3:
ptr->option = luaL_checkstring(L, 3 + offset);
/* fall through */
case 2:
ptr->section = luaL_checkstring(L, 2 + offset);
ptr->package = luaL_checkstring(L, 1 + offset);
if (uci_lookup_ptr(ctx, ptr, NULL, false) != UCI_OK)
goto error;
break;
case 1:
if (uci_lookup_ptr(ctx, ptr, s, false) != UCI_OK)
goto error;
break;
default:
luaL_error(L, "invalid argument count");
goto error;
}
*buf = s;
return 0;
error:
if (s)
free(s);
return 1;
}
static int
uci_push_status(lua_State *L, struct uci_context *ctx, bool hasarg)
{
char *str = NULL;
if (!hasarg)
lua_pushboolean(L, (ctx->err == UCI_OK));
if (ctx->err) {
uci_get_errorstr(ctx, &str, MODNAME);
if (str) {
lua_pushstring(L, str);
free(str);
return 2;
}
}
return 1;
}
static void
uci_push_option(lua_State *L, struct uci_option *o)
{
struct uci_element *e;
int i = 0;
switch(o->type) {
case UCI_TYPE_STRING:
lua_pushstring(L, o->v.string);
break;
case UCI_TYPE_LIST:
lua_newtable(L);
uci_foreach_element(&o->v.list, e) {
i++;
lua_pushstring(L, e->name);
lua_rawseti(L, -2, i);
}
break;
default:
lua_pushnil(L);
break;
}
}
static void
uci_push_section(lua_State *L, struct uci_section *s, int index)
{
struct uci_element *e;
lua_newtable(L);
lua_pushboolean(L, s->anonymous);
lua_setfield(L, -2, ".anonymous");
lua_pushstring(L, s->type);
lua_setfield(L, -2, ".type");
lua_pushstring(L, s->e.name);
lua_setfield(L, -2, ".name");
if (index >= 0) {
lua_pushinteger(L, index);
lua_setfield(L, -2, ".index");
}
uci_foreach_element(&s->options, e) {
struct uci_option *o = uci_to_option(e);
uci_push_option(L, o);
lua_setfield(L, -2, o->e.name);
}
}
static void
uci_push_package(lua_State *L, struct uci_package *p)
{
struct uci_element *e;
int i = 0;
lua_newtable(L);
uci_foreach_element(&p->sections, e) {
uci_push_section(L, uci_to_section(e), i);
lua_setfield(L, -2, e->name);
i++;
}
}
static int
uci_lua_unload(lua_State *L)
{
struct uci_context *ctx;
struct uci_package *p;
const char *s;
int offset = 0;
ctx = find_context(L, &offset);
luaL_checkstring(L, 1 + offset);
s = lua_tostring(L, 1 + offset);
p = find_package(L, ctx, s, false);
if (p) {
uci_unload(ctx, p);
return uci_push_status(L, ctx, false);
} else {
lua_pushboolean(L, 0);
}
return 1;
}
static int
uci_lua_load(lua_State *L)
{
struct uci_context *ctx;
struct uci_package *p = NULL;
const char *s;
int offset = 0;
ctx = find_context(L, &offset);
uci_lua_unload(L);
lua_pop(L, 1); /* bool ret value of unload */
s = lua_tostring(L, -1);
uci_load(ctx, s, &p);
return uci_push_status(L, ctx, false);
}
static int
uci_lua_foreach(lua_State *L)
{
struct uci_context *ctx;
struct uci_package *p;
struct uci_element *e;
const char *package, *type;
bool ret = false;
int offset = 0;
int i = 0;
ctx = find_context(L, &offset);
package = luaL_checkstring(L, 1 + offset);
if (lua_isnil(L, 2))
type = NULL;
else
type = luaL_checkstring(L, 2 + offset);
if (!lua_isfunction(L, 3 + offset) || !package)
luaL_error(L, "Invalid argument");
p = find_package(L, ctx, package, true);
if (!p)
goto done;
uci_foreach_element(&p->sections, e) {
struct uci_section *s = uci_to_section(e);
i++;
if (type && (strcmp(s->type, type) != 0))
continue;
lua_pushvalue(L, 3 + offset); /* iterator function */
uci_push_section(L, s, i - 1);
if (lua_pcall(L, 1, 1, 0) == 0) {
ret = true;
if (lua_isboolean(L, -1) && !lua_toboolean(L, -1))
break;
}
}
done:
lua_pushboolean(L, ret);
return 1;
}
static int
uci_lua_get_any(lua_State *L, bool all)
{
struct uci_context *ctx;
struct uci_element *e = NULL;
struct uci_ptr ptr;
int offset = 0;
char *s = NULL;
int err = UCI_ERR_NOTFOUND;
ctx = find_context(L, &offset);
if (lookup_args(L, ctx, offset, &ptr, &s))
goto error;
uci_lookup_ptr(ctx, &ptr, NULL, false);
if (!all && !ptr.s) {
err = UCI_ERR_INVAL;
goto error;
}
if (!(ptr.flags & UCI_LOOKUP_COMPLETE)) {
err = UCI_ERR_NOTFOUND;
goto error;
}
err = UCI_OK;
e = ptr.last;
switch(e->type) {
case UCI_TYPE_PACKAGE:
uci_push_package(L, ptr.p);
break;
case UCI_TYPE_SECTION:
if (all)
uci_push_section(L, ptr.s, -1);
else
lua_pushstring(L, ptr.s->type);
break;
case UCI_TYPE_OPTION:
uci_push_option(L, ptr.o);
break;
default:
err = UCI_ERR_INVAL;
goto error;
}
if (!err)
return 1;
error:
if (s)
free(s);
lua_pushnil(L);
return uci_push_status(L, ctx, true);
}
static int
uci_lua_get(lua_State *L)
{
return uci_lua_get_any(L, false);
}
static int
uci_lua_get_all(lua_State *L)
{
return uci_lua_get_any(L, true);
}
static int
uci_lua_add(lua_State *L)
{
struct uci_context *ctx;
struct uci_section *s = NULL;
struct uci_package *p;
const char *package;
const char *type;
const char *name = NULL;
int offset = 0;
ctx = find_context(L, &offset);
package = luaL_checkstring(L, 1 + offset);
type = luaL_checkstring(L, 2 + offset);
p = find_package(L, ctx, package, true);
if (!p)
goto fail;
if (uci_add_section(ctx, p, type, &s) || !s)
goto fail;
name = s->e.name;
lua_pushstring(L, name);
return 1;
fail:
lua_pushnil(L);
return uci_push_status(L, ctx, true);
}
static int
uci_lua_delete(lua_State *L)
{
struct uci_context *ctx;
struct uci_ptr ptr;
int offset = 0;
char *s = NULL;
int err = UCI_ERR_NOTFOUND;
ctx = find_context(L, &offset);
if (lookup_args(L, ctx, offset, &ptr, &s))
goto error;
err = uci_delete(ctx, &ptr);
error:
if (s)
free(s);
return uci_push_status(L, ctx, false);
}
static int
uci_lua_rename(lua_State *L)
{
struct uci_context *ctx;
struct uci_ptr ptr;
int err = UCI_ERR_MEM;
char *s = NULL;
int nargs, offset = 0;
ctx = find_context(L, &offset);
nargs = lua_gettop(L);
if (lookup_args(L, ctx, offset, &ptr, &s))
goto error;
switch(nargs - offset) {
case 1:
/* Format: uci.set("p.s.o=v") or uci.set("p.s=v") */
break;
case 4:
/* Format: uci.set("p", "s", "o", "v") */
ptr.value = luaL_checkstring(L, nargs);
break;
case 3:
/* Format: uci.set("p", "s", "v") */
ptr.value = ptr.option;
ptr.option = NULL;
break;
default:
err = UCI_ERR_INVAL;
goto error;
}
err = uci_lookup_ptr(ctx, &ptr, NULL, false);
if (err)
goto error;
if (((ptr.s == NULL) && (ptr.option != NULL)) || (ptr.value == NULL)) {
err = UCI_ERR_INVAL;
goto error;
}
err = uci_rename(ctx, &ptr);
if (err)
goto error;
error:
return uci_push_status(L, ctx, false);
}
static int
uci_lua_reorder(lua_State *L)
{
struct uci_context *ctx;
struct uci_ptr ptr;
int err = UCI_ERR_MEM;
char *s = NULL;
int nargs, offset = 0;
ctx = find_context(L, &offset);
nargs = lua_gettop(L);
if (lookup_args(L, ctx, offset, &ptr, &s))
goto error;
switch(nargs - offset) {
case 1:
/* Format: uci.set("p.s=v") or uci.set("p.s=v") */
if (ptr.option) {
err = UCI_ERR_INVAL;
goto error;
}
break;
case 3:
/* Format: uci.set("p", "s", "v") */
ptr.value = ptr.option;
ptr.option = NULL;
break;
default:
err = UCI_ERR_INVAL;
goto error;
}
err = uci_lookup_ptr(ctx, &ptr, NULL, false);
if (err)
goto error;
if ((ptr.s == NULL) || (ptr.value == NULL)) {
err = UCI_ERR_INVAL;
goto error;
}
err = uci_reorder_section(ctx, ptr.s, strtoul(ptr.value, NULL, 10));
if (err)
goto error;
error:
return uci_push_status(L, ctx, false);
}
static int
uci_lua_set(lua_State *L)
{
struct uci_context *ctx;
struct uci_ptr ptr;
bool istable = false;
int err = UCI_ERR_MEM;
char *s = NULL;
int i, nargs, offset = 0;
ctx = find_context(L, &offset);
nargs = lua_gettop(L);
if (lookup_args(L, ctx, offset, &ptr, &s))
goto error;
switch(nargs - offset) {
case 1:
/* Format: uci.set("p.s.o=v") or uci.set("p.s=v") */
break;
case 4:
/* Format: uci.set("p", "s", "o", "v") */
if (lua_istable(L, nargs)) {
if (lua_objlen(L, nargs) < 1)
luaL_error(L, "Cannot set an uci option to an empty table value");
lua_rawgeti(L, nargs, 1);
ptr.value = luaL_checkstring(L, -1);
lua_pop(L, 1);
istable = true;
} else {
ptr.value = luaL_checkstring(L, nargs);
}
break;
case 3:
/* Format: uci.set("p", "s", "v") */
ptr.value = ptr.option;
ptr.option = NULL;
break;
default:
err = UCI_ERR_INVAL;
goto error;
}
err = uci_lookup_ptr(ctx, &ptr, NULL, false);
if (err)
goto error;
if (((ptr.s == NULL) && (ptr.option != NULL)) || (ptr.value == NULL)) {
err = UCI_ERR_INVAL;
goto error;
}
if (istable) {
if (lua_objlen(L, nargs) == 1) {
i = 1;
if (ptr.o)
err = uci_delete(ctx, &ptr);
} else {
i = 2;
err = uci_set(ctx, &ptr);
if (err)
goto error;
}
for (; i <= lua_objlen(L, nargs); i++) {
lua_rawgeti(L, nargs, i);
ptr.value = luaL_checkstring(L, -1);
err = uci_add_list(ctx, &ptr);
lua_pop(L, 1);
if (err)
goto error;
}
} else {
err = uci_set(ctx, &ptr);
if (err)
goto error;
}
error:
return uci_push_status(L, ctx, false);
}
enum pkg_cmd {
CMD_SAVE,
CMD_COMMIT,
CMD_REVERT
};
static int
uci_lua_package_cmd(lua_State *L, enum pkg_cmd cmd)
{
struct uci_context *ctx;
struct uci_element *e, *tmp;
struct uci_ptr ptr;
char *s = NULL;
int failed = 0;
int nargs, offset = 0;
ctx = find_context(L, &offset);
nargs = lua_gettop(L);
if ((cmd != CMD_REVERT) && (nargs - offset > 1))
goto err;
if (lookup_args(L, ctx, offset, &ptr, &s))
goto err;
uci_lookup_ptr(ctx, &ptr, NULL, false);
uci_foreach_element_safe(&ctx->root, tmp, e) {
struct uci_package *p = uci_to_package(e);
int ret = UCI_ERR_INVAL;
if (ptr.p && (ptr.p != p))
continue;
ptr.p = p;
switch(cmd) {
case CMD_COMMIT:
ret = uci_commit(ctx, &p, false);
break;
case CMD_SAVE:
ret = uci_save(ctx, p);
break;
case CMD_REVERT:
ret = uci_revert(ctx, &ptr);
break;
}
if (ret != 0)
failed = 1;
}
err:
return uci_push_status(L, ctx, false);
}
static int
uci_lua_save(lua_State *L)
{
return uci_lua_package_cmd(L, CMD_SAVE);
}
static int
uci_lua_commit(lua_State *L)
{
return uci_lua_package_cmd(L, CMD_COMMIT);
}
static int
uci_lua_revert(lua_State *L)
{
return uci_lua_package_cmd(L, CMD_REVERT);
}
static void
uci_lua_add_change(lua_State *L, struct uci_element *e)
{
struct uci_history *h;
const char *name;
h = uci_to_history(e);
if (!h->section)
return;
lua_getfield(L, -1, h->section);
if (lua_isnil(L, -1)) {
lua_pop(L, 1);
lua_newtable(L);
lua_pushvalue(L, -1); /* copy for setfield */
lua_setfield(L, -3, h->section);
}
name = (h->e.name ? h->e.name : ".type");
if (h->value)
lua_pushstring(L, h->value);
else
lua_pushstring(L, "");
lua_setfield(L, -2, name);
lua_pop(L, 1);
}
static void
uci_lua_changes_pkg(lua_State *L, struct uci_context *ctx, const char *package)
{
struct uci_package *p = NULL;
struct uci_element *e;
bool autoload = false;
p = find_package(L, ctx, package, false);
if (!p) {
autoload = true;
p = find_package(L, ctx, package, true);
if (!p)
return;
}
if (uci_list_empty(&p->history) && uci_list_empty(&p->saved_history))
goto done;
lua_newtable(L);
uci_foreach_element(&p->saved_history, e) {
uci_lua_add_change(L, e);
}
uci_foreach_element(&p->history, e) {
uci_lua_add_change(L, e);
}
lua_setfield(L, -2, p->e.name);
done:
if (autoload)
uci_unload(ctx, p);
}
static int
uci_lua_changes(lua_State *L)
{
struct uci_context *ctx;
const char *package = NULL;
char **config = NULL;
int nargs;
int i, offset = 0;
ctx = find_context(L, &offset);
nargs = lua_gettop(L);
switch(nargs - offset) {
case 1:
package = luaL_checkstring(L, 1 + offset);
case 0:
break;
default:
luaL_error(L, "invalid argument count");
}
lua_newtable(L);
if (package) {
uci_lua_changes_pkg(L, ctx, package);
} else {
if (uci_list_configs(ctx, &config) != 0)
goto done;
for(i = 0; config[i] != NULL; i++) {
uci_lua_changes_pkg(L, ctx, config[i]);
}
}
done:
return 1;
}
static int
uci_lua_get_confdir(lua_State *L)
{
struct uci_context *ctx = find_context(L, NULL);
lua_pushstring(L, ctx->confdir);
return 1;
}
static int
uci_lua_set_confdir(lua_State *L)
{
struct uci_context *ctx;
int ret, offset = 0;
ctx = find_context(L, &offset);
luaL_checkstring(L, 1 + offset);
ret = uci_set_confdir(ctx, lua_tostring(L, -1));
return uci_push_status(L, ctx, false);
}
static int
uci_lua_get_savedir(lua_State *L)
{
struct uci_context *ctx = find_context(L, NULL);
lua_pushstring(L, ctx->savedir);
return 1;
}
static int
uci_lua_add_history(lua_State *L)
{
struct uci_context *ctx;
int ret, offset = 0;
ctx = find_context(L, &offset);
luaL_checkstring(L, 1 + offset);
ret = uci_add_history_path(ctx, lua_tostring(L, -1));
return uci_push_status(L, ctx, false);
}
static int
uci_lua_load_plugins(lua_State *L)
{
struct uci_context *ctx;
int ret, offset = 0;
const char *str = NULL;
ctx = find_context(L, &offset);
if (lua_isstring(L, -1))
str = lua_tostring(L, -1);
ret = uci_load_plugins(ctx, str);
return uci_push_status(L, ctx, false);
}
static int
uci_lua_set_savedir(lua_State *L)
{
struct uci_context *ctx;
int ret, offset = 0;
ctx = find_context(L, &offset);
luaL_checkstring(L, 1 + offset);
ret = uci_set_savedir(ctx, lua_tostring(L, -1));
return uci_push_status(L, ctx, false);
}
static int
uci_lua_gc(lua_State *L)
{
struct uci_context *ctx = find_context(L, NULL);
uci_free_context(ctx);
return 0;
}
static int
uci_lua_cursor(lua_State *L)
{
struct uci_context **u;
int argc = lua_gettop(L);
u = lua_newuserdata(L, sizeof(struct uci_context *));
luaL_getmetatable(L, METANAME);
lua_setmetatable(L, -2);
*u = uci_alloc_context();
if (!*u)
luaL_error(L, "Cannot allocate UCI context");
switch (argc) {
case 2:
if (lua_isstring(L, 2) &&
(uci_set_savedir(*u, luaL_checkstring(L, 2)) != UCI_OK))
luaL_error(L, "Unable to set savedir");
/* fall through */
case 1:
if (lua_isstring(L, 1) &&
(uci_set_confdir(*u, luaL_checkstring(L, 1)) != UCI_OK))
luaL_error(L, "Unable to set savedir");
break;
default:
break;
}
return 1;
}
static const luaL_Reg uci[] = {
{ "__gc", uci_lua_gc },
{ "cursor", uci_lua_cursor },
{ "load", uci_lua_load },
{ "unload", uci_lua_unload },
{ "get", uci_lua_get },
{ "get_all", uci_lua_get_all },
{ "add", uci_lua_add },
{ "set", uci_lua_set },
{ "rename", uci_lua_rename },
{ "save", uci_lua_save },
{ "delete", uci_lua_delete },
{ "commit", uci_lua_commit },
{ "revert", uci_lua_revert },
{ "reorder", uci_lua_reorder },
{ "changes", uci_lua_changes },
{ "foreach", uci_lua_foreach },
{ "add_history", uci_lua_add_history },
{ "load_plugins", uci_lua_load_plugins },
{ "get_confdir", uci_lua_get_confdir },
{ "set_confdir", uci_lua_set_confdir },
{ "get_savedir", uci_lua_get_savedir },
{ "set_savedir", uci_lua_set_savedir },
{ NULL, NULL },
};
int
luaopen_uci(lua_State *L)
{
/* create metatable */
luaL_newmetatable(L, METANAME);
/* metatable.__index = metatable */
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
/* fill metatable */
luaL_register(L, NULL, uci);
lua_pop(L, 1);
/* create module */
luaL_register(L, MODNAME, uci);
return 0;
}

178
lib/uci/sh/uci.sh Executable file
View file

@ -0,0 +1,178 @@
#!/bin/sh
# Copyright (C) 2006 Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
# Copyright (C) 2006-2008 OpenWrt.org
# newline
N="
"
_C=0
NO_EXPORT=1
LOAD_STATE=1
LIST_SEP=" "
hotplug_dev() {
env -i ACTION=$1 INTERFACE=$2 /sbin/hotplug-call net
}
append() {
local var="$1"
local value="$2"
local sep="${3:- }"
eval "export ${NO_EXPORT:+-n} -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
}
list_contains() {
local var="$1"
local str="$2"
local val
eval "val=\" \${$var} \""
[ "${val%% $str *}" != "$val" ]
}
list_remove() {
local var="$1"
local remove="$2"
local val
eval "val=\" \${$var} \""
val1="${val%% $remove *}"
[ "$val1" = "$val" ] && return
val2="${val##* $remove }"
[ "$val2" = "$val" ] && return
val="${val1## } ${val2%% }"
val="${val%% }"
eval "export ${NO_EXPORT:+-n} -- \"$var=\$val\""
}
config_load() {
[ -n "$IPKG_INSTROOT" ] && return 0
uci_load "$@"
}
reset_cb() {
config_cb() { return 0; }
option_cb() { return 0; }
list_cb() { return 0; }
}
reset_cb
package() {
return 0
}
config () {
local cfgtype="$1"
local name="$2"
export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=$(($CONFIG_NUM_SECTIONS + 1))
name="${name:-cfg$CONFIG_NUM_SECTIONS}"
append CONFIG_SECTIONS "$name"
[ -n "$NO_CALLBACK" ] || config_cb "$cfgtype" "$name"
export ${NO_EXPORT:+-n} CONFIG_SECTION="$name"
export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_TYPE=$cfgtype"
}
option () {
local varname="$1"; shift
local value="$*"
export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_${varname}=$value"
[ -n "$NO_CALLBACK" ] || option_cb "$varname" "$*"
}
list() {
local varname="$1"; shift
local value="$*"
local len
config_get len "$CONFIG_SECTION" "${varname}_LENGTH"
len="$((${len:-0} + 1))"
config_set "$CONFIG_SECTION" "${varname}_ITEM$len" "$value"
config_set "$CONFIG_SECTION" "${varname}_LENGTH" "$len"
append "CONFIG_${CONFIG_SECTION}_${varname}" "$value" "$LIST_SEP"
list_cb "$varname" "$*"
}
config_unset() {
config_set "$1" "$2" ""
}
config_clear() {
local SECTION="$1"
local oldvar
list_remove CONFIG_SECTIONS "$SECTION"
export ${NO_EXPORT:+-n} CONFIG_SECTIONS="${SECTION:+$CONFIG_SECTIONS}"
for oldvar in `set | grep ^CONFIG_${SECTION:+${SECTION}_} | \
sed -e 's/\(.*\)=.*$/\1/'` ; do
unset $oldvar
done
}
config_get() {
case "$3" in
"") eval "echo \"\${CONFIG_${1}_${2}}\"";;
*) eval "export ${NO_EXPORT:+-n} -- \"$1=\${CONFIG_${2}_${3}}\"";;
esac
}
# config_get_bool <variable> <section> <option> [<default>]
config_get_bool() {
local _tmp
config_get "_tmp" "$2" "$3"
case "$_tmp" in
1|on|true|enabled) export ${NO_EXPORT:+-n} "$1=1";;
0|off|false|disabled) export ${NO_EXPORT:+-n} "$1=0";;
*) eval "$1=$4";;
esac
}
config_set() {
local section="$1"
local option="$2"
local value="$3"
local old_section="$CONFIG_SECTION"
CONFIG_SECTION="$section"
option "$option" "$value"
CONFIG_SECTION="$old_section"
}
config_foreach() {
local function="$1"
[ "$#" -ge 1 ] && shift
local type="$1"
[ "$#" -ge 1 ] && shift
local section cfgtype
[ -z "$CONFIG_SECTIONS" ] && return 0
for section in ${CONFIG_SECTIONS}; do
config_get cfgtype "$section" TYPE
[ -n "$type" -a "x$cfgtype" != "x$type" ] && continue
eval "$function \"\$section\" \"\$@\""
done
}
config_list_foreach() {
[ "$#" -ge 3 ] || return 0
local section="$1"; shift
local option="$1"; shift
local function="$1"; shift
local val
local len
local c=1
config_get len "${section}" "${option}_LENGTH"
[ -z "$len" ] && return 0
while [ $c -le "$len" ]; do
config_get val "${section}" "${option}_ITEM$c"
eval "$function \"\$val\" \"$@\""
c="$(($c + 1))"
done
}

2
lib/uci/test/Makefile Normal file
View file

@ -0,0 +1,2 @@
all:
sh ./tests.sh

34
lib/uci/test/README Normal file
View file

@ -0,0 +1,34 @@
This test script uses shunit2 :
http://code.google.com/p/shunit2/
uci-static binary is used during tests.
How to add a test
=================
* Test files are located in './test/tests.d'
* These files contain shell functions beginning with 'test' :
"
test_get_option ()
{
...
}
...
"
* shunit2 functions can be used in these functions :
http://shunit2.googlecode.com/svn/trunk/source/2.1/doc/shunit2.html
* Additional environment variables are available :
- ${CONFIG_DIR} : uci search path for config files. This directory is
reset after each test.
- ${CHANGES_DIR} : uci search path for config change files. This directory is
reset after each test.
- ${TMP_DIR} : path to a directory where can be stored temporary files
during tests. This directory is reset after each test.
- ${UCI} : uci static binary called with above config and changes
directories as parameters.
- ${REF_DIR} : path to a directory where can be stored reference files
or data.

View file

@ -0,0 +1,25 @@
config 'alias' 'a'
option 'interface' 'lan'
config 'alias' 'b'
option 'interface' 'lan'
config 'interface' 'lan'
option 'proto' 'static'
option 'ifname' 'eth0'
option 'test' '123'
option 'enabled' 'off'
option 'ipaddr' '2.3.4.5'
config 'interface' 'wan'
option 'proto' 'dhcp'
option 'ifname' 'eth1'
option 'enabled' 'on'
option 'aliases' 'c d'
config 'alias' 'c'
option 'interface' 'wan'
config 'alias' 'd'
option 'interface' 'wan'

View file

@ -0,0 +1 @@
+add.section=type

View file

@ -0,0 +1,6 @@
config 'type' 'section'
option 'opt' 'val'
list 'list_opt' 'val0'
list 'list_opt' 'val1'

View file

@ -0,0 +1,7 @@
package 'export'
config 'type' 'section'
option 'opt' 'val'
list 'list_opt' 'val0'
list 'list_opt' 'val1'

View file

@ -0,0 +1,2 @@
config 'type' 'section'
option 'opt' 'val'

View file

@ -0,0 +1,5 @@
config 'type' 'section'
option 'opt' 'val'
config 'unnamed'
option 'opt1' 'val1'

View file

@ -0,0 +1,7 @@
package 'import'
config 'type' 'section'
option 'opt' 'val'
list 'list_opt' 'val0'
list 'list_opt' 'val1'

View file

@ -0,0 +1,6 @@
config 'type' 'section'
option 'opt' 'val'
list 'list_opt' 'val0'
list 'list_opt' 'val1'

View file

@ -0,0 +1,2 @@
config 'named' 'section'
option 'opt' 'err'

View file

@ -0,0 +1 @@
set.section.opt=val

View file

@ -0,0 +1 @@
set.section=named

View file

@ -0,0 +1 @@
config 'named' 'section'

View file

@ -0,0 +1 @@
set.section.opt=val

View file

@ -0,0 +1,2 @@
config 'type' 'section'
option 'opt' 'val'

View file

@ -0,0 +1,2 @@
config 'type' 'section'
option 'opt' 'val'

View file

@ -0,0 +1,15 @@
New network section 'lan'
type: static
ifname: eth0
ipaddr: 2.3.4.5
test: 123
enabled: off
New alias: a
New alias: b
New network section 'wan'
type: dhcp
ifname: eth1
ipaddr: 0.0.0.0
test: -1
enabled: on
Configured aliases: c d

View file

@ -0,0 +1,14 @@
New network section 'lan'
type: static
ifname: eth0
ipaddr: 0.0.0.0
test: 123
enabled: off
Configured aliases: a b
New network section 'wan'
type: dhcp
ifname: eth1
ipaddr: 0.0.0.0
test: -1
enabled: on
Configured aliases: c d

1040
lib/uci/test/shunit2/shunit2 Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
test_import ()
{
${UCI} import < ${REF_DIR}/import.data
assertSameFile ${REF_DIR}/import.result ${CONFIG_DIR}/import
}

View file

@ -0,0 +1,6 @@
test_export ()
{
cp ${REF_DIR}/export.data ${CONFIG_DIR}/export
${UCI} export > ${TMP_DIR}/export.result
assertSameFile ${REF_DIR}/export.result ${TMP_DIR}/export.result
}

View file

@ -0,0 +1,39 @@
test_get_parsing()
{
cp ${REF_DIR}/get_parsing.data ${CONFIG_DIR}/test
assertFailWithNoReturn "${UCI_Q} get test."
assertFailWithNoReturn "${UCI_Q} get test.section."
assertFailWithNoReturn "${UCI_Q} get test.section.opt."
assertFailWithNoReturn "${UCI_Q} get test.section.opt.val."
assertFailWithNoReturn "${UCI_Q} get test.section.opt.val.qsdf.qsd"
assertFailWithNoReturn "${UCI_Q} get test.section.opt.valqsqsd"
}
test_get_section_index_parsing()
{
cp ${REF_DIR}/get_parsing.data ${CONFIG_DIR}/test
assertFailWithNoReturn "${UCI_Q} get test.@"
assertFailWithNoReturn "${UCI_Q} get test.@zer."
assertFailWithNoReturn "${UCI_Q} get test.@."
assertFailWithNoReturn "${UCI_Q} get test.@zer[1]"
assertFailWithNoReturn "${UCI_Q} get test.@.opt"
assertFailWithNoReturn "${UCI_Q} get test.@[28]"
assertFailWithNoReturn "${UCI_Q} get test.@[1]."
assertFailWithNoReturn "${UCI_Q} get test.@[1].val."
}
test_get_option()
{
cp ${REF_DIR}/get.data ${CONFIG_DIR}/test
value=$($UCI get test.section.opt)
assertEquals 'val' "$value"
}
test_get_section()
{
cp ${REF_DIR}/get.data ${CONFIG_DIR}/test
type=$($UCI get test.section)
assertEquals 'type' "$type"
}

View file

@ -0,0 +1,30 @@
test_set_parsing()
{
cp ${REF_DIR}/set_parsing.data ${CONFIG_DIR}/test
assertFailWithNoReturn "${UCI_Q} set test.=val"
assertFailWithNoReturn "${UCI_Q} set test.section.=val"
assertFailWithNoReturn "${UCI_Q} set test.section.opt.=val"
assertFailWithNoReturn "${UCI_Q} set test.section.opt.zflk=val"
}
test_set_named_section()
{
touch ${CONFIG_DIR}/set
${UCI} set set.section=named
assertSameFile ${REF_DIR}/set_named_section.result ${CHANGES_DIR}/set
}
test_set_nonexisting_option()
{
cp ${REF_DIR}/set_nonexisting_option.data ${CONFIG_DIR}/set
${UCI} set set.section.opt=val
assertSameFile ${REF_DIR}/set_nonexisting_option.result ${CHANGES_DIR}/set
}
test_set_existing_option()
{
cp ${REF_DIR}/set_existing_option.data ${CONFIG_DIR}/set
${UCI} set set.section.opt=val
assertSameFile ${REF_DIR}/set_existing_option.result ${CHANGES_DIR}/set
}

View file

@ -0,0 +1,8 @@
test_add_section()
{
touch ${CONFIG_DIR}/add
section_name=$(${UCI} add add type)
assertNotNull "uci add does not return a section name." $section_name
sed 's/section/'$section_name'/' ${REF_DIR}/add_section.result > ${TMP_DIR}/add_section.result
assertSameFile ${TMP_DIR}/add_section.result ${CHANGES_DIR}/add
}

View file

@ -0,0 +1,11 @@
test_get_parsing()
{
cp ${REF_DIR}/show_parsing.data ${CONFIG_DIR}/test
assertFailWithNoReturn "${UCI_Q} show test."
assertFailWithNoReturn "${UCI_Q} show test.section."
assertFailWithNoReturn "${UCI_Q} show test.section.opt."
assertFailWithNoReturn "${UCI_Q} show test.section.opt.val."
assertFailWithNoReturn "${UCI_Q} show test.section.opt.val.qsdf.qsd"
assertFailWithNoReturn "${UCI_Q} show test.section.opt.valqsqsd"
}

View file

@ -0,0 +1,9 @@
test_ucimap_example()
{
rm -rf ./save
( cd ..; ./ucimap-example -s ) > "${TMP_DIR}/ucimap_example.result"
assertSameFile "${TMP_DIR}/ucimap_example.result" "${REF_DIR}/ucimap_example_1.result"
( cd ..; ./ucimap-example -s ) > "${TMP_DIR}/ucimap_example.result"
assertSameFile "${TMP_DIR}/ucimap_example.result" "${REF_DIR}/ucimap_example_2.result"
rm -rf ./save
}

78
lib/uci/test/tests.sh Normal file
View file

@ -0,0 +1,78 @@
#!/bin/sh
TESTS_DIR="./tests"
CONFIG_DIR=${TESTS_DIR}"/config"
CHANGES_DIR="/tmp/.uci"
TMP_DIR=${TESTS_DIR}"/tmp"
FULL_SUITE=${TESTS_DIR}"/full_suite.sh"
UCI_STATIC="../uci-static"
[ -x $UCI_STATIC ] || {
echo "uci-static is not present."
return 1
}
UCI="${UCI_STATIC} -c ${CONFIG_DIR} -p ${CHANGES_DIR}"
UCI_Q="${UCI_STATIC} -c ${CONFIG_DIR} -p ${CHANGES_DIR} -q"
REF_DIR="./references"
SCRIPTS_DIR="./tests.d"
DO_TEST="./shunit2/shunit2"
rm -rf ${TESTS_DIR}
mkdir -p ${TESTS_DIR}
cat << 'EOF' > ${FULL_SUITE}
setUp() {
mkdir -p ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
}
tearDown() {
rm -rf ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
}
assertSameFile() {
local ref=$1
local test=$2
diff -qr $ref $test
assertTrue $? || {
echo "REF:"
cat $ref
echo "----"
echo "TEST:"
cat $test
echo "----"
}
}
assertNotSegFault()
{
[ $1 -eq 139 ] && fail "Returned with 139: segmentation fault (SIGSEGV)!!!"
}
assertNotIllegal()
{
[ $1 -eq 132 ] && fail "Returned with 132: Illegal instruction (SIGILL)!!!"
}
assertFailWithNoReturn() {
local test="$1"
value=$( $test )
rv=$?
assertFalse "'$test' does not fail" $rv
assertNotSegFault $rv
assertNotIllegal $rv
assertNull "'$test' returns '$value'" "$value"
}
EOF
for suite in $(ls ${SCRIPTS_DIR}/*)
do
cat ${suite} >> ${FULL_SUITE}
done
echo ". ${DO_TEST}" >> ${FULL_SUITE}
REF_DIR="${REF_DIR}" \
CONFIG_DIR="${CONFIG_DIR}" \
CHANGES_DIR="${CHANGES_DIR}" \
TMP_DIR="${TMP_DIR}" \
UCI="${UCI}" \
UCI_Q="${UCI_Q}" \
/bin/sh ${FULL_SUITE}
rm -rf ${TESTS_DIR}

631
lib/uci/uci.h Normal file
View file

@ -0,0 +1,631 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
#ifndef __LIBUCI_H
#define __LIBUCI_H
#include "uci_config.h"
/*
* you can use these defines to enable debugging behavior for
* apps compiled against libuci:
*
* #define UCI_DEBUG_TYPECAST:
* enable uci_element typecast checking at run time
*
*/
#include <stdbool.h>
#include <setjmp.h>
#include <stdio.h>
#define UCI_CONFDIR "/etc/config"
#define UCI_SAVEDIR "/tmp/.uci"
#define UCI_DIRMODE 0700
#define UCI_FILEMODE 0600
enum
{
UCI_OK = 0,
UCI_ERR_MEM,
UCI_ERR_INVAL,
UCI_ERR_NOTFOUND,
UCI_ERR_IO,
UCI_ERR_PARSE,
UCI_ERR_DUPLICATE,
UCI_ERR_UNKNOWN,
UCI_ERR_LAST
};
struct uci_list;
struct uci_list
{
struct uci_list *next;
struct uci_list *prev;
};
struct uci_ptr;
struct uci_plugin;
struct uci_hook_ops;
struct uci_element;
struct uci_package;
struct uci_section;
struct uci_option;
struct uci_history;
struct uci_context;
struct uci_backend;
struct uci_parse_context;
/**
* uci_alloc_context: Allocate a new uci context
*/
extern struct uci_context *uci_alloc_context(void);
/**
* uci_free_context: Free the uci context including all of its data
*/
extern void uci_free_context(struct uci_context *ctx);
/**
* uci_perror: Print the last uci error that occured
* @ctx: uci context
* @str: string to print before the error message
*/
extern void uci_perror(struct uci_context *ctx, const char *str);
/**
* uci_geterror: Get an error string for the last uci error
* @ctx: uci context
* @dest: target pointer for the string
* @str: prefix for the error message
*
* Note: string must be freed by the caller
*/
extern void uci_get_errorstr(struct uci_context *ctx, char **dest, const char *str);
/**
* uci_import: Import uci config data from a stream
* @ctx: uci context
* @stream: file stream to import from
* @name: (optional) assume the config has the given name
* @package: (optional) store the last parsed config package in this variable
* @single: ignore the 'package' keyword and parse everything into a single package
*
* the name parameter is for config files that don't explicitly use the 'package <...>' keyword
* if 'package' points to a non-null struct pointer, enable history tracking and merge
*/
extern int uci_import(struct uci_context *ctx, FILE *stream, const char *name, struct uci_package **package, bool single);
/**
* uci_export: Export one or all uci config packages
* @ctx: uci context
* @stream: output stream
* @package: (optional) uci config package to export
* @header: include the package header
*/
extern int uci_export(struct uci_context *ctx, FILE *stream, struct uci_package *package, bool header);
/**
* uci_load: Parse an uci config file and store it in the uci context
*
* @ctx: uci context
* @name: name of the config file (relative to the config directory)
* @package: store the loaded config package in this variable
*/
extern int uci_load(struct uci_context *ctx, const char *name, struct uci_package **package);
/**
* uci_unload: Unload a config file from the uci context
*
* @ctx: uci context
* @package: pointer to the uci_package struct
*/
extern int uci_unload(struct uci_context *ctx, struct uci_package *p);
/**
* uci_lookup_ptr: Split an uci tuple string and look up an element tree
* @ctx: uci context
* @ptr: lookup result struct
* @str: uci tuple string to look up
* @extended: allow extended syntax lookup
*
* if extended is set to true, uci_lookup_ptr supports the following
* extended syntax:
*
* Examples:
* network.@interface[0].ifname ('ifname' option of the first interface section)
* network.@interface[-1] (last interface section)
* Note: uci_lookup_ext will automatically load a config package if necessary
*/
extern int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool extended);
/**
* uci_add_section: Add an unnamed section
* @ctx: uci context
* @p: package to add the section to
* @type: section type
* @res: pointer to store a reference to the new section in
*/
extern int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res);
/**
* uci_set: Set an element's value; create the element if necessary
* @ctx: uci context
* @ptr: uci pointer
*
* The updated/created element is stored in ptr->last
*/
extern int uci_set(struct uci_context *ctx, struct uci_ptr *ptr);
/**
* uci_add_list: Append a string to an element list
* @ctx: uci context
* @ptr: uci pointer (with value)
*
* Note: if the given option already contains a string value,
* it will be converted to an 1-element-list before appending the next element
*/
extern int uci_add_list(struct uci_context *ctx, struct uci_ptr *ptr);
/**
* uci_reorder: Reposition a section
* @ctx: uci context
* @s: uci section to reposition
* @pos: new position in the section list
*/
extern int uci_reorder_section(struct uci_context *ctx, struct uci_section *s, int pos);
/**
* uci_rename: Rename an element
* @ctx: uci context
* @ptr: uci pointer (with value)
*/
extern int uci_rename(struct uci_context *ctx, struct uci_ptr *ptr);
/**
* uci_delete: Delete a section or option
* @ctx: uci context
* @ptr: uci pointer
*/
extern int uci_delete(struct uci_context *ctx, struct uci_ptr *ptr);
/**
* uci_save: save change history for a package
* @ctx: uci context
* @p: uci_package struct
*/
extern int uci_save(struct uci_context *ctx, struct uci_package *p);
/**
* uci_commit: commit changes to a package
* @ctx: uci context
* @p: uci_package struct pointer
* @overwrite: overwrite existing config data and flush history
*
* committing may reload the whole uci_package data,
* the supplied pointer is updated accordingly
*/
extern int uci_commit(struct uci_context *ctx, struct uci_package **p, bool overwrite);
/**
* uci_list_configs: List available uci config files
* @ctx: uci context
*
* caller is responsible for freeing the allocated memory behind list
*/
extern int uci_list_configs(struct uci_context *ctx, char ***list);
/**
* uci_set_savedir: override the default history save directory
* @ctx: uci context
* @dir: directory name
*/
extern int uci_set_savedir(struct uci_context *ctx, const char *dir);
/**
* uci_set_savedir: override the default config storage directory
* @ctx: uci context
* @dir: directory name
*/
extern int uci_set_confdir(struct uci_context *ctx, const char *dir);
/**
* uci_add_history_path: add a directory to the search path for change history files
* @ctx: uci context
* @dir: directory name
*
* This function allows you to add directories, which contain 'overlays'
* for the active config, that will never be committed.
*/
extern int uci_add_history_path(struct uci_context *ctx, const char *dir);
/**
* uci_revert: revert all changes to a config item
* @ctx: uci context
* @ptr: uci pointer
*/
extern int uci_revert(struct uci_context *ctx, struct uci_ptr *ptr);
/**
* uci_parse_argument: parse a shell-style argument, with an arbitrary quoting style
* @ctx: uci context
* @stream: input stream
* @str: pointer to the current line (use NULL for parsing the next line)
* @result: pointer for the result
*/
extern int uci_parse_argument(struct uci_context *ctx, FILE *stream, char **str, char **result);
/**
* uci_set_backend: change the default backend
* @ctx: uci context
* @name: name of the backend
*
* The default backend is "file", which uses /etc/config for config storage
*/
extern int uci_set_backend(struct uci_context *ctx, const char *name);
/**
* uci_validate_text: validate a value string for uci options
* @str: value
*
* this function checks whether a given string is acceptable as value
* for uci options
*/
extern bool uci_validate_text(const char *str);
/**
* uci_add_hook: add a uci hook
* @ctx: uci context
* @ops: uci hook ops
*
* NB: allocated and freed by the caller
*/
extern int uci_add_hook(struct uci_context *ctx, const struct uci_hook_ops *ops);
/**
* uci_remove_hook: remove a uci hook
* @ctx: uci context
* @ops: uci hook ops
*/
extern int uci_remove_hook(struct uci_context *ctx, const struct uci_hook_ops *ops);
/**
* uci_load_plugin: load an uci plugin
* @ctx: uci context
* @filename: path to the uci plugin
*
* NB: plugin will be unloaded automatically when the context is freed
*/
int uci_load_plugin(struct uci_context *ctx, const char *filename);
/**
* uci_load_plugins: load all uci plugins from a directory
* @ctx: uci context
* @pattern: pattern of uci plugin files (optional)
*
* if pattern is NULL, then uci_load_plugins will call uci_load_plugin
* for uci_*.so in <prefix>/lib/
*/
int uci_load_plugins(struct uci_context *ctx, const char *pattern);
/* UCI data structures */
enum uci_type {
UCI_TYPE_UNSPEC = 0,
UCI_TYPE_HISTORY = 1,
UCI_TYPE_PACKAGE = 2,
UCI_TYPE_SECTION = 3,
UCI_TYPE_OPTION = 4,
UCI_TYPE_PATH = 5,
UCI_TYPE_BACKEND = 6,
UCI_TYPE_ITEM = 7,
UCI_TYPE_HOOK = 8,
UCI_TYPE_PLUGIN = 9,
};
enum uci_option_type {
UCI_TYPE_STRING = 0,
UCI_TYPE_LIST = 1,
};
enum uci_flags {
UCI_FLAG_STRICT = (1 << 0), /* strict mode for the parser */
UCI_FLAG_PERROR = (1 << 1), /* print parser error messages */
UCI_FLAG_EXPORT_NAME = (1 << 2), /* when exporting, name unnamed sections */
UCI_FLAG_SAVED_HISTORY = (1 << 3), /* store the saved history in memory as well */
};
struct uci_element
{
struct uci_list list;
enum uci_type type;
char *name;
};
struct uci_backend
{
struct uci_element e;
char **(*list_configs)(struct uci_context *ctx);
struct uci_package *(*load)(struct uci_context *ctx, const char *name);
void (*commit)(struct uci_context *ctx, struct uci_package **p, bool overwrite);
/* private: */
const void *ptr;
void *priv;
};
struct uci_context
{
/* list of config packages */
struct uci_list root;
/* parser context, use for error handling only */
struct uci_parse_context *pctx;
/* backend for import and export */
struct uci_backend *backend;
struct uci_list backends;
/* uci runtime flags */
enum uci_flags flags;
char *confdir;
char *savedir;
/* search path for history files */
struct uci_list history_path;
/* private: */
int err;
const char *func;
jmp_buf trap;
bool internal, nested;
char *buf;
int bufsz;
struct uci_list hooks;
struct uci_list plugins;
};
struct uci_package
{
struct uci_element e;
struct uci_list sections;
struct uci_context *ctx;
bool has_history;
char *path;
/* private: */
struct uci_backend *backend;
void *priv;
int n_section;
struct uci_list history;
struct uci_list saved_history;
};
struct uci_section
{
struct uci_element e;
struct uci_list options;
struct uci_package *package;
bool anonymous;
char *type;
};
struct uci_option
{
struct uci_element e;
struct uci_section *section;
enum uci_option_type type;
union {
struct uci_list list;
char *string;
} v;
};
enum uci_command {
UCI_CMD_ADD,
UCI_CMD_REMOVE,
UCI_CMD_CHANGE,
UCI_CMD_RENAME,
UCI_CMD_REORDER,
UCI_CMD_LIST_ADD,
};
struct uci_history
{
struct uci_element e;
enum uci_command cmd;
char *section;
char *value;
};
struct uci_ptr
{
enum uci_type target;
enum {
UCI_LOOKUP_DONE = (1 << 0),
UCI_LOOKUP_COMPLETE = (1 << 1),
UCI_LOOKUP_EXTENDED = (1 << 2),
} flags;
struct uci_package *p;
struct uci_section *s;
struct uci_option *o;
struct uci_element *last;
const char *package;
const char *section;
const char *option;
const char *value;
};
struct uci_hook_ops
{
void (*load)(const struct uci_hook_ops *ops, struct uci_package *p);
void (*set)(const struct uci_hook_ops *ops, struct uci_package *p, struct uci_history *e);
};
struct uci_hook
{
struct uci_element e;
const struct uci_hook_ops *ops;
};
struct uci_plugin_ops
{
int (*attach)(struct uci_context *ctx);
void (*detach)(struct uci_context *ctx);
};
struct uci_plugin
{
struct uci_element e;
const struct uci_plugin_ops *ops;
void *dlh;
};
/* linked list handling */
#ifndef offsetof
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
/**
* container_of - cast a member of a structure out to the containing structure
* @ptr: the pointer to the member.
* @type: the type of the container struct this is embedded in.
* @member: the name of the member within the struct.
*/
#ifndef container_of
#define container_of(ptr, type, member) \
((type *) ((char *)ptr - offsetof(type,member)))
#endif
/**
* uci_list_entry: casts an uci_list pointer to the containing struct.
* @_type: config, section or option
* @_ptr: pointer to the uci_list struct
*/
#define list_to_element(ptr) \
container_of(ptr, struct uci_element, list)
/**
* uci_foreach_entry: loop through a list of uci elements
* @_list: pointer to the uci_list struct
* @_ptr: iteration variable, struct uci_element
*
* use like a for loop, e.g:
* uci_foreach(&list, p) {
* ...
* }
*/
#define uci_foreach_element(_list, _ptr) \
for(_ptr = list_to_element((_list)->next); \
&_ptr->list != (_list); \
_ptr = list_to_element(_ptr->list.next))
/**
* uci_foreach_entry_safe: like uci_foreach_safe, but safe for deletion
* @_list: pointer to the uci_list struct
* @_tmp: temporary variable, struct uci_element *
* @_ptr: iteration variable, struct uci_element *
*
* use like a for loop, e.g:
* uci_foreach(&list, p) {
* ...
* }
*/
#define uci_foreach_element_safe(_list, _tmp, _ptr) \
for(_ptr = list_to_element((_list)->next), \
_tmp = list_to_element(_ptr->list.next); \
&_ptr->list != (_list); \
_ptr = _tmp, _tmp = list_to_element(_ptr->list.next))
/**
* uci_list_empty: returns true if a list is empty
* @list: list head
*/
#define uci_list_empty(list) ((list)->next == (list))
/* wrappers for dynamic type handling */
#define uci_type_backend UCI_TYPE_BACKEND
#define uci_type_history UCI_TYPE_HISTORY
#define uci_type_package UCI_TYPE_PACKAGE
#define uci_type_section UCI_TYPE_SECTION
#define uci_type_option UCI_TYPE_OPTION
#define uci_type_hook UCI_TYPE_HOOK
#define uci_type_plugin UCI_TYPE_PLUGIN
/* element typecasting */
#ifdef UCI_DEBUG_TYPECAST
static const char *uci_typestr[] = {
[uci_type_backend] = "backend",
[uci_type_history] = "history",
[uci_type_package] = "package",
[uci_type_section] = "section",
[uci_type_option] = "option",
[uci_type_hook] = "hook",
[uci_type_plugin] = "plugin",
};
static void uci_typecast_error(int from, int to)
{
fprintf(stderr, "Invalid typecast from '%s' to '%s'\n", uci_typestr[from], uci_typestr[to]);
}
#define BUILD_CAST(_type) \
static inline struct uci_ ## _type *uci_to_ ## _type (struct uci_element *e) \
{ \
if (e->type != uci_type_ ## _type) { \
uci_typecast_error(e->type, uci_type_ ## _type); \
} \
return (struct uci_ ## _type *) e; \
}
BUILD_CAST(backend)
BUILD_CAST(history)
BUILD_CAST(package)
BUILD_CAST(section)
BUILD_CAST(option)
BUILD_CAST(hook)
BUILD_CAST(plugin)
#else
#define uci_to_backend(ptr) container_of(ptr, struct uci_backend, e)
#define uci_to_history(ptr) container_of(ptr, struct uci_history, e)
#define uci_to_package(ptr) container_of(ptr, struct uci_package, e)
#define uci_to_section(ptr) container_of(ptr, struct uci_section, e)
#define uci_to_option(ptr) container_of(ptr, struct uci_option, e)
#define uci_to_hook(ptr) container_of(ptr, struct uci_hook, e)
#define uci_to_plugin(ptr) container_of(ptr, struct uci_plugin, e)
#endif
/**
* uci_alloc_element: allocate a generic uci_element, reserve a buffer and typecast
* @ctx: uci context
* @type: {package,section,option}
* @name: string containing the name of the element
* @datasize: additional buffer size to reserve at the end of the struct
*/
#define uci_alloc_element(ctx, type, name, datasize) \
uci_to_ ## type (uci_alloc_generic(ctx, uci_type_ ## type, name, sizeof(struct uci_ ## type) + datasize))
#define uci_dataptr(ptr) \
(((char *) ptr) + sizeof(*ptr))
#endif

182
lib/uci/uci_internal.h Normal file
View file

@ -0,0 +1,182 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
#ifndef __UCI_INTERNAL_H
#define __UCI_INTERNAL_H
#define __public
#ifdef UCI_PLUGIN_SUPPORT
#define __plugin extern
#else
#define __plugin static
#endif
struct uci_parse_context
{
/* error context */
const char *reason;
int line;
int byte;
/* private: */
struct uci_package *package;
struct uci_section *section;
bool merge;
FILE *file;
const char *name;
char *buf;
int bufsz;
};
__plugin void *uci_malloc(struct uci_context *ctx, size_t size);
__plugin void *uci_realloc(struct uci_context *ctx, void *ptr, size_t size);
__plugin char *uci_strdup(struct uci_context *ctx, const char *str);
__plugin bool uci_validate_str(const char *str, bool name);
__plugin void uci_add_history(struct uci_context *ctx, struct uci_list *list, int cmd, const char *section, const char *option, const char *value);
__plugin void uci_free_history(struct uci_history *h);
__plugin struct uci_package *uci_alloc_package(struct uci_context *ctx, const char *name);
#ifdef UCI_PLUGIN_SUPPORT
/**
* uci_add_backend: add an extra backend
* @ctx: uci context
* @name: name of the backend
*
* The default backend is "file", which uses /etc/config for config storage
*/
__plugin int uci_add_backend(struct uci_context *ctx, struct uci_backend *b);
/**
* uci_add_backend: add an extra backend
* @ctx: uci context
* @name: name of the backend
*
* The default backend is "file", which uses /etc/config for config storage
*/
__plugin int uci_del_backend(struct uci_context *ctx, struct uci_backend *b);
#endif
#define UCI_BACKEND(_var, _name, ...) \
struct uci_backend _var = { \
.e.list = { \
.next = &_var.e.list, \
.prev = &_var.e.list, \
}, \
.e.name = _name, \
.e.type = UCI_TYPE_BACKEND, \
.ptr = &_var, \
__VA_ARGS__ \
}
/*
* functions for debug and error handling, for internal use only
*/
#ifdef UCI_DEBUG
#define DPRINTF(...) fprintf(stderr, __VA_ARGS__)
#else
#define DPRINTF(...)
#endif
/*
* throw an uci exception and store the error number
* in the context.
*/
#define UCI_THROW(ctx, err) do { \
DPRINTF("Exception: %s in %s, %s:%d\n", #err, __func__, __FILE__, __LINE__); \
longjmp(ctx->trap, err); \
} while (0)
/*
* store the return address for handling exceptions
* needs to be called in every externally visible library function
*
* NB: this does not handle recursion at all. Calling externally visible
* functions from other uci functions is only allowed at the end of the
* calling function, or by wrapping the function call in UCI_TRAP_SAVE
* and UCI_TRAP_RESTORE.
*/
#define UCI_HANDLE_ERR(ctx) do { \
DPRINTF("ENTER: %s\n", __func__); \
int __val = 0; \
ctx->err = 0; \
if (!ctx) \
return UCI_ERR_INVAL; \
if (!ctx->internal && !ctx->nested) \
__val = setjmp(ctx->trap); \
ctx->internal = false; \
ctx->nested = false; \
if (__val) { \
DPRINTF("LEAVE: %s, ret=%d\n", __func__, __val); \
ctx->err = __val; \
return __val; \
} \
} while (0)
/*
* In a block enclosed by UCI_TRAP_SAVE and UCI_TRAP_RESTORE, all exceptions
* are intercepted and redirected to the label specified in 'handler'
* after UCI_TRAP_RESTORE, or when reaching the 'handler' label, the old
* exception handler is restored
*/
#define UCI_TRAP_SAVE(ctx, handler) do { \
jmp_buf __old_trap; \
int __val; \
memcpy(__old_trap, ctx->trap, sizeof(ctx->trap)); \
__val = setjmp(ctx->trap); \
if (__val) { \
ctx->err = __val; \
memcpy(ctx->trap, __old_trap, sizeof(ctx->trap)); \
goto handler; \
}
#define UCI_TRAP_RESTORE(ctx) \
memcpy(ctx->trap, __old_trap, sizeof(ctx->trap)); \
} while(0)
/**
* UCI_INTERNAL: Do an internal call of a public API function
*
* Sets Exception handling to passthrough mode.
* Allows API functions to change behavior compared to public use
*/
#define UCI_INTERNAL(func, ctx, ...) do { \
ctx->internal = true; \
func(ctx, __VA_ARGS__); \
} while (0)
/**
* UCI_NESTED: Do an normal nested call of a public API function
*
* Sets Exception handling to passthrough mode.
* Allows API functions to change behavior compared to public use
*/
#define UCI_NESTED(func, ctx, ...) do { \
ctx->nested = true; \
func(ctx, __VA_ARGS__); \
} while (0)
/*
* check the specified condition.
* throw an invalid argument exception if it's false
*/
#define UCI_ASSERT(ctx, expr) do { \
if (!(expr)) { \
DPRINTF("[%s:%d] Assertion failed\n", __FILE__, __LINE__); \
UCI_THROW(ctx, UCI_ERR_INVAL); \
} \
} while (0)
#endif

318
lib/uci/ucimap-example.c Normal file
View file

@ -0,0 +1,318 @@
/*
* ucimap-example - sample code for the ucimap library
* Copyright (C) 2008-2009 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation
*
* 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.
*/
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <ucimap.h>
#include "list.h"
struct list_head ifs;
struct uci_network {
struct ucimap_section_data map;
struct list_head list;
struct list_head alias;
const char *name;
const char *proto;
const char *ifname;
unsigned char *ipaddr;
int test;
bool enabled;
struct ucimap_list *aliases;
};
struct uci_alias {
struct ucimap_section_data map;
struct list_head list;
const char *name;
struct uci_network *interface;
};
static int
network_parse_ip(void *section, struct uci_optmap *om, union ucimap_data *data, const char *str)
{
unsigned char *target;
int tmp[4];
int i;
if (sscanf(str, "%d.%d.%d.%d", &tmp[0], &tmp[1], &tmp[2], &tmp[3]) != 4)
return -1;
target = malloc(4);
if (!target)
return -1;
data->ptr = target;
for (i = 0; i < 4; i++)
target[i] = (char) tmp[i];
return 0;
}
static int
network_format_ip(void *section, struct uci_optmap *om, union ucimap_data *data, char **str)
{
static char buf[16];
unsigned char *ip = (unsigned char *) data->ptr;
if (ip) {
sprintf(buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
*str = buf;
} else {
*str = NULL;
}
return 0;
}
static void
network_free_ip(void *section, struct uci_optmap *om, void *ptr)
{
free(ptr);
}
static int
network_init_interface(struct uci_map *map, void *section, struct uci_section *s)
{
struct uci_network *net = section;
INIT_LIST_HEAD(&net->list);
INIT_LIST_HEAD(&net->alias);
net->name = s->e.name;
net->test = -1;
return 0;
}
static int
network_init_alias(struct uci_map *map, void *section, struct uci_section *s)
{
struct uci_alias *alias = section;
INIT_LIST_HEAD(&alias->list);
alias->name = s->e.name;
return 0;
}
static int
network_add_interface(struct uci_map *map, void *section)
{
struct uci_network *net = section;
list_add_tail(&net->list, &ifs);
return 0;
}
static int
network_add_alias(struct uci_map *map, void *section)
{
struct uci_alias *a = section;
if (a->interface)
list_add_tail(&a->list, &a->interface->alias);
return 0;
}
static struct ucimap_section_data *
network_allocate(struct uci_map *map, struct uci_sectionmap *sm, struct uci_section *s)
{
struct uci_network *p = malloc(sizeof(struct uci_network));
memset(p, 0, sizeof(struct uci_network));
return &p->map;
}
struct my_optmap {
struct uci_optmap map;
int test;
};
static struct uci_sectionmap network_interface;
static struct uci_sectionmap network_alias;
static struct my_optmap network_interface_options[] = {
{
.map = {
UCIMAP_OPTION(struct uci_network, proto),
.type = UCIMAP_STRING,
.name = "proto",
.data.s.maxlen = 32,
}
},
{
.map = {
UCIMAP_OPTION(struct uci_network, ifname),
.type = UCIMAP_STRING,
.name = "ifname"
}
},
{
.map = {
UCIMAP_OPTION(struct uci_network, ipaddr),
.type = UCIMAP_CUSTOM,
.name = "ipaddr",
.parse = network_parse_ip,
.format = network_format_ip,
.free = network_free_ip,
}
},
{
.map = {
UCIMAP_OPTION(struct uci_network, enabled),
.type = UCIMAP_BOOL,
.name = "enabled",
}
},
{
.map = {
UCIMAP_OPTION(struct uci_network, test),
.type = UCIMAP_INT,
.name = "test"
}
},
{
.map = {
UCIMAP_OPTION(struct uci_network, aliases),
.type = UCIMAP_LIST | UCIMAP_SECTION | UCIMAP_LIST_AUTO,
.data.sm = &network_alias
}
}
};
static struct uci_sectionmap network_interface = {
UCIMAP_SECTION(struct uci_network, map),
.type = "interface",
.alloc = network_allocate,
.init = network_init_interface,
.add = network_add_interface,
.options = &network_interface_options[0].map,
.n_options = ARRAY_SIZE(network_interface_options),
.options_size = sizeof(struct my_optmap)
};
static struct uci_optmap network_alias_options[] = {
{
UCIMAP_OPTION(struct uci_alias, interface),
.type = UCIMAP_SECTION,
.data.sm = &network_interface
}
};
static struct uci_sectionmap network_alias = {
UCIMAP_SECTION(struct uci_alias, map),
.type = "alias",
.options = network_alias_options,
.init = network_init_alias,
.add = network_add_alias,
.n_options = ARRAY_SIZE(network_alias_options),
};
static struct uci_sectionmap *network_smap[] = {
&network_interface,
&network_alias,
};
static struct uci_map network_map = {
.sections = network_smap,
.n_sections = ARRAY_SIZE(network_smap),
};
int main(int argc, char **argv)
{
struct uci_context *ctx;
struct uci_package *pkg;
struct list_head *p;
struct uci_network *net;
struct uci_alias *alias;
bool set = false;
int i;
INIT_LIST_HEAD(&ifs);
ctx = uci_alloc_context();
ucimap_init(&network_map);
if ((argc >= 2) && !strcmp(argv[1], "-s")) {
uci_set_savedir(ctx, "./test/save");
set = true;
}
uci_set_confdir(ctx, "./test/config");
uci_load(ctx, "network", &pkg);
ucimap_parse(&network_map, pkg);
list_for_each(p, &ifs) {
const unsigned char *ipaddr;
int n_aliases = 0;
net = list_entry(p, struct uci_network, list);
ipaddr = net->ipaddr;
if (!ipaddr)
ipaddr = (const unsigned char *) "\x00\x00\x00\x00";
printf("New network section '%s'\n"
" type: %s\n"
" ifname: %s\n"
" ipaddr: %d.%d.%d.%d\n"
" test: %d\n"
" enabled: %s\n",
net->name,
net->proto,
net->ifname,
ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
net->test,
(net->enabled ? "on" : "off"));
if (net->aliases->n_items > 0) {
printf("Configured aliases:");
for (i = 0; i < net->aliases->n_items; i++) {
alias = net->aliases->item[i].ptr;
printf(" %s", alias->name);
}
printf("\n");
}
list_for_each_entry(alias, &net->alias, list) {
n_aliases++;
for (i = 0; i < net->aliases->n_items; i++) {
if (alias == net->aliases->item[i].ptr)
goto next_alias;
}
printf("New alias: %s\n", alias->name);
next_alias:
continue;
}
if (set && !strcmp(net->name, "lan")) {
ucimap_free_item(&net->map, &net->ipaddr);
ucimap_set_changed(&net->map, &net->ipaddr);
ucimap_resize_list(&net->map, &net->aliases, n_aliases);
net->aliases->n_items = 0;
list_for_each_entry(alias, &net->alias, list) {
net->aliases->item[net->aliases->n_items++].ptr = alias;
}
ucimap_set_changed(&net->map, &net->aliases);
ucimap_store_section(&network_map, pkg, &net->map);
uci_save(ctx, pkg);
}
}
ucimap_cleanup(&network_map);
uci_free_context(ctx);
return 0;
}

926
lib/uci/ucimap.c Normal file
View file

@ -0,0 +1,926 @@
/*
* ucimap.c - Library for the Unified Configuration Interface
* Copyright (C) 2008-2009 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/*
* This file contains ucimap, an API for mapping UCI to C data structures
*/
#include <strings.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
#include "ucimap.h"
#include "uci_internal.h"
struct ucimap_alloc {
void *ptr;
};
struct ucimap_alloc_custom {
void *section;
struct uci_optmap *om;
void *ptr;
};
struct ucimap_fixup {
struct ucimap_fixup *next;
struct uci_sectionmap *sm;
const char *name;
enum ucimap_type type;
union ucimap_data *data;
};
#define ucimap_foreach_option(_sm, _o) \
if (!(_sm)->options_size) \
(_sm)->options_size = sizeof(struct uci_optmap); \
for (_o = &(_sm)->options[0]; \
((char *)(_o)) < ((char *) &(_sm)->options[0] + \
(_sm)->options_size * (_sm)->n_options); \
_o = (struct uci_optmap *) ((char *)(_o) + \
(_sm)->options_size))
static inline bool
ucimap_is_alloc(enum ucimap_type type)
{
switch(type & UCIMAP_SUBTYPE) {
case UCIMAP_STRING:
return true;
default:
return false;
}
}
static inline bool
ucimap_is_fixup(enum ucimap_type type)
{
switch(type & UCIMAP_SUBTYPE) {
case UCIMAP_SECTION:
return true;
default:
return false;
}
}
static inline bool
ucimap_is_simple(enum ucimap_type type)
{
return ((type & UCIMAP_TYPE) == UCIMAP_SIMPLE);
}
static inline bool
ucimap_is_list(enum ucimap_type type)
{
return ((type & UCIMAP_TYPE) == UCIMAP_LIST);
}
static inline bool
ucimap_is_list_auto(enum ucimap_type type)
{
return ucimap_is_list(type) && !!(type & UCIMAP_LIST_AUTO);
}
static inline bool
ucimap_is_custom(enum ucimap_type type)
{
return ((type & UCIMAP_SUBTYPE) == UCIMAP_CUSTOM);
}
static inline void *
ucimap_section_ptr(struct ucimap_section_data *sd)
{
return ((char *) sd - sd->sm->smap_offset);
}
static inline struct ucimap_section_data *
ucimap_ptr_section(struct uci_sectionmap *sm, void *ptr) {
ptr = (char *) ptr + sm->smap_offset;
return ptr;
}
static inline union ucimap_data *
ucimap_get_data(struct ucimap_section_data *sd, struct uci_optmap *om)
{
void *data;
data = (char *) ucimap_section_ptr(sd) + om->offset;
return data;
}
int
ucimap_init(struct uci_map *map)
{
map->fixup = NULL;
map->sdata = NULL;
map->fixup_tail = &map->fixup;
map->sdata_tail = &map->sdata;
return 0;
}
static void
ucimap_add_alloc(struct ucimap_section_data *sd, void *ptr)
{
struct ucimap_alloc *a = &sd->allocmap[sd->allocmap_len++];
a->ptr = ptr;
}
void
ucimap_free_section(struct uci_map *map, struct ucimap_section_data *sd)
{
void *section;
int i;
section = ucimap_section_ptr(sd);
if (sd->ref)
*sd->ref = sd->next;
if (sd->sm->free)
sd->sm->free(map, section);
for (i = 0; i < sd->allocmap_len; i++) {
free(sd->allocmap[i].ptr);
}
if (sd->alloc_custom) {
for (i = 0; i < sd->alloc_custom_len; i++) {
struct ucimap_alloc_custom *a = &sd->alloc_custom[i];
a->om->free(a->section, a->om, a->ptr);
}
free(sd->alloc_custom);
}
free(sd->allocmap);
free(sd);
}
void
ucimap_cleanup(struct uci_map *map)
{
struct ucimap_section_data *sd;
for (sd = map->sdata; sd; sd = sd->next) {
ucimap_free_section(map, sd);
}
}
static void *
ucimap_find_section(struct uci_map *map, struct ucimap_fixup *f)
{
struct ucimap_section_data *sd;
for (sd = map->sdata; sd; sd = sd->next) {
if (sd->sm != f->sm)
continue;
if (strcmp(f->name, sd->section_name) != 0)
continue;
return ucimap_section_ptr(sd);
}
for (sd = map->pending; sd; sd = sd->next) {
if (sd->sm != f->sm)
continue;
if (strcmp(f->name, sd->section_name) != 0)
continue;
return ucimap_section_ptr(sd);
}
return NULL;
}
static union ucimap_data *
ucimap_list_append(struct ucimap_list *list)
{
if (unlikely(list->size <= list->n_items)) {
/* should not happen */
DPRINTF("ERROR: overflow while filling a list (size=%d)\n", list->size);
return NULL;
}
return &list->item[list->n_items++];
}
static bool
ucimap_handle_fixup(struct uci_map *map, struct ucimap_fixup *f)
{
void *ptr = ucimap_find_section(map, f);
struct ucimap_list *list;
union ucimap_data *data;
if (!ptr)
return false;
switch(f->type & UCIMAP_TYPE) {
case UCIMAP_SIMPLE:
f->data->ptr = ptr;
break;
case UCIMAP_LIST:
list = f->data->list;
data = ucimap_list_append(f->data->list);
if (!data)
return false;
data->ptr = ptr;
break;
}
return true;
}
void
ucimap_free_item(struct ucimap_section_data *sd, void *item)
{
struct ucimap_alloc_custom *ac;
struct ucimap_alloc *a;
void *ptr = *((void **) item);
int i;
if (!ptr)
return;
*((void **)item) = NULL;
for (i = 0, a = sd->allocmap; i < sd->allocmap_len; i++, a++) {
if (a->ptr != ptr)
continue;
if (i != sd->allocmap_len - 1)
a->ptr = sd->allocmap[sd->allocmap_len - 1].ptr;
sd->allocmap_len--;
return;
}
for (i = 0, ac = sd->alloc_custom; i < sd->alloc_custom_len; i++, ac++) {
if (ac->ptr != ptr)
continue;
if (i != sd->alloc_custom_len - 1)
memcpy(ac, &sd->alloc_custom[sd->alloc_custom_len - 1],
sizeof(struct ucimap_alloc_custom));
ac->om->free(ac->section, ac->om, ac->ptr);
sd->alloc_custom_len--;
return;
}
}
int
ucimap_resize_list(struct ucimap_section_data *sd, struct ucimap_list **list, int items)
{
struct ucimap_list *new;
struct ucimap_alloc *a;
int i, offset = 0;
int size = sizeof(struct ucimap_list) + items * sizeof(union ucimap_data);
if (!*list) {
new = calloc(1, size);
ucimap_add_alloc(sd, new);
goto set;
}
for (i = 0, a = sd->allocmap; i < sd->allocmap_len; i++, a++) {
if (a->ptr != *list)
continue;
goto realloc;
}
return -ENOENT;
realloc:
if (items > (*list)->size)
offset = (items - (*list)->size) * sizeof(union ucimap_data);
a->ptr = realloc(a->ptr, size);
if (offset)
memset((char *) a->ptr + offset, 0, size - offset);
new = a->ptr;
set:
new->size = items;
*list = new;
return 0;
}
static void
ucimap_add_fixup(struct ucimap_section_data *sd, union ucimap_data *data, struct uci_optmap *om, const char *str)
{
struct ucimap_fixup *f, tmp;
struct uci_map *map = sd->map;
tmp.sm = om->data.sm;
tmp.name = str;
tmp.type = om->type;
tmp.data = data;
if (ucimap_handle_fixup(map, &tmp))
return;
f = malloc(sizeof(struct ucimap_fixup));
if (!f)
return;
memcpy(f, &tmp, sizeof(tmp));
f->next = NULL;
*map->fixup_tail = f;
map->fixup_tail = &f->next;
}
static void
ucimap_add_custom_alloc(struct ucimap_section_data *sd, struct uci_optmap *om, void *ptr)
{
struct ucimap_alloc_custom *a = &sd->alloc_custom[sd->alloc_custom_len++];
a->section = ucimap_section_ptr(sd);
a->om = om;
a->ptr = ptr;
}
static void
ucimap_add_value(union ucimap_data *data, struct uci_optmap *om, struct ucimap_section_data *sd, const char *str)
{
union ucimap_data tdata = *data;
char *eptr = NULL;
long lval;
char *s;
int val;
if (ucimap_is_list(om->type) && !ucimap_is_fixup(om->type)) {
data = ucimap_list_append(data->list);
if (!data)
return;
}
switch(om->type & UCIMAP_SUBTYPE) {
case UCIMAP_STRING:
if ((om->data.s.maxlen > 0) &&
(strlen(str) > om->data.s.maxlen))
return;
s = strdup(str);
tdata.s = s;
ucimap_add_alloc(sd, s);
break;
case UCIMAP_BOOL:
if (!strcmp(str, "on"))
val = true;
else if (!strcmp(str, "1"))
val = true;
else if (!strcmp(str, "enabled"))
val = true;
else if (!strcmp(str, "off"))
val = false;
else if (!strcmp(str, "0"))
val = false;
else if (!strcmp(str, "disabled"))
val = false;
else
return;
tdata.b = val;
break;
case UCIMAP_INT:
lval = strtol(str, &eptr, om->data.i.base);
if (lval < INT_MIN || lval > INT_MAX)
return;
if (!eptr || *eptr == '\0')
tdata.i = (int) lval;
else
return;
break;
case UCIMAP_SECTION:
ucimap_add_fixup(sd, data, om, str);
return;
case UCIMAP_CUSTOM:
break;
}
if (om->parse) {
if (om->parse(ucimap_section_ptr(sd), om, data, str) < 0)
return;
if (ucimap_is_custom(om->type) && om->free) {
if (tdata.ptr != data->ptr)
ucimap_add_custom_alloc(sd, om, data->ptr);
}
}
if (ucimap_is_custom(om->type))
return;
memcpy(data, &tdata, sizeof(union ucimap_data));
}
static void
ucimap_convert_list(union ucimap_data *data, struct uci_optmap *om, struct ucimap_section_data *sd, const char *str)
{
char *s, *p;
s = strdup(str);
if (!s)
return;
ucimap_add_alloc(sd, s);
do {
while (isspace(*s))
s++;
if (!*s)
break;
p = s;
while (*s && !isspace(*s))
s++;
if (isspace(*s)) {
*s = 0;
s++;
}
ucimap_add_value(data, om, sd, p);
} while (*s);
}
static int
ucimap_parse_options(struct uci_map *map, struct uci_sectionmap *sm, struct ucimap_section_data *sd, struct uci_section *s)
{
struct uci_element *e, *l;
struct uci_option *o;
union ucimap_data *data;
uci_foreach_element(&s->options, e) {
struct uci_optmap *om = NULL, *tmp;
ucimap_foreach_option(sm, tmp) {
if (strcmp(e->name, tmp->name) == 0) {
om = tmp;
break;
}
}
if (!om)
continue;
data = ucimap_get_data(sd, om);
o = uci_to_option(e);
if ((o->type == UCI_TYPE_STRING) && ucimap_is_simple(om->type)) {
ucimap_add_value(data, om, sd, o->v.string);
} else if ((o->type == UCI_TYPE_LIST) && ucimap_is_list(om->type)) {
uci_foreach_element(&o->v.list, l) {
ucimap_add_value(data, om, sd, l->name);
}
} else if ((o->type == UCI_TYPE_STRING) && ucimap_is_list_auto(om->type)) {
ucimap_convert_list(data, om, sd, o->v.string);
}
}
return 0;
}
static void
ucimap_add_section_list(struct uci_map *map, struct ucimap_section_data *sd)
{
sd->ref = map->sdata_tail;
*sd->ref = sd;
map->sdata_tail = &sd->next;
}
static void
ucimap_add_section(struct ucimap_section_data *sd)
{
struct uci_map *map = sd->map;
sd->next = NULL;
if (sd->sm->add(map, ucimap_section_ptr(sd)) < 0)
ucimap_free_section(map, sd);
else
ucimap_add_section_list(map, sd);
}
#ifdef UCI_DEBUG
static const char *ucimap_type_names[] = {
[UCIMAP_STRING] = "string",
[UCIMAP_INT] = "integer",
[UCIMAP_BOOL] = "boolean",
[UCIMAP_SECTION] = "section",
[UCIMAP_LIST] = "list",
};
static const char *
ucimap_get_type_name(int type)
{
static char buf[32];
const char *name;
if (ucimap_is_list(type))
return ucimap_type_names[UCIMAP_LIST];
name = ucimap_type_names[type & UCIMAP_SUBTYPE];
if (!name) {
sprintf(buf, "Unknown (%d)", type & UCIMAP_SUBTYPE);
name = buf;
}
return name;
}
#endif
static bool
ucimap_check_optmap_type(struct uci_sectionmap *sm, struct uci_optmap *om)
{
unsigned int type;
if (unlikely(sm->type_name != om->type_name) &&
unlikely(strcmp(sm->type_name, om->type_name) != 0)) {
DPRINTF("Option '%s' of section type '%s' refereces unknown "
"section type '%s', should be '%s'.\n",
om->name, sm->type, om->type_name, sm->type_name);
return false;
}
if (om->detected_type < 0)
return true;
if (ucimap_is_custom(om->type))
return true;
if (ucimap_is_list(om->type) !=
ucimap_is_list(om->detected_type))
goto failed;
if (ucimap_is_list(om->type))
return true;
type = om->type & UCIMAP_SUBTYPE;
switch(type) {
case UCIMAP_STRING:
case UCIMAP_INT:
case UCIMAP_BOOL:
if (type != om->detected_type)
goto failed;
break;
case UCIMAP_SECTION:
goto failed;
default:
break;
}
return true;
failed:
DPRINTF("Invalid type in option '%s' of section type '%s', "
"declared type is %s, detected type is %s\n",
om->name, sm->type,
ucimap_get_type_name(om->type),
ucimap_get_type_name(om->detected_type));
return false;
}
static void
ucimap_count_alloc(struct uci_optmap *om, int *n_alloc, int *n_custom)
{
if (ucimap_is_alloc(om->type))
(*n_alloc)++;
else if (ucimap_is_custom(om->type) && om->free)
(*n_custom)++;
}
int
ucimap_parse_section(struct uci_map *map, struct uci_sectionmap *sm, struct ucimap_section_data *sd, struct uci_section *s)
{
struct uci_optmap *om;
char *section_name;
void *section;
int n_alloc = 2;
int n_alloc_custom = 0;
int err;
sd->map = map;
sd->sm = sm;
ucimap_foreach_option(sm, om) {
if (!ucimap_check_optmap_type(sm, om))
continue;
if (ucimap_is_list(om->type)) {
union ucimap_data *data;
struct uci_element *e;
int n_elements = 0;
int n_elements_alloc = 0;
int n_elements_custom = 0;
int size;
data = ucimap_get_data(sd, om);
uci_foreach_element(&s->options, e) {
struct uci_option *o = uci_to_option(e);
struct uci_element *tmp;
if (strcmp(e->name, om->name) != 0)
continue;
if (o->type == UCI_TYPE_LIST) {
uci_foreach_element(&o->v.list, tmp) {
ucimap_count_alloc(om, &n_elements_alloc, &n_elements_custom);
n_elements++;
}
} else if ((o->type == UCI_TYPE_STRING) &&
ucimap_is_list_auto(om->type)) {
const char *data = o->v.string;
do {
while (isspace(*data))
data++;
if (!*data)
break;
n_elements++;
ucimap_count_alloc(om, &n_elements_alloc, &n_elements_custom);
while (*data && !isspace(*data))
data++;
} while (*data);
/* for the duplicated data string */
if (n_elements)
n_alloc++;
}
break;
}
/* add one more for the ucimap_list */
n_alloc += n_elements_alloc + 1;
n_alloc_custom += n_elements_custom;
size = sizeof(struct ucimap_list) +
n_elements * sizeof(union ucimap_data);
data->list = malloc(size);
if (!data->list)
goto error_mem;
memset(data->list, 0, size);
data->list->size = n_elements;
} else {
ucimap_count_alloc(om, &n_alloc, &n_alloc_custom);
}
}
sd->allocmap = calloc(n_alloc, sizeof(struct ucimap_alloc));
if (!sd->allocmap)
goto error_mem;
if (n_alloc_custom > 0) {
sd->alloc_custom = calloc(n_alloc_custom, sizeof(struct ucimap_alloc_custom));
if (!sd->alloc_custom)
goto error_mem;
}
section_name = strdup(s->e.name);
if (!section_name)
goto error_mem;
sd->section_name = section_name;
sd->cmap = calloc(1, BITFIELD_SIZE(sm->n_options));
if (!sd->cmap)
goto error_mem;
ucimap_add_alloc(sd, (void *)section_name);
ucimap_add_alloc(sd, (void *)sd->cmap);
ucimap_foreach_option(sm, om) {
if (!ucimap_is_list(om->type))
continue;
ucimap_add_alloc(sd, ucimap_get_data(sd, om)->list);
}
section = ucimap_section_ptr(sd);
err = sm->init(map, section, s);
if (err)
goto error;
if (map->parsed) {
ucimap_add_section(sd);
} else {
ucimap_add_section_list(map, sd);
}
err = ucimap_parse_options(map, sm, sd, s);
if (err)
goto error;
return 0;
error_mem:
if (sd->allocmap)
free(sd->allocmap);
free(sd);
return UCI_ERR_MEM;
error:
ucimap_free_section(map, sd);
return err;
}
static int
ucimap_fill_ptr(struct uci_ptr *ptr, struct uci_section *s, const char *option)
{
struct uci_package *p = s->package;
memset(ptr, 0, sizeof(struct uci_ptr));
ptr->package = p->e.name;
ptr->p = p;
ptr->section = s->e.name;
ptr->s = s;
ptr->option = option;
return uci_lookup_ptr(p->ctx, ptr, NULL, false);
}
void
ucimap_set_changed(struct ucimap_section_data *sd, void *field)
{
void *section = ucimap_section_ptr(sd);
struct uci_sectionmap *sm = sd->sm;
struct uci_optmap *om;
int ofs = (char *)field - (char *)section;
int i = 0;
ucimap_foreach_option(sm, om) {
if (om->offset == ofs) {
SET_BIT(sd->cmap, i);
break;
}
i++;
}
}
static char *
ucimap_data_to_string(struct ucimap_section_data *sd, struct uci_optmap *om, union ucimap_data *data)
{
static char buf[32];
char *str = NULL;
switch(om->type & UCIMAP_SUBTYPE) {
case UCIMAP_STRING:
str = data->s;
break;
case UCIMAP_INT:
sprintf(buf, "%d", data->i);
str = buf;
break;
case UCIMAP_BOOL:
sprintf(buf, "%d", !!data->b);
str = buf;
break;
case UCIMAP_SECTION:
if (data->ptr)
str = (char *) ucimap_ptr_section(om->data.sm, data->ptr)->section_name;
else
str = "";
break;
case UCIMAP_CUSTOM:
break;
default:
return NULL;
}
if (om->format) {
if (om->format(ucimap_section_ptr(sd), om, data, &str) < 0)
return NULL;
if (!str)
str = "";
}
return str;
}
int
ucimap_store_section(struct uci_map *map, struct uci_package *p, struct ucimap_section_data *sd)
{
struct uci_sectionmap *sm = sd->sm;
struct uci_section *s = NULL;
struct uci_optmap *om;
struct uci_element *e;
struct uci_ptr ptr;
int i = 0;
int ret;
uci_foreach_element(&p->sections, e) {
if (!strcmp(e->name, sd->section_name)) {
s = uci_to_section(e);
break;
}
}
if (!s)
return UCI_ERR_NOTFOUND;
ucimap_foreach_option(sm, om) {
union ucimap_data *data;
i++;
data = ucimap_get_data(sd, om);
if (!TEST_BIT(sd->cmap, i - 1))
continue;
ucimap_fill_ptr(&ptr, s, om->name);
if (ucimap_is_list(om->type)) {
struct ucimap_list *list = data->list;
bool first = true;
int j;
for (j = 0; j < list->n_items; j++) {
ptr.value = ucimap_data_to_string(sd, om, &list->item[j]);
if (!ptr.value)
continue;
if (first) {
ret = uci_set(s->package->ctx, &ptr);
first = false;
} else {
ret = uci_add_list(s->package->ctx, &ptr);
}
if (ret)
return ret;
}
} else {
ptr.value = ucimap_data_to_string(sd, om, data);
if (!ptr.value)
continue;
ret = uci_set(s->package->ctx, &ptr);
if (ret)
return ret;
}
CLR_BIT(sd->cmap, i - 1);
}
return 0;
}
void
ucimap_parse(struct uci_map *map, struct uci_package *pkg)
{
struct uci_element *e;
struct ucimap_section_data *sd, **sd_tail;
struct ucimap_fixup *f;
int i;
sd_tail = map->sdata_tail;
map->parsed = false;
map->sdata_tail = &map->pending;
uci_foreach_element(&pkg->sections, e) {
struct uci_section *s = uci_to_section(e);
for (i = 0; i < map->n_sections; i++) {
struct uci_sectionmap *sm = map->sections[i];
struct ucimap_section_data *sd;
if (strcmp(s->type, map->sections[i]->type) != 0)
continue;
if (sm->alloc) {
sd = sm->alloc(map, sm, s);
memset(sd, 0, sizeof(struct ucimap_section_data));
} else {
sd = malloc(sm->alloc_len);
memset(sd, 0, sm->alloc_len);
}
if (!sd)
continue;
ucimap_parse_section(map, sm, sd, s);
}
}
if (!map->parsed) {
map->parsed = true;
map->sdata_tail = sd_tail;
}
f = map->fixup;
while (f) {
struct ucimap_fixup *next = f->next;
ucimap_handle_fixup(map, f);
free(f);
f = next;
}
map->fixup_tail = &map->fixup;
map->fixup = NULL;
sd = map->pending;
while (sd) {
struct ucimap_section_data *next = sd->next;
ucimap_add_section(sd);
sd = next;
}
map->pending = NULL;
}

324
lib/uci/ucimap.h Normal file
View file

@ -0,0 +1,324 @@
/*
* ucimap.h - Library for the Unified Configuration Interface
* Copyright (C) 2008-2009 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/*
* This file contains ucimap, an API for mapping UCI to C data structures
*/
#ifndef __UCIMAP_H
#define __UCIMAP_H
#include <stdbool.h>
#include "uci.h"
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#endif
#define BITFIELD_SIZE(_fields) (((_fields) / 8) + 1)
#define CLR_BIT(_name, _bit) do { \
_name[(_bit) / 8] &= ~(1 << ((_bit) % 8)); \
} while (0)
#define SET_BIT(_name, _bit) do { \
_name[(_bit) / 8] |= (1 << ((_bit) % 8)); \
} while (0)
#define TEST_BIT(_name, _bit) \
(_name[(_bit) / 8] & (1 << ((_bit) % 8)))
#ifndef __GNUC__
#define __optmap_gen_type(_type, _field) -1
#ifndef likely
#define likely(_expr) !!(_expr)
#endif
#ifndef unlikely
#define unlikely(_expr) !!(_expr)
#endif
#else /* __GNUC__ */
#define __compatible(_type, _field, _newtype) \
__builtin_types_compatible_p(typeof(&(((_type *)0)->_field)), _newtype *)
#define __list_compatible(_type, _field, __val, __else) \
__builtin_choose_expr(__compatible(_type, _field, struct ucimap_list *), __val, __else)
#define __int_compatible(_type, _field, __val, __else) \
__builtin_choose_expr(__compatible(_type, _field, int), __val, \
__builtin_choose_expr(__compatible(_type, _field, unsigned int), __val, \
__else))
#define __string_compatible(_type, _field, __val, __else) \
__builtin_choose_expr(__compatible(_type, _field, char *), __val, \
__builtin_choose_expr(__compatible(_type, _field, unsigned char *), __val, \
__builtin_choose_expr(__compatible(_type, _field, const char *), __val, \
__builtin_choose_expr(__compatible(_type, _field, const unsigned char *), __val, \
__else))))
#define __bool_compatible(_type, _field, __val, __else) \
__builtin_choose_expr(__compatible(_type, _field, bool), __val, __else)
#define __optmap_gen_type(_type, _field) \
__list_compatible(_type, _field, UCIMAP_LIST, \
__int_compatible(_type, _field, UCIMAP_INT, \
__string_compatible(_type, _field, UCIMAP_STRING, \
__bool_compatible(_type, _field, UCIMAP_BOOL, \
-1))))
#ifndef likely
#define likely(x) __builtin_expect(!!(x), 1)
#endif
#ifndef unlikely
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
#endif /* __GNUC__ */
#define UCIMAP_OPTION(_type, _field) \
.type = UCIMAP_CUSTOM, \
.name = #_field, \
.offset = offsetof(_type, _field), \
.detected_type = __optmap_gen_type(_type, _field), \
.type_name = #_type
#define UCIMAP_SECTION(_name, _field) \
.alloc_len = sizeof(_name), \
.smap_offset = offsetof(_name, _field), \
.type_name = #_name
struct uci_sectionmap;
struct uci_optmap;
struct ucimap_list;
struct ucimap_fixup;
struct ucimap_alloc;
struct ucimap_alloc_custom;
struct ucimap_section_data;
struct uci_map {
struct uci_sectionmap **sections;
unsigned int n_sections;
bool parsed;
void *priv;
/* private */
struct ucimap_fixup *fixup;
struct ucimap_fixup **fixup_tail;
struct ucimap_section_data *sdata;
struct ucimap_section_data *pending;
struct ucimap_section_data **sdata_tail;
};
enum ucimap_type {
/* types */
UCIMAP_SIMPLE = 0x00,
UCIMAP_LIST = 0x10,
UCIMAP_TYPE = 0xf0, /* type mask */
/* subtypes */
UCIMAP_STRING = 0x0,
UCIMAP_BOOL = 0x1,
UCIMAP_INT = 0x2,
UCIMAP_SECTION = 0x3,
UCIMAP_CUSTOM = 0x4,
UCIMAP_SUBTYPE = 0xf, /* subtype mask */
/* automatically create lists from
* options with space-separated items */
UCIMAP_LIST_AUTO = 0x0100,
UCIMAP_FLAGS = 0xff00, /* flags mask */
};
union ucimap_data {
int i;
bool b;
char *s;
void *ptr;
void **data;
struct ucimap_list *list;
};
struct ucimap_section_data {
struct uci_map *map;
struct uci_sectionmap *sm;
const char *section_name;
/* map for changed fields */
unsigned char *cmap;
bool done;
/* internal */
struct ucimap_section_data *next, **ref;
struct ucimap_alloc *allocmap;
struct ucimap_alloc_custom *alloc_custom;
unsigned int allocmap_len;
unsigned int alloc_custom_len;
};
struct uci_sectionmap {
/* type string for the uci section */
const char *type;
/* length of the struct to map into, filled in by macro */
unsigned int alloc_len;
/* sectionmap offset, filled in by macro */
unsigned int smap_offset;
/* return a pointer to the section map data (allocate if necessary) */
struct ucimap_section_data *(*alloc)(struct uci_map *map,
struct uci_sectionmap *sm, struct uci_section *s);
/* give the caller time to initialize the preallocated struct */
int (*init)(struct uci_map *map, void *section, struct uci_section *s);
/* pass the fully processed struct to the callback after the section end */
int (*add)(struct uci_map *map, void *section);
/* let the callback clean up its own stuff in the section */
int (*free)(struct uci_map *map, void *section);
/* list of option mappings for this section */
struct uci_optmap *options;
unsigned int n_options;
unsigned int options_size;
/* internal */
const char *type_name;
};
struct uci_optmap {
unsigned int offset;
const char *name;
enum ucimap_type type;
int (*parse)(void *section, struct uci_optmap *om, union ucimap_data *data, const char *string);
int (*format)(void *section, struct uci_optmap *om, union ucimap_data *data, char **string);
void (*free)(void *section, struct uci_optmap *om, void *ptr);
union {
struct {
int base;
int min;
int max;
} i;
struct {
int maxlen;
} s;
struct uci_sectionmap *sm;
} data;
/* internal */
int detected_type;
const char *type_name;
};
struct ucimap_list {
int n_items;
int size;
union ucimap_data item[];
};
/**
* ucimap_init: initialize the ucimap data structure
* @map: ucimap data structure
*
* you must call this function before doing any other ucimap operation
* on the data structure
*/
extern int ucimap_init(struct uci_map *map);
/**
* ucimap_cleanup: clean up all allocated data from ucimap
* @map: ucimap data structure
*/
extern void ucimap_cleanup(struct uci_map *map);
/**
* ucimap_parse: parse all sections in an uci package using ucimap
* @map: ucimap data structure
* @pkg: uci package
*/
extern void ucimap_parse(struct uci_map *map, struct uci_package *pkg);
/**
* ucimap_set_changed: mark a field in a custom data structure as changed
* @sd: pointer to the ucimap section data
* @field: pointer to the field inside the custom data structure
*
* @sd must be set to the section data inside the data structure that contains @field
*/
extern void ucimap_set_changed(struct ucimap_section_data *sd, void *field);
/**
* ucimap_store_section: copy all changed data from the converted data structure to uci
* @map: ucimap data structure
* @p: uci package to store the changes in
* @sd: pointer to the ucimap section data
*
* changes are not saved or committed automatically
*/
extern int ucimap_store_section(struct uci_map *map, struct uci_package *p, struct ucimap_section_data *sd);
/**
* ucimap_parse_section: parse a single section
* @map: ucimap data structure
* @sm: uci section map
* @sd: pointer to the ucimap section data
* @s: pointer to the uci section
*
* this function overwrites the ucimap section data, do not use on a section
* that has been parsed already
*/
extern int ucimap_parse_section(struct uci_map *map, struct uci_sectionmap *sm, struct ucimap_section_data *sd, struct uci_section *s);
/**
* ucimap_free_section: free a data structure for a converted section
* @map: ucimap data structure
* @sd: pointer to the ucimap section data
*
* this function will clean up all data that was allocated by ucimap for this section.
* all references to the data structure become invalid
*/
extern void ucimap_free_section(struct uci_map *map, struct ucimap_section_data *sd);
/**
* ucimap_resize_list: allocate or resize a uci list
* @sd: pointer to the ucimap section data
* @list: pointer to the list field
* @items: new size
*
* @sd must point to the data structure that contains @list.
* @list must point to the field containing a pointer to the list, not the list directly
* the memory allocated for this list is tracked for the section and freed automatically
*/
extern int ucimap_resize_list(struct ucimap_section_data *sd, struct ucimap_list **list, int items);
/**
* ucimap_free_item: free the allocated memory for a data structure member
* @sd: pointer to the ucimap section data
* @item: pointer to the field inside the data structure
*
* @sd must point to the data structure that contains @item.
* @item must point to the field containing a pointer to the allocated item
*/
extern void ucimap_free_item(struct ucimap_section_data *sd, void *item);
#endif

489
lib/uci/util.c Normal file
View file

@ -0,0 +1,489 @@
/*
* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* 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.
*/
/*
* This file contains misc utility functions and wrappers to standard
* functions, which throw exceptions upon failure.
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <stdbool.h>
#include <unistd.h>
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
#define LINEBUF 32
#define LINEBUF_MAX 4096
__plugin void *uci_malloc(struct uci_context *ctx, size_t size)
{
void *ptr;
ptr = malloc(size);
if (!ptr)
UCI_THROW(ctx, UCI_ERR_MEM);
memset(ptr, 0, size);
return ptr;
}
__plugin void *uci_realloc(struct uci_context *ctx, void *ptr, size_t size)
{
ptr = realloc(ptr, size);
if (!ptr)
UCI_THROW(ctx, UCI_ERR_MEM);
return ptr;
}
__plugin char *uci_strdup(struct uci_context *ctx, const char *str)
{
char *ptr;
ptr = strdup(str);
if (!ptr)
UCI_THROW(ctx, UCI_ERR_MEM);
return ptr;
}
/* Based on an efficient hash function published by D. J. Bernstein */
static unsigned int djbhash(unsigned int hash, char *str)
{
int len = strlen(str);
int i;
/* initial value */
if (hash == ~0)
hash = 5381;
for(i = 0; i < len; i++) {
hash = ((hash << 5) + hash) + str[i];
}
return (hash & 0x7FFFFFFF);
}
/*
* validate strings for names and types, reject special characters
* for names, only alphanum and _ is allowed (shell compatibility)
* for types, we allow more characters
*/
__plugin bool uci_validate_str(const char *str, bool name)
{
if (!*str)
return false;
while (*str) {
unsigned char c = *str;
if (!isalnum(c) && c != '_') {
if (name || (c < 33) || (c > 126))
return false;
}
str++;
}
return true;
}
static inline bool uci_validate_package(const char *str)
{
return uci_validate_str(str, false);
}
static inline bool uci_validate_type(const char *str)
{
return uci_validate_str(str, false);
}
static inline bool uci_validate_name(const char *str)
{
return uci_validate_str(str, true);
}
bool uci_validate_text(const char *str)
{
while (*str) {
unsigned char c = *str;
if ((c == '\r') || (c == '\n') ||
((c < 32) && (c != '\t')))
return false;
str++;
}
return true;
}
static void uci_alloc_parse_context(struct uci_context *ctx)
{
ctx->pctx = (struct uci_parse_context *) uci_malloc(ctx, sizeof(struct uci_parse_context));
}
int uci_parse_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str)
{
char *last = NULL;
char *tmp;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, str);
UCI_ASSERT(ctx, ptr);
memset(ptr, 0, sizeof(struct uci_ptr));
/* value */
last = strchr(str, '=');
if (last) {
*last = 0;
last++;
ptr->value = last;
}
ptr->package = strsep(&str, ".");
if (!ptr->package)
goto error;
ptr->section = strsep(&str, ".");
if (!ptr->section) {
ptr->target = UCI_TYPE_PACKAGE;
goto lastval;
}
ptr->option = strsep(&str, ".");
if (!ptr->option) {
ptr->target = UCI_TYPE_SECTION;
goto lastval;
} else {
ptr->target = UCI_TYPE_OPTION;
}
tmp = strsep(&str, ".");
if (tmp)
goto error;
lastval:
if (ptr->package && !uci_validate_package(ptr->package))
goto error;
if (ptr->section && !uci_validate_name(ptr->section))
ptr->flags |= UCI_LOOKUP_EXTENDED;
if (ptr->option && !uci_validate_name(ptr->option))
goto error;
if (ptr->value && !uci_validate_text(ptr->value))
goto error;
return 0;
error:
memset(ptr, 0, sizeof(struct uci_ptr));
UCI_THROW(ctx, UCI_ERR_PARSE);
}
static void uci_parse_error(struct uci_context *ctx, char *pos, char *reason)
{
struct uci_parse_context *pctx = ctx->pctx;
pctx->reason = reason;
pctx->byte = pos - pctx->buf;
UCI_THROW(ctx, UCI_ERR_PARSE);
}
/*
* Fetch a new line from the input stream and resize buffer if necessary
*/
static void uci_getln(struct uci_context *ctx, int offset)
{
struct uci_parse_context *pctx = ctx->pctx;
char *p;
int ofs;
if (pctx->buf == NULL) {
pctx->buf = uci_malloc(ctx, LINEBUF);
pctx->bufsz = LINEBUF;
}
ofs = offset;
do {
p = &pctx->buf[ofs];
p[ofs] = 0;
p = fgets(p, pctx->bufsz - ofs, pctx->file);
if (!p || !*p)
return;
ofs += strlen(p);
if (pctx->buf[ofs - 1] == '\n') {
pctx->line++;
pctx->buf[ofs - 1] = 0;
return;
}
if (pctx->bufsz > LINEBUF_MAX/2)
uci_parse_error(ctx, p, "line too long");
pctx->bufsz *= 2;
pctx->buf = uci_realloc(ctx, pctx->buf, pctx->bufsz);
} while (1);
}
/*
* parse a character escaped by '\'
* returns true if the escaped character is to be parsed
* returns false if the escaped character is to be ignored
*/
static inline bool parse_backslash(struct uci_context *ctx, char **str)
{
/* skip backslash */
*str += 1;
/* undecoded backslash at the end of line, fetch the next line */
if (!**str) {
*str += 1;
uci_getln(ctx, *str - ctx->pctx->buf);
return false;
}
/* FIXME: decode escaped char, necessary? */
return true;
}
/*
* move the string pointer forward until a non-whitespace character or
* EOL is reached
*/
static void skip_whitespace(struct uci_context *ctx, char **str)
{
restart:
while (**str && isspace(**str))
*str += 1;
if (**str == '\\') {
if (!parse_backslash(ctx, str))
goto restart;
}
}
static inline void addc(char **dest, char **src)
{
**dest = **src;
*dest += 1;
*src += 1;
}
/*
* parse a double quoted string argument from the command line
*/
static void parse_double_quote(struct uci_context *ctx, char **str, char **target)
{
char c;
/* skip quote character */
*str += 1;
while ((c = **str)) {
switch(c) {
case '"':
**target = 0;
*str += 1;
return;
case '\\':
if (!parse_backslash(ctx, str))
continue;
/* fall through */
default:
addc(target, str);
break;
}
}
uci_parse_error(ctx, *str, "unterminated \"");
}
/*
* parse a single quoted string argument from the command line
*/
static void parse_single_quote(struct uci_context *ctx, char **str, char **target)
{
char c;
/* skip quote character */
*str += 1;
while ((c = **str)) {
switch(c) {
case '\'':
**target = 0;
*str += 1;
return;
default:
addc(target, str);
}
}
uci_parse_error(ctx, *str, "unterminated '");
}
/*
* parse a string from the command line and detect the quoting style
*/
static void parse_str(struct uci_context *ctx, char **str, char **target)
{
bool next = true;
do {
switch(**str) {
case '\'':
parse_single_quote(ctx, str, target);
break;
case '"':
parse_double_quote(ctx, str, target);
break;
case '#':
**str = 0;
/* fall through */
case 0:
goto done;
case ';':
next = false;
goto done;
case '\\':
if (!parse_backslash(ctx, str))
continue;
/* fall through */
default:
addc(target, str);
break;
}
} while (**str && !isspace(**str));
done:
/*
* if the string was unquoted and we've stopped at a whitespace
* character, skip to the next one, because the whitespace will
* be overwritten by a null byte here
*/
if (**str && next)
*str += 1;
/* terminate the parsed string */
**target = 0;
}
/*
* extract the next argument from the command line
*/
static char *next_arg(struct uci_context *ctx, char **str, bool required, bool name)
{
char *val;
char *ptr;
val = ptr = *str;
skip_whitespace(ctx, str);
if(*str[0] == ';') {
*str[0] = 0;
*str += 1;
} else {
parse_str(ctx, str, &ptr);
}
if (!*val) {
if (required)
uci_parse_error(ctx, *str, "insufficient arguments");
goto done;
}
if (name && !uci_validate_name(val))
uci_parse_error(ctx, val, "invalid character in field");
done:
return val;
}
int uci_parse_argument(struct uci_context *ctx, FILE *stream, char **str, char **result)
{
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, str != NULL);
UCI_ASSERT(ctx, result != NULL);
if (ctx->pctx && (ctx->pctx->file != stream))
uci_cleanup(ctx);
if (!ctx->pctx)
uci_alloc_parse_context(ctx);
ctx->pctx->file = stream;
if (!*str) {
uci_getln(ctx, 0);
*str = ctx->pctx->buf;
}
*result = next_arg(ctx, str, false, false);
return 0;
}
/*
* open a stream and go to the right position
*
* note: when opening for write and seeking to the beginning of
* the stream, truncate the file
*/
static FILE *uci_open_stream(struct uci_context *ctx, const char *filename, int pos, bool write, bool create)
{
struct stat statbuf;
FILE *file = NULL;
int fd, ret;
int mode = (write ? O_RDWR : O_RDONLY);
if (create)
mode |= O_CREAT;
if (!write && ((stat(filename, &statbuf) < 0) ||
((statbuf.st_mode & S_IFMT) != S_IFREG))) {
UCI_THROW(ctx, UCI_ERR_NOTFOUND);
}
fd = open(filename, mode, UCI_FILEMODE);
if (fd < 0)
goto error;
ret = flock(fd, (write ? LOCK_EX : LOCK_SH));
if ((ret < 0) && (errno != ENOSYS))
goto error;
ret = lseek(fd, 0, pos);
if (ret < 0)
goto error;
file = fdopen(fd, (write ? "w+" : "r"));
if (file)
goto done;
error:
UCI_THROW(ctx, UCI_ERR_IO);
done:
return file;
}
static void uci_close_stream(FILE *stream)
{
int fd;
if (!stream)
return;
fflush(stream);
fd = fileno(stream);
flock(fd, LOCK_UN);
fclose(stream);
}

8893
libtool Executable file

File diff suppressed because it is too large Load diff

8406
ltmain.sh Executable file

File diff suppressed because it is too large Load diff

1
missing Symbolic link
View file

@ -0,0 +1 @@
/usr/share/automake-1.10/missing

111
mkinstalldirs Executable file
View file

@ -0,0 +1,111 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain
errstatus=0
dirmode=""
usage="\
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
# process command line arguments
while test $# -gt 0 ; do
case $1 in
-h | --help | --h*) # -h for help
echo "$usage" 1>&2
exit 0
;;
-m) # -m PERM arg
shift
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
dirmode=$1
shift
;;
--) # stop option processing
shift
break
;;
-*) # unknown option
echo "$usage" 1>&2
exit 1
;;
*) # first non-opt arg
break
;;
esac
done
for file
do
if test -d "$file"; then
shift
else
break
fi
done
case $# in
0) exit 0 ;;
esac
case $dirmode in
'')
if mkdir -p -- . 2>/dev/null; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
fi
;;
*)
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
fi
;;
esac
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=""
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi
fi
fi
fi
pathcomp="$pathcomp/"
done
done
exit $errstatus
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# End:
# mkinstalldirs ends here

408
pixmaps/Makefile Normal file
View file

@ -0,0 +1,408 @@
# Makefile.in generated by automake 1.10.2 from Makefile.am.
# pixmaps/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 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.
pkgdatadir = $(datadir)/zynk
pkglibdir = $(libdir)/zynk
pkgincludedir = $(includedir)/zynk
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 = i686-pc-linux-gnu
host_triplet = i686-pc-linux-gnu
subdir = pixmaps
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(icondir)"
iconDATA_INSTALL = $(INSTALL_DATA)
DATA = $(icon_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/hanez/Zynk/missing --run aclocal-1.10
ALL_LINGUAS = de
AMTAR = ${SHELL} /home/hanez/Zynk/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /home/hanez/Zynk/missing --run autoconf
AUTOHEADER = ${SHELL} /home/hanez/Zynk/missing --run autoheader
AUTOMAKE = ${SHELL} /home/hanez/Zynk/missing --run automake-1.10
AWK = gawk
CATALOGS = de.gmo
CATOBJEXT = .gmo
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DATADIRNAME = share
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
DUMPBIN =
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
FGREP = /bin/grep -F
GCONFTOOL = /usr/bin/gconftool-2
GCONF_SCHEMA_CONFIG_SOURCE = xml:merged:/etc/gconf/gconf.xml.defaults
GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas
GETTEXT_PACKAGE = zynk
GMOFILES = de.gmo
GMSGFMT = /usr/bin/gmsgfmt
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
INSTOBJEXT = .mo
INTLLIBS =
INTLTOOL_CAVES_RULE = %.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_DESKTOP_RULE = %.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_EXTRACT = /usr/bin/intltool-extract
INTLTOOL_KBD_RULE = %.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_KEYS_RULE = %.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_MERGE = /usr/bin/intltool-merge
INTLTOOL_OAF_RULE = %.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
INTLTOOL_PERL = /usr/bin/perl
INTLTOOL_POLICY_RULE = %.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_PONG_RULE = %.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_PROP_RULE = %.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SCHEMAS_RULE = %.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SERVER_RULE = %.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SERVICE_RULE = %.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SHEET_RULE = %.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_THEME_RULE = %.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_UI_RULE = %.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_UPDATE = /usr/bin/intltool-update
INTLTOOL_XAM_RULE = %.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
INTLTOOL_XML_NOMERGE_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
INTLTOOL_XML_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
LD = /usr/i686-pc-linux-gnu/bin/ld
LDFLAGS =
LIBOBJS =
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =
LN_S = ln -s
LTLIBOBJS =
MAINT =
MAKEINFO = ${SHELL} /home/hanez/Zynk/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
MKINSTALLDIRS = ./mkinstalldirs
MSGFMT = /usr/bin/msgfmt
MSGFMT_OPTS = -c
MSGMERGE = /usr/bin/msgmerge
NM = /usr/bin/nm -B
NMEDIT =
OBJDUMP = objdump
OBJEXT = o
OTOOL =
OTOOL64 =
PACKAGE = zynk
PACKAGE_BUGREPORT =
PACKAGE_NAME =
PACKAGE_STRING =
PACKAGE_TARNAME =
PACKAGE_VERSION =
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
POFILES = de.po
POSUB = po
PO_IN_DATADIR_FALSE =
PO_IN_DATADIR_TRUE =
RANLIB = ranlib
SED = /bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
USE_NLS = yes
VERSION = 1.0
WARN_CFLAGS = -Wall -Wmissing-prototypes
XGETTEXT = /usr/bin/xgettext
ZYNK_CFLAGS = -DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/orbit-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gnome-keyring-1 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libglade-2.0
ZYNK_LIBS = -pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lrt -lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
abs_builddir = /home/hanez/Zynk/pixmaps
abs_srcdir = /home/hanez/Zynk/pixmaps
abs_top_builddir = /home/hanez/Zynk
abs_top_srcdir = /home/hanez/Zynk
ac_ct_CC = gcc
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = i686-pc-linux-gnu
build_alias =
build_cpu = i686
build_os = linux-gnu
build_vendor = pc
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i686-pc-linux-gnu
host_alias =
host_cpu = i686
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /home/hanez/Zynk/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
lt_ECHO = echo
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix = ../
top_builddir = ..
top_srcdir = ..
EXTRA_DIST = zynk.png
icon_DATA = zynk.png
icondir = $(datadir)/pixmaps
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu pixmaps/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
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-iconDATA: $(icon_DATA)
@$(NORMAL_INSTALL)
test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)"
@list='$(icon_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(iconDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(icondir)/$$f'"; \
$(iconDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(icondir)/$$f"; \
done
uninstall-iconDATA:
@$(NORMAL_UNINSTALL)
@list='$(icon_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(icondir)/$$f'"; \
rm -f "$(DESTDIR)$(icondir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(icondir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-iconDATA
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-iconDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-iconDATA install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-iconDATA
# 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:

4
pixmaps/Makefile.am Normal file
View file

@ -0,0 +1,4 @@
EXTRA_DIST = zynk.png
icon_DATA = zynk.png
icondir = $(datadir)/pixmaps

408
pixmaps/Makefile.in Normal file
View file

@ -0,0 +1,408 @@
# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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 = pixmaps
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(icondir)"
iconDATA_INSTALL = $(INSTALL_DATA)
DATA = $(icon_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GCONFTOOL = @GCONFTOOL@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
POFILES = @POFILES@
POSUB = @POSUB@
PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
XGETTEXT = @XGETTEXT@
ZYNK_CFLAGS = @ZYNK_CFLAGS@
ZYNK_LIBS = @ZYNK_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
EXTRA_DIST = zynk.png
icon_DATA = zynk.png
icondir = $(datadir)/pixmaps
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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) --gnu pixmaps/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu pixmaps/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-iconDATA: $(icon_DATA)
@$(NORMAL_INSTALL)
test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)"
@list='$(icon_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(iconDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(icondir)/$$f'"; \
$(iconDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(icondir)/$$f"; \
done
uninstall-iconDATA:
@$(NORMAL_UNINSTALL)
@list='$(icon_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(icondir)/$$f'"; \
rm -f "$(DESTDIR)$(icondir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(icondir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-iconDATA
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-iconDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-iconDATA install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-iconDATA
# 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:

BIN
pixmaps/zynk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

0
po/ChangeLog Normal file
View file

225
po/Makefile Normal file
View file

@ -0,0 +1,225 @@
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
#
# This file may be copied and used freely without restrictions. It may
# be used in projects which are not available under a GNU Public License,
# but which still want to provide support for the GNU gettext functionality.
#
# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
# instead of PACKAGE and to look for po2tbl in ./ not in intl/
#
# - Modified by jacob berkman <jacob@ximian.com> to install
# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
#
# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
#
# We have the following line for use by intltoolize:
# INTLTOOL_MAKEFILE
GETTEXT_PACKAGE = zynk
PACKAGE = zynk
VERSION = 1.0
SHELL = /bin/sh
srcdir = .
top_srcdir = ..
top_builddir = ..
prefix = /usr/local
exec_prefix = ${prefix}
datadir = ${datarootdir}
datarootdir = ${prefix}/share
libdir = ${exec_prefix}/lib
DATADIRNAME = share
itlocaledir = $(prefix)/$(DATADIRNAME)/locale
subdir = po
install_sh = $(SHELL) /home/hanez/Zynk/install-sh
# Automake >= 1.8 provides /bin/mkdir -p.
# Until it can be supposed, use the safe fallback:
mkdir_p = $(install_sh) -d
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
GMSGFMT = /usr/bin/gmsgfmt
MSGFMT = /usr/bin/msgfmt
XGETTEXT = /usr/bin/xgettext
INTLTOOL_UPDATE = /usr/bin/intltool-update
INTLTOOL_EXTRACT = /usr/bin/intltool-extract
MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
ALL_LINGUAS = de
PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep ^$$lang$$`"; then printf "$$lang "; fi; done; fi)
USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS
POTFILES = \
../src/panel.c \
../src/preferences.c \
../src/preferences_signals.c \
../src/profiles.c \
../src/profiles_signals.c \
../src/rsync.c \
../src/settings.c \
../src/zynk.c \
../src/zynk_signals.c
CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
.SUFFIXES:
.SUFFIXES: .po .pox .gmo .mo .msg .cat
.po.pox:
$(MAKE) $(GETTEXT_PACKAGE).pot
$(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
.po.mo:
$(MSGFMT) -o $@ $<
.po.gmo:
file=`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) -o $$file $<
.po.cat:
sed -f ../intl/po2msg.sed < $< > $*.msg \
&& rm -f $@ && gencat $@ $*.msg
all: all-yes
all-yes: $(CATALOGS)
all-no:
$(GETTEXT_PACKAGE).pot: $(POTFILES)
$(GENPOT)
install: install-data
install-data: install-data-yes
install-data-no: all
install-data-yes: all
linguas="$(USE_LINGUAS)"; \
for lang in $$linguas; do \
dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
$(mkdir_p) $$dir; \
if test -r $$lang.gmo; then \
$(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
else \
$(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
echo "installing $(srcdir)/$$lang.gmo as" \
"$$dir/$(GETTEXT_PACKAGE).mo"; \
fi; \
if test -r $$lang.gmo.m; then \
$(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
else \
if test -r $(srcdir)/$$lang.gmo.m ; then \
$(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
$$dir/$(GETTEXT_PACKAGE).mo.m; \
echo "installing $(srcdir)/$$lang.gmo.m as" \
"$$dir/$(GETTEXT_PACKAGE).mo.m"; \
else \
true; \
fi; \
fi; \
done
# Empty stubs to satisfy archaic automake needs
dvi info tags TAGS ID:
# Define this as empty until I found a useful application.
install-exec installcheck:
uninstall:
linguas="$(USE_LINGUAS)"; \
for lang in $$linguas; do \
rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
done
check: all $(GETTEXT_PACKAGE).pot
rm -f missing notexist
srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
if [ -r missing -o -r notexist ]; then \
exit 1; \
fi
mostlyclean:
rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
rm -f .intltool-merge-cache
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES stamp-it
rm -f *.mo *.msg *.cat *.cat.m *.gmo
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f Makefile.in.in
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir: $(DISTFILES)
dists="$(DISTFILES)"; \
extra_dists="$(EXTRA_DISTFILES)"; \
for file in $$extra_dists; do \
test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
done; \
for file in $$dists; do \
test -f $$file || file="$(srcdir)/$$file"; \
ln $$file $(distdir) 2> /dev/null \
|| cp -p $$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(GETTEXT_PACKAGE).pot
tmpdir=`pwd`; \
linguas="$(USE_LINGUAS)"; \
for lang in $$linguas; do \
echo "$$lang:"; \
result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
if $$result; then \
if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
:; \
else \
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
rm -f $$tmpdir/$$lang.new.po; \
exit 1; \
fi; \
fi; \
else \
echo "msgmerge for $$lang.gmo failed!"; \
rm -f $$tmpdir/$$lang.new.po; \
fi; \
done
Makefile POTFILES: stamp-it
@if test ! -f $@; then \
rm -f stamp-it; \
$(MAKE) stamp-it; \
fi
stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
$(SHELL) ./config.status
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

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