Initial commit
This commit is contained in:
commit
4eef3a1d5a
153 changed files with 178754 additions and 0 deletions
1
AUTHORS
Normal file
1
AUTHORS
Normal file
|
|
@ -0,0 +1 @@
|
|||
Johannes Findeisen <you@hanez.org>
|
||||
340
COPYING
Normal file
340
COPYING
Normal 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
0
CREDITS
Normal file
0
ChangeLog
Normal file
0
ChangeLog
Normal file
1
INSTALL
Symbolic link
1
INSTALL
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/usr/share/automake-1.10/INSTALL
|
||||
769
Makefile
Normal file
769
Makefile
Normal 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
37
Makefile.am
Normal 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
769
Makefile.in
Normal 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
0
NEWS
Normal file
0
README
Normal file
0
README
Normal file
9885
aclocal.m4
vendored
Normal file
9885
aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load diff
159
autogen.sh
Executable file
159
autogen.sh
Executable 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
25983
autom4te.cache/output.0
Normal file
File diff suppressed because it is too large
Load diff
17877
autom4te.cache/output.1
Normal file
17877
autom4te.cache/output.1
Normal file
File diff suppressed because it is too large
Load diff
17881
autom4te.cache/output.2
Normal file
17881
autom4te.cache/output.2
Normal file
File diff suppressed because it is too large
Load diff
472
autom4te.cache/requests
Normal file
472
autom4te.cache/requests
Normal 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
10155
autom4te.cache/traces.0
Normal file
File diff suppressed because it is too large
Load diff
877
autom4te.cache/traces.1
Normal file
877
autom4te.cache/traces.1
Normal 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
2964
autom4te.cache/traces.2
Normal file
File diff suppressed because it is too large
Load diff
281
autoscan-2.59.log
Normal file
281
autoscan-2.59.log
Normal 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
92
commands.txt
Normal 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
1548
config.guess
vendored
Executable file
File diff suppressed because it is too large
Load diff
84
config.h
Normal file
84
config.h
Normal 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
83
config.h.in
Normal 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
79
config.h.in~
Normal 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
807
config.log
Normal 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
2154
config.status
Executable file
File diff suppressed because it is too large
Load diff
1695
config.sub
vendored
Executable file
1695
config.sub
vendored
Executable file
File diff suppressed because it is too large
Load diff
77
configure.in
Normal file
77
configure.in
Normal 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
41
configure.scan
Normal 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
1
depcomp
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/usr/share/automake-1.10/depcomp
|
||||
18
examples/AAA.zynk
Normal file
18
examples/AAA.zynk
Normal 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
408
examples/Makefile
Normal 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
6
examples/Makefile.am
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
exampledir = $(datadir)/zynk/examples
|
||||
|
||||
example_DATA = default.zynk
|
||||
|
||||
EXTRA_DIST = $(example_DATA)
|
||||
|
||||
408
examples/Makefile.in
Normal file
408
examples/Makefile.in
Normal 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
72
examples/default.zynk
Normal 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
18
examples/hanez.org.zynk
Normal 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
1
install-sh
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/usr/share/automake-1.10/install-sh
|
||||
861
intltool-extract
Executable file
861
intltool-extract
Executable 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/'/'/g; # '
|
||||
s/"/"/g; # "
|
||||
s/&/&/g;
|
||||
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub entity_decode
|
||||
{
|
||||
local ($_) = @_;
|
||||
|
||||
s/'/'/g; # '
|
||||
s/"/"/g; # "
|
||||
s/&/&/g;
|
||||
s/</</g;
|
||||
s/>/>/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
861
intltool-extract.in
Normal 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/'/'/g; # '
|
||||
s/"/"/g; # "
|
||||
s/&/&/g;
|
||||
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub entity_decode
|
||||
{
|
||||
local ($_) = @_;
|
||||
|
||||
s/'/'/g; # '
|
||||
s/"/"/g; # "
|
||||
s/&/&/g;
|
||||
s/</</g;
|
||||
s/>/>/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
1403
intltool-merge
Executable file
File diff suppressed because it is too large
Load diff
1403
intltool-merge.in
Normal file
1403
intltool-merge.in
Normal file
File diff suppressed because it is too large
Load diff
1098
intltool-update
Executable file
1098
intltool-update
Executable file
File diff suppressed because it is too large
Load diff
1098
intltool-update.in
Normal file
1098
intltool-update.in
Normal file
File diff suppressed because it is too large
Load diff
91
lib/uci/Makefile
Normal file
91
lib/uci/Makefile
Normal 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
31
lib/uci/Makefile.inc
Normal 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
698
lib/uci/cli.c
Normal 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
581
lib/uci/file.c
Normal 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
483
lib/uci/history.c
Normal 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
391
lib/uci/libuci.c
Normal 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
719
lib/uci/list.c
Normal 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
601
lib/uci/list.h
Normal 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
44
lib/uci/lua/Makefile
Normal 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
928
lib/uci/lua/uci.c
Normal 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
178
lib/uci/sh/uci.sh
Executable 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
2
lib/uci/test/Makefile
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
all:
|
||||
sh ./tests.sh
|
||||
34
lib/uci/test/README
Normal file
34
lib/uci/test/README
Normal 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.
|
||||
25
lib/uci/test/config/network
Normal file
25
lib/uci/test/config/network
Normal 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'
|
||||
|
||||
1
lib/uci/test/references/add_section.result
Normal file
1
lib/uci/test/references/add_section.result
Normal file
|
|
@ -0,0 +1 @@
|
|||
+add.section=type
|
||||
6
lib/uci/test/references/export.data
Normal file
6
lib/uci/test/references/export.data
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
list 'list_opt' 'val0'
|
||||
list 'list_opt' 'val1'
|
||||
|
||||
7
lib/uci/test/references/export.result
Normal file
7
lib/uci/test/references/export.result
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
package 'export'
|
||||
|
||||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
list 'list_opt' 'val0'
|
||||
list 'list_opt' 'val1'
|
||||
|
||||
2
lib/uci/test/references/get.data
Normal file
2
lib/uci/test/references/get.data
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
5
lib/uci/test/references/get_parsing.data
Normal file
5
lib/uci/test/references/get_parsing.data
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
|
||||
config 'unnamed'
|
||||
option 'opt1' 'val1'
|
||||
7
lib/uci/test/references/import.data
Normal file
7
lib/uci/test/references/import.data
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
package 'import'
|
||||
|
||||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
list 'list_opt' 'val0'
|
||||
list 'list_opt' 'val1'
|
||||
|
||||
6
lib/uci/test/references/import.result
Normal file
6
lib/uci/test/references/import.result
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
list 'list_opt' 'val0'
|
||||
list 'list_opt' 'val1'
|
||||
|
||||
2
lib/uci/test/references/set_existing_option.data
Normal file
2
lib/uci/test/references/set_existing_option.data
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
config 'named' 'section'
|
||||
option 'opt' 'err'
|
||||
1
lib/uci/test/references/set_existing_option.result
Normal file
1
lib/uci/test/references/set_existing_option.result
Normal file
|
|
@ -0,0 +1 @@
|
|||
set.section.opt=val
|
||||
1
lib/uci/test/references/set_named_section.result
Normal file
1
lib/uci/test/references/set_named_section.result
Normal file
|
|
@ -0,0 +1 @@
|
|||
set.section=named
|
||||
1
lib/uci/test/references/set_nonexisting_option.data
Normal file
1
lib/uci/test/references/set_nonexisting_option.data
Normal file
|
|
@ -0,0 +1 @@
|
|||
config 'named' 'section'
|
||||
1
lib/uci/test/references/set_nonexisting_option.result
Normal file
1
lib/uci/test/references/set_nonexisting_option.result
Normal file
|
|
@ -0,0 +1 @@
|
|||
set.section.opt=val
|
||||
2
lib/uci/test/references/set_parsing.data
Normal file
2
lib/uci/test/references/set_parsing.data
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
2
lib/uci/test/references/show_parsing.data
Normal file
2
lib/uci/test/references/show_parsing.data
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
config 'type' 'section'
|
||||
option 'opt' 'val'
|
||||
15
lib/uci/test/references/ucimap_example_1.result
Normal file
15
lib/uci/test/references/ucimap_example_1.result
Normal 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
|
||||
14
lib/uci/test/references/ucimap_example_2.result
Normal file
14
lib/uci/test/references/ucimap_example_2.result
Normal 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
1040
lib/uci/test/shunit2/shunit2
Normal file
File diff suppressed because it is too large
Load diff
5
lib/uci/test/tests.d/000_import
Normal file
5
lib/uci/test/tests.d/000_import
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
test_import ()
|
||||
{
|
||||
${UCI} import < ${REF_DIR}/import.data
|
||||
assertSameFile ${REF_DIR}/import.result ${CONFIG_DIR}/import
|
||||
}
|
||||
6
lib/uci/test/tests.d/010_export
Normal file
6
lib/uci/test/tests.d/010_export
Normal 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
|
||||
}
|
||||
39
lib/uci/test/tests.d/020_get
Normal file
39
lib/uci/test/tests.d/020_get
Normal 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"
|
||||
}
|
||||
30
lib/uci/test/tests.d/030_set
Normal file
30
lib/uci/test/tests.d/030_set
Normal 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
|
||||
}
|
||||
8
lib/uci/test/tests.d/040_add
Normal file
8
lib/uci/test/tests.d/040_add
Normal 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
|
||||
}
|
||||
11
lib/uci/test/tests.d/050_show
Normal file
11
lib/uci/test/tests.d/050_show
Normal 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"
|
||||
}
|
||||
9
lib/uci/test/tests.d/060-ucimap_example
Normal file
9
lib/uci/test/tests.d/060-ucimap_example
Normal 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
78
lib/uci/test/tests.sh
Normal 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
631
lib/uci/uci.h
Normal 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
182
lib/uci/uci_internal.h
Normal 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
318
lib/uci/ucimap-example.c
Normal 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
926
lib/uci/ucimap.c
Normal 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
324
lib/uci/ucimap.h
Normal 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
489
lib/uci/util.c
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
1
missing
Symbolic link
1
missing
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/usr/share/automake-1.10/missing
|
||||
111
mkinstalldirs
Executable file
111
mkinstalldirs
Executable 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
408
pixmaps/Makefile
Normal 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
4
pixmaps/Makefile.am
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
EXTRA_DIST = zynk.png
|
||||
|
||||
icon_DATA = zynk.png
|
||||
icondir = $(datadir)/pixmaps
|
||||
408
pixmaps/Makefile.in
Normal file
408
pixmaps/Makefile.in
Normal 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
BIN
pixmaps/zynk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
0
po/ChangeLog
Normal file
0
po/ChangeLog
Normal file
225
po/Makefile
Normal file
225
po/Makefile
Normal 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
Loading…
Add table
Add a link
Reference in a new issue