commit 64e7bb523f56ef0a3eb4063917daeedcadeb1d41 Author: tpearson Date: Wed Feb 24 01:38:56 2010 +0000 Added old KDE3 version of ksystemlog git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ksystemlog@1095334 283d02a7-25f6-0310-bc7c-ecb5cbfe19da diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..2a3ec53 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,3 @@ +Nicolas Ternisien + +Please see http://annivernet.free.fr/ksystemlog/ for more informations. \ No newline at end of file diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..c13faf0 --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. + + + Copyright (C) + + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. + + , 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. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..84c41e2 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,16 @@ +---------------------------------- +KSystemLog Changelog +---------------------------------- +Please see the changelog of KSystemLog online at : + +http://annivernet.free.fr/ksystemlog/changelog.php + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : + + +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..9b962f5 --- /dev/null +++ b/INSTALL @@ -0,0 +1,181 @@ + +Specific Trouble case with KSystemLog +=================================================== +I hope that you will don't have any problems to compile and test KSystemLog. +If you successfully compile KSystemLog but you have strange problems (with the +tool bars, please manually copy src/ksystemlogui.rc in the $HOME/.kde/share/apps/ksystemlog +folder (create it if it does not exist). + +If you still have problems, do not hesitate do email me ;-) +Nicolas Ternisien + +For more informations, please also see the KsystemLog Web site : +http://annivernet.free.fr/ksystemlog/ + +Basic Installation +=================================================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..8a2284f --- /dev/null +++ b/Makefile.am @@ -0,0 +1,22 @@ +SUBDIRS = $(TOPSUBDIRS) + +$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ; + +$(top_srcdir)/subdirs: + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs + +$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in + @cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4 + +MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files + +package-messages: + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common package-messages + $(MAKE) -C po merge + +EXTRA_DIST = admin COPYING configure.in.in + +dist-hook: + cd $(top_distdir) && perl admin/am_edit -padmin + cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs diff --git a/Makefile.cvs b/Makefile.cvs new file mode 100644 index 0000000..4c0afd1 --- /dev/null +++ b/Makefile.cvs @@ -0,0 +1,10 @@ +all: + @echo "This Makefile is only for the CVS repository" + @echo "This will be deleted before making the distribution" + @echo "" + $(MAKE) -f admin/Makefile.common cvs + +dist: + $(MAKE) -f admin/Makefile.common dist + +.SILENT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..4fd6b41 --- /dev/null +++ b/NEWS @@ -0,0 +1,16 @@ +---------------------------------- +KSystemLog News +---------------------------------- +Please see the news of KSystemLog online at : + +http://localhost.localdomain/ksystemlog/index.php#news + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : + + +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/README b/README new file mode 100644 index 0000000..e6cfe35 --- /dev/null +++ b/README @@ -0,0 +1,14 @@ +---------------------------------- +KSystemLog Readme +---------------------------------- +Please see the official KSystemLog Web site online at : + +http://localhost.localdomain/ksystemlog/ + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/TODO b/TODO new file mode 100644 index 0000000..106f83c --- /dev/null +++ b/TODO @@ -0,0 +1,15 @@ +---------------------------------- +KSystemLog TODO List +---------------------------------- +Please see the changelog of KSystemLog online at : + +http://annivernet.free.fr/ksystemlog/ideas.php + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : + +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..c4bc9ed --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,11207 @@ +## -*- autoconf -*- + +dnl This file is part of the KDE libraries/packages +dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu) +dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org) + +dnl This file is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Library General Public +dnl License as published by the Free Software Foundation; either +dnl version 2 of the License, or (at your option) any later version. + +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Library General Public License for more details. + +dnl You should have received a copy of the GNU Library General Public License +dnl along with this library; see the file COPYING.LIB. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +dnl Boston, MA 02110-1301, USA. + +dnl IMPORTANT NOTE: +dnl Please do not modify this file unless you expect your modifications to be +dnl carried into every other module in the repository. +dnl +dnl Single-module modifications are best placed in configure.in for kdelibs +dnl and kdebase or configure.in.in if present. + +# KDE_PATH_X_DIRECT +dnl Internal subroutine of AC_PATH_X. +dnl Set ac_x_includes and/or ac_x_libraries. +AC_DEFUN([KDE_PATH_X_DIRECT], +[ +AC_REQUIRE([KDE_CHECK_LIB64]) + +if test "$ac_x_includes" = NO; then + # Guess where to find include files, by looking for this one X11 .h file. + test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h + + # First, try using that file with no special directory specified. +AC_TRY_CPP([#include <$x_direct_test_include>], +[# We can compile using X headers with no special include directory. +ac_x_includes=], +[# Look for the header file in a standard set of common directories. +# Check X11 before X11Rn because it is often a symlink to the current release. + for ac_dir in \ + /usr/X11/include \ + /usr/X11R6/include \ + /usr/X11R5/include \ + /usr/X11R4/include \ + \ + /usr/include/X11 \ + /usr/include/X11R6 \ + /usr/include/X11R5 \ + /usr/include/X11R4 \ + \ + /usr/local/X11/include \ + /usr/local/X11R6/include \ + /usr/local/X11R5/include \ + /usr/local/X11R4/include \ + \ + /usr/local/include/X11 \ + /usr/local/include/X11R6 \ + /usr/local/include/X11R5 \ + /usr/local/include/X11R4 \ + \ + /usr/X386/include \ + /usr/x386/include \ + /usr/XFree86/include/X11 \ + \ + /usr/include \ + /usr/local/include \ + /usr/unsupported/include \ + /usr/athena/include \ + /usr/local/x11r5/include \ + /usr/lpp/Xamples/include \ + \ + /usr/openwin/include \ + /usr/openwin/share/include \ + ; \ + do + if test -r "$ac_dir/$x_direct_test_include"; then + ac_x_includes=$ac_dir + break + fi + done]) +fi # $ac_x_includes = NO + +if test "$ac_x_libraries" = NO; then + # Check for the libraries. + + test -z "$x_direct_test_library" && x_direct_test_library=Xt + test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc + + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS="$LIBS" + LIBS="-l$x_direct_test_library $LIBS" +AC_TRY_LINK(, [${x_direct_test_function}()], +[LIBS="$ac_save_LIBS" +# We can link X programs with no special library path. +ac_x_libraries=], +[LIBS="$ac_save_LIBS" +# First see if replacing the include by lib works. +# Check X11 before X11Rn because it is often a symlink to the current release. +for ac_dir in `echo "$ac_x_includes" | sed s/include/lib${kdelibsuff}/` \ + /usr/X11/lib${kdelibsuff} \ + /usr/X11R6/lib${kdelibsuff} \ + /usr/X11R5/lib${kdelibsuff} \ + /usr/X11R4/lib${kdelibsuff} \ + \ + /usr/lib${kdelibsuff}/X11 \ + /usr/lib${kdelibsuff}/X11R6 \ + /usr/lib${kdelibsuff}/X11R5 \ + /usr/lib${kdelibsuff}/X11R4 \ + \ + /usr/local/X11/lib${kdelibsuff} \ + /usr/local/X11R6/lib${kdelibsuff} \ + /usr/local/X11R5/lib${kdelibsuff} \ + /usr/local/X11R4/lib${kdelibsuff} \ + \ + /usr/local/lib${kdelibsuff}/X11 \ + /usr/local/lib${kdelibsuff}/X11R6 \ + /usr/local/lib${kdelibsuff}/X11R5 \ + /usr/local/lib${kdelibsuff}/X11R4 \ + \ + /usr/X386/lib${kdelibsuff} \ + /usr/x386/lib${kdelibsuff} \ + /usr/XFree86/lib${kdelibsuff}/X11 \ + \ + /usr/lib${kdelibsuff} \ + /usr/local/lib${kdelibsuff} \ + /usr/unsupported/lib${kdelibsuff} \ + /usr/athena/lib${kdelibsuff} \ + /usr/local/x11r5/lib${kdelibsuff} \ + /usr/lpp/Xamples/lib${kdelibsuff} \ + /lib/usr/lib${kdelibsuff}/X11 \ + \ + /usr/openwin/lib${kdelibsuff} \ + /usr/openwin/share/lib${kdelibsuff} \ + ; \ +do +dnl Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done]) +fi # $ac_x_libraries = NO +]) + + +dnl ------------------------------------------------------------------------ +dnl Find a file (or one of more files in a list of dirs) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_FIND_FILE], +[ +$3=NO +for i in $2; +do + for j in $1; + do + echo "configure: __oline__: $i/$j" >&AC_FD_CC + if test -r "$i/$j"; then + echo "taking that" >&AC_FD_CC + $3=$i + break 2 + fi + done +done +]) + +dnl KDE_FIND_PATH(programm-name, variable-name, list of directories, +dnl if-not-found, test-parameter) +AC_DEFUN([KDE_FIND_PATH], +[ + AC_MSG_CHECKING([for $1]) + if test -n "$$2"; then + kde_cv_path="$$2"; + else + kde_cache=`echo $1 | sed 'y%./+-%__p_%'` + + AC_CACHE_VAL(kde_cv_path_$kde_cache, + [ + kde_cv_path="NONE" + dirs="$3" + kde_save_IFS=$IFS + IFS=':' + for dir in $PATH; do + dirs="$dirs $dir" + done + IFS=$kde_save_IFS + + for dir in $dirs; do + if test -x "$dir/$1"; then + if test -n "$5" + then + evalstr="$dir/$1 $5 2>&1 " + if eval $evalstr; then + kde_cv_path="$dir/$1" + break + fi + else + kde_cv_path="$dir/$1" + break + fi + fi + done + + eval "kde_cv_path_$kde_cache=$kde_cv_path" + + ]) + + eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" + + fi + + if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then + AC_MSG_RESULT(not found) + $4 + else + AC_MSG_RESULT($kde_cv_path) + $2=$kde_cv_path + + fi +]) + +AC_DEFUN([KDE_MOC_ERROR_MESSAGE], +[ + AC_MSG_ERROR([No Qt meta object compiler (moc) found! +Please check whether you installed Qt correctly. +You need to have a running moc binary. +configure tried to run $ac_cv_path_moc and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable MOC to the right one before running +configure. +]) +]) + +AC_DEFUN([KDE_UIC_ERROR_MESSAGE], +[ + AC_MSG_WARN([No Qt ui compiler (uic) found! +Please check whether you installed Qt correctly. +You need to have a running uic binary. +configure tried to run $ac_cv_path_uic and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable UIC to the right one before running +configure. +]) +]) + + +AC_DEFUN([KDE_CHECK_UIC_FLAG], +[ + AC_MSG_CHECKING([whether uic supports -$1 ]) + kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'` + AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache, + [ + cat >conftest.ui < +EOT + ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null" + if AC_TRY_EVAL(ac_uic_testrun); then + eval "kde_cv_prog_uic_$kde_cache=yes" + else + eval "kde_cv_prog_uic_$kde_cache=no" + fi + rm -f conftest* + ]) + + if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then + AC_MSG_RESULT([yes]) + : + $3 + else + AC_MSG_RESULT([no]) + : + $4 + fi +]) + + +dnl ------------------------------------------------------------------------ +dnl Find the meta object compiler and the ui compiler in the PATH, +dnl in $QTDIR/bin, and some more usual places +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_MOC_UIC], +[ + AC_REQUIRE([KDE_CHECK_PERL]) + qt_bindirs="" + for dir in $kde_qt_dirs; do + qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc" + done + qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin" + if test ! "$ac_qt_bindir" = "NO"; then + qt_bindirs="$ac_qt_bindir $qt_bindirs" + fi + + KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE]) + if test -z "$UIC_NOT_NEEDED"; then + KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""]) + if test -z "$UIC_PATH" ; then + KDE_UIC_ERROR_MESSAGE + exit 1 + else + UIC=$UIC_PATH + + if test $kde_qtver = 3; then + KDE_CHECK_UIC_FLAG(L,[/nonexistent],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no) + KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no) + + if test x$ac_uic_supports_libpath = xyes; then + UIC="$UIC -L \$(kde_widgetdir)" + fi + if test x$ac_uic_supports_nounload = xyes; then + UIC="$UIC -nounload" + fi + fi + fi + else + UIC="echo uic not available: " + fi + + AC_SUBST(MOC) + AC_SUBST(UIC) + + UIC_TR="i18n" + if test $kde_qtver = 3; then + UIC_TR="tr2i18n" + fi + + AC_SUBST(UIC_TR) +]) + +AC_DEFUN([KDE_1_CHECK_PATHS], +[ + KDE_1_CHECK_PATH_HEADERS + + KDE_TEST_RPATH= + + if test -n "$USE_RPATH"; then + + if test -n "$kde_libraries"; then + KDE_TEST_RPATH="-R $kde_libraries" + fi + + if test -n "$qt_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" + fi + + if test -n "$x_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" + fi + + KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" + fi + +AC_MSG_CHECKING([for KDE libraries installed]) +ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + AC_MSG_RESULT(yes) +else + AC_MSG_ERROR([your system fails at linking a small KDE application! +Check, if your compiler is installed correctly and if you have used the +same compiler to compile Qt and kdelibs as you did use now. +For more details about this problem, look at the end of config.log.]) +fi + +if eval `KDEDIR= ./conftest 2>&5`; then + kde_result=done +else + kde_result=problems +fi + +KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log +kde_have_all_paths=yes + +KDE_SET_PATHS($kde_result) + +]) + +AC_DEFUN([KDE_SET_PATHS], +[ + kde_cv_all_paths="kde_have_all_paths=\"yes\" \ + kde_htmldir=\"$kde_htmldir\" \ + kde_appsdir=\"$kde_appsdir\" \ + kde_icondir=\"$kde_icondir\" \ + kde_sounddir=\"$kde_sounddir\" \ + kde_datadir=\"$kde_datadir\" \ + kde_locale=\"$kde_locale\" \ + kde_cgidir=\"$kde_cgidir\" \ + kde_confdir=\"$kde_confdir\" \ + kde_kcfgdir=\"$kde_kcfgdir\" \ + kde_mimedir=\"$kde_mimedir\" \ + kde_toolbardir=\"$kde_toolbardir\" \ + kde_wallpaperdir=\"$kde_wallpaperdir\" \ + kde_templatesdir=\"$kde_templatesdir\" \ + kde_bindir=\"$kde_bindir\" \ + kde_servicesdir=\"$kde_servicesdir\" \ + kde_servicetypesdir=\"$kde_servicetypesdir\" \ + kde_moduledir=\"$kde_moduledir\" \ + kde_styledir=\"$kde_styledir\" \ + kde_widgetdir=\"$kde_widgetdir\" \ + xdg_appsdir=\"$xdg_appsdir\" \ + xdg_menudir=\"$xdg_menudir\" \ + xdg_directorydir=\"$xdg_directorydir\" \ + kde_result=$1" +]) + +AC_DEFUN([KDE_SET_DEFAULT_PATHS], +[ +if test "$1" = "default"; then + + if test -z "$kde_htmldir"; then + kde_htmldir='\${datadir}/doc/HTML' + fi + if test -z "$kde_appsdir"; then + kde_appsdir='\${datadir}/applnk' + fi + if test -z "$kde_icondir"; then + kde_icondir='\${datadir}/icons' + fi + if test -z "$kde_sounddir"; then + kde_sounddir='\${datadir}/sounds' + fi + if test -z "$kde_datadir"; then + kde_datadir='\${datadir}/apps' + fi + if test -z "$kde_locale"; then + kde_locale='\${datadir}/locale' + fi + if test -z "$kde_cgidir"; then + kde_cgidir='\${exec_prefix}/cgi-bin' + fi + if test -z "$kde_confdir"; then + kde_confdir='\${datadir}/config' + fi + if test -z "$kde_kcfgdir"; then + kde_kcfgdir='\${datadir}/config.kcfg' + fi + if test -z "$kde_mimedir"; then + kde_mimedir='\${datadir}/mimelnk' + fi + if test -z "$kde_toolbardir"; then + kde_toolbardir='\${datadir}/toolbar' + fi + if test -z "$kde_wallpaperdir"; then + kde_wallpaperdir='\${datadir}/wallpapers' + fi + if test -z "$kde_templatesdir"; then + kde_templatesdir='\${datadir}/templates' + fi + if test -z "$kde_bindir"; then + kde_bindir='\${exec_prefix}/bin' + fi + if test -z "$kde_servicesdir"; then + kde_servicesdir='\${datadir}/services' + fi + if test -z "$kde_servicetypesdir"; then + kde_servicetypesdir='\${datadir}/servicetypes' + fi + if test -z "$kde_moduledir"; then + if test "$kde_qtver" = "2"; then + kde_moduledir='\${libdir}/kde2' + else + kde_moduledir='\${libdir}/kde3' + fi + fi + if test -z "$kde_styledir"; then + kde_styledir='\${libdir}/kde3/plugins/styles' + fi + if test -z "$kde_widgetdir"; then + kde_widgetdir='\${libdir}/kde3/plugins/designer' + fi + if test -z "$xdg_appsdir"; then + xdg_appsdir='\${datadir}/applications/kde' + fi + if test -z "$xdg_menudir"; then + xdg_menudir='\${sysconfdir}/xdg/menus' + fi + if test -z "$xdg_directorydir"; then + xdg_directorydir='\${datadir}/desktop-directories' + fi + + KDE_SET_PATHS(defaults) + +else + + if test $kde_qtver = 1; then + AC_MSG_RESULT([compiling]) + KDE_1_CHECK_PATHS + else + AC_MSG_ERROR([path checking not yet supported for KDE 2]) + fi + +fi +]) + +AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS], +[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" || + test -z "$kde_icondir" || test -z "$kde_sounddir" || + test -z "$kde_datadir" || test -z "$kde_locale" || + test -z "$kde_cgidir" || test -z "$kde_confdir" || + test -z "$kde_kcfgdir" || + test -z "$kde_mimedir" || test -z "$kde_toolbardir" || + test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || + test -z "$kde_bindir" || test -z "$kde_servicesdir" || + test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || + test -z "$kde_styledir" || test -z "kde_widgetdir" || + test -z "$xdg_appsdir" || test -z "$xdg_menudir" || test -z "$xdg_directorydir" || + test "x$kde_have_all_paths" != "xyes"; then + kde_have_all_paths=no + fi +]) + +AC_DEFUN([KDE_MISSING_PROG_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed KDE correctly. +]) +]) + +AC_DEFUN([KDE_MISSING_ARTS_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed aRts correctly or use +--without-arts to compile without aRts support (this will remove functionality). +]) +]) + +AC_DEFUN([KDE_SUBST_PROGRAMS], +[ + AC_ARG_WITH(arts, + AC_HELP_STRING([--without-arts],[build without aRts [default=yes]]), + [build_arts=$withval], + [build_arts=yes] + ) + AM_CONDITIONAL(include_ARTS, test "$build_arts" != "no") + + kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin" + test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs" + if test -n "$KDEDIRS"; then + kde_save_IFS=$IFS + IFS=: + for dir in $KDEDIRS; do + kde_default_bindirs="$dir/bin $kde_default_bindirs " + done + IFS=$kde_save_IFS + fi + kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_default_bindirs" + KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)]) + KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)]) + if test "$build_arts" != "no"; then + KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)]) + KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)]) + fi + KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs]) + KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs]) + + kde32ornewer=1 + if test -n "$kde_qtver" && test "$kde_qtver" -lt 3; then + kde32ornewer= + else + if test "$kde_qtver" = "3" && test "$kde_qtsubver" -le 1; then + kde32ornewer= + fi + fi + + if test -n "$kde32ornewer"; then + KDE_FIND_PATH(kconfig_compiler, KCONFIG_COMPILER, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kconfig_compiler)]) + KDE_FIND_PATH(dcopidlng, DCOPIDLNG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidlng)]) + fi + KDE_FIND_PATH(xmllint, XMLLINT, [${prefix}/bin ${exec_prefix}/bin /usr/local/bin /opt/local/bin], [XMLLINT=""]) + + if test -n "$MEINPROC" && test ! "$MEINPROC" = "compiled"; then + kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share" + test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs" + AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET) + if test "$KDE_XSL_STYLESHEET" = "NO"; then + KDE_XSL_STYLESHEET="" + else + KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl" + fi + fi + + DCOP_DEPENDENCIES='$(DCOPIDL)' + if test -n "$kde32ornewer"; then + KCFG_DEPENDENCIES='$(KCONFIG_COMPILER)' + DCOP_DEPENDENCIES='$(DCOPIDL) $(DCOPIDLNG)' + AC_SUBST(KCONFIG_COMPILER) + AC_SUBST(KCFG_DEPENDENCIES) + AC_SUBST(DCOPIDLNG) + fi + AC_SUBST(DCOPIDL) + AC_SUBST(DCOPIDL2CPP) + AC_SUBST(DCOP_DEPENDENCIES) + AC_SUBST(MCOPIDL) + AC_SUBST(ARTSCCONFIG) + AC_SUBST(KDECONFIG) + AC_SUBST(MEINPROC) + AC_SUBST(KDE_XSL_STYLESHEET) + AC_SUBST(XMLLINT) + + if test -x "$KDECONFIG"; then # it can be "compiled" + kde_libs_prefix=`$KDECONFIG --prefix` + if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then + AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. + This means it has been moved since you installed it. + This won't work. Please recompile kdelibs for the new prefix. + ]) + fi + kde_libs_htmldir=`$KDECONFIG --install html --expandvars` + else + kde_libs_prefix='$(prefix)' + kde_libs_htmldir='$(kde_htmldir)' + fi + AC_SUBST(kde_libs_prefix) + AC_SUBST(kde_libs_htmldir) +])dnl + +AC_DEFUN([AC_CREATE_KFSSTND], +[ +AC_REQUIRE([AC_CHECK_RPATH]) + +AC_MSG_CHECKING([for KDE paths]) +kde_result="" +kde_cached_paths=yes +AC_CACHE_VAL(kde_cv_all_paths, +[ + KDE_SET_DEFAULT_PATHS($1) + kde_cached_paths=no +]) +eval "$kde_cv_all_paths" +KDE_CHECK_PATHS_FOR_COMPLETENESS +if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then + # wrong values were cached, may be, we can set better ones + kde_result= + kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir= + kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_kcfgdir= + kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir= + kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir= + kde_have_all_paths= + kde_styledir= + kde_widgetdir= + xdg_appsdir = xdg_menudir= xdg_directorydir= + KDE_SET_DEFAULT_PATHS($1) + eval "$kde_cv_all_paths" + KDE_CHECK_PATHS_FOR_COMPLETENESS + kde_result="$kde_result (cache overridden)" +fi +if test "$kde_have_all_paths" = "no"; then + AC_MSG_ERROR([configure could not run a little KDE program to test the environment. +Since it had compiled and linked before, it must be a strange problem on your system. +Look at config.log for details. If you are not able to fix this, look at +http://www.kde.org/faq/installation.html or any www.kde.org mirror. +(If you're using an egcs version on Linux, you may update binutils!) +]) +else + rm -f conftest* + AC_MSG_RESULT($kde_result) +fi + +bindir=$kde_bindir + +KDE_SUBST_PROGRAMS + +]) + +AC_DEFUN([AC_SUBST_KFSSTND], +[ +AC_SUBST(kde_htmldir) +AC_SUBST(kde_appsdir) +AC_SUBST(kde_icondir) +AC_SUBST(kde_sounddir) +AC_SUBST(kde_datadir) +AC_SUBST(kde_locale) +AC_SUBST(kde_confdir) +AC_SUBST(kde_kcfgdir) +AC_SUBST(kde_mimedir) +AC_SUBST(kde_wallpaperdir) +AC_SUBST(kde_bindir) +dnl X Desktop Group standards +AC_SUBST(xdg_appsdir) +AC_SUBST(xdg_menudir) +AC_SUBST(xdg_directorydir) +dnl for KDE 2 +AC_SUBST(kde_templatesdir) +AC_SUBST(kde_servicesdir) +AC_SUBST(kde_servicetypesdir) +AC_SUBST(kde_moduledir) +AC_SUBST(kdeinitdir, '$(kde_moduledir)') +AC_SUBST(kde_styledir) +AC_SUBST(kde_widgetdir) +if test "$kde_qtver" = 1; then + kde_minidir="$kde_icondir/mini" +else +# for KDE 1 - this breaks KDE2 apps using minidir, but +# that's the plan ;-/ + kde_minidir="/dev/null" +fi +dnl AC_SUBST(kde_minidir) +dnl AC_SUBST(kde_cgidir) +dnl AC_SUBST(kde_toolbardir) +]) + +AC_DEFUN([KDE_MISC_TESTS], +[ + dnl Checks for libraries. + AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD + AC_SUBST(LIBUTIL) + AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD + AC_SUBST(LIBCOMPAT) + kde_have_crypt= + AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes], + AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [ + AC_MSG_WARN([you have no crypt in either libcrypt or libc. +You should install libcrypt from another source or configure with PAM +support]) + kde_have_crypt=no + ])) + AC_SUBST(LIBCRYPT) + if test $kde_have_crypt = yes; then + AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function]) + fi + AC_CHECK_SOCKLEN_T + AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + AC_CHECK_LIB(dnet_stub, dnet_ntoa, + [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) + fi + AC_CHECK_FUNC(inet_ntoa) + if test $ac_cv_func_inet_ntoa = no; then + AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") + fi + AC_CHECK_FUNC(connect) + if test $ac_cv_func_connect = no; then + AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , + $X_EXTRA_LIBS) + fi + + AC_CHECK_FUNC(remove) + if test $ac_cv_func_remove = no; then + AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + AC_CHECK_FUNC(shmat, , + AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc")) + + # more headers that need to be explicitly included on darwin + AC_CHECK_HEADERS(sys/types.h stdint.h) + + # darwin requires a poll emulation library + AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll") + + # CoreAudio framework + AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [ + AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API]) + FRAMEWORK_COREAUDIO="-Xlinker -framework -Xlinker CoreAudio" + ]) + + AC_CHECK_RES_INIT + AC_SUBST(LIB_POLL) + AC_SUBST(FRAMEWORK_COREAUDIO) + LIBSOCKET="$X_EXTRA_LIBS" + AC_SUBST(LIBSOCKET) + AC_SUBST(X_EXTRA_LIBS) + AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4 + AC_SUBST(LIBUCB) + + case $host in dnl this *is* LynxOS specific + *-*-lynxos* ) + AC_MSG_CHECKING([LynxOS header file wrappers]) + [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"] + AC_MSG_RESULT(disabled) + AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS + ;; + esac + + KDE_CHECK_TYPES + KDE_CHECK_LIBDL + KDE_CHECK_STRLCPY + +# darwin needs this to initialize the environment +AC_CHECK_HEADERS(crt_externs.h) +AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])]) + +AH_VERBATIM(_DARWIN_ENVIRON, +[ +#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H) +# include +# include +# define environ (*_NSGetEnviron()) +#endif +]) + +AH_VERBATIM(_AIX_STRINGS_H_BZERO, +[ +/* + * AIX defines FD_SET in terms of bzero, but fails to include + * that defines bzero. + */ + +#if defined(_AIX) +#include +#endif +]) + +AC_CHECK_FUNCS([vsnprintf snprintf]) + +AH_VERBATIM(_TRU64,[ +/* + * On HP-UX, the declaration of vsnprintf() is needed every time ! + */ + +#if !defined(HAVE_VSNPRINTF) || defined(hpux) +#if __STDC__ +#include +#include +#else +#include +#endif +#ifdef __cplusplus +extern "C" +#endif +int vsnprintf(char *str, size_t n, char const *fmt, va_list ap); +#ifdef __cplusplus +extern "C" +#endif +int snprintf(char *str, size_t n, char const *fmt, ...); +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Find the header files and libraries for X-Windows. Extended the +dnl macro AC_PATH_X +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([K_PATH_X], +[ +AC_REQUIRE([KDE_MISC_TESTS])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_ARG_ENABLE( + embedded, + AC_HELP_STRING([--enable-embedded],[link to Qt-embedded, don't use X]), + kde_use_qt_emb=$enableval, + kde_use_qt_emb=no +) + +AC_ARG_ENABLE( + qtopia, + AC_HELP_STRING([--enable-qtopia],[link to Qt-embedded, link to the Qtopia Environment]), + kde_use_qt_emb_palm=$enableval, + kde_use_qt_emb_palm=no +) + +AC_ARG_ENABLE( + mac, + AC_HELP_STRING([--enable-mac],[link to Qt/Mac (don't use X)]), + kde_use_qt_mac=$enableval, + kde_use_qt_mac=no +) + +if test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no"; then + +AC_MSG_CHECKING(for X) + +AC_CACHE_VAL(kde_cv_have_x, +[# One or both of the vars are not set, and there is no cached value. +if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then + kde_x_includes=NO +else + kde_x_includes=$x_includes +fi +if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then + kde_x_libraries=NO +else + kde_x_libraries=$x_libraries +fi + +# below we use the standard autoconf calls +ac_x_libraries=$kde_x_libraries +ac_x_includes=$kde_x_includes + +KDE_PATH_X_DIRECT +dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries. +dnl Unfortunately, if compiling with the N32 ABI, this is not the correct +dnl location. The correct location is /usr/lib32 or an undefined value +dnl (the linker is smart enough to pick the correct default library). +dnl Things work just fine if you use just AC_PATH_X_DIRECT. +dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to +dnl /usr/openwin/include, which doesn't work. /usr/include does work, so +dnl x_includes should be left alone. +case "$host" in +mips-sgi-irix6*) + ;; +*-*-solaris*) + ;; +*) + _AC_PATH_X_XMKMF + if test -z "$ac_x_includes"; then + ac_x_includes="." + fi + if test -z "$ac_x_libraries"; then + ac_x_libraries="/usr/lib${kdelibsuff}" + fi +esac +#from now on we use our own again + +# when the user already gave --x-includes, we ignore +# what the standard autoconf macros told us. +if test "$kde_x_includes" = NO; then + kde_x_includes=$ac_x_includes +fi + +# for --x-libraries too +if test "$kde_x_libraries" = NO; then + kde_x_libraries=$ac_x_libraries +fi + +if test "$kde_x_includes" = NO; then + AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!]) +fi + +if test "$kde_x_libraries" = NO; then + AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!]) +fi + +# Record where we found X for the cache. +kde_cv_have_x="have_x=yes \ + kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries" +])dnl + +eval "$kde_cv_have_x" + +if test "$have_x" != yes; then + AC_MSG_RESULT($have_x) + no_x=yes +else + AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes]) +fi + +if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then + X_INCLUDES="" + x_includes="."; dnl better than nothing :- + else + x_includes=$kde_x_includes + X_INCLUDES="-I$x_includes" +fi + +if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then + X_LDFLAGS="" + x_libraries="/usr/lib"; dnl better than nothing :- + else + x_libraries=$kde_x_libraries + X_LDFLAGS="-L$x_libraries" +fi +all_includes="$X_INCLUDES" +all_libraries="$X_LDFLAGS" + +# Check for libraries that X11R6 Xt/Xaw programs need. +ac_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $X_LDFLAGS" +# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to +# check for ICE first), but we must link in the order -lSM -lICE or +# we get undefined symbols. So assume we have SM if we have ICE. +# These have to be linked with before -lX11, unlike the other +# libraries we check for below, so use a different variable. +# --interran@uluru.Stanford.EDU, kb@cs.umb.edu. +AC_CHECK_LIB(ICE, IceConnectionNumber, + [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS) +LDFLAGS="$ac_save_LDFLAGS" + +LIB_X11='-lX11 $(LIBSOCKET)' + +AC_MSG_CHECKING(for libXext) +AC_CACHE_VAL(kde_cv_have_libXext, +[ +kde_ldflags_safe="$LDFLAGS" +kde_libs_safe="$LIBS" + +LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" +LIBS="-lXext -lX11 $LIBSOCKET" + +AC_TRY_LINK([ +#include +#ifdef STDC_HEADERS +# include +#endif +], +[ +printf("hello Xext\n"); +], +kde_cv_have_libXext=yes, +kde_cv_have_libXext=no +) + +LDFLAGS=$kde_ldflags_safe +LIBS=$kde_libs_safe +]) + +AC_MSG_RESULT($kde_cv_have_libXext) + +if test "$kde_cv_have_libXext" = "no"; then + AC_MSG_ERROR([We need a working libXext to proceed. Since configure +can't find it itself, we stop here assuming that make wouldn't find +them either.]) +fi + +LIB_XEXT="-lXext" +QTE_NORTTI="" + +elif test "$kde_use_qt_emb" = "yes"; then + dnl We're using QT Embedded + CPPFLAGS=-DQWS + CXXFLAGS="$CXXFLAGS -fno-rtti" + QTE_NORTTI="-fno-rtti -DQWS" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +elif test "$kde_use_qt_mac" = "yes"; then + dnl We're using QT/Mac (I use QT_MAC so that qglobal.h doesn't *have* to + dnl be included to get the information) --Sam + CXXFLAGS="$CXXFLAGS -DQT_MAC -no-cpp-precomp" + CFLAGS="$CFLAGS -DQT_MAC -no-cpp-precomp" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +fi +AC_SUBST(X_PRE_LIBS) +AC_SUBST(LIB_X11) +AC_SUBST(LIB_XRENDER) +AC_SUBST(LIBSM) +AC_SUBST(X_INCLUDES) +AC_SUBST(X_LDFLAGS) +AC_SUBST(x_includes) +AC_SUBST(x_libraries) +AC_SUBST(QTE_NORTTI) +AC_SUBST(LIB_XEXT) + +]) + +AC_DEFUN([KDE_PRINT_QT_PROGRAM], +[ +AC_REQUIRE([KDE_USE_QT]) +cat > conftest.$ac_ext < +#include +EOF +if test "$kde_qtver" = "2"; then +cat >> conftest.$ac_ext < +#include +#include +EOF + +if test $kde_qtsubver -gt 0; then +cat >> conftest.$ac_ext <> conftest.$ac_ext < +#include +#include +EOF +fi + +echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext +cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC +fi + +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe" +export LD_LIBRARY_PATH +LIBRARY_PATH="$ac_LIBRARY_PATH" +export LIBRARY_PATH +AC_LANG_RESTORE +]) + +if test "$kde_cv_qt_direct" = "yes"; then + AC_MSG_RESULT(yes) + $1 +else + AC_MSG_RESULT(no) + $2 +fi +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the Qt headers and libraries. +dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed) +dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_1_3], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([KDE_USE_QT]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +dnl ------------------------------------------------------------------------ +dnl Add configure flag to enable linking to MT version of Qt library. +dnl ------------------------------------------------------------------------ + +AC_ARG_ENABLE( + mt, + AC_HELP_STRING([--disable-mt],[link to non-threaded Qt (deprecated)]), + kde_use_qt_mt=$enableval, + [ + if test $kde_qtver = 3; then + kde_use_qt_mt=yes + else + kde_use_qt_mt=no + fi + ] +) + +USING_QT_MT="" + +dnl ------------------------------------------------------------------------ +dnl If we not get --disable-qt-mt then adjust some vars for the host. +dnl ------------------------------------------------------------------------ + +KDE_MT_LDFLAGS= +KDE_MT_LIBS= +if test "x$kde_use_qt_mt" = "xyes"; then + KDE_CHECK_THREADING + if test "x$kde_use_threading" = "xyes"; then + CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS" + KDE_MT_LDFLAGS="$USE_THREADS" + KDE_MT_LIBS="$LIBPTHREAD" + else + kde_use_qt_mt=no + fi +fi +AC_SUBST(KDE_MT_LDFLAGS) +AC_SUBST(KDE_MT_LIBS) + +kde_qt_was_given=yes + +dnl ------------------------------------------------------------------------ +dnl If we haven't been told how to link to Qt, we work it out for ourselves. +dnl ------------------------------------------------------------------------ +if test -z "$LIBQT_GLOB"; then + if test "x$kde_use_qt_emb" = "xyes"; then + LIBQT_GLOB="libqte.*" + else + LIBQT_GLOB="libqt.*" + fi +fi + +if test -z "$LIBQT"; then +dnl ------------------------------------------------------------ +dnl If we got --enable-embedded then adjust the Qt library name. +dnl ------------------------------------------------------------ + if test "x$kde_use_qt_emb" = "xyes"; then + qtlib="qte" + else + qtlib="qt" + fi + + kde_int_qt="-l$qtlib" +else + kde_int_qt="$LIBQT" + kde_lib_qt_set=yes +fi + +if test -z "$LIBQPE"; then +dnl ------------------------------------------------------------ +dnl If we got --enable-palmtop then add -lqpe to the link line +dnl ------------------------------------------------------------ + if test "x$kde_use_qt_emb" = "xyes"; then + if test "x$kde_use_qt_emb_palm" = "xyes"; then + LIB_QPE="-lqpe" + else + LIB_QPE="" + fi + else + LIB_QPE="" + fi +fi + +dnl ------------------------------------------------------------------------ +dnl If we got --enable-qt-mt then adjust the Qt library name for the host. +dnl ------------------------------------------------------------------------ + +if test "x$kde_use_qt_mt" = "xyes"; then + if test -z "$LIBQT"; then + LIBQT="-l$qtlib-mt" + kde_int_qt="-l$qtlib-mt" + else + LIBQT="$qtlib-mt" + kde_int_qt="$qtlib-mt" + fi + LIBQT_GLOB="lib$qtlib-mt.*" + USING_QT_MT="using -mt" +else + LIBQT="-l$qtlib" +fi + +if test $kde_qtver != 1; then + + AC_REQUIRE([AC_FIND_PNG]) + AC_REQUIRE([AC_FIND_JPEG]) + LIBQT="$LIBQT $LIBPNG $LIBJPEG" +fi + +if test $kde_qtver = 3; then + AC_REQUIRE([KDE_CHECK_LIBDL]) + LIBQT="$LIBQT $LIBDL" +fi + +AC_MSG_CHECKING([for Qt]) + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET" +fi +ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO +qt_libraries="" +qt_includes="" +AC_ARG_WITH(qt-dir, + AC_HELP_STRING([--with-qt-dir=DIR],[where the root of Qt is installed ]), + [ ac_qt_includes="$withval"/include + ac_qt_libraries="$withval"/lib${kdelibsuff} + ac_qt_bindir="$withval"/bin + ]) + +AC_ARG_WITH(qt-includes, + AC_HELP_STRING([--with-qt-includes=DIR],[where the Qt includes are. ]), + [ + ac_qt_includes="$withval" + ]) + +kde_qt_libs_given=no + +AC_ARG_WITH(qt-libraries, + AC_HELP_STRING([--with-qt-libraries=DIR],[where the Qt library is installed.]), + [ ac_qt_libraries="$withval" + kde_qt_libs_given=yes + ]) + +AC_CACHE_VAL(ac_cv_have_qt, +[#try to guess Qt locations + +qt_incdirs="" +for dir in $kde_qt_dirs; do + qt_incdirs="$qt_incdirs $dir/include $dir" +done +qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes" +if test ! "$ac_qt_includes" = "NO"; then + qt_incdirs="$ac_qt_includes $qt_incdirs" +fi + +if test "$kde_qtver" != "1"; then + kde_qt_header=qstyle.h +else + kde_qt_header=qglobal.h +fi + +AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir) +ac_qt_includes="$qt_incdir" + +qt_libdirs="" +for dir in $kde_qt_dirs; do + qt_libdirs="$qt_libdirs $dir/lib${kdelibsuff} $dir" +done +qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries" +if test ! "$ac_qt_libraries" = "NO"; then + qt_libdir=$ac_qt_libraries +else + qt_libdirs="$ac_qt_libraries $qt_libdirs" + # if the Qt was given, the chance is too big that libqt.* doesn't exist + qt_libdir=NONE + for dir in $qt_libdirs; do + try="ls -1 $dir/${LIBQT_GLOB}" + if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done +fi +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIBQT="$LIBQT ${kde_int_qt}_incremental" + break + fi +done + +ac_qt_libraries="$qt_libdir" + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +ac_cxxflags_safe="$CXXFLAGS" +ac_ldflags_safe="$LDFLAGS" +ac_libs_safe="$LIBS" + +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" +LIBS="$LIBS $LIBQT $KDE_MT_LIBS" + +KDE_PRINT_QT_PROGRAM + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC + ac_qt_libraries="NO" +fi +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +AC_LANG_RESTORE +if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then + ac_cv_have_qt="have_qt=no" + ac_qt_notfound="" + missing_qt_mt="" + if test "$ac_qt_includes" = NO; then + if test "$ac_qt_libraries" = NO; then + ac_qt_notfound="(headers and libraries)"; + else + ac_qt_notfound="(headers)"; + fi + else + if test "x$kde_use_qt_mt" = "xyes"; then + missing_qt_mt=" +Make sure that you have compiled Qt with thread support!" + ac_qt_notfound="(library $qtlib-mt)"; + else + ac_qt_notfound="(library $qtlib)"; + fi + fi + + AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! +For more details about this problem, look at the end of config.log.$missing_qt_mt]) +else + have_qt="yes" +fi +]) + +eval "$ac_cv_have_qt" + +if test "$have_qt" != yes; then + AC_MSG_RESULT([$have_qt]); +else + ac_cv_have_qt="have_qt=yes \ + ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries" + AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT]) + + qt_libraries="$ac_qt_libraries" + qt_includes="$ac_qt_includes" +fi + +if test ! "$kde_qt_libs_given" = "yes" && test ! "$kde_qtver" = 3; then + KDE_CHECK_QT_DIRECT(qt_libraries= ,[]) +fi + +AC_SUBST(qt_libraries) +AC_SUBST(qt_includes) + +if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then + QT_INCLUDES="" +else + QT_INCLUDES="-I$qt_includes" + all_includes="$QT_INCLUDES $all_includes" +fi + +if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then + QT_LDFLAGS="" +else + QT_LDFLAGS="-L$qt_libraries" + all_libraries="$all_libraries $QT_LDFLAGS" +fi +test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS" + +AC_SUBST(QT_INCLUDES) +AC_SUBST(QT_LDFLAGS) +AC_PATH_QT_MOC_UIC + +KDE_CHECK_QT_JPEG + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM)' +else +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG)' +fi +test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS" +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIB_QT="$LIB_QT ${kde_int_qt}_incremental" + break + fi +done + +AC_SUBST(LIB_QT) +AC_SUBST(LIB_QPE) + +AC_SUBST(kde_qtver) +]) + +AC_DEFUN([AC_PATH_QT], +[ +AC_PATH_QT_1_3 +]) + +AC_DEFUN([KDE_CHECK_UIC_PLUGINS], +[ +AC_REQUIRE([AC_PATH_QT_MOC_UIC]) + +if test x$ac_uic_supports_libpath = xyes; then + +AC_MSG_CHECKING([if UIC has KDE plugins available]) +AC_CACHE_VAL(kde_cv_uic_plugins, +[ +cat > actest.ui << EOF + +NewConnectionDialog + + + + testInput + + + + +EOF + + + +kde_cv_uic_plugins=no +kde_line="$UIC_PATH -L $kde_widgetdir" +if test x$ac_uic_supports_nounload = xyes; then + kde_line="$kde_line -nounload" +fi +kde_line="$kde_line -impl actest.h actest.ui > actest.cpp" +if AC_TRY_EVAL(kde_line); then + # if you're trying to debug this check and think it's incorrect, + # better check your installation. The check _is_ correct - your + # installation is not. + if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then + kde_cv_uic_plugins=yes + fi +fi +rm -f actest.ui actest.cpp +]) + +AC_MSG_RESULT([$kde_cv_uic_plugins]) +if test "$kde_cv_uic_plugins" != yes; then + AC_MSG_ERROR([you need to install kdelibs first.]) +fi +fi +]) + +AC_DEFUN([KDE_CHECK_FINAL], +[ + AC_ARG_ENABLE(final, + AC_HELP_STRING([--enable-final], + [build size optimized apps (experimental - needs lots of memory)]), + kde_use_final=$enableval, kde_use_final=no) + + if test "x$kde_use_final" = "xyes"; then + KDE_USE_FINAL_TRUE="" + KDE_USE_FINAL_FALSE="#" + else + KDE_USE_FINAL_TRUE="#" + KDE_USE_FINAL_FALSE="" + fi + AC_SUBST(KDE_USE_FINAL_TRUE) + AC_SUBST(KDE_USE_FINAL_FALSE) +]) + +AC_DEFUN([KDE_CHECK_CLOSURE], +[ + AC_ARG_ENABLE(closure, + AC_HELP_STRING([--enable-closure],[delay template instantiation]), + kde_use_closure=$enableval, kde_use_closure=no) + + KDE_NO_UNDEFINED="" + if test "x$kde_use_closure" = "xyes"; then + KDE_USE_CLOSURE_TRUE="" + KDE_USE_CLOSURE_FALSE="#" +# CXXFLAGS="$CXXFLAGS $REPO" + else + KDE_USE_CLOSURE_TRUE="#" + KDE_USE_CLOSURE_FALSE="" + KDE_NO_UNDEFINED="" + case $host in + *-*-linux-gnu) + KDE_CHECK_COMPILER_FLAG([Wl,--no-undefined], + [KDE_CHECK_COMPILER_FLAG([Wl,--allow-shlib-undefined], + [KDE_NO_UNDEFINED="-Wl,--no-undefined -Wl,--allow-shlib-undefined"], + [KDE_NO_UNDEFINED=""])], + [KDE_NO_UNDEFINED=""]) + ;; + esac + fi + AC_SUBST(KDE_USE_CLOSURE_TRUE) + AC_SUBST(KDE_USE_CLOSURE_FALSE) + AC_SUBST(KDE_NO_UNDEFINED) +]) + +AC_DEFUN([KDE_CHECK_NMCHECK], +[ + AC_ARG_ENABLE(nmcheck,AC_HELP_STRING([--enable-nmcheck],[enable automatic namespace cleanness check]), + kde_use_nmcheck=$enableval, kde_use_nmcheck=no) + + if test "$kde_use_nmcheck" = "yes"; then + KDE_USE_NMCHECK_TRUE="" + KDE_USE_NMCHECK_FALSE="#" + else + KDE_USE_NMCHECK_TRUE="#" + KDE_USE_NMCHECK_FALSE="" + fi + AC_SUBST(KDE_USE_NMCHECK_TRUE) + AC_SUBST(KDE_USE_NMCHECK_FALSE) +]) + +AC_DEFUN([KDE_EXPAND_MAKEVAR], [ +savex=$exec_prefix +test "x$exec_prefix" = xNONE && exec_prefix=$prefix +tmp=$$2 +while $1=`eval echo "$tmp"`; test "x$$1" != "x$tmp"; do tmp=$$1; done +exec_prefix=$savex +]) + +dnl ------------------------------------------------------------------------ +dnl Now, the same with KDE +dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed) +dnl and $(kde_includes) will be the kdehdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_BASE_PATH_KDE], +[ +AC_REQUIRE([KDE_CHECK_STL]) +AC_REQUIRE([AC_PATH_QT])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_CHECK_RPATH +AC_MSG_CHECKING([for KDE]) + +if test "${prefix}" != NONE; then + kde_includes=${includedir} + KDE_EXPAND_MAKEVAR(ac_kde_includes, includedir) + + kde_libraries=${libdir} + KDE_EXPAND_MAKEVAR(ac_kde_libraries, libdir) + +else + ac_kde_includes= + ac_kde_libraries= + kde_libraries="" + kde_includes="" +fi + +AC_CACHE_VAL(ac_cv_have_kde, +[#try to guess kde locations + +if test "$kde_qtver" = 1; then + kde_check_header="ksock.h" + kde_check_lib="libkdecore.la" +else + kde_check_header="ksharedptr.h" + kde_check_lib="libkio.la" +fi + +if test -z "$1"; then + +kde_incdirs="/usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes" +test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs" +kde_incdirs="$ac_kde_includes $kde_incdirs" +AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir) +ac_kde_includes="$kde_incdir" + +if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then + AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE headers installed. This will fail. +So, check this please and use another prefix!]) +fi + +kde_libdirs="/usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}" +test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs" +kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs" +AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir) +ac_kde_libraries="$kde_libdir" + +kde_widgetdir=NO +dnl this might be somewhere else +AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir) + +if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then +AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE libraries installed. This will fail. +So, check this please and use another prefix!]) +fi + +if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then +AC_MSG_ERROR([ +I can't find the designer plugins. These are required and should have been installed +by kdelibs]) +fi + +if test -n "$kde_widgetdir"; then + kde_widgetdir="$kde_widgetdir/kde3/plugins/designer" +fi + + +if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then + ac_cv_have_kde="have_kde=no" +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" +fi + +else dnl test -z $1 + + ac_cv_have_kde="have_kde=no" + +fi +])dnl + +eval "$ac_cv_have_kde" + +if test "$have_kde" != "yes"; then + if test "${prefix}" = NONE; then + ac_kde_prefix="$ac_default_prefix" + else + ac_kde_prefix="$prefix" + fi + if test "$exec_prefix" = NONE; then + ac_kde_exec_prefix="$ac_kde_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix]) + else + ac_kde_exec_prefix="$exec_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix]) + fi + + kde_libraries="${libdir}" + kde_includes="${includedir}" + +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" + AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes]) + + kde_libraries="$ac_kde_libraries" + kde_includes="$ac_kde_includes" +fi +AC_SUBST(kde_libraries) +AC_SUBST(kde_includes) + +if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then + KDE_INCLUDES="" +else + KDE_INCLUDES="-I$kde_includes" + all_includes="$KDE_INCLUDES $all_includes" +fi + +KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION" + +KDE_LDFLAGS="-L$kde_libraries" +if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then + all_libraries="$all_libraries $KDE_LDFLAGS" +fi + +AC_SUBST(KDE_LDFLAGS) +AC_SUBST(KDE_INCLUDES) + +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +all_libraries="$all_libraries $USER_LDFLAGS" +all_includes="$all_includes $USER_INCLUDES" +AC_SUBST(all_includes) +AC_SUBST(all_libraries) + +if test -z "$1"; then +KDE_CHECK_UIC_PLUGINS +fi + +ac_kde_libraries="$kde_libdir" + +AC_SUBST(AUTODIRS) + + +]) + +AC_DEFUN([KDE_CHECK_EXTRA_LIBS], +[ +AC_MSG_CHECKING(for extra includes) +AC_ARG_WITH(extra-includes,AC_HELP_STRING([--with-extra-includes=DIR],[adds non standard include paths]), + kde_use_extra_includes="$withval", + kde_use_extra_includes=NONE +) +kde_extra_includes= +if test -n "$kde_use_extra_includes" && \ + test "$kde_use_extra_includes" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_includes; do + kde_extra_includes="$kde_extra_includes $dir" + USER_INCLUDES="$USER_INCLUDES -I$dir" + done + IFS=$ac_save_ifs + kde_use_extra_includes="added" +else + kde_use_extra_includes="no" +fi +AC_SUBST(USER_INCLUDES) + +AC_MSG_RESULT($kde_use_extra_includes) + +kde_extra_libs= +AC_MSG_CHECKING(for extra libs) +AC_ARG_WITH(extra-libs,AC_HELP_STRING([--with-extra-libs=DIR],[adds non standard library paths]), + kde_use_extra_libs=$withval, + kde_use_extra_libs=NONE +) +if test -n "$kde_use_extra_libs" && \ + test "$kde_use_extra_libs" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_libs; do + kde_extra_libs="$kde_extra_libs $dir" + KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir" + USER_LDFLAGS="$USER_LDFLAGS -L$dir" + done + IFS=$ac_save_ifs + kde_use_extra_libs="added" +else + kde_use_extra_libs="no" +fi + +AC_SUBST(USER_LDFLAGS) + +AC_MSG_RESULT($kde_use_extra_libs) + +]) + +AC_DEFUN([KDE_1_CHECK_PATH_HEADERS], +[ + AC_MSG_CHECKING([for KDE headers installed]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS +cat > conftest.$ac_ext < +#endif +#include +#include "confdefs.h" +#include + +int main() { + printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); + printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); + printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); + printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); + printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); + printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); + printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); + printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); + printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); + printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); + printf("kde_wallpaperdir=\\"%s\\"\n", + KApplication::kde_wallpaperdir().data()); + printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); + printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); + printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); + printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); + printf("kde_moduledir=\\"/tmp/dummy\\"\n"); + printf("kde_styledir=\\"/tmp/dummy\\"\n"); + printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); + printf("xdg_appsdir=\\"/tmp/dummy\\"\n"); + printf("xdg_menudir=\\"/tmp/dummy\\"\n"); + printf("xdg_directorydir=\\"/tmp/dummy\\"\n"); + printf("kde_kcfgdir=\\"/tmp/dummy\\"\n"); + return 0; + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$all_includes $CPPFLAGS" + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + else + AC_MSG_ERROR([your system is not able to compile a small KDE application! +Check, if you installed the KDE header files correctly. +For more details about this problem, look at the end of config.log.]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_CHECK_KDEQTADDON], +[ +AC_MSG_CHECKING(for kde-qt-addon) +AC_CACHE_VAL(kde_cv_have_kdeqtaddon, +[ + kde_ldflags_safe="$LDFLAGS" + kde_libs_safe="$LIBS" + kde_cxxflags_safe="$CXXFLAGS" + + LIBS="-lkde-qt-addon $LIBQT $LIBS" + CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes" + LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS" + + AC_TRY_LINK([ + #include + ], + [ + QDomDocument doc; + ], + kde_cv_have_kdeqtaddon=yes, + kde_cv_have_kdeqtaddon=no + ) + + LDFLAGS=$kde_ldflags_safe + LIBS=$kde_libs_safe + CXXFLAGS=$kde_cxxflags_safe +]) + +AC_MSG_RESULT($kde_cv_have_kdeqtaddon) + +if test "$kde_cv_have_kdeqtaddon" = "no"; then + AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first. +It is a separate package (and CVS module) named kde-qt-addon.]) +fi +]) + +AC_DEFUN([KDE_CREATE_LIBS_ALIASES], +[ + AC_REQUIRE([KDE_MISC_TESTS]) + AC_REQUIRE([KDE_CHECK_LIBDL]) + AC_REQUIRE([K_PATH_X]) + +if test $kde_qtver = 3; then + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KABC, "-lkabc") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") + AC_SUBST(LIB_KUTILS, "-lkutils") + AC_SUBST(LIB_KDEPIM, "-lkdepim") +# these are for backward compatibility + AC_SUBST(LIB_KSYCOCA, "-lkio") + AC_SUBST(LIB_KFILE, "-lkio") +elif test $kde_qtver = 2; then + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_KSYCOCA, "-lksycoca") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KFILE, "-lkfile") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") +else + AC_SUBST(LIB_KDECORE, "-lkdecore -lXext $(LIB_QT)") + AC_SUBST(LIB_KDEUI, "-lkdeui $(LIB_KDECORE)") + AC_SUBST(LIB_KFM, "-lkfm $(LIB_KDECORE)") + AC_SUBST(LIB_KFILE, "-lkfile $(LIB_KFM) $(LIB_KDEUI)") + AC_SUBST(LIB_KAB, "-lkab $(LIB_KIMGIO) $(LIB_KDECORE)") +fi +]) + +AC_DEFUN([AC_PATH_KDE], +[ + AC_BASE_PATH_KDE + AC_ARG_ENABLE(path-check,AC_HELP_STRING([--disable-path-check],[don't try to find out, where to install]), + [ + if test "$enableval" = "no"; + then ac_use_path_checking="default" + else ac_use_path_checking="" + fi + ], + [ + if test "$kde_qtver" = 1; + then ac_use_path_checking="" + else ac_use_path_checking="default" + fi + ] + ) + + AC_CREATE_KFSSTND($ac_use_path_checking) + + AC_SUBST_KFSSTND + KDE_CREATE_LIBS_ALIASES +]) + +dnl KDE_CHECK_FUNC_EXT(, [headers], [sample-use], [C prototype], [autoheader define], [call if found]) +AC_DEFUN([KDE_CHECK_FUNC_EXT], +[ +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(kde_cv_func_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +save_CXXFLAGS="$CXXFLAGS" +kde_safe_LIBS="$LIBS" +LIBS="$LIBS $X_EXTRA_LIBS" +if test "$GXX" = "yes"; then +CXXFLAGS="$CXXFLAGS -pedantic-errors" +fi +AC_TRY_COMPILE([ +$2 +], +[ +$3 +], +kde_cv_func_$1=yes, +kde_cv_func_$1=no) +CXXFLAGS="$save_CXXFLAGS" +LIBS="$kde_safe_LIBS" +AC_LANG_RESTORE +]) + +AC_MSG_RESULT($kde_cv_func_$1) + +AC_MSG_CHECKING([if $1 needs custom prototype]) +AC_CACHE_VAL(kde_cv_proto_$1, +[ +if test "x$kde_cv_func_$1" = xyes; then + kde_cv_proto_$1=no +else + case "$1" in + setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat) + kde_cv_proto_$1="yes - in libkdefakes" + ;; + *) + kde_cv_proto_$1=unknown + ;; + esac +fi + +if test "x$kde_cv_proto_$1" = xunknown; then + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + kde_safe_libs=$LIBS + LIBS="$LIBS $X_EXTRA_LIBS" + AC_TRY_LINK([ +$2 + +extern "C" $4; +], +[ +$3 +], +[ kde_cv_func_$1=yes + kde_cv_proto_$1=yes ], + [kde_cv_proto_$1="$1 unavailable"] +) +LIBS=$kde_safe_libs +AC_LANG_RESTORE +fi +]) +AC_MSG_RESULT($kde_cv_proto_$1) + +if test "x$kde_cv_func_$1" = xyes; then + AC_DEFINE(HAVE_$5, 1, [Define if you have $1]) + $6 +fi +if test "x$kde_cv_proto_$1" = xno; then + AC_DEFINE(HAVE_$5_PROTO, 1, + [Define if you have the $1 prototype]) +fi + +AH_VERBATIM([_HAVE_$5_PROTO], +[ +#if !defined(HAVE_$5_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +$4; +#ifdef __cplusplus +} +#endif +#endif +]) +]) + +AC_DEFUN([AC_CHECK_SETENV], +[ + KDE_CHECK_FUNC_EXT(setenv, [ +#include +], + [setenv("VAR", "VALUE", 1);], + [int setenv (const char *, const char *, int)], + [SETENV]) +]) + +AC_DEFUN([AC_CHECK_UNSETENV], +[ + KDE_CHECK_FUNC_EXT(unsetenv, [ +#include +], + [unsetenv("VAR");], + [void unsetenv (const char *)], + [UNSETENV]) +]) + +AC_DEFUN([AC_CHECK_GETDOMAINNAME], +[ + KDE_CHECK_FUNC_EXT(getdomainname, [ +#include +#include +#include +], + [ +char buffer[200]; +getdomainname(buffer, 200); +], + [#include + int getdomainname (char *, size_t)], + [GETDOMAINNAME]) +]) + +AC_DEFUN([AC_CHECK_GETHOSTNAME], +[ + KDE_CHECK_FUNC_EXT(gethostname, [ +#include +#include +], + [ +char buffer[200]; +gethostname(buffer, 200); +], + [int gethostname (char *, unsigned int)], + [GETHOSTNAME]) +]) + +AC_DEFUN([AC_CHECK_USLEEP], +[ + KDE_CHECK_FUNC_EXT(usleep, [ +#include +], + [ +usleep(200); +], + [int usleep (unsigned int)], + [USLEEP]) +]) + + +AC_DEFUN([AC_CHECK_RANDOM], +[ + KDE_CHECK_FUNC_EXT(random, [ +#include +], + [ +random(); +], + [long int random(void)], + [RANDOM]) + + KDE_CHECK_FUNC_EXT(srandom, [ +#include +], + [ +srandom(27); +], + [void srandom(unsigned int)], + [SRANDOM]) + +]) + +AC_DEFUN([AC_CHECK_INITGROUPS], +[ + KDE_CHECK_FUNC_EXT(initgroups, [ +#include +#include +#include +], + [ +char buffer[200]; +initgroups(buffer, 27); +], + [int initgroups(const char *, gid_t)], + [INITGROUPS]) +]) + +AC_DEFUN([AC_CHECK_MKSTEMPS], +[ + KDE_CHECK_FUNC_EXT(mkstemps, [ +#include +#include +], + [ +mkstemps("/tmp/aaaXXXXXX", 6); +], + [int mkstemps(char *, int)], + [MKSTEMPS]) +]) + +AC_DEFUN([AC_CHECK_MKDTEMP], +[ + KDE_CHECK_FUNC_EXT(mkdtemp, [ +#include +#include +], + [ +mkdtemp("/tmp/aaaXXXXXX"); +], + [char *mkdtemp(char *)], + [MKDTEMP]) +]) + + +AC_DEFUN([AC_CHECK_RES_INIT], +[ + AC_MSG_CHECKING([if res_init needs -lresolv]) + kde_libs_safe="$LIBS" + LIBS="$LIBS $X_EXTRA_LIBS -lresolv" + AC_TRY_LINK( + [ +#include +#include +#include +#include + ], + [ + res_init(); + ], + [ + LIBRESOLV="-lresolv" + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) + ], + [ AC_MSG_RESULT(no) ] + ) + LIBS=$kde_libs_safe + AC_SUBST(LIBRESOLV) + + AC_MSG_CHECKING([if res_init is available]) + AC_TRY_COMPILE( + [ +#include +#include +#include +#include + ], + [ + res_init(); + ], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) + ], + [ AC_MSG_RESULT(no) ] + ) +]) + +AC_DEFUN([AC_CHECK_STRLCPY], +[ + KDE_CHECK_FUNC_EXT(strlcpy, [ +#include +], +[ char buf[20]; + strlcpy(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcpy(char*, const char*, unsigned long)], + [STRLCPY]) +]) + +AC_DEFUN([AC_CHECK_STRLCAT], +[ + KDE_CHECK_FUNC_EXT(strlcat, [ +#include +], +[ char buf[20]; + buf[0]='\0'; + strlcat(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcat(char*, const char*, unsigned long)], + [STRLCAT]) +]) + +AC_DEFUN([AC_FIND_GIF], + [AC_MSG_CHECKING([for giflib]) +AC_CACHE_VAL(ac_cv_lib_gif, +[ac_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries -lgif -lX11 $LIBSOCKET" +else +LIBS="$all_libraries -lgif" +fi +AC_TRY_LINK(dnl +[ +#ifdef __cplusplus +extern "C" { +#endif +int GifLastError(void); +#ifdef __cplusplus +} +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +], + [return GifLastError();], + eval "ac_cv_lib_gif=yes", + eval "ac_cv_lib_gif=no") +LIBS="$ac_save_LIBS" +])dnl +if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif]) +else + AC_MSG_ERROR(You need giflib30. Please install the kdesupport package) +fi +]) + +AC_DEFUN([KDE_FIND_JPEG_HELPER], +[ +AC_MSG_CHECKING([for libjpeg$2]) +AC_CACHE_VAL(ac_cv_lib_jpeg_$1, +[ +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm" +ac_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[/* Override any gcc2 internal prototype to avoid an error. */ +struct jpeg_decompress_struct; +typedef struct jpeg_decompress_struct * j_decompress_ptr; +typedef int size_t; +#ifdef __cplusplus +extern "C" { +#endif + void jpeg_CreateDecompress(j_decompress_ptr cinfo, + int version, size_t structsize); +#ifdef __cplusplus +} +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +], + [jpeg_CreateDecompress(0L, 0, 0);], + eval "ac_cv_lib_jpeg_$1=-ljpeg$2", + eval "ac_cv_lib_jpeg_$1=no") +LIBS="$ac_save_LIBS" +CFLAGS="$ac_save_CFLAGS" +]) + +if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then + LIBJPEG="$ac_cv_lib_jpeg_$1" + AC_MSG_RESULT($ac_cv_lib_jpeg_$1) +else + AC_MSG_RESULT(no) + $3 +fi + +]) + +AC_DEFUN([AC_FIND_JPEG], +[ +dnl first look for libraries +KDE_FIND_JPEG_HELPER(6b, 6b, + KDE_FIND_JPEG_HELPER(normal, [], + [ + LIBJPEG= + ] + ) +) + +dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h +dnl requires system dependent includes loaded before it) +jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes" +AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir) +test "x$jpeg_incdir" = xNO && jpeg_incdir= + +dnl if headers _and_ libraries are missing, this is no error, and we +dnl continue with a warning (the user will get no jpeg support in khtml) +dnl if only one is missing, it means a configuration error, but we still +dnl only warn +if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then + AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg]) +else + if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then + AC_MSG_WARN([ +There is an installation error in jpeg support. You seem to have only one +of either the headers _or_ the libraries installed. You may need to either +provide correct --with-extra-... options, or the development package of +libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ +Disabling JPEG support. +]) + else + AC_MSG_WARN([libjpeg not found. disable JPEG support.]) + fi + jpeg_incdir= + LIBJPEG= +fi + +AC_SUBST(LIBJPEG) +AH_VERBATIM(_AC_CHECK_JPEG, +[/* + * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system + * headers and I'm too lazy to write a configure test as long as only + * unixware is related + */ +#ifdef _UNIXWARE +#define HAVE_BOOLEAN +#endif +]) +]) + +AC_DEFUN([KDE_CHECK_QT_JPEG], +[ +if test -n "$LIBJPEG"; then +AC_MSG_CHECKING([if Qt needs $LIBJPEG]) +AC_CACHE_VAL(kde_cv_qt_jpeg, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS $LIBQT" +LIBS=`echo $LIBS | sed "s/$LIBJPEG//"` +ac_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[#include ], + [ + int argc; + char** argv; + QApplication app(argc, argv);], + eval "kde_cv_qt_jpeg=no", + eval "kde_cv_qt_jpeg=yes") +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +fi +]) + +if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then + AC_MSG_RESULT(yes) + LIBJPEG_QT='$(LIBJPEG)' +else + AC_MSG_RESULT(no) + LIBJPEG_QT= +fi + +]) + +AC_DEFUN([AC_FIND_ZLIB], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for libz]) +AC_CACHE_VAL(ac_cv_lib_z, +[ +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#include +], +[ + char buf[42]; + gzFile f = (gzFile) 0; + /* this would segfault.. but we only link, don't run */ + (void) gzgets(f, buf, sizeof(buf)); + + return (zlibVersion() == ZLIB_VERSION); +], + eval "ac_cv_lib_z='-lz'", + eval "ac_cv_lib_z=no") +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if test ! "$ac_cv_lib_z" = no; then + AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz]) + LIBZ="$ac_cv_lib_z" + AC_MSG_RESULT($ac_cv_lib_z) +else + AC_MSG_ERROR(not found. + Possibly configure picks up an outdated version + installed by XFree86. Remove it from your system. + + Check your installation and look into config.log) + LIBZ="" +fi +AC_SUBST(LIBZ) +]) + +AC_DEFUN([KDE_TRY_TIFFLIB], +[ +AC_MSG_CHECKING([for libtiff $1]) + +AC_CACHE_VAL(kde_cv_libtiff_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm" +else +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm" +fi +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl +[ +#include +], + [return (TIFFOpen( "", "r") == 0); ], +[ + kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ" +], [ + kde_cv_libtiff_$1=no +]) + +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +]) + +if test "$kde_cv_libtiff_$1" = "no"; then + AC_MSG_RESULT(no) + LIBTIFF="" + $3 +else + LIBTIFF="$kde_cv_libtiff_$1" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff]) + $2 +fi + +]) + +AC_DEFUN([AC_FIND_TIFF], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +KDE_TRY_TIFFLIB(tiff, [], + KDE_TRY_TIFFLIB(tiff34)) + +AC_SUBST(LIBTIFF) +]) + + +AC_DEFUN([AC_FIND_PNG], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_MSG_CHECKING([for libpng]) +AC_CACHE_VAL(ac_cv_lib_png, +[ +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET" +else +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm" +fi +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + png_structp png_ptr = png_create_read_struct( /* image ptr */ + PNG_LIBPNG_VER_STRING, 0, 0, 0 ); + return( png_ptr != 0 ); + ], + eval "ac_cv_lib_png='-lpng $LIBZ -lm'", + eval "ac_cv_lib_png=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng]) + LIBPNG="$ac_cv_lib_png" + AC_SUBST(LIBPNG) + AC_MSG_RESULT($ac_cv_lib_png) +else + AC_MSG_RESULT(no) + LIBPNG="" + AC_SUBST(LIBPNG) +fi +]) + + +AC_DEFUN([AC_FIND_JASPER], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_MSG_CHECKING([for jasper]) +AC_CACHE_VAL(ac_cv_jasper, +[ +kde_save_LIBS="$LIBS" +LIBS="$LIBS $all_libraries $USER_LDFLAGS -ljasper $LIBJPEG -lm" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + return( jas_init() ); + ], + eval "ac_cv_jasper='-ljasper $LIBJPEG -lm'", + eval "ac_cv_jasper=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_jasper`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_JASPER, 1, [Define if you have jasper]) + LIB_JASPER="$ac_cv_jasper" + AC_MSG_RESULT($ac_cv_jasper) +else + AC_MSG_RESULT(no) + LIB_JASPER="" +fi +AC_SUBST(LIB_JASPER) +]) + +AC_DEFUN([AC_CHECK_BOOL], +[ + AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool]) +]) + +AC_DEFUN([AC_CHECK_GNU_EXTENSIONS], +[ +AC_MSG_CHECKING(if you need GNU extensions) +AC_CACHE_VAL(ac_cv_gnu_extensions, +[ +cat > conftest.c << EOF +#include + +#ifdef __GNU_LIBRARY__ +yes +#endif +EOF + +if (eval "$ac_cpp conftest.c") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_gnu_extensions=yes +else + ac_cv_gnu_extensions=no +fi +]) + +AC_MSG_RESULT($ac_cv_gnu_extensions) +if test "$ac_cv_gnu_extensions" = "yes"; then + AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions]) +fi +]) + +AC_DEFUN([KDE_CHECK_COMPILER_FLAG], +[ +AC_MSG_CHECKING([whether $CXX supports -$1]) +kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'` +AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -$1" + AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], []) + CXXFLAGS="$save_CXXFLAGS" + AC_LANG_RESTORE +]) +if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then + AC_MSG_RESULT(yes) + : + $2 +else + AC_MSG_RESULT(no) + : + $3 +fi +]) + +dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables +dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever]) +dnl it's all white-space separated +AC_DEFUN([AC_REMOVE_FORBIDDEN], +[ __val=$$1 + __forbid=" $2 " + if test -n "$__val"; then + __new="" + ac_save_IFS=$IFS + IFS=" " + for i in $__val; do + case "$__forbid" in + *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;; + *) # Careful to not add spaces, where there were none, because otherwise + # libtool gets confused, if we change e.g. CXX + if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;; + esac + done + IFS=$ac_save_IFS + $1=$__new + fi +]) + +dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given +AC_DEFUN([AC_VALIDIFY_CXXFLAGS], +[dnl +if test "x$kde_use_qt_emb" != "xyes"; then + AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath]) +else + AC_REMOVE_FORBIDDEN(CXX, [-rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath]) +fi +]) + +AC_DEFUN([AC_CHECK_COMPILERS], +[ + AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]), + [ + case $enableval in + yes) + kde_use_debug_code="yes" + kde_use_debug_define=no + ;; + full) + kde_use_debug_code="full" + kde_use_debug_define=no + ;; + *) + kde_use_debug_code="no" + kde_use_debug_define=yes + ;; + esac + ], + [kde_use_debug_code="no" + kde_use_debug_define=no + ]) + + dnl Just for configure --help + AC_ARG_ENABLE(dummyoption, + AC_HELP_STRING([--disable-debug], + [disables debug output and debug symbols [default=no]]), + [],[]) + + AC_ARG_ENABLE(strict, + AC_HELP_STRING([--enable-strict], + [compiles with strict compiler options (may not work!)]), + [ + if test $enableval = "no"; then + kde_use_strict_options="no" + else + kde_use_strict_options="yes" + fi + ], [kde_use_strict_options="no"]) + + AC_ARG_ENABLE(warnings,AC_HELP_STRING([--disable-warnings],[disables compilation with -Wall and similiar]), + [ + if test $enableval = "no"; then + kde_use_warnings="no" + else + kde_use_warnings="yes" + fi + ], [kde_use_warnings="yes"]) + + dnl enable warnings for debug build + if test "$kde_use_debug_code" != "no"; then + kde_use_warnings=yes + fi + + AC_ARG_ENABLE(profile,AC_HELP_STRING([--enable-profile],[creates profiling infos [default=no]]), + [kde_use_profiling=$enableval], + [kde_use_profiling="no"] + ) + + dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS + CFLAGS=" $CFLAGS" + + AC_PROG_CC + + AC_PROG_CPP + + if test "$GCC" = "yes"; then + if test "$kde_use_debug_code" != "no"; then + if test $kde_use_debug_code = "full"; then + CFLAGS="-g3 -fno-inline $CFLAGS" + else + CFLAGS="-g -O2 $CFLAGS" + fi + else + CFLAGS="-O2 $CFLAGS" + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CFLAGS="-DNDEBUG $CFLAGS" + fi + + + case "$host" in + *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";; + *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";; + esac + + if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then + LDFLAGS="" + fi + + CXXFLAGS=" $CXXFLAGS" + + AC_PROG_CXX + + if test "$GXX" = "yes" || test "$CXX" = "KCC"; then + if test "$kde_use_debug_code" != "no"; then + if test "$CXX" = "KCC"; then + CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS" + else + if test "$kde_use_debug_code" = "full"; then + CXXFLAGS="-g3 -fno-inline $CXXFLAGS" + else + CXXFLAGS="-g -O2 $CXXFLAGS" + fi + fi + KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"]) + + dnl convenience compiler flags + KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""]) + AC_SUBST(WOVERLOADED_VIRTUAL) + else + if test "$CXX" = "KCC"; then + CXXFLAGS="+K3 $CXXFLAGS" + else + CXXFLAGS="-O2 $CXXFLAGS" + fi + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS" + fi + + if test "$kde_use_profiling" = "yes"; then + KDE_CHECK_COMPILER_FLAG(pg, + [ + CFLAGS="-pg $CFLAGS" + CXXFLAGS="-pg $CXXFLAGS" + ]) + fi + + if test "$kde_use_warnings" = "yes"; then + if test "$GCC" = "yes"; then + case $host in + *-*-linux-gnu) + CFLAGS="-ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS" + CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts $CXXFLAGS" + KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"; CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"]) + ;; + esac + CXXFLAGS="-Wall -W -Wpointer-arith -Wwrite-strings $CXXFLAGS" + KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"]) + KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"]) + KDE_CHECK_COMPILER_FLAG(Wnon-virtual-dtor,[CXXFLAGS="-Wnon-virtual-dtor $CXXFLAGS"]) + fi + fi + + if test "$GXX" = "yes" && test "$kde_use_strict_options" = "yes"; then + CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS" + fi + + if test "$GXX" = "yes"; then + KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"]) + KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"]) + KDE_CHECK_COMPILER_FLAG(fno-common, [CXXFLAGS="$CXXFLAGS -fno-common"]) + KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= ) + fi + if test "$CXX" = "KCC"; then + dnl unfortunately we currently cannot disable exception support in KCC + dnl because doing so is binary incompatible and Qt by default links with exceptions :-( + dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"]) + dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= ) + + AC_ARG_ENABLE(pch, + AC_HELP_STRING([--enable-pch], + [enables precompiled header support (currently only KCC) [default=no]]), + [ + kde_use_pch=$enableval + ],[kde_use_pch=no]) + + if test "$kde_use_pch" = "yes"; then + dnl TODO: support --pch-dir! + KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"]) + dnl the below works (but the dir must exist), but it's + dnl useless for a whole package. + dnl The are precompiled headers for each source file, so when compiling + dnl from scratch, it doesn't make a difference, and they take up + dnl around ~5Mb _per_ sourcefile. + dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp, + dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"]) + fi + dnl this flag controls inlining. by default KCC inlines in optimisation mode + dnl all implementations that are defined inside the class {} declaration. + dnl because of templates-compatibility with broken gcc compilers, this + dnl can cause excessive inlining. This flag limits it to a sane level + KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"]) + KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"]) + KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"]) + KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"]) + dnl Some source files are shared between multiple executables + dnl (or libraries) and some of those need template instantiations. + dnl In that case KCC needs to compile those sources with + dnl --one_instantiation_per_object. To make it easy for us we compile + dnl _all_ objects with that flag (--one_per is a shorthand). + KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"]) + fi + AC_SUBST(USE_EXCEPTIONS) + dnl obsolete macro - provided to keep things going + USE_RTTI= + AC_SUBST(USE_RTTI) + + case "$host" in + *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;; + *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";; + *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";; + *-*-solaris*) + if test "$GXX" = yes; then + libstdcpp=`$CXX -print-file-name=libstdc++.so` + if test ! -f $libstdcpp; then + AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so]) + fi + fi + ;; + esac + + AC_VALIDIFY_CXXFLAGS + + AC_PROG_CXXCPP + + if test "$GCC" = yes; then + NOOPT_CFLAGS=-O0 + fi + KDE_CHECK_COMPILER_FLAG(O0,[NOOPT_CXXFLAGS=-O0]) + + AC_SUBST(NOOPT_CXXFLAGS) + AC_SUBST(NOOPT_CFLAGS) + + KDE_CHECK_FINAL + KDE_CHECK_CLOSURE + KDE_CHECK_NMCHECK + + ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), []) +]) + +AC_DEFUN([KDE_ADD_DEPENDENCIES], +[ + [A]M_DEPENDENCIES(CC) + [A]M_DEPENDENCIES(CXX) +]) + +dnl just a wrapper to clean up configure.in +AC_DEFUN([KDE_PROG_LIBTOOL], +[ +AC_REQUIRE([AC_CHECK_COMPILERS]) +AC_REQUIRE([AC_ENABLE_SHARED]) +AC_REQUIRE([AC_ENABLE_STATIC]) + +AC_REQUIRE([AC_LIBTOOL_DLOPEN]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_OBJEXT +AC_EXEEXT + +AM_PROG_LIBTOOL +AC_LIBTOOL_CXX + +LIBTOOL_SHELL="/bin/sh ./libtool" +# LIBTOOL="$LIBTOOL --silent" +KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_NO_UNDEFINED) \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)" +AC_SUBST(KDE_PLUGIN) + +# we patch configure quite some so we better keep that consistent for incremental runs +AC_SUBST(AUTOCONF,'$(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure') +]) + +AC_DEFUN([KDE_CHECK_LIB64], +[ + kdelibsuff=no + AC_ARG_ENABLE(libsuffix, + AC_HELP_STRING([--enable-libsuffix], + [/lib directory suffix (64,32,none[=default])]), + kdelibsuff=$enableval) + # TODO: add an auto case that compiles a little C app to check + # where the glibc is + if test "$kdelibsuff" = "no"; then + kdelibsuff= + fi + if test -z "$kdelibsuff"; then + AC_MSG_RESULT([not using lib directory suffix]) + AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories) + else + if test "$libdir" = '${exec_prefix}/lib'; then + libdir="$libdir${kdelibsuff}" + AC_SUBST([libdir], ["$libdir"]) dnl ugly hack for lib64 platforms + fi + AC_DEFINE_UNQUOTED(KDELIBSUFF, ["\"${kdelibsuff}\""], Suffix for lib directories) + AC_MSG_RESULT([using lib directory suffix $kdelibsuff]) + fi +]) + +AC_DEFUN([KDE_CHECK_TYPES], +[ AC_CHECK_SIZEOF(int, 4)dnl + AC_CHECK_SIZEOF(short)dnl + AC_CHECK_SIZEOF(long, 4)dnl + AC_CHECK_SIZEOF(char *, 4)dnl +])dnl + +AC_DEFUN([KDE_DO_IT_ALL], +[ +AC_CANONICAL_SYSTEM +AC_ARG_PROGRAM +AM_INIT_AUTOMAKE($1, $2) +AM_DISABLE_LIBRARIES +AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) +AC_CHECK_COMPILERS +KDE_PROG_LIBTOOL +AM_KDE_WITH_NLS +AC_PATH_KDE +]) + +AC_DEFUN([AC_CHECK_RPATH], +[ +AC_MSG_CHECKING(for rpath) +AC_ARG_ENABLE(rpath, + AC_HELP_STRING([--disable-rpath],[do not use the rpath feature of ld]), + USE_RPATH=$enableval, USE_RPATH=yes) + +if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then + + KDE_RPATH="-R \$(kde_libraries)" + + if test -n "$qt_libraries"; then + KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)" + fi + dnl $x_libraries is set to /usr/lib in case + if test -n "$X_LDFLAGS"; then + X_RPATH="-R \$(x_libraries)" + KDE_RPATH="$KDE_RPATH $X_RPATH" + fi + if test -n "$KDE_EXTRA_RPATH"; then + KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)" + fi +fi +AC_SUBST(KDE_EXTRA_RPATH) +AC_SUBST(KDE_RPATH) +AC_SUBST(X_RPATH) +AC_MSG_RESULT($USE_RPATH) +]) + +dnl Check for the type of the third argument of getsockname +AC_DEFUN([AC_CHECK_SOCKLEN_T], [ + AC_MSG_CHECKING(for socklen_t) + AC_CACHE_VAL(ac_cv_socklen_t, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ +#include +#include + ],[ +socklen_t a=0; +getsockname(0,(struct sockaddr*)0, &a); + ], + ac_cv_socklen_t=socklen_t, + AC_TRY_COMPILE([ +#include +#include + ],[ +int a=0; +getsockname(0,(struct sockaddr*)0, &a); + ], + ac_cv_socklen_t=int, + ac_cv_socklen_t=size_t + ) + ) + AC_LANG_RESTORE + ]) + + AC_MSG_RESULT($ac_cv_socklen_t) + if test "$ac_cv_socklen_t" != "socklen_t"; then + AC_DEFINE_UNQUOTED(socklen_t, $ac_cv_socklen_t, + [Define the real type of socklen_t]) + fi + AC_DEFINE_UNQUOTED(ksize_t, socklen_t, [Compatibility define]) + +]) + +dnl This is a merge of some macros out of the gettext aclocal.m4 +dnl since we don't need anything, I took the things we need +dnl the copyright for them is: +dnl > +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +dnl This Makefile.in is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. +dnl > +dnl for this file it is relicensed under LGPL + +AC_DEFUN([AM_KDE_WITH_NLS], + [ + dnl If we use NLS figure out what method + + AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt, + [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then + AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + MSGFMT=$GMSGFMT + AC_SUBST(GMSGFMT) + AC_SUBST(MSGFMT) + + AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext programs is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + AC_SUBST(XGETTEXT) + + ]) + +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. + +# serial 1 +# Stephan Kulow: I appended a _KDE against name conflicts + +dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test -n "[$]$1"; then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + + +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. + +# serial 1 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES]) + fi + fi]) + +dnl From Jim Meyering. +dnl FIXME: migrate into libit. + +AC_DEFUN([AM_FUNC_OBSTACK], +[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack, + [AC_TRY_LINK([#include "obstack.h"], + [struct obstack *mem;obstack_free(mem,(char *) 0)], + am_cv_func_obstack=yes, + am_cv_func_obstack=no)]) + if test $am_cv_func_obstack = yes; then + AC_DEFINE(HAVE_OBSTACK) + else + LIBOBJS="$LIBOBJS obstack.o" + fi +]) + +dnl From Jim Meyering. Use this if you use the GNU error.[ch]. +dnl FIXME: Migrate into libit + +AC_DEFUN([AM_FUNC_ERROR_AT_LINE], +[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, + [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], + am_cv_lib_error_at_line=yes, + am_cv_lib_error_at_line=no)]) + if test $am_cv_lib_error_at_line = no; then + LIBOBJS="$LIBOBJS error.o" + fi + AC_SUBST(LIBOBJS)dnl +]) + +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. + +# serial 1 +# Stephan Kulow: I put a KDE in it to avoid name conflicts + +AC_DEFUN([AM_KDE_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([AM_KDE_WITH_NLS])dnl + AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \ +__argz_count __argz_stringify __argz_next]) + + AC_MSG_CHECKING(for stpcpy) + AC_CACHE_VAL(kde_cv_func_stpcpy, + [ + kde_safe_cxxflags=$CXXFLAGS + CXXFLAGS="-Werror" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ + #include + ], + [ + char buffer[200]; + stpcpy(buffer, buffer); + ], + kde_cv_func_stpcpy=yes, + kde_cv_func_stpcpy=no) + AC_LANG_RESTORE + CXXFLAGS=$kde_safe_cxxflags + ]) + AC_MSG_RESULT($kde_cv_func_stpcpy) + if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then + AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy]) + fi + + AM_LC_MESSAGES + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + ]) + +AC_DEFUN([AC_HAVE_XPM], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$XPM_LDFLAGS" && XPM_LDFLAGS= + test -z "$XPM_INCLUDE" && XPM_INCLUDE= + + AC_ARG_WITH(xpm,AC_HELP_STRING([--without-xpm],[disable color pixmap XPM tests]), + xpm_test=$withval, xpm_test="yes") + if test "x$xpm_test" = xno; then + ac_cv_have_xpm=no + else + AC_MSG_CHECKING(for XPM) + AC_CACHE_VAL(ac_cv_have_xpm, + [ + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET" + else + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET" + fi + CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES" + test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS" + AC_TRY_LINK([#include ],[], + ac_cv_have_xpm="yes",ac_cv_have_xpm="no") + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + ])dnl + + if test "$ac_cv_have_xpm" = no; then + AC_MSG_RESULT(no) + XPM_LDFLAGS="" + XPMINC="" + $2 + else + AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support]) + if test "$XPM_LDFLAGS" = ""; then + XPMLIB='-lXpm $(LIB_X11)' + else + XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)' + fi + if test "$XPM_INCLUDE" = ""; then + XPMINC="" + else + XPMINC="-I$XPM_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + AC_SUBST(XPMINC) + AC_SUBST(XPMLIB) +]) + +AC_DEFUN([AC_HAVE_DPMS], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS= + test -z "$DPMS_INCLUDE" && DPMS_INCLUDE= + DPMS_LIB= + + AC_ARG_WITH(dpms,AC_HELP_STRING([--without-dpms],[disable DPMS power saving]), + dpms_test=$withval, dpms_test="yes") + if test "x$dpms_test" = xno; then + ac_cv_have_dpms=no + else + AC_MSG_CHECKING(for DPMS) + dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms. + dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms". + AC_CACHE_VAL(ac_cv_have_dpms, + [ + if test "x$kde_use_qt_emb" = "xyes" || test "x$kde_use_qt_mac" = "xyes"; then + AC_MSG_RESULT(no) + ac_cv_have_dpms="no" + else + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + ac_save_libs="$LIBS" + LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + ac_cv_have_dpms="yes", [ + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET" + LIBS="$LIBS -lXdpms" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + [ + ac_cv_have_dpms="-lXdpms" + ],ac_cv_have_dpms="no") + ]) + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + LIBS="$ac_save_libs" + fi + ])dnl + + if test "$ac_cv_have_dpms" = no; then + AC_MSG_RESULT(no) + DPMS_LDFLAGS="" + DPMSINC="" + $2 + else + AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support]) + if test "$ac_cv_have_dpms" = "-lXdpms"; then + DPMS_LIB="-lXdpms" + fi + if test "$DPMS_LDFLAGS" = ""; then + DPMSLIB="$DPMS_LIB "'$(LIB_X11)' + else + DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)' + fi + if test "$DPMS_INCLUDE" = ""; then + DPMSINC="" + else + DPMSINC="-I$DPMS_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + ac_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AH_TEMPLATE(HAVE_DPMSCAPABLE_PROTO, + [Define if you have the DPMSCapable prototype in ]) + AC_CHECK_DECL(DPMSCapable, + AC_DEFINE(HAVE_DPMSCAPABLE_PROTO),, + [#include ]) + AH_TEMPLATE(HAVE_DPMSINFO_PROTO, + [Define if you have the DPMSInfo prototype in ]) + AC_CHECK_DECL(DPMSInfo, + AC_DEFINE(HAVE_DPMSINFO_PROTO),, + [#include ]) + CFLAGS="$ac_save_cflags" + AC_SUBST(DPMSINC) + AC_SUBST(DPMSLIB) +]) + +AC_DEFUN([AC_HAVE_GL], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$GL_LDFLAGS" && GL_LDFLAGS= + test -z "$GL_INCLUDE" && GL_INCLUDE= + + AC_ARG_WITH(gl,AC_HELP_STRING([--without-gl],[disable 3D GL modes]), + gl_test=$withval, gl_test="yes") + if test "x$kde_use_qt_emb" = "xyes"; then + # GL and Qt Embedded is a no-go for now. + ac_cv_have_gl=no + elif test "x$gl_test" = xno; then + ac_cv_have_gl=no + else + AC_MSG_CHECKING(for GL) + AC_CACHE_VAL(ac_cv_have_gl, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_ldflags="$LDFLAGS" + ac_save_cxxflags="$CXXFLAGS" + LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries -lMesaGL -lMesaGLU" + test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11" + LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET" + CXXFLAGS="$CFLAGS $X_INCLUDES" + test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" + AC_TRY_LINK([#include +#include +], [], + ac_cv_have_gl="mesa", ac_cv_have_gl="no") + if test "x$ac_cv_have_gl" = "xno"; then + LDFLAGS="$ac_save_ldflags $X_LDFLAGS $GL_LDFLAGS $all_libraries -lGLU -lGL" + test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11" + LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET" + CXXFLAGS="$ac_save_cflags $X_INCLUDES" + test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" + AC_TRY_LINK([#include +#include +], [], + ac_cv_have_gl="yes", ac_cv_have_gl="no") + fi + AC_LANG_RESTORE + LDFLAGS="$ac_save_ldflags" + CXXFLAGS="$ac_save_cxxflags" + ])dnl + + if test "$ac_cv_have_gl" = "no"; then + AC_MSG_RESULT(no) + GL_LDFLAGS="" + GLINC="" + $2 + else + AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)]) + if test "$GL_LDFLAGS" = ""; then + if test "$ac_cv_have_gl" = "mesa"; then + GLLIB='-lMesaGLU -lMesaGL $(LIB_X11)' + else + GLLIB='-lGLU -lGL $(LIB_X11)' + fi + else + if test "$ac_cv_have_gl" = "mesa"; then + GLLIB="$GL_LDFLAGS -lMesaGLU -lMesaGL "'$(LIB_X11)' + else + GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)' + fi + fi + if test "$GL_INCLUDE" = ""; then + GLINC="" + else + GLINC="-I$GL_INCLUDE" + fi + AC_MSG_RESULT($ac_cv_have_gl) + $1 + fi + fi + AC_SUBST(GLINC) + AC_SUBST(GLLIB) +]) + + + dnl shadow password and PAM magic - maintained by ossi@kde.org + +AC_DEFUN([KDE_PAM], [ + AC_REQUIRE([KDE_CHECK_LIBDL]) + + want_pam= + AC_ARG_WITH(pam, + AC_HELP_STRING([--with-pam[=ARG]],[enable support for PAM: ARG=[yes|no|service name]]), + [ if test "x$withval" = "xyes"; then + want_pam=yes + pam_service=kde + elif test "x$withval" = "xno"; then + want_pam=no + else + want_pam=yes + pam_service=$withval + fi + ], [ pam_service=kde ]) + + use_pam= + PAMLIBS= + if test "x$want_pam" != xno; then + AC_CHECK_LIB(pam, pam_start, [ + AC_CHECK_HEADER(security/pam_appl.h, + [ pam_header=security/pam_appl.h ], + [ AC_CHECK_HEADER(pam/pam_appl.h, + [ pam_header=pam/pam_appl.h ], + [ + AC_MSG_WARN([PAM detected, but no headers found! +Make sure you have the necessary development packages installed.]) + ] + ) + ] + ) + ], , $LIBDL) + if test -z "$pam_header"; then + if test "x$want_pam" = xyes; then + AC_MSG_ERROR([--with-pam was specified, but cannot compile with PAM!]) + fi + else + AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)]) + PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL" + use_pam=yes + + dnl darwin claims to be something special + if test "$pam_header" = "pam/pam_appl.h"; then + AC_DEFINE(HAVE_PAM_PAM_APPL_H, 1, [Define if your PAM headers are in pam/ instead of security/]) + fi + + dnl test whether struct pam_message is const (Linux) or not (Sun) + AC_MSG_CHECKING(for const pam_message) + AC_EGREP_HEADER([struct pam_message], $pam_header, + [ AC_EGREP_HEADER([const struct pam_message], $pam_header, + [AC_MSG_RESULT([const: Linux-type PAM])], + [AC_MSG_RESULT([nonconst: Sun-type PAM]) + AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])] + )], + [AC_MSG_RESULT([not found - assume const, Linux-type PAM])]) + fi + fi + + AC_SUBST(PAMLIBS) +]) + +dnl DEF_PAM_SERVICE(arg name, full name, define name) +AC_DEFUN([DEF_PAM_SERVICE], [ + AC_ARG_WITH($1-pam, + AC_HELP_STRING([--with-$1-pam=[val]],[override PAM service from --with-pam for $2]), + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE=$withval + else + AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected. +You may want to enforce it by using --with-pam.]) + fi + ], + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE="$pam_service" + fi + ]) + if test -n "$$3_PAM_SERVICE"; then + AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE]) + AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2]) + fi + AC_SUBST($3_PAM_SERVICE) +]) + +AC_DEFUN([KDE_SHADOWPASSWD], [ + AC_REQUIRE([KDE_PAM]) + + AC_CHECK_LIB(shadow, getspent, + [ LIBSHADOW="-lshadow" + ac_use_shadow=yes + ], + [ dnl for UnixWare + AC_CHECK_LIB(gen, getspent, + [ LIBGEN="-lgen" + ac_use_shadow=yes + ], + [ AC_CHECK_FUNC(getspent, + [ ac_use_shadow=yes ], + [ ac_use_shadow=no ]) + ]) + ]) + AC_SUBST(LIBSHADOW) + AC_SUBST(LIBGEN) + + AC_MSG_CHECKING([for shadow passwords]) + + AC_ARG_WITH(shadow, + AC_HELP_STRING([--with-shadow],[If you want shadow password support]), + [ if test "x$withval" != "xno"; then + use_shadow=yes + else + use_shadow=no + fi + ], [ + use_shadow="$ac_use_shadow" + ]) + + if test "x$use_shadow" = xyes; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords]) + else + AC_MSG_RESULT(no) + LIBSHADOW= + LIBGEN= + fi + + dnl finally make the relevant binaries setuid root, if we have shadow passwds. + dnl this still applies, if we could use it indirectly through pam. + if test "x$use_shadow" = xyes || + ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then + case $host in + *-*-freebsd* | *-*-netbsd* | *-*-openbsd*) + SETUIDFLAGS="-m 4755 -o root";; + *) + SETUIDFLAGS="-m 4755";; + esac + fi + AC_SUBST(SETUIDFLAGS) + +]) + +AC_DEFUN([KDE_PASSWDLIBS], [ + AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT + AC_REQUIRE([KDE_PAM]) + AC_REQUIRE([KDE_SHADOWPASSWD]) + + if test "x$use_pam" = "xyes"; then + PASSWDLIBS="$PAMLIBS" + else + PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN" + fi + + dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but + dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires + dnl root to read, so kcheckpass needs to be root (even when using pam, since pam + dnl may need to read /etc/master.passwd). + case $host in + *-*-freebsd*) + SETUIDFLAGS="-m 4755 -o root" + ;; + *) + ;; + esac + + AC_SUBST(PASSWDLIBS) +]) + +AC_DEFUN([KDE_CHECK_LIBDL], +[ +AC_CHECK_LIB(dl, dlopen, [ +LIBDL="-ldl" +ac_cv_have_dlfcn=yes +]) + +AC_CHECK_LIB(dld, shl_unload, [ +LIBDL="-ldld" +ac_cv_have_shload=yes +]) + +AC_SUBST(LIBDL) +]) + +AC_DEFUN([KDE_CHECK_DLOPEN], +[ +KDE_CHECK_LIBDL +AC_CHECK_HEADERS(dlfcn.h dl.h) +if test "$ac_cv_header_dlfcn_h" = "no"; then + ac_cv_have_dlfcn=no +fi + +if test "$ac_cv_header_dl_h" = "no"; then + ac_cv_have_shload=no +fi + +dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE +dnl (MM) +AC_ARG_ENABLE(dlopen, +AC_HELP_STRING([--disable-dlopen],[link statically [default=no]]), +enable_dlopen=$enableval, +enable_dlopen=yes) + +# override the user's opinion, if we know it better ;) +if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then + enable_dlopen=no +fi + +if test "$ac_cv_have_dlfcn" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn]) +fi + +if test "$ac_cv_have_shload" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload]) +fi + +if test "$enable_dlopen" = no ; then + test -n "$1" && eval $1 +else + test -n "$2" && eval $2 +fi + +]) + +AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING], +[ +KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no) +KDE_PROG_LIBTOOL +AC_MSG_CHECKING([dynamic loading]) +eval "`egrep '^build_libtool_libs=' libtool`" +if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then + dynamic_loading=yes + AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING) +else + dynamic_loading=no +fi +AC_MSG_RESULT($dynamic_loading) +if test "$dynamic_loading" = "yes"; then + $1 +else + $2 +fi +]) + +AC_DEFUN([KDE_ADD_INCLUDES], +[ +if test -z "$1"; then + test_include="Pix.h" +else + test_include="$1" +fi + +AC_MSG_CHECKING([for libg++ ($test_include)]) + +AC_CACHE_VAL(kde_cv_libgpp_includes, +[ +kde_cv_libgpp_includes=no + + for ac_dir in \ + \ + /usr/include/g++ \ + /usr/include \ + /usr/unsupported/include \ + /opt/include \ + $extra_include \ + ; \ + do + if test -r "$ac_dir/$test_include"; then + kde_cv_libgpp_includes=$ac_dir + break + fi + done +]) + +AC_MSG_RESULT($kde_cv_libgpp_includes) +if test "$kde_cv_libgpp_includes" != "no"; then + all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES" +fi +]) +]) + +AC_DEFUN([KDE_CHECK_LIBPTHREAD], +[ + LIBPTHREAD="" + + if test -n "$PTHREAD_LIBS"; then + PTHREAD_LIBS_save="$PTHREAD_LIBS" + PTHREAD_LIBS=`echo "$PTHREAD_LIBS_save" | sed -e 's,^-l,,g'` + KDE_CHECK_LIB($PTHREAD_LIBS, pthread_create, [LIBPTHREAD="$PTHREAD_LIBS_save"] ) + PTHREAD_LIBS="$PTHREAD_LIBS_save" + fi + + if test -z "$LIBPTHREAD"; then + AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] ) + fi + + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_PTHREAD_OPTION], +[ + USE_THREADS="" + if test -z "$LIBPTHREAD"; then + KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-D_THREAD_SAFE -pthread"]) + fi + + AH_VERBATIM(__svr_define, [ +#if defined(__SVR4) && !defined(__svr4__) +#define __svr4__ 1 +#endif +]) + case $host_os in + solaris*) + KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"]) + CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4" + ;; + freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE $PTHREAD_CFLAGS" + ;; + aix*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LIBPTHREAD="$LIBPTHREAD -lc_r" + ;; + linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" + if test "$CXX" = "KCC"; then + CXXFLAGS="$CXXFLAGS --thread_safe" + NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe" + fi + ;; + *) + ;; + esac + AC_SUBST(USE_THREADS) + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_THREADING], +[ + AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) + AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION]) + dnl default is yes if libpthread is found and no if no libpthread is available + if test -z "$LIBPTHREAD"; then + if test -z "$USE_THREADS"; then + kde_check_threading_default=no + else + kde_check_threading_default=yes + fi + else + kde_check_threading_default=yes + fi + AC_ARG_ENABLE(threading,AC_HELP_STRING([--disable-threading],[disables threading even if libpthread found]), + kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default) + if test "x$kde_use_threading" = "xyes"; then + AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)]) + fi +]) + +AC_DEFUN([KDE_TRY_LINK_PYTHON], +[ +if test "$kde_python_link_found" = no; then + +if test "$1" = normal; then + AC_MSG_CHECKING(if a Python application links) +else + AC_MSG_CHECKING(if Python depends on $2) +fi + +AC_CACHE_VAL(kde_cv_try_link_python_$1, +[ +kde_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $PYTHONINC" +kde_save_libs="$LIBS" +LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET" +kde_save_ldflags="$LDFLAGS" +LDFLAGS="$LDFLAGS $PYTHONLIB" + +AC_TRY_LINK( +[ +#include +],[ + PySys_SetArgv(1, 0); +], + [kde_cv_try_link_python_$1=yes], + [kde_cv_try_link_python_$1=no] +) +CFLAGS="$kde_save_cflags" +LIBS="$kde_save_libs" +LDFLAGS="$kde_save_ldflags" +]) + +if test "$kde_cv_try_link_python_$1" = "yes"; then + AC_MSG_RESULT(yes) + kde_python_link_found=yes + if test ! "$1" = normal; then + LIBPYTHON="$LIBPYTHON $2" + fi + $3 +else + AC_MSG_RESULT(no) + $4 +fi + +fi + +]) + +AC_DEFUN([KDE_CHECK_PYTHON_DIR], +[ +AC_MSG_CHECKING([for Python directory]) + +AC_CACHE_VAL(kde_cv_pythondir, +[ + if test -z "$PYTHONDIR"; then + kde_cv_pythondir=/usr/local + else + kde_cv_pythondir="$PYTHONDIR" + fi +]) + +AC_ARG_WITH(pythondir, +AC_HELP_STRING([--with-pythondir=pythondir],[use python installed in pythondir]), +[ + ac_python_dir=$withval +], ac_python_dir=$kde_cv_pythondir +) + +AC_MSG_RESULT($ac_python_dir) +]) + +AC_DEFUN([KDE_CHECK_PYTHON_INTERN], +[ +AC_REQUIRE([KDE_CHECK_LIBDL]) +AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) +AC_REQUIRE([KDE_CHECK_PYTHON_DIR]) + +if test -z "$1"; then + version="1.5" +else + version="$1" +fi + +AC_MSG_CHECKING([for Python$version]) + +python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes" +AC_FIND_FILE(Python.h, $python_incdirs, python_incdir) +if test ! -r $python_incdir/Python.h; then + AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir) + python_incdir=$python_incdir/python$version + if test ! -r $python_incdir/Python.h; then + python_incdir=no + fi +fi + +PYTHONINC=-I$python_incdir + +python_libdirs="$ac_python_dir/lib$kdelibsuff /usr/lib$kdelibsuff /usr/local /usr/lib$kdelibsuff $kde_extra_libs" +AC_FIND_FILE(libpython$version.so, $python_libdirs, python_libdir) +if test ! -r $python_libdir/libpython$version.so; then + AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir) + if test ! -r $python_libdir/libpython$version.a; then + AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir) + python_libdir=$python_libdir/python$version/config + if test ! -r $python_libdir/libpython$version.a; then + python_libdir=no + fi + fi +fi + +PYTHONLIB=-L$python_libdir +kde_orig_LIBPYTHON=$LIBPYTHON +if test -z "$LIBPYTHON"; then + LIBPYTHON=-lpython$version +fi + +AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir) +python_moddir=$python_moddir/python$version +if test ! -r $python_moddir/copy.py; then + python_moddir=no +fi + +PYTHONMODDIR=$python_moddir + +AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir) + +if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then + LIBPYTHON=$kde_orig_LIBPYTHON + test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB="" + test "x$PYTHONINC" = "x-Ino" && PYTHONINC="" + $2 +else + dnl Note: this test is very weak + kde_python_link_found=no + KDE_TRY_LINK_PYTHON(normal) + KDE_TRY_LINK_PYTHON(m, -lm) + KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD) + KDE_TRY_LINK_PYTHON(tcl, -ltcl) + KDE_TRY_LINK_PYTHON(db2, -ldb2) + KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm]) + KDE_TRY_LINK_PYTHON(pthread_and_panel_curses, [$LIBPTHREAD $LIBDL -lm -lpanel -lcurses]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [], + [AC_MSG_WARN([it seems, Python depends on another library. + Please set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this + and contact the authors to let them know about this problem]) + ]) + + LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET" + AC_SUBST(PYTHONINC) + AC_SUBST(PYTHONLIB) + AC_SUBST(LIBPYTHON) + AC_SUBST(PYTHONMODDIR) + AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python]) +fi + +]) + + +AC_DEFUN([KDE_CHECK_PYTHON], +[ + KDE_CHECK_PYTHON_INTERN("2.3", + [KDE_CHECK_PYTHON_INTERN("2.2", + [KDE_CHECK_PYTHON_INTERN("2.1", + [KDE_CHECK_PYTHON_INTERN("2.0", + [KDE_CHECK_PYTHON_INTERN($1, $2) ]) + ]) + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_STL], +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`" + + AC_MSG_CHECKING([if C++ programs can be compiled]) + AC_CACHE_VAL(kde_cv_stl_works, + [ + AC_TRY_COMPILE([ +#include +using namespace std; +],[ + string astring="Hallo Welt."; + astring.erase(0, 6); // now astring is "Welt" + return 0; +], kde_cv_stl_works=yes, + kde_cv_stl_works=no) +]) + + AC_MSG_RESULT($kde_cv_stl_works) + + if test "$kde_cv_stl_works" = "yes"; then + # back compatible + AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI]) + else + AC_MSG_ERROR([Your Installation isn't able to compile simple C++ programs. +Check config.log for details - if you're using a Linux distribution you might miss +a package named similiar to libstd++-dev.]) + fi + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +AC_DEFUN([AC_FIND_QIMGIO], + [AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for qimgio]) +AC_CACHE_VAL(ac_cv_lib_qimgio, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +ac_save_CXXFLAGS="$CXXFLAGS" +LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT" +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +AC_TRY_RUN(dnl +[ +#include +#include +int main() { + QString t = "hallo"; + t.fill('t'); + qInitImageIO(); +} +], + ac_cv_lib_qimgio=yes, + ac_cv_lib_qimgio=no, + ac_cv_lib_qimgio=no) +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then + LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available]) + AC_SUBST(LIBQIMGIO) +else + AC_MSG_RESULT(not found) +fi +]) + +AC_DEFUN([AM_DISABLE_LIBRARIES], +[ + AC_PROVIDE([AM_ENABLE_STATIC]) + AC_PROVIDE([AM_ENABLE_SHARED]) + enable_static=no + enable_shared=yes +]) + + +AC_DEFUN([AC_CHECK_UTMP_FILE], +[ + AC_MSG_CHECKING([for utmp file]) + + AC_CACHE_VAL(kde_cv_utmp_file, + [ + kde_cv_utmp_file=no + + for ac_file in \ + \ + /var/run/utmp \ + /var/adm/utmp \ + /etc/utmp \ + ; \ + do + if test -r "$ac_file"; then + kde_cv_utmp_file=$ac_file + break + fi + done + ]) + + if test "$kde_cv_utmp_file" != "no"; then + AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries]) + $1 + AC_MSG_RESULT($kde_cv_utmp_file) + else + $2 + AC_MSG_RESULT([non found]) + fi +]) + + +AC_DEFUN([KDE_CREATE_SUBDIRSLIST], +[ + +DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin" + +if test ! -s $srcdir/subdirs; then + dnl Note: Makefile.common creates subdirs, so this is just a fallback + TOPSUBDIRS="" + files=`cd $srcdir && ls -1` + dirs=`for i in $files; do if test -d $i; then echo $i; fi; done` + for i in $dirs; do + echo $i >> $srcdir/subdirs + done +fi + +ac_topsubdirs= +if test -s $srcdir/inst-apps; then + ac_topsubdirs="`cat $srcdir/inst-apps`" +elif test -s $srcdir/subdirs; then + ac_topsubdirs="`cat $srcdir/subdirs`" +fi + +for i in $ac_topsubdirs; do + AC_MSG_CHECKING([if $i should be compiled]) + if test -d $srcdir/$i; then + install_it="yes" + for j in $DO_NOT_COMPILE; do + if test $i = $j; then + install_it="no" + fi + done + else + install_it="no" + fi + AC_MSG_RESULT($install_it) + vari=`echo $i | sed -e 's,[[-+.]],_,g'` + if test $install_it = "yes"; then + TOPSUBDIRS="$TOPSUBDIRS $i" + eval "$vari""_SUBDIR_included=yes" + else + eval "$vari""_SUBDIR_included=no" + fi +done + +AC_SUBST(TOPSUBDIRS) +]) + +AC_DEFUN([KDE_CHECK_NAMESPACES], +[ +AC_MSG_CHECKING(whether C++ compiler supports namespaces) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILE([ +], +[ +namespace Foo { + extern int i; + namespace Bar { + extern int i; + } +} + +int Foo::i = 0; +int Foo::Bar::i = 1; +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NAMESPACES) +], [ +AC_MSG_RESULT(no) +]) +AC_LANG_RESTORE +]) + +dnl ------------------------------------------------------------------------ +dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_S_ISSOCK], +[ +AC_MSG_CHECKING(for S_ISSOCK) +AC_CACHE_VAL(ac_cv_have_s_issock, +[ +AC_TRY_LINK( +[ +#include +], +[ +struct stat buff; +int b = S_ISSOCK( buff.st_mode ); +], +ac_cv_have_s_issock=yes, +ac_cv_have_s_issock=no) +]) +AC_MSG_RESULT($ac_cv_have_s_issock) +if test "$ac_cv_have_s_issock" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.]) +fi + +AH_VERBATIM(_ISSOCK, +[ +#ifndef HAVE_S_ISSOCK +#define HAVE_S_ISSOCK +#define S_ISSOCK(mode) (1==0) +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_KDEMAXPATHLEN], +[ +AC_MSG_CHECKING(for MAXPATHLEN) +AC_CACHE_VAL(ac_cv_maxpathlen, +[ +cat > conftest.$ac_ext < +#endif +#include +#include +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif + +KDE_HELLO MAXPATHLEN + +EOF + +ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out" + +if AC_TRY_EVAL(ac_try) && test -s conftest.out; then + ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out` +else + ac_cv_maxpathlen=1024 +fi + +rm conftest.* + +]) +AC_MSG_RESULT($ac_cv_maxpathlen) +AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] ) +]) + +AC_DEFUN([KDE_CHECK_HEADER], +[ + AC_LANG_SAVE + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_CPLUSPLUS + AC_CHECK_HEADER([$1], [$2], [$3], [$4]) + CPPFLAGS=$kde_safe_cppflags + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_CHECK_HEADERS], +[ + AH_CHECK_HEADERS([$1]) + AC_LANG_SAVE + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_CPLUSPLUS + AC_CHECK_HEADERS([$1], [$2], [$3], [$4]) + CPPFLAGS=$kde_safe_cppflags + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_FAST_CONFIGURE], +[ + dnl makes configure fast (needs perl) + AC_ARG_ENABLE(fast-perl, AC_HELP_STRING([--disable-fast-perl],[disable fast Makefile generation (needs perl)]), + with_fast_perl=$enableval, with_fast_perl=yes) +]) + +AC_DEFUN([KDE_CONF_FILES], +[ + val= + if test -f $srcdir/configure.files ; then + val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files` + fi + CONF_FILES= + if test -n "$val" ; then + for i in $val ; do + CONF_FILES="$CONF_FILES $i" + done + fi + AC_SUBST(CONF_FILES) +])dnl + +AC_DEFUN([KDE_SET_PREFIX], +[ + unset CDPATH + dnl make $KDEDIR the default for the installation + AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) + + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + ac_configure_args="$ac_configure_args --prefix=$prefix" + fi + # And delete superfluous '/' to make compares easier + prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + KDE_FAST_CONFIGURE + KDE_CONF_FILES +]) + +pushdef([AC_PROG_INSTALL], +[ + dnl our own version, testing for a -p flag + popdef([AC_PROG_INSTALL]) + dnl as AC_PROG_INSTALL works as it works we first have + dnl to save if the user didn't specify INSTALL, as the + dnl autoconf one overwrites INSTALL and we have no chance to find + dnl out afterwards + test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL + test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM + test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT + AC_PROG_INSTALL + + if test -z "$kde_save_INSTALL_given" ; then + # OK, user hasn't given any INSTALL, autoconf found one for us + # now we test, if it supports the -p flag + AC_MSG_CHECKING(for -p flag to install) + rm -f confinst.$$.* > /dev/null 2>&1 + echo "Testtest" > confinst.$$.orig + ac_res=no + if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then + if test -f confinst.$$.new ; then + # OK, -p seems to do no harm to install + INSTALL="${INSTALL} -p" + ac_res=yes + fi + fi + rm -f confinst.$$.* + AC_MSG_RESULT($ac_res) + fi + dnl the following tries to resolve some signs and wonders coming up + dnl with different autoconf/automake versions + dnl e.g.: + dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s + dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS) + dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s + dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has + dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the + dnl install-@DIR@PROGRAMS targets to explicitly use that flag + dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as + dnl INSTALL_SCRIPT, which breaks with automake <= 1.4 + dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure + dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from + dnl automake (due to broken Makefile.am or whatever) to install programs, + dnl and so does not see the -s flag in automake > 1.4 + dnl to clean up that mess we: + dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG + dnl which cleans KDE's program with automake > 1.4; + dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems + dnl with automake<=1.4 + dnl note that dues to this sometimes two '-s' flags are used (if KDE + dnl properly uses install-@DIR@PROGRAMS, but I don't care + dnl + dnl And to all this comes, that I even can't write in comments variable + dnl names used by automake, because it is so stupid to think I wanted to + dnl _use_ them, therefor I have written A_M_... instead of AM_ + dnl hmm, I wanted to say something ... ahh yes: Arghhh. + + if test -z "$kde_save_INSTALL_PROGRAM_given" ; then + INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)' + fi + if test -z "$kde_save_INSTALL_SCRIPT_given" ; then + INSTALL_SCRIPT='${INSTALL}' + fi +])dnl + +AC_DEFUN([KDE_LANG_CPLUSPLUS], +[AC_LANG_CPLUSPLUS +ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' +pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS]) +]) + +pushdef([AC_LANG_CPLUSPLUS], +[popdef([AC_LANG_CPLUSPLUS]) +KDE_LANG_CPLUSPLUS +]) + +AC_DEFUN([KDE_CHECK_LONG_LONG], +[ +AC_MSG_CHECKING(for long long) +AC_CACHE_VAL(kde_cv_c_long_long, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_LINK([], [ + long long foo = 0; + foo = foo+1; + ], + kde_cv_c_long_long=yes, kde_cv_c_long_long=no) + AC_LANG_RESTORE +]) +AC_MSG_RESULT($kde_cv_c_long_long) +if test "$kde_cv_c_long_long" = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype]) +fi +]) + +AC_DEFUN([KDE_CHECK_LIB], +[ + kde_save_LDFLAGS="$LDFLAGS" + dnl AC_CHECK_LIB modifies LIBS, so save it here + kde_save_LIBS="$LIBS" + LDFLAGS="$LDFLAGS $all_libraries" + case $host_os in + aix*) LDFLAGS="-brtl $LDFLAGS" + test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS" + ;; + esac + AC_CHECK_LIB($1, $2, $3, $4, $5) + LDFLAGS="$kde_save_LDFLAGS" + LIBS="$kde_save_LIBS" +]) + +AC_DEFUN([KDE_JAVA_PREFIX], +[ + dir=`dirname "$1"` + base=`basename "$1"` + list=`ls -1 $dir 2> /dev/null` + for entry in $list; do + if test -d $dir/$entry/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/bin" + ;; + esac + elif test -d $dir/$entry/jre/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/jre/bin" + ;; + esac + fi + done +]) + +dnl KDE_CHEC_JAVA_DIR(onlyjre) +AC_DEFUN([KDE_CHECK_JAVA_DIR], +[ + +AC_ARG_WITH(java, +AC_HELP_STRING([--with-java=javadir],[use java installed in javadir, --without-java disables]), +[ ac_java_dir=$withval +], ac_java_dir="" +) + +AC_MSG_CHECKING([for Java]) + +dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH +if test "x$ac_java_dir" = "xno"; then + kde_java_bindir=no + kde_java_includedir=no + kde_java_libjvmdir=no + kde_java_libgcjdir=no + kde_java_libhpidir=no +else + if test "x$ac_java_dir" = "x"; then + + + dnl No option set -> collect list of candidate paths + if test -n "$JAVA_HOME"; then + KDE_JAVA_PREFIX($JAVA_HOME) + fi + KDE_JAVA_PREFIX(/usr/j2se) + KDE_JAVA_PREFIX(/usr/lib/j2se) + KDE_JAVA_PREFIX(/usr/j*dk*) + KDE_JAVA_PREFIX(/usr/lib/j*dk*) + KDE_JAVA_PREFIX(/opt/j*sdk*) + KDE_JAVA_PREFIX(/usr/lib/java*) + KDE_JAVA_PREFIX(/usr/java*) + KDE_JAVA_PREFIX(/usr/java/j*dk*) + KDE_JAVA_PREFIX(/usr/java/j*re*) + KDE_JAVA_PREFIX(/usr/lib/SunJava2*) + KDE_JAVA_PREFIX(/usr/lib/SunJava*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava2*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava*) + KDE_JAVA_PREFIX(/opt/java*) + + kde_cv_path="NONE" + kde_save_IFS=$IFS + IFS=':' + for dir in $PATH; do + if test -d "$dir"; then + javadirs="$javadirs $dir" + fi + done + IFS=$kde_save_IFS + jredirs= + + dnl Now javadirs contains a list of paths that exist, all ending with bin/ + for dir in $javadirs; do + dnl Check for the java executable + if test -x "$dir/java"; then + dnl And also check for a libjvm.so somewhere under there + dnl Since we have to go to the parent dir, /usr/bin is excluded, /usr is too big. + if test "$dir" != "/usr/bin"; then + libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + if test ! -f $libjvmdir/libjvm.so; then continue; fi + jredirs="$jredirs $dir" + fi + fi + done + + dnl Now jredirs contains a reduced list, of paths where both java and ../**/libjvm.so was found + JAVAC= + JAVA= + kde_java_bindir=no + for dir in $jredirs; do + JAVA="$dir/java" + kde_java_bindir=$dir + if test -x "$dir/javac"; then + JAVAC="$dir/javac" + break + fi + done + + if test -n "$JAVAC"; then + dnl this substitution might not work - well, we test for jni.h below + kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'` + else + kde_java_includedir=no + fi + else + dnl config option set + kde_java_bindir=$ac_java_dir/bin + if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then + kde_java_includedir=no + else + kde_java_includedir=$ac_java_dir/include + fi + fi +fi + +dnl At this point kde_java_bindir and kde_java_includedir are either set or "no" +if test "x$kde_java_bindir" != "xno"; then + + dnl Look for libjvm.so + kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + dnl Look for libgcj.so + kde_java_libgcjdir=`find $kde_java_bindir/.. -name libgcj.so | sed 's,libgcj.so,,'|head -n 1` + dnl Look for libhpi.so and avoid green threads + kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1` + + dnl Now check everything's fine under there + dnl the include dir is our flag for having the JDK + if test -d "$kde_java_includedir"; then + if test ! -x "$kde_java_bindir/javac"; then + AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.]) + fi + if test ! -x "$kde_java_bindir/javah"; then + AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -x "$kde_java_bindir/jar"; then + AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -r "$kde_java_includedir/jni.h"; then + AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.]) + fi + + jni_includes="-I$kde_java_includedir" + dnl Strange thing, jni.h requires jni_md.h which is under genunix here.. + dnl and under linux here.. + + dnl not needed for gcj + + if test "x$kde_java_libgcjdir" = "x"; then + test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux" + test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris" + test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix" + fi + + else + JAVAC= + jni_includes= + fi + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libjvmdir/libjvm.so"; then + AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.]) + fi + else + if test ! -r "$kde_java_libgcjdir/libgcj.so"; then + AC_MSG_ERROR([libgcj.so not found under $kde_java_libgcjdir. Use --without-java.]) + fi + fi + + if test ! -x "$kde_java_bindir/java"; then + AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + + dnl not needed for gcj compile + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libhpidir/libhpi.so"; then + AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.]) + fi + fi + + if test -n "$jni_includes"; then + dnl Check for JNI version + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_cxxflags_safe="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $all_includes $jni_includes" + + AC_TRY_COMPILE([ + #include + ], + [ + #ifndef JNI_VERSION_1_2 + Syntax Error + #endif + ],[ kde_jni_works=yes ], + [ kde_jni_works=no ]) + + if test $kde_jni_works = no; then + AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h. + You need to have Java Development Kit (JDK) version 1.2. + + Use --with-java to specify another location. + Use --without-java to configure without java support. + Or download a newer JDK and try again. + See e.g. http://java.sun.com/products/jdk/1.2 ]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + AC_LANG_RESTORE + + dnl All tests ok, inform and subst the variables + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + if test "x$kde_java_libgcjdir" = "x"; then + JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi" + else + JVMLIBS="-L$kde_java_libgcjdir -lgcj" + fi + AC_MSG_RESULT([java JDK in $kde_java_bindir]) + + else + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([java JRE in $kde_java_bindir]) + fi +elif test -d "/Library/Java/Home"; then + kde_java_bindir="/Library/Java/Home/bin" + jni_includes="-I/Library/Java/Home/include" + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + JVMLIBS="-Xlinker -framework -Xlinker JavaVM" + + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([Apple Java Framework]) +else + AC_MSG_RESULT([none found]) +fi + +AC_SUBST(JAVAC) +AC_SUBST(JAVAH) +AC_SUBST(JAR) +AC_SUBST(JVMLIBS) +AC_SUBST(jni_includes) + +# for backward compat +kde_cv_java_includedir=$kde_java_includedir +kde_cv_java_bindir=$kde_java_bindir +]) + +dnl this is a redefinition of autoconf 2.5x's AC_FOREACH. +dnl When the argument list becomes big, as in KDE for AC_OUTPUT in +dnl big packages, m4_foreach is dog-slow. So use our own version of +dnl it. (matz@kde.org) +m4_define([mm_foreach], +[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])]) +m4_define([mm_car], [[$1]]) +m4_define([mm_car2], [[$@]]) +m4_define([_mm_foreach], +[m4_if(m4_quote($2), [], [], + [m4_define([$1], mm_car($2))$3[]_mm_foreach([$1], + mm_car2(m4_shift($2)), + [$3])])]) +m4_define([AC_FOREACH], +[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])]) + +AC_DEFUN([KDE_NEED_FLEX], +[ +kde_libs_safe=$LIBS +LIBS="$LIBS $USER_LDFLAGS" +AM_PROG_LEX +LIBS=$kde_libs_safe +if test -z "$LEXLIB"; then + AC_MSG_ERROR([You need to have flex installed.]) +fi +AC_SUBST(LEXLIB) +]) + +AC_DEFUN([AC_PATH_QTOPIA], +[ + dnl TODO: use AC_CACHE_VAL + + if test -z "$1"; then + qtopia_minver_maj=1 + qtopia_minver_min=5 + qtopia_minver_pat=0 + else + qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"` + qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"` + qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"` + fi + + qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat" + qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat" + + AC_REQUIRE([AC_PATH_QT]) + + AC_MSG_CHECKING([for Qtopia]) + + LIB_QTOPIA="-lqpe" + AC_SUBST(LIB_QTOPIA) + + kde_qtopia_dirs="$QPEDIR /opt/Qtopia" + + ac_qtopia_incdir=NO + + AC_ARG_WITH(qtopia-dir, + AC_HELP_STRING([--with-qtopia-dir=DIR],[where the root of Qtopia is installed]), + [ ac_qtopia_incdir="$withval"/include] ) + + qtopia_incdirs="" + for dir in $kde_qtopia_dirs; do + qtopia_incdirs="$qtopia_incdirs $dir/include" + done + + if test ! "$ac_qtopia_incdir" = "NO"; then + qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs" + fi + + qtopia_incdir="" + AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir) + ac_qtopia_incdir="$qtopia_incdir" + + if test -z "$qtopia_incdir"; then + AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.]) + fi + + qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`; + qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`; + qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`; + + qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat" + qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat" + if test "$qtopia_ver" -lt "$qtopia_minver"; then + AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr +is required.]) + fi + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + ac_cxxflags_safe="$CXXFLAGS" + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes" + LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" + LIBS="$LIBS $LIB_QTOPIA $LIBQT" + + cat > conftest.$ac_ext < +#include + +int main( int argc, char **argv ) +{ + QPEApplication app( argc, argv ); + return 0; +} +EOF + + if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* + else + rm -f conftest* + AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at +the end of config.log]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + AC_LANG_RESTORE + + QTOPIA_INCLUDES="-I$qtopia_incdir" + AC_SUBST(QTOPIA_INCLUDES) + + AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir]) +]) + + +AC_DEFUN([KDE_INIT_DOXYGEN], +[ +AC_MSG_CHECKING([for Qt docs]) +kde_qtdir= +if test "${with_qt_dir+set}" = set; then + kde_qtdir="$with_qt_dir" +fi + +AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR) +AC_MSG_RESULT($QTDOCDIR) + +AC_SUBST(QTDOCDIR) + +KDE_FIND_PATH(dot, DOT, [], []) +if test -n "$DOT"; then + KDE_HAVE_DOT="YES" +else + KDE_HAVE_DOT="NO" +fi +AC_SUBST(KDE_HAVE_DOT) +KDE_FIND_PATH(doxygen, DOXYGEN, [], []) +AC_SUBST(DOXYGEN) + +DOXYGEN_PROJECT_NAME="$1" +DOXYGEN_PROJECT_NUMBER="$2" +AC_SUBST(DOXYGEN_PROJECT_NAME) +AC_SUBST(DOXYGEN_PROJECT_NUMBER) + +KDE_HAS_DOXYGEN=no +if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then + KDE_HAS_DOXYGEN=yes +fi +AC_SUBST(KDE_HAS_DOXYGEN) + +]) + + +AC_DEFUN([AC_FIND_BZIP2], +[ +AC_MSG_CHECKING([for bzDecompress in libbz2]) +AC_CACHE_VAL(ac_cv_lib_bzip2, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET" +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#define BZ_NO_STDIO +#include +], + [ bz_stream s; (void) bzDecompress(&s); ], + eval "ac_cv_lib_bzip2='-lbz2'", + eval "ac_cv_lib_bzip2=no") +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +AC_MSG_RESULT($ac_cv_lib_bzip2) + +if test ! "$ac_cv_lib_bzip2" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2" + AC_SUBST(LIBBZ2) + +else + + cxx_shared_flag= + ld_shared_flag= + KDE_CHECK_COMPILER_FLAG(shared, [ + ld_shared_flag="-shared" + ]) + KDE_CHECK_COMPILER_FLAG(fPIC, [ + cxx_shared_flag="-fPIC" + ]) + + AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2]) + AC_CACHE_VAL(ac_cv_lib_bzip2_prefix, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + kde_save_LIBS="$LIBS" + LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET" + kde_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES" + + AC_TRY_LINK(dnl + [ + #define BZ_NO_STDIO + #include + ], + [ bz_stream s; (void) BZ2_bzDecompress(&s); ], + eval "ac_cv_lib_bzip2_prefix='-lbz2'", + eval "ac_cv_lib_bzip2_prefix=no") + LIBS="$kde_save_LIBS" + CXXFLAGS="$kde_save_CXXFLAGS" + AC_LANG_RESTORE + ])dnl + + AC_MSG_RESULT($ac_cv_lib_bzip2_prefix) + + if test ! "$ac_cv_lib_bzip2_prefix" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2_prefix" + AC_SUBST(LIBBZ2) + + AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix]) + dnl else, we just ignore this + fi + +fi +AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR") +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the SSL headers and libraries. +dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed) +dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([KDE_CHECK_SSL], +[ +LIBSSL="-lssl -lcrypto" +AC_REQUIRE([KDE_CHECK_LIB64]) + +ac_ssl_includes=NO ac_ssl_libraries=NO +ssl_libraries="" +ssl_includes="" +AC_ARG_WITH(ssl-dir, + AC_HELP_STRING([--with-ssl-dir=DIR],[where the root of OpenSSL is installed]), + [ ac_ssl_includes="$withval"/include + ac_ssl_libraries="$withval"/lib$kdelibsuff + ]) + +want_ssl=yes +AC_ARG_WITH(ssl, + AC_HELP_STRING([--without-ssl],[disable SSL checks]), + [want_ssl=$withval]) + +if test $want_ssl = yes; then + +AC_MSG_CHECKING(for OpenSSL) + +AC_CACHE_VAL(ac_cv_have_ssl, +[#try to guess OpenSSL locations + + ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes" + ssl_incdirs="$ac_ssl_includes $ssl_incdirs" + AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir) + ac_ssl_includes="$ssl_incdir" + + ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs" + if test ! "$ac_ssl_libraries" = "NO"; then + ssl_libdirs="$ac_ssl_libraries $ssl_libdirs" + fi + + test=NONE + ssl_libdir=NONE + for dir in $ssl_libdirs; do + try="ls -1 $dir/libssl*" + if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done + + ac_ssl_libraries="$ssl_libdir" + + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries" + LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref" + + AC_TRY_LINK(,void RSAPrivateEncrypt(void);RSAPrivateEncrypt();, + ac_ssl_rsaref="yes" + , + ac_ssl_rsaref="no" + ) + + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then + have_ssl=no + else + have_ssl=yes; + fi + + ]) + + eval "$ac_cv_have_ssl" + + AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes]) + + AC_MSG_CHECKING([whether OpenSSL uses rsaref]) + AC_MSG_RESULT($ac_ssl_rsaref) + + AC_MSG_CHECKING([for easter eggs]) + AC_MSG_RESULT([none found]) + +else + have_ssl=no +fi + +if test "$have_ssl" = yes; then + AC_MSG_CHECKING(for OpenSSL version) + dnl Check for SSL version + AC_CACHE_VAL(ac_cv_ssl_version, + [ + + cat >conftest.$ac_ext < +#include + int main() { + +#ifndef OPENSSL_VERSION_NUMBER + printf("ssl_version=\\"error\\"\n"); +#else + if (OPENSSL_VERSION_NUMBER < 0x00906000) + printf("ssl_version=\\"old\\"\n"); + else + printf("ssl_version=\\"ok\\"\n"); +#endif + return (0); + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + if test "$ac_ssl_includes" != "/usr/include"; then + CPPFLAGS="$CPPFLAGS -I$ac_ssl_includes" + fi + + if AC_TRY_EVAL(ac_link); then + + if eval `./conftest 2>&5`; then + if test $ssl_version = error; then + AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !]) + else + if test $ssl_version = old; then + AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.]) + have_ssl=no + fi + fi + ac_cv_ssl_version="ssl_version=$ssl_version" + else + AC_MSG_ERROR([Your system couldn't run a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + + else + AC_MSG_ERROR([Your system couldn't link a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + ]) + + eval "$ac_cv_ssl_version" + AC_MSG_RESULT($ssl_version) +fi + +if test "$have_ssl" != yes; then + LIBSSL=""; +else + AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL]) + ac_cv_have_ssl="have_ssl=yes \ + ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref" + + + ssl_libraries="$ac_ssl_libraries" + ssl_includes="$ac_ssl_includes" + + if test "$ac_ssl_rsaref" = yes; then + LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref" + fi + + if test $ssl_version = "old"; then + AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6]) + fi +fi + +SSL_INCLUDES= + +if test "$ssl_includes" = "/usr/include"; then + if test -f /usr/kerberos/include/krb5.h; then + SSL_INCLUDES="-I/usr/kerberos/include" + fi +elif test "$ssl_includes" != "/usr/local/include" && test -n "$ssl_includes"; then + SSL_INCLUDES="-I$ssl_includes" +fi + +if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries" || test "$ssl_libraries" = "NONE"; then + SSL_LDFLAGS="" +else + SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries" +fi + +AC_SUBST(SSL_INCLUDES) +AC_SUBST(SSL_LDFLAGS) +AC_SUBST(LIBSSL) +]) + +AC_DEFUN([KDE_CHECK_STRLCPY], +[ + AC_REQUIRE([AC_CHECK_STRLCAT]) + AC_REQUIRE([AC_CHECK_STRLCPY]) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_SIZEOF(unsigned long) + + AC_MSG_CHECKING([sizeof size_t == sizeof unsigned long]) + AC_TRY_COMPILE(,[ + #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG + choke me + #endif + ],AC_MSG_RESULT([yes]),[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + Apparently on your system our assumption sizeof size_t == sizeof unsigned long + does not apply. Please mail kde-devel@kde.org with a description of your system! + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_BINUTILS], +[ + AC_MSG_CHECKING([if ld supports unversioned version maps]) + + kde_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + echo "{ local: extern \"C++\" { foo }; };" > conftest.map + AC_TRY_LINK([int foo;], +[ +#ifdef __INTEL_COMPILER +icc apparently does not support libtools version-info and version-script +at the same time. Dunno where the bug is, but until somebody figured out, +better disable the optional version scripts. +#endif + + foo = 42; +], kde_supports_versionmaps=yes, kde_supports_versionmaps=no) + LDFLAGS="$kde_save_LDFLAGS" + rm -f conftest.map + AM_CONDITIONAL(include_VERSION_SCRIPT, + [test "$kde_supports_versionmaps" = "yes" && test "$kde_use_debug_code" = "no"]) + + AC_MSG_RESULT($kde_supports_versionmaps) +]) + +AC_DEFUN([AM_PROG_OBJC],[ +AC_CHECK_PROGS(OBJC, gcc, gcc) +test -z "$OBJC" && AC_MSG_ERROR([no acceptable objective-c gcc found in \$PATH]) +if test "x${OBJCFLAGS-unset}" = xunset; then + OBJCFLAGS="-g -O2" +fi +AC_SUBST(OBJCFLAGS) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(OBJC)]) +]) + +AC_DEFUN([KDE_CHECK_PERL], +[ + KDE_FIND_PATH(perl, PERL, [$bindir $exec_prefix/bin $prefix/bin], [ + AC_MSG_ERROR([No Perl found in your $PATH. +We need perl to generate some code.]) + ]) + AC_SUBST(PERL) +]) +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +## Copyright 1996, 1997, 1998, 1999, 2000, 2001 +## Free Software Foundation, Inc. +## Originally by Gordon Matzigkeit , 1996 +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool --silent' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LINUX_64_MODE="32" + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + LINUX_64_MODE="64" + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + testring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring=$testring$testring + done + testring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* out/* + rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + libsuff= + if test "x$LINUX_64_MODE" = x64; then + # Some platforms are per default 64-bit, so there's no /lib64 + if test -d /lib64; then + libsuff=64 + fi + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && test "X$CXX" != "Xno"; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + case $host_cpu in + alpha* | hppa* | i*86 | ia64* | m68* | mips* | powerpc* | sparc* | s390* | sh* | x86_64* ) + lt_cv_deplibs_check_method=pass_all ;; + # the debian people say, arm and glibc 2.3.1 works for them with pass_all + arm* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + darwin* | rhapsody*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # KDE requires run time linking. Make it the default. + aix_use_runtimelinking=yes + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='-qmkshrobj ${wl}-G' + else + shared_flag='-qmkshrobj' + fi + fi + fi + + # Let the compiler handle the export list. + _LT_AC_TAGVAR(always_export_symbols, $1)=no + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + darwin* | rhapsody*) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + dgux*) + case $cc_basename in + ec++) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc) + # Intel C++ + with_gnu_ld=yes + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + cxx) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + osf3*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext='$shrext' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGISTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $CC in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + + # KDE requires run time linking. Make it the default. + aix_use_runtimelinking=yes + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='-qmkshrobj ${wl}-G' + else + shared_flag='-qmkshrobj' + fi + fi + fi + + # Let the compiler handle the export list. + _LT_AC_TAGVAR(always_export_symbols, $1)=no + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi4*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + if test "$GXX" = yes ; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && break + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..2c599b3 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,12065 @@ +# generated automatically by aclocal 1.7.9 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file 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. + + +dnl This file is part of the KDE libraries/packages +dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu) +dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org) + +dnl This file is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Library General Public +dnl License as published by the Free Software Foundation; either +dnl version 2 of the License, or (at your option) any later version. + +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Library General Public License for more details. + +dnl You should have received a copy of the GNU Library General Public License +dnl along with this library; see the file COPYING.LIB. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +dnl Boston, MA 02110-1301, USA. + +dnl IMPORTANT NOTE: +dnl Please do not modify this file unless you expect your modifications to be +dnl carried into every other module in the repository. +dnl +dnl Single-module modifications are best placed in configure.in for kdelibs +dnl and kdebase or configure.in.in if present. + +# KDE_PATH_X_DIRECT +dnl Internal subroutine of AC_PATH_X. +dnl Set ac_x_includes and/or ac_x_libraries. +AC_DEFUN([KDE_PATH_X_DIRECT], +[ +AC_REQUIRE([KDE_CHECK_LIB64]) + +if test "$ac_x_includes" = NO; then + # Guess where to find include files, by looking for this one X11 .h file. + test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h + + # First, try using that file with no special directory specified. +AC_TRY_CPP([#include <$x_direct_test_include>], +[# We can compile using X headers with no special include directory. +ac_x_includes=], +[# Look for the header file in a standard set of common directories. +# Check X11 before X11Rn because it is often a symlink to the current release. + for ac_dir in \ + /usr/X11/include \ + /usr/X11R6/include \ + /usr/X11R5/include \ + /usr/X11R4/include \ + \ + /usr/include/X11 \ + /usr/include/X11R6 \ + /usr/include/X11R5 \ + /usr/include/X11R4 \ + \ + /usr/local/X11/include \ + /usr/local/X11R6/include \ + /usr/local/X11R5/include \ + /usr/local/X11R4/include \ + \ + /usr/local/include/X11 \ + /usr/local/include/X11R6 \ + /usr/local/include/X11R5 \ + /usr/local/include/X11R4 \ + \ + /usr/X386/include \ + /usr/x386/include \ + /usr/XFree86/include/X11 \ + \ + /usr/include \ + /usr/local/include \ + /usr/unsupported/include \ + /usr/athena/include \ + /usr/local/x11r5/include \ + /usr/lpp/Xamples/include \ + \ + /usr/openwin/include \ + /usr/openwin/share/include \ + ; \ + do + if test -r "$ac_dir/$x_direct_test_include"; then + ac_x_includes=$ac_dir + break + fi + done]) +fi # $ac_x_includes = NO + +if test "$ac_x_libraries" = NO; then + # Check for the libraries. + + test -z "$x_direct_test_library" && x_direct_test_library=Xt + test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc + + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS="$LIBS" + LIBS="-l$x_direct_test_library $LIBS" +AC_TRY_LINK(, [${x_direct_test_function}()], +[LIBS="$ac_save_LIBS" +# We can link X programs with no special library path. +ac_x_libraries=], +[LIBS="$ac_save_LIBS" +# First see if replacing the include by lib works. +# Check X11 before X11Rn because it is often a symlink to the current release. +for ac_dir in `echo "$ac_x_includes" | sed s/include/lib${kdelibsuff}/` \ + /usr/X11/lib${kdelibsuff} \ + /usr/X11R6/lib${kdelibsuff} \ + /usr/X11R5/lib${kdelibsuff} \ + /usr/X11R4/lib${kdelibsuff} \ + \ + /usr/lib${kdelibsuff}/X11 \ + /usr/lib${kdelibsuff}/X11R6 \ + /usr/lib${kdelibsuff}/X11R5 \ + /usr/lib${kdelibsuff}/X11R4 \ + \ + /usr/local/X11/lib${kdelibsuff} \ + /usr/local/X11R6/lib${kdelibsuff} \ + /usr/local/X11R5/lib${kdelibsuff} \ + /usr/local/X11R4/lib${kdelibsuff} \ + \ + /usr/local/lib${kdelibsuff}/X11 \ + /usr/local/lib${kdelibsuff}/X11R6 \ + /usr/local/lib${kdelibsuff}/X11R5 \ + /usr/local/lib${kdelibsuff}/X11R4 \ + \ + /usr/X386/lib${kdelibsuff} \ + /usr/x386/lib${kdelibsuff} \ + /usr/XFree86/lib${kdelibsuff}/X11 \ + \ + /usr/lib${kdelibsuff} \ + /usr/local/lib${kdelibsuff} \ + /usr/unsupported/lib${kdelibsuff} \ + /usr/athena/lib${kdelibsuff} \ + /usr/local/x11r5/lib${kdelibsuff} \ + /usr/lpp/Xamples/lib${kdelibsuff} \ + /lib/usr/lib${kdelibsuff}/X11 \ + \ + /usr/openwin/lib${kdelibsuff} \ + /usr/openwin/share/lib${kdelibsuff} \ + ; \ +do +dnl Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done]) +fi # $ac_x_libraries = NO +]) + + +dnl ------------------------------------------------------------------------ +dnl Find a file (or one of more files in a list of dirs) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_FIND_FILE], +[ +$3=NO +for i in $2; +do + for j in $1; + do + echo "configure: __oline__: $i/$j" >&AC_FD_CC + if test -r "$i/$j"; then + echo "taking that" >&AC_FD_CC + $3=$i + break 2 + fi + done +done +]) + +dnl KDE_FIND_PATH(programm-name, variable-name, list of directories, +dnl if-not-found, test-parameter) +AC_DEFUN([KDE_FIND_PATH], +[ + AC_MSG_CHECKING([for $1]) + if test -n "$$2"; then + kde_cv_path="$$2"; + else + kde_cache=`echo $1 | sed 'y%./+-%__p_%'` + + AC_CACHE_VAL(kde_cv_path_$kde_cache, + [ + kde_cv_path="NONE" + dirs="$3" + kde_save_IFS=$IFS + IFS=':' + for dir in $PATH; do + dirs="$dirs $dir" + done + IFS=$kde_save_IFS + + for dir in $dirs; do + if test -x "$dir/$1"; then + if test -n "$5" + then + evalstr="$dir/$1 $5 2>&1 " + if eval $evalstr; then + kde_cv_path="$dir/$1" + break + fi + else + kde_cv_path="$dir/$1" + break + fi + fi + done + + eval "kde_cv_path_$kde_cache=$kde_cv_path" + + ]) + + eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" + + fi + + if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then + AC_MSG_RESULT(not found) + $4 + else + AC_MSG_RESULT($kde_cv_path) + $2=$kde_cv_path + + fi +]) + +AC_DEFUN([KDE_MOC_ERROR_MESSAGE], +[ + AC_MSG_ERROR([No Qt meta object compiler (moc) found! +Please check whether you installed Qt correctly. +You need to have a running moc binary. +configure tried to run $ac_cv_path_moc and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable MOC to the right one before running +configure. +]) +]) + +AC_DEFUN([KDE_UIC_ERROR_MESSAGE], +[ + AC_MSG_WARN([No Qt ui compiler (uic) found! +Please check whether you installed Qt correctly. +You need to have a running uic binary. +configure tried to run $ac_cv_path_uic and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable UIC to the right one before running +configure. +]) +]) + + +AC_DEFUN([KDE_CHECK_UIC_FLAG], +[ + AC_MSG_CHECKING([whether uic supports -$1 ]) + kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'` + AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache, + [ + cat >conftest.ui < +EOT + ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null" + if AC_TRY_EVAL(ac_uic_testrun); then + eval "kde_cv_prog_uic_$kde_cache=yes" + else + eval "kde_cv_prog_uic_$kde_cache=no" + fi + rm -f conftest* + ]) + + if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then + AC_MSG_RESULT([yes]) + : + $3 + else + AC_MSG_RESULT([no]) + : + $4 + fi +]) + + +dnl ------------------------------------------------------------------------ +dnl Find the meta object compiler and the ui compiler in the PATH, +dnl in $QTDIR/bin, and some more usual places +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_MOC_UIC], +[ + AC_REQUIRE([KDE_CHECK_PERL]) + qt_bindirs="" + for dir in $kde_qt_dirs; do + qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc" + done + qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin" + if test ! "$ac_qt_bindir" = "NO"; then + qt_bindirs="$ac_qt_bindir $qt_bindirs" + fi + + KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE]) + if test -z "$UIC_NOT_NEEDED"; then + KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""]) + if test -z "$UIC_PATH" ; then + KDE_UIC_ERROR_MESSAGE + exit 1 + else + UIC=$UIC_PATH + + if test $kde_qtver = 3; then + KDE_CHECK_UIC_FLAG(L,[/nonexistent],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no) + KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no) + + if test x$ac_uic_supports_libpath = xyes; then + UIC="$UIC -L \$(kde_widgetdir)" + fi + if test x$ac_uic_supports_nounload = xyes; then + UIC="$UIC -nounload" + fi + fi + fi + else + UIC="echo uic not available: " + fi + + AC_SUBST(MOC) + AC_SUBST(UIC) + + UIC_TR="i18n" + if test $kde_qtver = 3; then + UIC_TR="tr2i18n" + fi + + AC_SUBST(UIC_TR) +]) + +AC_DEFUN([KDE_1_CHECK_PATHS], +[ + KDE_1_CHECK_PATH_HEADERS + + KDE_TEST_RPATH= + + if test -n "$USE_RPATH"; then + + if test -n "$kde_libraries"; then + KDE_TEST_RPATH="-R $kde_libraries" + fi + + if test -n "$qt_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" + fi + + if test -n "$x_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" + fi + + KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" + fi + +AC_MSG_CHECKING([for KDE libraries installed]) +ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + AC_MSG_RESULT(yes) +else + AC_MSG_ERROR([your system fails at linking a small KDE application! +Check, if your compiler is installed correctly and if you have used the +same compiler to compile Qt and kdelibs as you did use now. +For more details about this problem, look at the end of config.log.]) +fi + +if eval `KDEDIR= ./conftest 2>&5`; then + kde_result=done +else + kde_result=problems +fi + +KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log +kde_have_all_paths=yes + +KDE_SET_PATHS($kde_result) + +]) + +AC_DEFUN([KDE_SET_PATHS], +[ + kde_cv_all_paths="kde_have_all_paths=\"yes\" \ + kde_htmldir=\"$kde_htmldir\" \ + kde_appsdir=\"$kde_appsdir\" \ + kde_icondir=\"$kde_icondir\" \ + kde_sounddir=\"$kde_sounddir\" \ + kde_datadir=\"$kde_datadir\" \ + kde_locale=\"$kde_locale\" \ + kde_cgidir=\"$kde_cgidir\" \ + kde_confdir=\"$kde_confdir\" \ + kde_kcfgdir=\"$kde_kcfgdir\" \ + kde_mimedir=\"$kde_mimedir\" \ + kde_toolbardir=\"$kde_toolbardir\" \ + kde_wallpaperdir=\"$kde_wallpaperdir\" \ + kde_templatesdir=\"$kde_templatesdir\" \ + kde_bindir=\"$kde_bindir\" \ + kde_servicesdir=\"$kde_servicesdir\" \ + kde_servicetypesdir=\"$kde_servicetypesdir\" \ + kde_moduledir=\"$kde_moduledir\" \ + kde_styledir=\"$kde_styledir\" \ + kde_widgetdir=\"$kde_widgetdir\" \ + xdg_appsdir=\"$xdg_appsdir\" \ + xdg_menudir=\"$xdg_menudir\" \ + xdg_directorydir=\"$xdg_directorydir\" \ + kde_result=$1" +]) + +AC_DEFUN([KDE_SET_DEFAULT_PATHS], +[ +if test "$1" = "default"; then + + if test -z "$kde_htmldir"; then + kde_htmldir='\${datadir}/doc/HTML' + fi + if test -z "$kde_appsdir"; then + kde_appsdir='\${datadir}/applnk' + fi + if test -z "$kde_icondir"; then + kde_icondir='\${datadir}/icons' + fi + if test -z "$kde_sounddir"; then + kde_sounddir='\${datadir}/sounds' + fi + if test -z "$kde_datadir"; then + kde_datadir='\${datadir}/apps' + fi + if test -z "$kde_locale"; then + kde_locale='\${datadir}/locale' + fi + if test -z "$kde_cgidir"; then + kde_cgidir='\${exec_prefix}/cgi-bin' + fi + if test -z "$kde_confdir"; then + kde_confdir='\${datadir}/config' + fi + if test -z "$kde_kcfgdir"; then + kde_kcfgdir='\${datadir}/config.kcfg' + fi + if test -z "$kde_mimedir"; then + kde_mimedir='\${datadir}/mimelnk' + fi + if test -z "$kde_toolbardir"; then + kde_toolbardir='\${datadir}/toolbar' + fi + if test -z "$kde_wallpaperdir"; then + kde_wallpaperdir='\${datadir}/wallpapers' + fi + if test -z "$kde_templatesdir"; then + kde_templatesdir='\${datadir}/templates' + fi + if test -z "$kde_bindir"; then + kde_bindir='\${exec_prefix}/bin' + fi + if test -z "$kde_servicesdir"; then + kde_servicesdir='\${datadir}/services' + fi + if test -z "$kde_servicetypesdir"; then + kde_servicetypesdir='\${datadir}/servicetypes' + fi + if test -z "$kde_moduledir"; then + if test "$kde_qtver" = "2"; then + kde_moduledir='\${libdir}/kde2' + else + kde_moduledir='\${libdir}/kde3' + fi + fi + if test -z "$kde_styledir"; then + kde_styledir='\${libdir}/kde3/plugins/styles' + fi + if test -z "$kde_widgetdir"; then + kde_widgetdir='\${libdir}/kde3/plugins/designer' + fi + if test -z "$xdg_appsdir"; then + xdg_appsdir='\${datadir}/applications/kde' + fi + if test -z "$xdg_menudir"; then + xdg_menudir='\${sysconfdir}/xdg/menus' + fi + if test -z "$xdg_directorydir"; then + xdg_directorydir='\${datadir}/desktop-directories' + fi + + KDE_SET_PATHS(defaults) + +else + + if test $kde_qtver = 1; then + AC_MSG_RESULT([compiling]) + KDE_1_CHECK_PATHS + else + AC_MSG_ERROR([path checking not yet supported for KDE 2]) + fi + +fi +]) + +AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS], +[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" || + test -z "$kde_icondir" || test -z "$kde_sounddir" || + test -z "$kde_datadir" || test -z "$kde_locale" || + test -z "$kde_cgidir" || test -z "$kde_confdir" || + test -z "$kde_kcfgdir" || + test -z "$kde_mimedir" || test -z "$kde_toolbardir" || + test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || + test -z "$kde_bindir" || test -z "$kde_servicesdir" || + test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || + test -z "$kde_styledir" || test -z "kde_widgetdir" || + test -z "$xdg_appsdir" || test -z "$xdg_menudir" || test -z "$xdg_directorydir" || + test "x$kde_have_all_paths" != "xyes"; then + kde_have_all_paths=no + fi +]) + +AC_DEFUN([KDE_MISSING_PROG_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed KDE correctly. +]) +]) + +AC_DEFUN([KDE_MISSING_ARTS_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed aRts correctly or use +--without-arts to compile without aRts support (this will remove functionality). +]) +]) + +AC_DEFUN([KDE_SUBST_PROGRAMS], +[ + AC_ARG_WITH(arts, + AC_HELP_STRING([--without-arts],[build without aRts [default=yes]]), + [build_arts=$withval], + [build_arts=yes] + ) + AM_CONDITIONAL(include_ARTS, test "$build_arts" != "no") + + kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin" + test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs" + if test -n "$KDEDIRS"; then + kde_save_IFS=$IFS + IFS=: + for dir in $KDEDIRS; do + kde_default_bindirs="$dir/bin $kde_default_bindirs " + done + IFS=$kde_save_IFS + fi + kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_default_bindirs" + KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)]) + KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)]) + if test "$build_arts" != "no"; then + KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)]) + KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)]) + fi + KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs]) + KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs]) + + kde32ornewer=1 + if test -n "$kde_qtver" && test "$kde_qtver" -lt 3; then + kde32ornewer= + else + if test "$kde_qtver" = "3" && test "$kde_qtsubver" -le 1; then + kde32ornewer= + fi + fi + + if test -n "$kde32ornewer"; then + KDE_FIND_PATH(kconfig_compiler, KCONFIG_COMPILER, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kconfig_compiler)]) + KDE_FIND_PATH(dcopidlng, DCOPIDLNG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidlng)]) + fi + KDE_FIND_PATH(xmllint, XMLLINT, [${prefix}/bin ${exec_prefix}/bin /usr/local/bin /opt/local/bin], [XMLLINT=""]) + + if test -n "$MEINPROC" && test ! "$MEINPROC" = "compiled"; then + kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share" + test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs" + AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET) + if test "$KDE_XSL_STYLESHEET" = "NO"; then + KDE_XSL_STYLESHEET="" + else + KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl" + fi + fi + + DCOP_DEPENDENCIES='$(DCOPIDL)' + if test -n "$kde32ornewer"; then + KCFG_DEPENDENCIES='$(KCONFIG_COMPILER)' + DCOP_DEPENDENCIES='$(DCOPIDL) $(DCOPIDLNG)' + AC_SUBST(KCONFIG_COMPILER) + AC_SUBST(KCFG_DEPENDENCIES) + AC_SUBST(DCOPIDLNG) + fi + AC_SUBST(DCOPIDL) + AC_SUBST(DCOPIDL2CPP) + AC_SUBST(DCOP_DEPENDENCIES) + AC_SUBST(MCOPIDL) + AC_SUBST(ARTSCCONFIG) + AC_SUBST(KDECONFIG) + AC_SUBST(MEINPROC) + AC_SUBST(KDE_XSL_STYLESHEET) + AC_SUBST(XMLLINT) + + if test -x "$KDECONFIG"; then # it can be "compiled" + kde_libs_prefix=`$KDECONFIG --prefix` + if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then + AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. + This means it has been moved since you installed it. + This won't work. Please recompile kdelibs for the new prefix. + ]) + fi + kde_libs_htmldir=`$KDECONFIG --install html --expandvars` + else + kde_libs_prefix='$(prefix)' + kde_libs_htmldir='$(kde_htmldir)' + fi + AC_SUBST(kde_libs_prefix) + AC_SUBST(kde_libs_htmldir) +])dnl + +AC_DEFUN([AC_CREATE_KFSSTND], +[ +AC_REQUIRE([AC_CHECK_RPATH]) + +AC_MSG_CHECKING([for KDE paths]) +kde_result="" +kde_cached_paths=yes +AC_CACHE_VAL(kde_cv_all_paths, +[ + KDE_SET_DEFAULT_PATHS($1) + kde_cached_paths=no +]) +eval "$kde_cv_all_paths" +KDE_CHECK_PATHS_FOR_COMPLETENESS +if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then + # wrong values were cached, may be, we can set better ones + kde_result= + kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir= + kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_kcfgdir= + kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir= + kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir= + kde_have_all_paths= + kde_styledir= + kde_widgetdir= + xdg_appsdir = xdg_menudir= xdg_directorydir= + KDE_SET_DEFAULT_PATHS($1) + eval "$kde_cv_all_paths" + KDE_CHECK_PATHS_FOR_COMPLETENESS + kde_result="$kde_result (cache overridden)" +fi +if test "$kde_have_all_paths" = "no"; then + AC_MSG_ERROR([configure could not run a little KDE program to test the environment. +Since it had compiled and linked before, it must be a strange problem on your system. +Look at config.log for details. If you are not able to fix this, look at +http://www.kde.org/faq/installation.html or any www.kde.org mirror. +(If you're using an egcs version on Linux, you may update binutils!) +]) +else + rm -f conftest* + AC_MSG_RESULT($kde_result) +fi + +bindir=$kde_bindir + +KDE_SUBST_PROGRAMS + +]) + +AC_DEFUN([AC_SUBST_KFSSTND], +[ +AC_SUBST(kde_htmldir) +AC_SUBST(kde_appsdir) +AC_SUBST(kde_icondir) +AC_SUBST(kde_sounddir) +AC_SUBST(kde_datadir) +AC_SUBST(kde_locale) +AC_SUBST(kde_confdir) +AC_SUBST(kde_kcfgdir) +AC_SUBST(kde_mimedir) +AC_SUBST(kde_wallpaperdir) +AC_SUBST(kde_bindir) +dnl X Desktop Group standards +AC_SUBST(xdg_appsdir) +AC_SUBST(xdg_menudir) +AC_SUBST(xdg_directorydir) +dnl for KDE 2 +AC_SUBST(kde_templatesdir) +AC_SUBST(kde_servicesdir) +AC_SUBST(kde_servicetypesdir) +AC_SUBST(kde_moduledir) +AC_SUBST(kdeinitdir, '$(kde_moduledir)') +AC_SUBST(kde_styledir) +AC_SUBST(kde_widgetdir) +if test "$kde_qtver" = 1; then + kde_minidir="$kde_icondir/mini" +else +# for KDE 1 - this breaks KDE2 apps using minidir, but +# that's the plan ;-/ + kde_minidir="/dev/null" +fi +dnl AC_SUBST(kde_minidir) +dnl AC_SUBST(kde_cgidir) +dnl AC_SUBST(kde_toolbardir) +]) + +AC_DEFUN([KDE_MISC_TESTS], +[ + dnl Checks for libraries. + AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD + AC_SUBST(LIBUTIL) + AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD + AC_SUBST(LIBCOMPAT) + kde_have_crypt= + AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes], + AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [ + AC_MSG_WARN([you have no crypt in either libcrypt or libc. +You should install libcrypt from another source or configure with PAM +support]) + kde_have_crypt=no + ])) + AC_SUBST(LIBCRYPT) + if test $kde_have_crypt = yes; then + AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function]) + fi + AC_CHECK_SOCKLEN_T + AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + AC_CHECK_LIB(dnet_stub, dnet_ntoa, + [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) + fi + AC_CHECK_FUNC(inet_ntoa) + if test $ac_cv_func_inet_ntoa = no; then + AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") + fi + AC_CHECK_FUNC(connect) + if test $ac_cv_func_connect = no; then + AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , + $X_EXTRA_LIBS) + fi + + AC_CHECK_FUNC(remove) + if test $ac_cv_func_remove = no; then + AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + AC_CHECK_FUNC(shmat, , + AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc")) + + # more headers that need to be explicitly included on darwin + AC_CHECK_HEADERS(sys/types.h stdint.h) + + # darwin requires a poll emulation library + AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll") + + # CoreAudio framework + AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [ + AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API]) + FRAMEWORK_COREAUDIO="-Xlinker -framework -Xlinker CoreAudio" + ]) + + AC_CHECK_RES_INIT + AC_SUBST(LIB_POLL) + AC_SUBST(FRAMEWORK_COREAUDIO) + LIBSOCKET="$X_EXTRA_LIBS" + AC_SUBST(LIBSOCKET) + AC_SUBST(X_EXTRA_LIBS) + AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4 + AC_SUBST(LIBUCB) + + case $host in dnl this *is* LynxOS specific + *-*-lynxos* ) + AC_MSG_CHECKING([LynxOS header file wrappers]) + [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"] + AC_MSG_RESULT(disabled) + AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS + ;; + esac + + KDE_CHECK_TYPES + KDE_CHECK_LIBDL + KDE_CHECK_STRLCPY + +# darwin needs this to initialize the environment +AC_CHECK_HEADERS(crt_externs.h) +AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])]) + +AH_VERBATIM(_DARWIN_ENVIRON, +[ +#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H) +# include +# include +# define environ (*_NSGetEnviron()) +#endif +]) + +AH_VERBATIM(_AIX_STRINGS_H_BZERO, +[ +/* + * AIX defines FD_SET in terms of bzero, but fails to include + * that defines bzero. + */ + +#if defined(_AIX) +#include +#endif +]) + +AC_CHECK_FUNCS([vsnprintf snprintf]) + +AH_VERBATIM(_TRU64,[ +/* + * On HP-UX, the declaration of vsnprintf() is needed every time ! + */ + +#if !defined(HAVE_VSNPRINTF) || defined(hpux) +#if __STDC__ +#include +#include +#else +#include +#endif +#ifdef __cplusplus +extern "C" +#endif +int vsnprintf(char *str, size_t n, char const *fmt, va_list ap); +#ifdef __cplusplus +extern "C" +#endif +int snprintf(char *str, size_t n, char const *fmt, ...); +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Find the header files and libraries for X-Windows. Extended the +dnl macro AC_PATH_X +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([K_PATH_X], +[ +AC_REQUIRE([KDE_MISC_TESTS])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_ARG_ENABLE( + embedded, + AC_HELP_STRING([--enable-embedded],[link to Qt-embedded, don't use X]), + kde_use_qt_emb=$enableval, + kde_use_qt_emb=no +) + +AC_ARG_ENABLE( + qtopia, + AC_HELP_STRING([--enable-qtopia],[link to Qt-embedded, link to the Qtopia Environment]), + kde_use_qt_emb_palm=$enableval, + kde_use_qt_emb_palm=no +) + +AC_ARG_ENABLE( + mac, + AC_HELP_STRING([--enable-mac],[link to Qt/Mac (don't use X)]), + kde_use_qt_mac=$enableval, + kde_use_qt_mac=no +) + +if test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no"; then + +AC_MSG_CHECKING(for X) + +AC_CACHE_VAL(kde_cv_have_x, +[# One or both of the vars are not set, and there is no cached value. +if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then + kde_x_includes=NO +else + kde_x_includes=$x_includes +fi +if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then + kde_x_libraries=NO +else + kde_x_libraries=$x_libraries +fi + +# below we use the standard autoconf calls +ac_x_libraries=$kde_x_libraries +ac_x_includes=$kde_x_includes + +KDE_PATH_X_DIRECT +dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries. +dnl Unfortunately, if compiling with the N32 ABI, this is not the correct +dnl location. The correct location is /usr/lib32 or an undefined value +dnl (the linker is smart enough to pick the correct default library). +dnl Things work just fine if you use just AC_PATH_X_DIRECT. +dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to +dnl /usr/openwin/include, which doesn't work. /usr/include does work, so +dnl x_includes should be left alone. +case "$host" in +mips-sgi-irix6*) + ;; +*-*-solaris*) + ;; +*) + _AC_PATH_X_XMKMF + if test -z "$ac_x_includes"; then + ac_x_includes="." + fi + if test -z "$ac_x_libraries"; then + ac_x_libraries="/usr/lib${kdelibsuff}" + fi +esac +#from now on we use our own again + +# when the user already gave --x-includes, we ignore +# what the standard autoconf macros told us. +if test "$kde_x_includes" = NO; then + kde_x_includes=$ac_x_includes +fi + +# for --x-libraries too +if test "$kde_x_libraries" = NO; then + kde_x_libraries=$ac_x_libraries +fi + +if test "$kde_x_includes" = NO; then + AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!]) +fi + +if test "$kde_x_libraries" = NO; then + AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!]) +fi + +# Record where we found X for the cache. +kde_cv_have_x="have_x=yes \ + kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries" +])dnl + +eval "$kde_cv_have_x" + +if test "$have_x" != yes; then + AC_MSG_RESULT($have_x) + no_x=yes +else + AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes]) +fi + +if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then + X_INCLUDES="" + x_includes="."; dnl better than nothing :- + else + x_includes=$kde_x_includes + X_INCLUDES="-I$x_includes" +fi + +if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then + X_LDFLAGS="" + x_libraries="/usr/lib"; dnl better than nothing :- + else + x_libraries=$kde_x_libraries + X_LDFLAGS="-L$x_libraries" +fi +all_includes="$X_INCLUDES" +all_libraries="$X_LDFLAGS" + +# Check for libraries that X11R6 Xt/Xaw programs need. +ac_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $X_LDFLAGS" +# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to +# check for ICE first), but we must link in the order -lSM -lICE or +# we get undefined symbols. So assume we have SM if we have ICE. +# These have to be linked with before -lX11, unlike the other +# libraries we check for below, so use a different variable. +# --interran@uluru.Stanford.EDU, kb@cs.umb.edu. +AC_CHECK_LIB(ICE, IceConnectionNumber, + [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS) +LDFLAGS="$ac_save_LDFLAGS" + +LIB_X11='-lX11 $(LIBSOCKET)' + +AC_MSG_CHECKING(for libXext) +AC_CACHE_VAL(kde_cv_have_libXext, +[ +kde_ldflags_safe="$LDFLAGS" +kde_libs_safe="$LIBS" + +LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" +LIBS="-lXext -lX11 $LIBSOCKET" + +AC_TRY_LINK([ +#include +#ifdef STDC_HEADERS +# include +#endif +], +[ +printf("hello Xext\n"); +], +kde_cv_have_libXext=yes, +kde_cv_have_libXext=no +) + +LDFLAGS=$kde_ldflags_safe +LIBS=$kde_libs_safe +]) + +AC_MSG_RESULT($kde_cv_have_libXext) + +if test "$kde_cv_have_libXext" = "no"; then + AC_MSG_ERROR([We need a working libXext to proceed. Since configure +can't find it itself, we stop here assuming that make wouldn't find +them either.]) +fi + +LIB_XEXT="-lXext" +QTE_NORTTI="" + +elif test "$kde_use_qt_emb" = "yes"; then + dnl We're using QT Embedded + CPPFLAGS=-DQWS + CXXFLAGS="$CXXFLAGS -fno-rtti" + QTE_NORTTI="-fno-rtti -DQWS" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +elif test "$kde_use_qt_mac" = "yes"; then + dnl We're using QT/Mac (I use QT_MAC so that qglobal.h doesn't *have* to + dnl be included to get the information) --Sam + CXXFLAGS="$CXXFLAGS -DQT_MAC -no-cpp-precomp" + CFLAGS="$CFLAGS -DQT_MAC -no-cpp-precomp" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +fi +AC_SUBST(X_PRE_LIBS) +AC_SUBST(LIB_X11) +AC_SUBST(LIB_XRENDER) +AC_SUBST(LIBSM) +AC_SUBST(X_INCLUDES) +AC_SUBST(X_LDFLAGS) +AC_SUBST(x_includes) +AC_SUBST(x_libraries) +AC_SUBST(QTE_NORTTI) +AC_SUBST(LIB_XEXT) + +]) + +AC_DEFUN([KDE_PRINT_QT_PROGRAM], +[ +AC_REQUIRE([KDE_USE_QT]) +cat > conftest.$ac_ext < +#include +EOF +if test "$kde_qtver" = "2"; then +cat >> conftest.$ac_ext < +#include +#include +EOF + +if test $kde_qtsubver -gt 0; then +cat >> conftest.$ac_ext <> conftest.$ac_ext < +#include +#include +EOF +fi + +echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext +cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC +fi + +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe" +export LD_LIBRARY_PATH +LIBRARY_PATH="$ac_LIBRARY_PATH" +export LIBRARY_PATH +AC_LANG_RESTORE +]) + +if test "$kde_cv_qt_direct" = "yes"; then + AC_MSG_RESULT(yes) + $1 +else + AC_MSG_RESULT(no) + $2 +fi +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the Qt headers and libraries. +dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed) +dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_1_3], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([KDE_USE_QT]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +dnl ------------------------------------------------------------------------ +dnl Add configure flag to enable linking to MT version of Qt library. +dnl ------------------------------------------------------------------------ + +AC_ARG_ENABLE( + mt, + AC_HELP_STRING([--disable-mt],[link to non-threaded Qt (deprecated)]), + kde_use_qt_mt=$enableval, + [ + if test $kde_qtver = 3; then + kde_use_qt_mt=yes + else + kde_use_qt_mt=no + fi + ] +) + +USING_QT_MT="" + +dnl ------------------------------------------------------------------------ +dnl If we not get --disable-qt-mt then adjust some vars for the host. +dnl ------------------------------------------------------------------------ + +KDE_MT_LDFLAGS= +KDE_MT_LIBS= +if test "x$kde_use_qt_mt" = "xyes"; then + KDE_CHECK_THREADING + if test "x$kde_use_threading" = "xyes"; then + CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS" + KDE_MT_LDFLAGS="$USE_THREADS" + KDE_MT_LIBS="$LIBPTHREAD" + else + kde_use_qt_mt=no + fi +fi +AC_SUBST(KDE_MT_LDFLAGS) +AC_SUBST(KDE_MT_LIBS) + +kde_qt_was_given=yes + +dnl ------------------------------------------------------------------------ +dnl If we haven't been told how to link to Qt, we work it out for ourselves. +dnl ------------------------------------------------------------------------ +if test -z "$LIBQT_GLOB"; then + if test "x$kde_use_qt_emb" = "xyes"; then + LIBQT_GLOB="libqte.*" + else + LIBQT_GLOB="libqt.*" + fi +fi + +if test -z "$LIBQT"; then +dnl ------------------------------------------------------------ +dnl If we got --enable-embedded then adjust the Qt library name. +dnl ------------------------------------------------------------ + if test "x$kde_use_qt_emb" = "xyes"; then + qtlib="qte" + else + qtlib="qt" + fi + + kde_int_qt="-l$qtlib" +else + kde_int_qt="$LIBQT" + kde_lib_qt_set=yes +fi + +if test -z "$LIBQPE"; then +dnl ------------------------------------------------------------ +dnl If we got --enable-palmtop then add -lqpe to the link line +dnl ------------------------------------------------------------ + if test "x$kde_use_qt_emb" = "xyes"; then + if test "x$kde_use_qt_emb_palm" = "xyes"; then + LIB_QPE="-lqpe" + else + LIB_QPE="" + fi + else + LIB_QPE="" + fi +fi + +dnl ------------------------------------------------------------------------ +dnl If we got --enable-qt-mt then adjust the Qt library name for the host. +dnl ------------------------------------------------------------------------ + +if test "x$kde_use_qt_mt" = "xyes"; then + if test -z "$LIBQT"; then + LIBQT="-l$qtlib-mt" + kde_int_qt="-l$qtlib-mt" + else + LIBQT="$qtlib-mt" + kde_int_qt="$qtlib-mt" + fi + LIBQT_GLOB="lib$qtlib-mt.*" + USING_QT_MT="using -mt" +else + LIBQT="-l$qtlib" +fi + +if test $kde_qtver != 1; then + + AC_REQUIRE([AC_FIND_PNG]) + AC_REQUIRE([AC_FIND_JPEG]) + LIBQT="$LIBQT $LIBPNG $LIBJPEG" +fi + +if test $kde_qtver = 3; then + AC_REQUIRE([KDE_CHECK_LIBDL]) + LIBQT="$LIBQT $LIBDL" +fi + +AC_MSG_CHECKING([for Qt]) + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET" +fi +ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO +qt_libraries="" +qt_includes="" +AC_ARG_WITH(qt-dir, + AC_HELP_STRING([--with-qt-dir=DIR],[where the root of Qt is installed ]), + [ ac_qt_includes="$withval"/include + ac_qt_libraries="$withval"/lib${kdelibsuff} + ac_qt_bindir="$withval"/bin + ]) + +AC_ARG_WITH(qt-includes, + AC_HELP_STRING([--with-qt-includes=DIR],[where the Qt includes are. ]), + [ + ac_qt_includes="$withval" + ]) + +kde_qt_libs_given=no + +AC_ARG_WITH(qt-libraries, + AC_HELP_STRING([--with-qt-libraries=DIR],[where the Qt library is installed.]), + [ ac_qt_libraries="$withval" + kde_qt_libs_given=yes + ]) + +AC_CACHE_VAL(ac_cv_have_qt, +[#try to guess Qt locations + +qt_incdirs="" +for dir in $kde_qt_dirs; do + qt_incdirs="$qt_incdirs $dir/include $dir" +done +qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes" +if test ! "$ac_qt_includes" = "NO"; then + qt_incdirs="$ac_qt_includes $qt_incdirs" +fi + +if test "$kde_qtver" != "1"; then + kde_qt_header=qstyle.h +else + kde_qt_header=qglobal.h +fi + +AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir) +ac_qt_includes="$qt_incdir" + +qt_libdirs="" +for dir in $kde_qt_dirs; do + qt_libdirs="$qt_libdirs $dir/lib${kdelibsuff} $dir" +done +qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries" +if test ! "$ac_qt_libraries" = "NO"; then + qt_libdir=$ac_qt_libraries +else + qt_libdirs="$ac_qt_libraries $qt_libdirs" + # if the Qt was given, the chance is too big that libqt.* doesn't exist + qt_libdir=NONE + for dir in $qt_libdirs; do + try="ls -1 $dir/${LIBQT_GLOB}" + if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done +fi +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIBQT="$LIBQT ${kde_int_qt}_incremental" + break + fi +done + +ac_qt_libraries="$qt_libdir" + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +ac_cxxflags_safe="$CXXFLAGS" +ac_ldflags_safe="$LDFLAGS" +ac_libs_safe="$LIBS" + +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" +LIBS="$LIBS $LIBQT $KDE_MT_LIBS" + +KDE_PRINT_QT_PROGRAM + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC + ac_qt_libraries="NO" +fi +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +AC_LANG_RESTORE +if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then + ac_cv_have_qt="have_qt=no" + ac_qt_notfound="" + missing_qt_mt="" + if test "$ac_qt_includes" = NO; then + if test "$ac_qt_libraries" = NO; then + ac_qt_notfound="(headers and libraries)"; + else + ac_qt_notfound="(headers)"; + fi + else + if test "x$kde_use_qt_mt" = "xyes"; then + missing_qt_mt=" +Make sure that you have compiled Qt with thread support!" + ac_qt_notfound="(library $qtlib-mt)"; + else + ac_qt_notfound="(library $qtlib)"; + fi + fi + + AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! +For more details about this problem, look at the end of config.log.$missing_qt_mt]) +else + have_qt="yes" +fi +]) + +eval "$ac_cv_have_qt" + +if test "$have_qt" != yes; then + AC_MSG_RESULT([$have_qt]); +else + ac_cv_have_qt="have_qt=yes \ + ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries" + AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT]) + + qt_libraries="$ac_qt_libraries" + qt_includes="$ac_qt_includes" +fi + +if test ! "$kde_qt_libs_given" = "yes" && test ! "$kde_qtver" = 3; then + KDE_CHECK_QT_DIRECT(qt_libraries= ,[]) +fi + +AC_SUBST(qt_libraries) +AC_SUBST(qt_includes) + +if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then + QT_INCLUDES="" +else + QT_INCLUDES="-I$qt_includes" + all_includes="$QT_INCLUDES $all_includes" +fi + +if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then + QT_LDFLAGS="" +else + QT_LDFLAGS="-L$qt_libraries" + all_libraries="$all_libraries $QT_LDFLAGS" +fi +test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS" + +AC_SUBST(QT_INCLUDES) +AC_SUBST(QT_LDFLAGS) +AC_PATH_QT_MOC_UIC + +KDE_CHECK_QT_JPEG + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM)' +else +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG)' +fi +test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS" +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIB_QT="$LIB_QT ${kde_int_qt}_incremental" + break + fi +done + +AC_SUBST(LIB_QT) +AC_SUBST(LIB_QPE) + +AC_SUBST(kde_qtver) +]) + +AC_DEFUN([AC_PATH_QT], +[ +AC_PATH_QT_1_3 +]) + +AC_DEFUN([KDE_CHECK_UIC_PLUGINS], +[ +AC_REQUIRE([AC_PATH_QT_MOC_UIC]) + +if test x$ac_uic_supports_libpath = xyes; then + +AC_MSG_CHECKING([if UIC has KDE plugins available]) +AC_CACHE_VAL(kde_cv_uic_plugins, +[ +cat > actest.ui << EOF + +NewConnectionDialog + + + + testInput + + + + +EOF + + + +kde_cv_uic_plugins=no +kde_line="$UIC_PATH -L $kde_widgetdir" +if test x$ac_uic_supports_nounload = xyes; then + kde_line="$kde_line -nounload" +fi +kde_line="$kde_line -impl actest.h actest.ui > actest.cpp" +if AC_TRY_EVAL(kde_line); then + # if you're trying to debug this check and think it's incorrect, + # better check your installation. The check _is_ correct - your + # installation is not. + if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then + kde_cv_uic_plugins=yes + fi +fi +rm -f actest.ui actest.cpp +]) + +AC_MSG_RESULT([$kde_cv_uic_plugins]) +if test "$kde_cv_uic_plugins" != yes; then + AC_MSG_ERROR([you need to install kdelibs first.]) +fi +fi +]) + +AC_DEFUN([KDE_CHECK_FINAL], +[ + AC_ARG_ENABLE(final, + AC_HELP_STRING([--enable-final], + [build size optimized apps (experimental - needs lots of memory)]), + kde_use_final=$enableval, kde_use_final=no) + + if test "x$kde_use_final" = "xyes"; then + KDE_USE_FINAL_TRUE="" + KDE_USE_FINAL_FALSE="#" + else + KDE_USE_FINAL_TRUE="#" + KDE_USE_FINAL_FALSE="" + fi + AC_SUBST(KDE_USE_FINAL_TRUE) + AC_SUBST(KDE_USE_FINAL_FALSE) +]) + +AC_DEFUN([KDE_CHECK_CLOSURE], +[ + AC_ARG_ENABLE(closure, + AC_HELP_STRING([--enable-closure],[delay template instantiation]), + kde_use_closure=$enableval, kde_use_closure=no) + + KDE_NO_UNDEFINED="" + if test "x$kde_use_closure" = "xyes"; then + KDE_USE_CLOSURE_TRUE="" + KDE_USE_CLOSURE_FALSE="#" +# CXXFLAGS="$CXXFLAGS $REPO" + else + KDE_USE_CLOSURE_TRUE="#" + KDE_USE_CLOSURE_FALSE="" + KDE_NO_UNDEFINED="" + case $host in + *-*-linux-gnu) + KDE_CHECK_COMPILER_FLAG([Wl,--no-undefined], + [KDE_CHECK_COMPILER_FLAG([Wl,--allow-shlib-undefined], + [KDE_NO_UNDEFINED="-Wl,--no-undefined -Wl,--allow-shlib-undefined"], + [KDE_NO_UNDEFINED=""])], + [KDE_NO_UNDEFINED=""]) + ;; + esac + fi + AC_SUBST(KDE_USE_CLOSURE_TRUE) + AC_SUBST(KDE_USE_CLOSURE_FALSE) + AC_SUBST(KDE_NO_UNDEFINED) +]) + +AC_DEFUN([KDE_CHECK_NMCHECK], +[ + AC_ARG_ENABLE(nmcheck,AC_HELP_STRING([--enable-nmcheck],[enable automatic namespace cleanness check]), + kde_use_nmcheck=$enableval, kde_use_nmcheck=no) + + if test "$kde_use_nmcheck" = "yes"; then + KDE_USE_NMCHECK_TRUE="" + KDE_USE_NMCHECK_FALSE="#" + else + KDE_USE_NMCHECK_TRUE="#" + KDE_USE_NMCHECK_FALSE="" + fi + AC_SUBST(KDE_USE_NMCHECK_TRUE) + AC_SUBST(KDE_USE_NMCHECK_FALSE) +]) + +AC_DEFUN([KDE_EXPAND_MAKEVAR], [ +savex=$exec_prefix +test "x$exec_prefix" = xNONE && exec_prefix=$prefix +tmp=$$2 +while $1=`eval echo "$tmp"`; test "x$$1" != "x$tmp"; do tmp=$$1; done +exec_prefix=$savex +]) + +dnl ------------------------------------------------------------------------ +dnl Now, the same with KDE +dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed) +dnl and $(kde_includes) will be the kdehdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_BASE_PATH_KDE], +[ +AC_REQUIRE([KDE_CHECK_STL]) +AC_REQUIRE([AC_PATH_QT])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_CHECK_RPATH +AC_MSG_CHECKING([for KDE]) + +if test "${prefix}" != NONE; then + kde_includes=${includedir} + KDE_EXPAND_MAKEVAR(ac_kde_includes, includedir) + + kde_libraries=${libdir} + KDE_EXPAND_MAKEVAR(ac_kde_libraries, libdir) + +else + ac_kde_includes= + ac_kde_libraries= + kde_libraries="" + kde_includes="" +fi + +AC_CACHE_VAL(ac_cv_have_kde, +[#try to guess kde locations + +if test "$kde_qtver" = 1; then + kde_check_header="ksock.h" + kde_check_lib="libkdecore.la" +else + kde_check_header="ksharedptr.h" + kde_check_lib="libkio.la" +fi + +if test -z "$1"; then + +kde_incdirs="/usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes" +test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs" +kde_incdirs="$ac_kde_includes $kde_incdirs" +AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir) +ac_kde_includes="$kde_incdir" + +if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then + AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE headers installed. This will fail. +So, check this please and use another prefix!]) +fi + +kde_libdirs="/usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}" +test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs" +kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs" +AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir) +ac_kde_libraries="$kde_libdir" + +kde_widgetdir=NO +dnl this might be somewhere else +AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir) + +if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then +AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE libraries installed. This will fail. +So, check this please and use another prefix!]) +fi + +if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then +AC_MSG_ERROR([ +I can't find the designer plugins. These are required and should have been installed +by kdelibs]) +fi + +if test -n "$kde_widgetdir"; then + kde_widgetdir="$kde_widgetdir/kde3/plugins/designer" +fi + + +if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then + ac_cv_have_kde="have_kde=no" +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" +fi + +else dnl test -z $1 + + ac_cv_have_kde="have_kde=no" + +fi +])dnl + +eval "$ac_cv_have_kde" + +if test "$have_kde" != "yes"; then + if test "${prefix}" = NONE; then + ac_kde_prefix="$ac_default_prefix" + else + ac_kde_prefix="$prefix" + fi + if test "$exec_prefix" = NONE; then + ac_kde_exec_prefix="$ac_kde_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix]) + else + ac_kde_exec_prefix="$exec_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix]) + fi + + kde_libraries="${libdir}" + kde_includes="${includedir}" + +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" + AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes]) + + kde_libraries="$ac_kde_libraries" + kde_includes="$ac_kde_includes" +fi +AC_SUBST(kde_libraries) +AC_SUBST(kde_includes) + +if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then + KDE_INCLUDES="" +else + KDE_INCLUDES="-I$kde_includes" + all_includes="$KDE_INCLUDES $all_includes" +fi + +KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION" + +KDE_LDFLAGS="-L$kde_libraries" +if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then + all_libraries="$all_libraries $KDE_LDFLAGS" +fi + +AC_SUBST(KDE_LDFLAGS) +AC_SUBST(KDE_INCLUDES) + +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +all_libraries="$all_libraries $USER_LDFLAGS" +all_includes="$all_includes $USER_INCLUDES" +AC_SUBST(all_includes) +AC_SUBST(all_libraries) + +if test -z "$1"; then +KDE_CHECK_UIC_PLUGINS +fi + +ac_kde_libraries="$kde_libdir" + +AC_SUBST(AUTODIRS) + + +]) + +AC_DEFUN([KDE_CHECK_EXTRA_LIBS], +[ +AC_MSG_CHECKING(for extra includes) +AC_ARG_WITH(extra-includes,AC_HELP_STRING([--with-extra-includes=DIR],[adds non standard include paths]), + kde_use_extra_includes="$withval", + kde_use_extra_includes=NONE +) +kde_extra_includes= +if test -n "$kde_use_extra_includes" && \ + test "$kde_use_extra_includes" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_includes; do + kde_extra_includes="$kde_extra_includes $dir" + USER_INCLUDES="$USER_INCLUDES -I$dir" + done + IFS=$ac_save_ifs + kde_use_extra_includes="added" +else + kde_use_extra_includes="no" +fi +AC_SUBST(USER_INCLUDES) + +AC_MSG_RESULT($kde_use_extra_includes) + +kde_extra_libs= +AC_MSG_CHECKING(for extra libs) +AC_ARG_WITH(extra-libs,AC_HELP_STRING([--with-extra-libs=DIR],[adds non standard library paths]), + kde_use_extra_libs=$withval, + kde_use_extra_libs=NONE +) +if test -n "$kde_use_extra_libs" && \ + test "$kde_use_extra_libs" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_libs; do + kde_extra_libs="$kde_extra_libs $dir" + KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir" + USER_LDFLAGS="$USER_LDFLAGS -L$dir" + done + IFS=$ac_save_ifs + kde_use_extra_libs="added" +else + kde_use_extra_libs="no" +fi + +AC_SUBST(USER_LDFLAGS) + +AC_MSG_RESULT($kde_use_extra_libs) + +]) + +AC_DEFUN([KDE_1_CHECK_PATH_HEADERS], +[ + AC_MSG_CHECKING([for KDE headers installed]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS +cat > conftest.$ac_ext < +#endif +#include +#include "confdefs.h" +#include + +int main() { + printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); + printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); + printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); + printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); + printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); + printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); + printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); + printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); + printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); + printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); + printf("kde_wallpaperdir=\\"%s\\"\n", + KApplication::kde_wallpaperdir().data()); + printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); + printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); + printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); + printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); + printf("kde_moduledir=\\"/tmp/dummy\\"\n"); + printf("kde_styledir=\\"/tmp/dummy\\"\n"); + printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); + printf("xdg_appsdir=\\"/tmp/dummy\\"\n"); + printf("xdg_menudir=\\"/tmp/dummy\\"\n"); + printf("xdg_directorydir=\\"/tmp/dummy\\"\n"); + printf("kde_kcfgdir=\\"/tmp/dummy\\"\n"); + return 0; + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$all_includes $CPPFLAGS" + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + else + AC_MSG_ERROR([your system is not able to compile a small KDE application! +Check, if you installed the KDE header files correctly. +For more details about this problem, look at the end of config.log.]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_CHECK_KDEQTADDON], +[ +AC_MSG_CHECKING(for kde-qt-addon) +AC_CACHE_VAL(kde_cv_have_kdeqtaddon, +[ + kde_ldflags_safe="$LDFLAGS" + kde_libs_safe="$LIBS" + kde_cxxflags_safe="$CXXFLAGS" + + LIBS="-lkde-qt-addon $LIBQT $LIBS" + CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes" + LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS" + + AC_TRY_LINK([ + #include + ], + [ + QDomDocument doc; + ], + kde_cv_have_kdeqtaddon=yes, + kde_cv_have_kdeqtaddon=no + ) + + LDFLAGS=$kde_ldflags_safe + LIBS=$kde_libs_safe + CXXFLAGS=$kde_cxxflags_safe +]) + +AC_MSG_RESULT($kde_cv_have_kdeqtaddon) + +if test "$kde_cv_have_kdeqtaddon" = "no"; then + AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first. +It is a separate package (and CVS module) named kde-qt-addon.]) +fi +]) + +AC_DEFUN([KDE_CREATE_LIBS_ALIASES], +[ + AC_REQUIRE([KDE_MISC_TESTS]) + AC_REQUIRE([KDE_CHECK_LIBDL]) + AC_REQUIRE([K_PATH_X]) + +if test $kde_qtver = 3; then + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KABC, "-lkabc") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") + AC_SUBST(LIB_KUTILS, "-lkutils") + AC_SUBST(LIB_KDEPIM, "-lkdepim") +# these are for backward compatibility + AC_SUBST(LIB_KSYCOCA, "-lkio") + AC_SUBST(LIB_KFILE, "-lkio") +elif test $kde_qtver = 2; then + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_KSYCOCA, "-lksycoca") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KFILE, "-lkfile") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") +else + AC_SUBST(LIB_KDECORE, "-lkdecore -lXext $(LIB_QT)") + AC_SUBST(LIB_KDEUI, "-lkdeui $(LIB_KDECORE)") + AC_SUBST(LIB_KFM, "-lkfm $(LIB_KDECORE)") + AC_SUBST(LIB_KFILE, "-lkfile $(LIB_KFM) $(LIB_KDEUI)") + AC_SUBST(LIB_KAB, "-lkab $(LIB_KIMGIO) $(LIB_KDECORE)") +fi +]) + +AC_DEFUN([AC_PATH_KDE], +[ + AC_BASE_PATH_KDE + AC_ARG_ENABLE(path-check,AC_HELP_STRING([--disable-path-check],[don't try to find out, where to install]), + [ + if test "$enableval" = "no"; + then ac_use_path_checking="default" + else ac_use_path_checking="" + fi + ], + [ + if test "$kde_qtver" = 1; + then ac_use_path_checking="" + else ac_use_path_checking="default" + fi + ] + ) + + AC_CREATE_KFSSTND($ac_use_path_checking) + + AC_SUBST_KFSSTND + KDE_CREATE_LIBS_ALIASES +]) + +dnl KDE_CHECK_FUNC_EXT(, [headers], [sample-use], [C prototype], [autoheader define], [call if found]) +AC_DEFUN([KDE_CHECK_FUNC_EXT], +[ +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(kde_cv_func_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +save_CXXFLAGS="$CXXFLAGS" +kde_safe_LIBS="$LIBS" +LIBS="$LIBS $X_EXTRA_LIBS" +if test "$GXX" = "yes"; then +CXXFLAGS="$CXXFLAGS -pedantic-errors" +fi +AC_TRY_COMPILE([ +$2 +], +[ +$3 +], +kde_cv_func_$1=yes, +kde_cv_func_$1=no) +CXXFLAGS="$save_CXXFLAGS" +LIBS="$kde_safe_LIBS" +AC_LANG_RESTORE +]) + +AC_MSG_RESULT($kde_cv_func_$1) + +AC_MSG_CHECKING([if $1 needs custom prototype]) +AC_CACHE_VAL(kde_cv_proto_$1, +[ +if test "x$kde_cv_func_$1" = xyes; then + kde_cv_proto_$1=no +else + case "$1" in + setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat) + kde_cv_proto_$1="yes - in libkdefakes" + ;; + *) + kde_cv_proto_$1=unknown + ;; + esac +fi + +if test "x$kde_cv_proto_$1" = xunknown; then + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + kde_safe_libs=$LIBS + LIBS="$LIBS $X_EXTRA_LIBS" + AC_TRY_LINK([ +$2 + +extern "C" $4; +], +[ +$3 +], +[ kde_cv_func_$1=yes + kde_cv_proto_$1=yes ], + [kde_cv_proto_$1="$1 unavailable"] +) +LIBS=$kde_safe_libs +AC_LANG_RESTORE +fi +]) +AC_MSG_RESULT($kde_cv_proto_$1) + +if test "x$kde_cv_func_$1" = xyes; then + AC_DEFINE(HAVE_$5, 1, [Define if you have $1]) + $6 +fi +if test "x$kde_cv_proto_$1" = xno; then + AC_DEFINE(HAVE_$5_PROTO, 1, + [Define if you have the $1 prototype]) +fi + +AH_VERBATIM([_HAVE_$5_PROTO], +[ +#if !defined(HAVE_$5_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +$4; +#ifdef __cplusplus +} +#endif +#endif +]) +]) + +AC_DEFUN([AC_CHECK_SETENV], +[ + KDE_CHECK_FUNC_EXT(setenv, [ +#include +], + [setenv("VAR", "VALUE", 1);], + [int setenv (const char *, const char *, int)], + [SETENV]) +]) + +AC_DEFUN([AC_CHECK_UNSETENV], +[ + KDE_CHECK_FUNC_EXT(unsetenv, [ +#include +], + [unsetenv("VAR");], + [void unsetenv (const char *)], + [UNSETENV]) +]) + +AC_DEFUN([AC_CHECK_GETDOMAINNAME], +[ + KDE_CHECK_FUNC_EXT(getdomainname, [ +#include +#include +#include +], + [ +char buffer[200]; +getdomainname(buffer, 200); +], + [#include + int getdomainname (char *, size_t)], + [GETDOMAINNAME]) +]) + +AC_DEFUN([AC_CHECK_GETHOSTNAME], +[ + KDE_CHECK_FUNC_EXT(gethostname, [ +#include +#include +], + [ +char buffer[200]; +gethostname(buffer, 200); +], + [int gethostname (char *, unsigned int)], + [GETHOSTNAME]) +]) + +AC_DEFUN([AC_CHECK_USLEEP], +[ + KDE_CHECK_FUNC_EXT(usleep, [ +#include +], + [ +usleep(200); +], + [int usleep (unsigned int)], + [USLEEP]) +]) + + +AC_DEFUN([AC_CHECK_RANDOM], +[ + KDE_CHECK_FUNC_EXT(random, [ +#include +], + [ +random(); +], + [long int random(void)], + [RANDOM]) + + KDE_CHECK_FUNC_EXT(srandom, [ +#include +], + [ +srandom(27); +], + [void srandom(unsigned int)], + [SRANDOM]) + +]) + +AC_DEFUN([AC_CHECK_INITGROUPS], +[ + KDE_CHECK_FUNC_EXT(initgroups, [ +#include +#include +#include +], + [ +char buffer[200]; +initgroups(buffer, 27); +], + [int initgroups(const char *, gid_t)], + [INITGROUPS]) +]) + +AC_DEFUN([AC_CHECK_MKSTEMPS], +[ + KDE_CHECK_FUNC_EXT(mkstemps, [ +#include +#include +], + [ +mkstemps("/tmp/aaaXXXXXX", 6); +], + [int mkstemps(char *, int)], + [MKSTEMPS]) +]) + +AC_DEFUN([AC_CHECK_MKDTEMP], +[ + KDE_CHECK_FUNC_EXT(mkdtemp, [ +#include +#include +], + [ +mkdtemp("/tmp/aaaXXXXXX"); +], + [char *mkdtemp(char *)], + [MKDTEMP]) +]) + + +AC_DEFUN([AC_CHECK_RES_INIT], +[ + AC_MSG_CHECKING([if res_init needs -lresolv]) + kde_libs_safe="$LIBS" + LIBS="$LIBS $X_EXTRA_LIBS -lresolv" + AC_TRY_LINK( + [ +#include +#include +#include +#include + ], + [ + res_init(); + ], + [ + LIBRESOLV="-lresolv" + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) + ], + [ AC_MSG_RESULT(no) ] + ) + LIBS=$kde_libs_safe + AC_SUBST(LIBRESOLV) + + AC_MSG_CHECKING([if res_init is available]) + AC_TRY_COMPILE( + [ +#include +#include +#include +#include + ], + [ + res_init(); + ], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) + ], + [ AC_MSG_RESULT(no) ] + ) +]) + +AC_DEFUN([AC_CHECK_STRLCPY], +[ + KDE_CHECK_FUNC_EXT(strlcpy, [ +#include +], +[ char buf[20]; + strlcpy(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcpy(char*, const char*, unsigned long)], + [STRLCPY]) +]) + +AC_DEFUN([AC_CHECK_STRLCAT], +[ + KDE_CHECK_FUNC_EXT(strlcat, [ +#include +], +[ char buf[20]; + buf[0]='\0'; + strlcat(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcat(char*, const char*, unsigned long)], + [STRLCAT]) +]) + +AC_DEFUN([AC_FIND_GIF], + [AC_MSG_CHECKING([for giflib]) +AC_CACHE_VAL(ac_cv_lib_gif, +[ac_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries -lgif -lX11 $LIBSOCKET" +else +LIBS="$all_libraries -lgif" +fi +AC_TRY_LINK(dnl +[ +#ifdef __cplusplus +extern "C" { +#endif +int GifLastError(void); +#ifdef __cplusplus +} +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +], + [return GifLastError();], + eval "ac_cv_lib_gif=yes", + eval "ac_cv_lib_gif=no") +LIBS="$ac_save_LIBS" +])dnl +if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif]) +else + AC_MSG_ERROR(You need giflib30. Please install the kdesupport package) +fi +]) + +AC_DEFUN([KDE_FIND_JPEG_HELPER], +[ +AC_MSG_CHECKING([for libjpeg$2]) +AC_CACHE_VAL(ac_cv_lib_jpeg_$1, +[ +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm" +ac_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[/* Override any gcc2 internal prototype to avoid an error. */ +struct jpeg_decompress_struct; +typedef struct jpeg_decompress_struct * j_decompress_ptr; +typedef int size_t; +#ifdef __cplusplus +extern "C" { +#endif + void jpeg_CreateDecompress(j_decompress_ptr cinfo, + int version, size_t structsize); +#ifdef __cplusplus +} +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +], + [jpeg_CreateDecompress(0L, 0, 0);], + eval "ac_cv_lib_jpeg_$1=-ljpeg$2", + eval "ac_cv_lib_jpeg_$1=no") +LIBS="$ac_save_LIBS" +CFLAGS="$ac_save_CFLAGS" +]) + +if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then + LIBJPEG="$ac_cv_lib_jpeg_$1" + AC_MSG_RESULT($ac_cv_lib_jpeg_$1) +else + AC_MSG_RESULT(no) + $3 +fi + +]) + +AC_DEFUN([AC_FIND_JPEG], +[ +dnl first look for libraries +KDE_FIND_JPEG_HELPER(6b, 6b, + KDE_FIND_JPEG_HELPER(normal, [], + [ + LIBJPEG= + ] + ) +) + +dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h +dnl requires system dependent includes loaded before it) +jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes" +AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir) +test "x$jpeg_incdir" = xNO && jpeg_incdir= + +dnl if headers _and_ libraries are missing, this is no error, and we +dnl continue with a warning (the user will get no jpeg support in khtml) +dnl if only one is missing, it means a configuration error, but we still +dnl only warn +if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then + AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg]) +else + if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then + AC_MSG_WARN([ +There is an installation error in jpeg support. You seem to have only one +of either the headers _or_ the libraries installed. You may need to either +provide correct --with-extra-... options, or the development package of +libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ +Disabling JPEG support. +]) + else + AC_MSG_WARN([libjpeg not found. disable JPEG support.]) + fi + jpeg_incdir= + LIBJPEG= +fi + +AC_SUBST(LIBJPEG) +AH_VERBATIM(_AC_CHECK_JPEG, +[/* + * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system + * headers and I'm too lazy to write a configure test as long as only + * unixware is related + */ +#ifdef _UNIXWARE +#define HAVE_BOOLEAN +#endif +]) +]) + +AC_DEFUN([KDE_CHECK_QT_JPEG], +[ +if test -n "$LIBJPEG"; then +AC_MSG_CHECKING([if Qt needs $LIBJPEG]) +AC_CACHE_VAL(kde_cv_qt_jpeg, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS $LIBQT" +LIBS=`echo $LIBS | sed "s/$LIBJPEG//"` +ac_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[#include ], + [ + int argc; + char** argv; + QApplication app(argc, argv);], + eval "kde_cv_qt_jpeg=no", + eval "kde_cv_qt_jpeg=yes") +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +fi +]) + +if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then + AC_MSG_RESULT(yes) + LIBJPEG_QT='$(LIBJPEG)' +else + AC_MSG_RESULT(no) + LIBJPEG_QT= +fi + +]) + +AC_DEFUN([AC_FIND_ZLIB], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for libz]) +AC_CACHE_VAL(ac_cv_lib_z, +[ +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#include +], +[ + char buf[42]; + gzFile f = (gzFile) 0; + /* this would segfault.. but we only link, don't run */ + (void) gzgets(f, buf, sizeof(buf)); + + return (zlibVersion() == ZLIB_VERSION); +], + eval "ac_cv_lib_z='-lz'", + eval "ac_cv_lib_z=no") +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if test ! "$ac_cv_lib_z" = no; then + AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz]) + LIBZ="$ac_cv_lib_z" + AC_MSG_RESULT($ac_cv_lib_z) +else + AC_MSG_ERROR(not found. + Possibly configure picks up an outdated version + installed by XFree86. Remove it from your system. + + Check your installation and look into config.log) + LIBZ="" +fi +AC_SUBST(LIBZ) +]) + +AC_DEFUN([KDE_TRY_TIFFLIB], +[ +AC_MSG_CHECKING([for libtiff $1]) + +AC_CACHE_VAL(kde_cv_libtiff_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm" +else +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm" +fi +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl +[ +#include +], + [return (TIFFOpen( "", "r") == 0); ], +[ + kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ" +], [ + kde_cv_libtiff_$1=no +]) + +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +]) + +if test "$kde_cv_libtiff_$1" = "no"; then + AC_MSG_RESULT(no) + LIBTIFF="" + $3 +else + LIBTIFF="$kde_cv_libtiff_$1" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff]) + $2 +fi + +]) + +AC_DEFUN([AC_FIND_TIFF], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +KDE_TRY_TIFFLIB(tiff, [], + KDE_TRY_TIFFLIB(tiff34)) + +AC_SUBST(LIBTIFF) +]) + + +AC_DEFUN([AC_FIND_PNG], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_MSG_CHECKING([for libpng]) +AC_CACHE_VAL(ac_cv_lib_png, +[ +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET" +else +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm" +fi +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + png_structp png_ptr = png_create_read_struct( /* image ptr */ + PNG_LIBPNG_VER_STRING, 0, 0, 0 ); + return( png_ptr != 0 ); + ], + eval "ac_cv_lib_png='-lpng $LIBZ -lm'", + eval "ac_cv_lib_png=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng]) + LIBPNG="$ac_cv_lib_png" + AC_SUBST(LIBPNG) + AC_MSG_RESULT($ac_cv_lib_png) +else + AC_MSG_RESULT(no) + LIBPNG="" + AC_SUBST(LIBPNG) +fi +]) + + +AC_DEFUN([AC_FIND_JASPER], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_MSG_CHECKING([for jasper]) +AC_CACHE_VAL(ac_cv_jasper, +[ +kde_save_LIBS="$LIBS" +LIBS="$LIBS $all_libraries $USER_LDFLAGS -ljasper $LIBJPEG -lm" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + return( jas_init() ); + ], + eval "ac_cv_jasper='-ljasper $LIBJPEG -lm'", + eval "ac_cv_jasper=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_jasper`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_JASPER, 1, [Define if you have jasper]) + LIB_JASPER="$ac_cv_jasper" + AC_MSG_RESULT($ac_cv_jasper) +else + AC_MSG_RESULT(no) + LIB_JASPER="" +fi +AC_SUBST(LIB_JASPER) +]) + +AC_DEFUN([AC_CHECK_BOOL], +[ + AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool]) +]) + +AC_DEFUN([AC_CHECK_GNU_EXTENSIONS], +[ +AC_MSG_CHECKING(if you need GNU extensions) +AC_CACHE_VAL(ac_cv_gnu_extensions, +[ +cat > conftest.c << EOF +#include + +#ifdef __GNU_LIBRARY__ +yes +#endif +EOF + +if (eval "$ac_cpp conftest.c") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_gnu_extensions=yes +else + ac_cv_gnu_extensions=no +fi +]) + +AC_MSG_RESULT($ac_cv_gnu_extensions) +if test "$ac_cv_gnu_extensions" = "yes"; then + AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions]) +fi +]) + +AC_DEFUN([KDE_CHECK_COMPILER_FLAG], +[ +AC_MSG_CHECKING([whether $CXX supports -$1]) +kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'` +AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -$1" + AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], []) + CXXFLAGS="$save_CXXFLAGS" + AC_LANG_RESTORE +]) +if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then + AC_MSG_RESULT(yes) + : + $2 +else + AC_MSG_RESULT(no) + : + $3 +fi +]) + +dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables +dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever]) +dnl it's all white-space separated +AC_DEFUN([AC_REMOVE_FORBIDDEN], +[ __val=$$1 + __forbid=" $2 " + if test -n "$__val"; then + __new="" + ac_save_IFS=$IFS + IFS=" " + for i in $__val; do + case "$__forbid" in + *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;; + *) # Careful to not add spaces, where there were none, because otherwise + # libtool gets confused, if we change e.g. CXX + if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;; + esac + done + IFS=$ac_save_IFS + $1=$__new + fi +]) + +dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given +AC_DEFUN([AC_VALIDIFY_CXXFLAGS], +[dnl +if test "x$kde_use_qt_emb" != "xyes"; then + AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath]) +else + AC_REMOVE_FORBIDDEN(CXX, [-rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath]) +fi +]) + +AC_DEFUN([AC_CHECK_COMPILERS], +[ + AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]), + [ + case $enableval in + yes) + kde_use_debug_code="yes" + kde_use_debug_define=no + ;; + full) + kde_use_debug_code="full" + kde_use_debug_define=no + ;; + *) + kde_use_debug_code="no" + kde_use_debug_define=yes + ;; + esac + ], + [kde_use_debug_code="no" + kde_use_debug_define=no + ]) + + dnl Just for configure --help + AC_ARG_ENABLE(dummyoption, + AC_HELP_STRING([--disable-debug], + [disables debug output and debug symbols [default=no]]), + [],[]) + + AC_ARG_ENABLE(strict, + AC_HELP_STRING([--enable-strict], + [compiles with strict compiler options (may not work!)]), + [ + if test $enableval = "no"; then + kde_use_strict_options="no" + else + kde_use_strict_options="yes" + fi + ], [kde_use_strict_options="no"]) + + AC_ARG_ENABLE(warnings,AC_HELP_STRING([--disable-warnings],[disables compilation with -Wall and similiar]), + [ + if test $enableval = "no"; then + kde_use_warnings="no" + else + kde_use_warnings="yes" + fi + ], [kde_use_warnings="yes"]) + + dnl enable warnings for debug build + if test "$kde_use_debug_code" != "no"; then + kde_use_warnings=yes + fi + + AC_ARG_ENABLE(profile,AC_HELP_STRING([--enable-profile],[creates profiling infos [default=no]]), + [kde_use_profiling=$enableval], + [kde_use_profiling="no"] + ) + + dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS + CFLAGS=" $CFLAGS" + + AC_PROG_CC + + AC_PROG_CPP + + if test "$GCC" = "yes"; then + if test "$kde_use_debug_code" != "no"; then + if test $kde_use_debug_code = "full"; then + CFLAGS="-g3 -fno-inline $CFLAGS" + else + CFLAGS="-g -O2 $CFLAGS" + fi + else + CFLAGS="-O2 $CFLAGS" + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CFLAGS="-DNDEBUG $CFLAGS" + fi + + + case "$host" in + *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";; + *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";; + esac + + if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then + LDFLAGS="" + fi + + CXXFLAGS=" $CXXFLAGS" + + AC_PROG_CXX + + if test "$GXX" = "yes" || test "$CXX" = "KCC"; then + if test "$kde_use_debug_code" != "no"; then + if test "$CXX" = "KCC"; then + CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS" + else + if test "$kde_use_debug_code" = "full"; then + CXXFLAGS="-g3 -fno-inline $CXXFLAGS" + else + CXXFLAGS="-g -O2 $CXXFLAGS" + fi + fi + KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"]) + + dnl convenience compiler flags + KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""]) + AC_SUBST(WOVERLOADED_VIRTUAL) + else + if test "$CXX" = "KCC"; then + CXXFLAGS="+K3 $CXXFLAGS" + else + CXXFLAGS="-O2 $CXXFLAGS" + fi + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS" + fi + + if test "$kde_use_profiling" = "yes"; then + KDE_CHECK_COMPILER_FLAG(pg, + [ + CFLAGS="-pg $CFLAGS" + CXXFLAGS="-pg $CXXFLAGS" + ]) + fi + + if test "$kde_use_warnings" = "yes"; then + if test "$GCC" = "yes"; then + case $host in + *-*-linux-gnu) + CFLAGS="-ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS" + CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts $CXXFLAGS" + KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"; CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"]) + ;; + esac + CXXFLAGS="-Wall -W -Wpointer-arith -Wwrite-strings $CXXFLAGS" + KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"]) + KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"]) + KDE_CHECK_COMPILER_FLAG(Wnon-virtual-dtor,[CXXFLAGS="-Wnon-virtual-dtor $CXXFLAGS"]) + fi + fi + + if test "$GXX" = "yes" && test "$kde_use_strict_options" = "yes"; then + CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS" + fi + + if test "$GXX" = "yes"; then + KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"]) + KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"]) + KDE_CHECK_COMPILER_FLAG(fno-common, [CXXFLAGS="$CXXFLAGS -fno-common"]) + KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= ) + fi + if test "$CXX" = "KCC"; then + dnl unfortunately we currently cannot disable exception support in KCC + dnl because doing so is binary incompatible and Qt by default links with exceptions :-( + dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"]) + dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= ) + + AC_ARG_ENABLE(pch, + AC_HELP_STRING([--enable-pch], + [enables precompiled header support (currently only KCC) [default=no]]), + [ + kde_use_pch=$enableval + ],[kde_use_pch=no]) + + if test "$kde_use_pch" = "yes"; then + dnl TODO: support --pch-dir! + KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"]) + dnl the below works (but the dir must exist), but it's + dnl useless for a whole package. + dnl The are precompiled headers for each source file, so when compiling + dnl from scratch, it doesn't make a difference, and they take up + dnl around ~5Mb _per_ sourcefile. + dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp, + dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"]) + fi + dnl this flag controls inlining. by default KCC inlines in optimisation mode + dnl all implementations that are defined inside the class {} declaration. + dnl because of templates-compatibility with broken gcc compilers, this + dnl can cause excessive inlining. This flag limits it to a sane level + KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"]) + KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"]) + KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"]) + KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"]) + dnl Some source files are shared between multiple executables + dnl (or libraries) and some of those need template instantiations. + dnl In that case KCC needs to compile those sources with + dnl --one_instantiation_per_object. To make it easy for us we compile + dnl _all_ objects with that flag (--one_per is a shorthand). + KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"]) + fi + AC_SUBST(USE_EXCEPTIONS) + dnl obsolete macro - provided to keep things going + USE_RTTI= + AC_SUBST(USE_RTTI) + + case "$host" in + *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;; + *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";; + *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";; + *-*-solaris*) + if test "$GXX" = yes; then + libstdcpp=`$CXX -print-file-name=libstdc++.so` + if test ! -f $libstdcpp; then + AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so]) + fi + fi + ;; + esac + + AC_VALIDIFY_CXXFLAGS + + AC_PROG_CXXCPP + + if test "$GCC" = yes; then + NOOPT_CFLAGS=-O0 + fi + KDE_CHECK_COMPILER_FLAG(O0,[NOOPT_CXXFLAGS=-O0]) + + AC_SUBST(NOOPT_CXXFLAGS) + AC_SUBST(NOOPT_CFLAGS) + + KDE_CHECK_FINAL + KDE_CHECK_CLOSURE + KDE_CHECK_NMCHECK + + ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), []) +]) + +AC_DEFUN([KDE_ADD_DEPENDENCIES], +[ + [A]M_DEPENDENCIES(CC) + [A]M_DEPENDENCIES(CXX) +]) + +dnl just a wrapper to clean up configure.in +AC_DEFUN([KDE_PROG_LIBTOOL], +[ +AC_REQUIRE([AC_CHECK_COMPILERS]) +AC_REQUIRE([AC_ENABLE_SHARED]) +AC_REQUIRE([AC_ENABLE_STATIC]) + +AC_REQUIRE([AC_LIBTOOL_DLOPEN]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_OBJEXT +AC_EXEEXT + +AM_PROG_LIBTOOL +AC_LIBTOOL_CXX + +LIBTOOL_SHELL="/bin/sh ./libtool" +# LIBTOOL="$LIBTOOL --silent" +KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_NO_UNDEFINED) \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)" +AC_SUBST(KDE_PLUGIN) + +# we patch configure quite some so we better keep that consistent for incremental runs +AC_SUBST(AUTOCONF,'$(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure') +]) + +AC_DEFUN([KDE_CHECK_LIB64], +[ + kdelibsuff=no + AC_ARG_ENABLE(libsuffix, + AC_HELP_STRING([--enable-libsuffix], + [/lib directory suffix (64,32,none[=default])]), + kdelibsuff=$enableval) + # TODO: add an auto case that compiles a little C app to check + # where the glibc is + if test "$kdelibsuff" = "no"; then + kdelibsuff= + fi + if test -z "$kdelibsuff"; then + AC_MSG_RESULT([not using lib directory suffix]) + AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories) + else + if test "$libdir" = '${exec_prefix}/lib'; then + libdir="$libdir${kdelibsuff}" + AC_SUBST([libdir], ["$libdir"]) dnl ugly hack for lib64 platforms + fi + AC_DEFINE_UNQUOTED(KDELIBSUFF, ["\"${kdelibsuff}\""], Suffix for lib directories) + AC_MSG_RESULT([using lib directory suffix $kdelibsuff]) + fi +]) + +AC_DEFUN([KDE_CHECK_TYPES], +[ AC_CHECK_SIZEOF(int, 4)dnl + AC_CHECK_SIZEOF(short)dnl + AC_CHECK_SIZEOF(long, 4)dnl + AC_CHECK_SIZEOF(char *, 4)dnl +])dnl + +AC_DEFUN([KDE_DO_IT_ALL], +[ +AC_CANONICAL_SYSTEM +AC_ARG_PROGRAM +AM_INIT_AUTOMAKE($1, $2) +AM_DISABLE_LIBRARIES +AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) +AC_CHECK_COMPILERS +KDE_PROG_LIBTOOL +AM_KDE_WITH_NLS +AC_PATH_KDE +]) + +AC_DEFUN([AC_CHECK_RPATH], +[ +AC_MSG_CHECKING(for rpath) +AC_ARG_ENABLE(rpath, + AC_HELP_STRING([--disable-rpath],[do not use the rpath feature of ld]), + USE_RPATH=$enableval, USE_RPATH=yes) + +if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then + + KDE_RPATH="-R \$(kde_libraries)" + + if test -n "$qt_libraries"; then + KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)" + fi + dnl $x_libraries is set to /usr/lib in case + if test -n "$X_LDFLAGS"; then + X_RPATH="-R \$(x_libraries)" + KDE_RPATH="$KDE_RPATH $X_RPATH" + fi + if test -n "$KDE_EXTRA_RPATH"; then + KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)" + fi +fi +AC_SUBST(KDE_EXTRA_RPATH) +AC_SUBST(KDE_RPATH) +AC_SUBST(X_RPATH) +AC_MSG_RESULT($USE_RPATH) +]) + +dnl Check for the type of the third argument of getsockname +AC_DEFUN([AC_CHECK_SOCKLEN_T], [ + AC_MSG_CHECKING(for socklen_t) + AC_CACHE_VAL(ac_cv_socklen_t, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ +#include +#include + ],[ +socklen_t a=0; +getsockname(0,(struct sockaddr*)0, &a); + ], + ac_cv_socklen_t=socklen_t, + AC_TRY_COMPILE([ +#include +#include + ],[ +int a=0; +getsockname(0,(struct sockaddr*)0, &a); + ], + ac_cv_socklen_t=int, + ac_cv_socklen_t=size_t + ) + ) + AC_LANG_RESTORE + ]) + + AC_MSG_RESULT($ac_cv_socklen_t) + if test "$ac_cv_socklen_t" != "socklen_t"; then + AC_DEFINE_UNQUOTED(socklen_t, $ac_cv_socklen_t, + [Define the real type of socklen_t]) + fi + AC_DEFINE_UNQUOTED(ksize_t, socklen_t, [Compatibility define]) + +]) + +dnl This is a merge of some macros out of the gettext aclocal.m4 +dnl since we don't need anything, I took the things we need +dnl the copyright for them is: +dnl > +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +dnl This Makefile.in is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. +dnl > +dnl for this file it is relicensed under LGPL + +AC_DEFUN([AM_KDE_WITH_NLS], + [ + dnl If we use NLS figure out what method + + AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt, + [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then + AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + MSGFMT=$GMSGFMT + AC_SUBST(GMSGFMT) + AC_SUBST(MSGFMT) + + AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext programs is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + AC_SUBST(XGETTEXT) + + ]) + +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. + +# serial 1 +# Stephan Kulow: I appended a _KDE against name conflicts + +dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test -n "[$]$1"; then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + + +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. + +# serial 1 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES]) + fi + fi]) + +dnl From Jim Meyering. +dnl FIXME: migrate into libit. + +AC_DEFUN([AM_FUNC_OBSTACK], +[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack, + [AC_TRY_LINK([#include "obstack.h"], + [struct obstack *mem;obstack_free(mem,(char *) 0)], + am_cv_func_obstack=yes, + am_cv_func_obstack=no)]) + if test $am_cv_func_obstack = yes; then + AC_DEFINE(HAVE_OBSTACK) + else + LIBOBJS="$LIBOBJS obstack.o" + fi +]) + +dnl From Jim Meyering. Use this if you use the GNU error.[ch]. +dnl FIXME: Migrate into libit + +AC_DEFUN([AM_FUNC_ERROR_AT_LINE], +[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, + [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], + am_cv_lib_error_at_line=yes, + am_cv_lib_error_at_line=no)]) + if test $am_cv_lib_error_at_line = no; then + LIBOBJS="$LIBOBJS error.o" + fi + AC_SUBST(LIBOBJS)dnl +]) + +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. + +# serial 1 +# Stephan Kulow: I put a KDE in it to avoid name conflicts + +AC_DEFUN([AM_KDE_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([AM_KDE_WITH_NLS])dnl + AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \ +__argz_count __argz_stringify __argz_next]) + + AC_MSG_CHECKING(for stpcpy) + AC_CACHE_VAL(kde_cv_func_stpcpy, + [ + kde_safe_cxxflags=$CXXFLAGS + CXXFLAGS="-Werror" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ + #include + ], + [ + char buffer[200]; + stpcpy(buffer, buffer); + ], + kde_cv_func_stpcpy=yes, + kde_cv_func_stpcpy=no) + AC_LANG_RESTORE + CXXFLAGS=$kde_safe_cxxflags + ]) + AC_MSG_RESULT($kde_cv_func_stpcpy) + if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then + AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy]) + fi + + AM_LC_MESSAGES + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + ]) + +AC_DEFUN([AC_HAVE_XPM], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$XPM_LDFLAGS" && XPM_LDFLAGS= + test -z "$XPM_INCLUDE" && XPM_INCLUDE= + + AC_ARG_WITH(xpm,AC_HELP_STRING([--without-xpm],[disable color pixmap XPM tests]), + xpm_test=$withval, xpm_test="yes") + if test "x$xpm_test" = xno; then + ac_cv_have_xpm=no + else + AC_MSG_CHECKING(for XPM) + AC_CACHE_VAL(ac_cv_have_xpm, + [ + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET" + else + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET" + fi + CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES" + test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS" + AC_TRY_LINK([#include ],[], + ac_cv_have_xpm="yes",ac_cv_have_xpm="no") + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + ])dnl + + if test "$ac_cv_have_xpm" = no; then + AC_MSG_RESULT(no) + XPM_LDFLAGS="" + XPMINC="" + $2 + else + AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support]) + if test "$XPM_LDFLAGS" = ""; then + XPMLIB='-lXpm $(LIB_X11)' + else + XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)' + fi + if test "$XPM_INCLUDE" = ""; then + XPMINC="" + else + XPMINC="-I$XPM_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + AC_SUBST(XPMINC) + AC_SUBST(XPMLIB) +]) + +AC_DEFUN([AC_HAVE_DPMS], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS= + test -z "$DPMS_INCLUDE" && DPMS_INCLUDE= + DPMS_LIB= + + AC_ARG_WITH(dpms,AC_HELP_STRING([--without-dpms],[disable DPMS power saving]), + dpms_test=$withval, dpms_test="yes") + if test "x$dpms_test" = xno; then + ac_cv_have_dpms=no + else + AC_MSG_CHECKING(for DPMS) + dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms. + dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms". + AC_CACHE_VAL(ac_cv_have_dpms, + [ + if test "x$kde_use_qt_emb" = "xyes" || test "x$kde_use_qt_mac" = "xyes"; then + AC_MSG_RESULT(no) + ac_cv_have_dpms="no" + else + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + ac_save_libs="$LIBS" + LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + ac_cv_have_dpms="yes", [ + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET" + LIBS="$LIBS -lXdpms" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + [ + ac_cv_have_dpms="-lXdpms" + ],ac_cv_have_dpms="no") + ]) + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + LIBS="$ac_save_libs" + fi + ])dnl + + if test "$ac_cv_have_dpms" = no; then + AC_MSG_RESULT(no) + DPMS_LDFLAGS="" + DPMSINC="" + $2 + else + AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support]) + if test "$ac_cv_have_dpms" = "-lXdpms"; then + DPMS_LIB="-lXdpms" + fi + if test "$DPMS_LDFLAGS" = ""; then + DPMSLIB="$DPMS_LIB "'$(LIB_X11)' + else + DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)' + fi + if test "$DPMS_INCLUDE" = ""; then + DPMSINC="" + else + DPMSINC="-I$DPMS_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + ac_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AH_TEMPLATE(HAVE_DPMSCAPABLE_PROTO, + [Define if you have the DPMSCapable prototype in ]) + AC_CHECK_DECL(DPMSCapable, + AC_DEFINE(HAVE_DPMSCAPABLE_PROTO),, + [#include ]) + AH_TEMPLATE(HAVE_DPMSINFO_PROTO, + [Define if you have the DPMSInfo prototype in ]) + AC_CHECK_DECL(DPMSInfo, + AC_DEFINE(HAVE_DPMSINFO_PROTO),, + [#include ]) + CFLAGS="$ac_save_cflags" + AC_SUBST(DPMSINC) + AC_SUBST(DPMSLIB) +]) + +AC_DEFUN([AC_HAVE_GL], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$GL_LDFLAGS" && GL_LDFLAGS= + test -z "$GL_INCLUDE" && GL_INCLUDE= + + AC_ARG_WITH(gl,AC_HELP_STRING([--without-gl],[disable 3D GL modes]), + gl_test=$withval, gl_test="yes") + if test "x$kde_use_qt_emb" = "xyes"; then + # GL and Qt Embedded is a no-go for now. + ac_cv_have_gl=no + elif test "x$gl_test" = xno; then + ac_cv_have_gl=no + else + AC_MSG_CHECKING(for GL) + AC_CACHE_VAL(ac_cv_have_gl, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_ldflags="$LDFLAGS" + ac_save_cxxflags="$CXXFLAGS" + LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries -lMesaGL -lMesaGLU" + test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11" + LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET" + CXXFLAGS="$CFLAGS $X_INCLUDES" + test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" + AC_TRY_LINK([#include +#include +], [], + ac_cv_have_gl="mesa", ac_cv_have_gl="no") + if test "x$ac_cv_have_gl" = "xno"; then + LDFLAGS="$ac_save_ldflags $X_LDFLAGS $GL_LDFLAGS $all_libraries -lGLU -lGL" + test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11" + LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET" + CXXFLAGS="$ac_save_cflags $X_INCLUDES" + test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" + AC_TRY_LINK([#include +#include +], [], + ac_cv_have_gl="yes", ac_cv_have_gl="no") + fi + AC_LANG_RESTORE + LDFLAGS="$ac_save_ldflags" + CXXFLAGS="$ac_save_cxxflags" + ])dnl + + if test "$ac_cv_have_gl" = "no"; then + AC_MSG_RESULT(no) + GL_LDFLAGS="" + GLINC="" + $2 + else + AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)]) + if test "$GL_LDFLAGS" = ""; then + if test "$ac_cv_have_gl" = "mesa"; then + GLLIB='-lMesaGLU -lMesaGL $(LIB_X11)' + else + GLLIB='-lGLU -lGL $(LIB_X11)' + fi + else + if test "$ac_cv_have_gl" = "mesa"; then + GLLIB="$GL_LDFLAGS -lMesaGLU -lMesaGL "'$(LIB_X11)' + else + GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)' + fi + fi + if test "$GL_INCLUDE" = ""; then + GLINC="" + else + GLINC="-I$GL_INCLUDE" + fi + AC_MSG_RESULT($ac_cv_have_gl) + $1 + fi + fi + AC_SUBST(GLINC) + AC_SUBST(GLLIB) +]) + + + dnl shadow password and PAM magic - maintained by ossi@kde.org + +AC_DEFUN([KDE_PAM], [ + AC_REQUIRE([KDE_CHECK_LIBDL]) + + want_pam= + AC_ARG_WITH(pam, + AC_HELP_STRING([--with-pam[=ARG]],[enable support for PAM: ARG=[yes|no|service name]]), + [ if test "x$withval" = "xyes"; then + want_pam=yes + pam_service=kde + elif test "x$withval" = "xno"; then + want_pam=no + else + want_pam=yes + pam_service=$withval + fi + ], [ pam_service=kde ]) + + use_pam= + PAMLIBS= + if test "x$want_pam" != xno; then + AC_CHECK_LIB(pam, pam_start, [ + AC_CHECK_HEADER(security/pam_appl.h, + [ pam_header=security/pam_appl.h ], + [ AC_CHECK_HEADER(pam/pam_appl.h, + [ pam_header=pam/pam_appl.h ], + [ + AC_MSG_WARN([PAM detected, but no headers found! +Make sure you have the necessary development packages installed.]) + ] + ) + ] + ) + ], , $LIBDL) + if test -z "$pam_header"; then + if test "x$want_pam" = xyes; then + AC_MSG_ERROR([--with-pam was specified, but cannot compile with PAM!]) + fi + else + AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)]) + PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL" + use_pam=yes + + dnl darwin claims to be something special + if test "$pam_header" = "pam/pam_appl.h"; then + AC_DEFINE(HAVE_PAM_PAM_APPL_H, 1, [Define if your PAM headers are in pam/ instead of security/]) + fi + + dnl test whether struct pam_message is const (Linux) or not (Sun) + AC_MSG_CHECKING(for const pam_message) + AC_EGREP_HEADER([struct pam_message], $pam_header, + [ AC_EGREP_HEADER([const struct pam_message], $pam_header, + [AC_MSG_RESULT([const: Linux-type PAM])], + [AC_MSG_RESULT([nonconst: Sun-type PAM]) + AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])] + )], + [AC_MSG_RESULT([not found - assume const, Linux-type PAM])]) + fi + fi + + AC_SUBST(PAMLIBS) +]) + +dnl DEF_PAM_SERVICE(arg name, full name, define name) +AC_DEFUN([DEF_PAM_SERVICE], [ + AC_ARG_WITH($1-pam, + AC_HELP_STRING([--with-$1-pam=[val]],[override PAM service from --with-pam for $2]), + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE=$withval + else + AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected. +You may want to enforce it by using --with-pam.]) + fi + ], + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE="$pam_service" + fi + ]) + if test -n "$$3_PAM_SERVICE"; then + AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE]) + AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2]) + fi + AC_SUBST($3_PAM_SERVICE) +]) + +AC_DEFUN([KDE_SHADOWPASSWD], [ + AC_REQUIRE([KDE_PAM]) + + AC_CHECK_LIB(shadow, getspent, + [ LIBSHADOW="-lshadow" + ac_use_shadow=yes + ], + [ dnl for UnixWare + AC_CHECK_LIB(gen, getspent, + [ LIBGEN="-lgen" + ac_use_shadow=yes + ], + [ AC_CHECK_FUNC(getspent, + [ ac_use_shadow=yes ], + [ ac_use_shadow=no ]) + ]) + ]) + AC_SUBST(LIBSHADOW) + AC_SUBST(LIBGEN) + + AC_MSG_CHECKING([for shadow passwords]) + + AC_ARG_WITH(shadow, + AC_HELP_STRING([--with-shadow],[If you want shadow password support]), + [ if test "x$withval" != "xno"; then + use_shadow=yes + else + use_shadow=no + fi + ], [ + use_shadow="$ac_use_shadow" + ]) + + if test "x$use_shadow" = xyes; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords]) + else + AC_MSG_RESULT(no) + LIBSHADOW= + LIBGEN= + fi + + dnl finally make the relevant binaries setuid root, if we have shadow passwds. + dnl this still applies, if we could use it indirectly through pam. + if test "x$use_shadow" = xyes || + ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then + case $host in + *-*-freebsd* | *-*-netbsd* | *-*-openbsd*) + SETUIDFLAGS="-m 4755 -o root";; + *) + SETUIDFLAGS="-m 4755";; + esac + fi + AC_SUBST(SETUIDFLAGS) + +]) + +AC_DEFUN([KDE_PASSWDLIBS], [ + AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT + AC_REQUIRE([KDE_PAM]) + AC_REQUIRE([KDE_SHADOWPASSWD]) + + if test "x$use_pam" = "xyes"; then + PASSWDLIBS="$PAMLIBS" + else + PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN" + fi + + dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but + dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires + dnl root to read, so kcheckpass needs to be root (even when using pam, since pam + dnl may need to read /etc/master.passwd). + case $host in + *-*-freebsd*) + SETUIDFLAGS="-m 4755 -o root" + ;; + *) + ;; + esac + + AC_SUBST(PASSWDLIBS) +]) + +AC_DEFUN([KDE_CHECK_LIBDL], +[ +AC_CHECK_LIB(dl, dlopen, [ +LIBDL="-ldl" +ac_cv_have_dlfcn=yes +]) + +AC_CHECK_LIB(dld, shl_unload, [ +LIBDL="-ldld" +ac_cv_have_shload=yes +]) + +AC_SUBST(LIBDL) +]) + +AC_DEFUN([KDE_CHECK_DLOPEN], +[ +KDE_CHECK_LIBDL +AC_CHECK_HEADERS(dlfcn.h dl.h) +if test "$ac_cv_header_dlfcn_h" = "no"; then + ac_cv_have_dlfcn=no +fi + +if test "$ac_cv_header_dl_h" = "no"; then + ac_cv_have_shload=no +fi + +dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE +dnl (MM) +AC_ARG_ENABLE(dlopen, +AC_HELP_STRING([--disable-dlopen],[link statically [default=no]]), +enable_dlopen=$enableval, +enable_dlopen=yes) + +# override the user's opinion, if we know it better ;) +if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then + enable_dlopen=no +fi + +if test "$ac_cv_have_dlfcn" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn]) +fi + +if test "$ac_cv_have_shload" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload]) +fi + +if test "$enable_dlopen" = no ; then + test -n "$1" && eval $1 +else + test -n "$2" && eval $2 +fi + +]) + +AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING], +[ +KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no) +KDE_PROG_LIBTOOL +AC_MSG_CHECKING([dynamic loading]) +eval "`egrep '^build_libtool_libs=' libtool`" +if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then + dynamic_loading=yes + AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING) +else + dynamic_loading=no +fi +AC_MSG_RESULT($dynamic_loading) +if test "$dynamic_loading" = "yes"; then + $1 +else + $2 +fi +]) + +AC_DEFUN([KDE_ADD_INCLUDES], +[ +if test -z "$1"; then + test_include="Pix.h" +else + test_include="$1" +fi + +AC_MSG_CHECKING([for libg++ ($test_include)]) + +AC_CACHE_VAL(kde_cv_libgpp_includes, +[ +kde_cv_libgpp_includes=no + + for ac_dir in \ + \ + /usr/include/g++ \ + /usr/include \ + /usr/unsupported/include \ + /opt/include \ + $extra_include \ + ; \ + do + if test -r "$ac_dir/$test_include"; then + kde_cv_libgpp_includes=$ac_dir + break + fi + done +]) + +AC_MSG_RESULT($kde_cv_libgpp_includes) +if test "$kde_cv_libgpp_includes" != "no"; then + all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES" +fi +]) +]) + +AC_DEFUN([KDE_CHECK_LIBPTHREAD], +[ + LIBPTHREAD="" + + if test -n "$PTHREAD_LIBS"; then + PTHREAD_LIBS_save="$PTHREAD_LIBS" + PTHREAD_LIBS=`echo "$PTHREAD_LIBS_save" | sed -e 's,^-l,,g'` + KDE_CHECK_LIB($PTHREAD_LIBS, pthread_create, [LIBPTHREAD="$PTHREAD_LIBS_save"] ) + PTHREAD_LIBS="$PTHREAD_LIBS_save" + fi + + if test -z "$LIBPTHREAD"; then + AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] ) + fi + + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_PTHREAD_OPTION], +[ + USE_THREADS="" + if test -z "$LIBPTHREAD"; then + KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-D_THREAD_SAFE -pthread"]) + fi + + AH_VERBATIM(__svr_define, [ +#if defined(__SVR4) && !defined(__svr4__) +#define __svr4__ 1 +#endif +]) + case $host_os in + solaris*) + KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"]) + CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4" + ;; + freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE $PTHREAD_CFLAGS" + ;; + aix*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LIBPTHREAD="$LIBPTHREAD -lc_r" + ;; + linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" + if test "$CXX" = "KCC"; then + CXXFLAGS="$CXXFLAGS --thread_safe" + NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe" + fi + ;; + *) + ;; + esac + AC_SUBST(USE_THREADS) + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_THREADING], +[ + AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) + AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION]) + dnl default is yes if libpthread is found and no if no libpthread is available + if test -z "$LIBPTHREAD"; then + if test -z "$USE_THREADS"; then + kde_check_threading_default=no + else + kde_check_threading_default=yes + fi + else + kde_check_threading_default=yes + fi + AC_ARG_ENABLE(threading,AC_HELP_STRING([--disable-threading],[disables threading even if libpthread found]), + kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default) + if test "x$kde_use_threading" = "xyes"; then + AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)]) + fi +]) + +AC_DEFUN([KDE_TRY_LINK_PYTHON], +[ +if test "$kde_python_link_found" = no; then + +if test "$1" = normal; then + AC_MSG_CHECKING(if a Python application links) +else + AC_MSG_CHECKING(if Python depends on $2) +fi + +AC_CACHE_VAL(kde_cv_try_link_python_$1, +[ +kde_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $PYTHONINC" +kde_save_libs="$LIBS" +LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET" +kde_save_ldflags="$LDFLAGS" +LDFLAGS="$LDFLAGS $PYTHONLIB" + +AC_TRY_LINK( +[ +#include +],[ + PySys_SetArgv(1, 0); +], + [kde_cv_try_link_python_$1=yes], + [kde_cv_try_link_python_$1=no] +) +CFLAGS="$kde_save_cflags" +LIBS="$kde_save_libs" +LDFLAGS="$kde_save_ldflags" +]) + +if test "$kde_cv_try_link_python_$1" = "yes"; then + AC_MSG_RESULT(yes) + kde_python_link_found=yes + if test ! "$1" = normal; then + LIBPYTHON="$LIBPYTHON $2" + fi + $3 +else + AC_MSG_RESULT(no) + $4 +fi + +fi + +]) + +AC_DEFUN([KDE_CHECK_PYTHON_DIR], +[ +AC_MSG_CHECKING([for Python directory]) + +AC_CACHE_VAL(kde_cv_pythondir, +[ + if test -z "$PYTHONDIR"; then + kde_cv_pythondir=/usr/local + else + kde_cv_pythondir="$PYTHONDIR" + fi +]) + +AC_ARG_WITH(pythondir, +AC_HELP_STRING([--with-pythondir=pythondir],[use python installed in pythondir]), +[ + ac_python_dir=$withval +], ac_python_dir=$kde_cv_pythondir +) + +AC_MSG_RESULT($ac_python_dir) +]) + +AC_DEFUN([KDE_CHECK_PYTHON_INTERN], +[ +AC_REQUIRE([KDE_CHECK_LIBDL]) +AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) +AC_REQUIRE([KDE_CHECK_PYTHON_DIR]) + +if test -z "$1"; then + version="1.5" +else + version="$1" +fi + +AC_MSG_CHECKING([for Python$version]) + +python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes" +AC_FIND_FILE(Python.h, $python_incdirs, python_incdir) +if test ! -r $python_incdir/Python.h; then + AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir) + python_incdir=$python_incdir/python$version + if test ! -r $python_incdir/Python.h; then + python_incdir=no + fi +fi + +PYTHONINC=-I$python_incdir + +python_libdirs="$ac_python_dir/lib$kdelibsuff /usr/lib$kdelibsuff /usr/local /usr/lib$kdelibsuff $kde_extra_libs" +AC_FIND_FILE(libpython$version.so, $python_libdirs, python_libdir) +if test ! -r $python_libdir/libpython$version.so; then + AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir) + if test ! -r $python_libdir/libpython$version.a; then + AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir) + python_libdir=$python_libdir/python$version/config + if test ! -r $python_libdir/libpython$version.a; then + python_libdir=no + fi + fi +fi + +PYTHONLIB=-L$python_libdir +kde_orig_LIBPYTHON=$LIBPYTHON +if test -z "$LIBPYTHON"; then + LIBPYTHON=-lpython$version +fi + +AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir) +python_moddir=$python_moddir/python$version +if test ! -r $python_moddir/copy.py; then + python_moddir=no +fi + +PYTHONMODDIR=$python_moddir + +AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir) + +if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then + LIBPYTHON=$kde_orig_LIBPYTHON + test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB="" + test "x$PYTHONINC" = "x-Ino" && PYTHONINC="" + $2 +else + dnl Note: this test is very weak + kde_python_link_found=no + KDE_TRY_LINK_PYTHON(normal) + KDE_TRY_LINK_PYTHON(m, -lm) + KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD) + KDE_TRY_LINK_PYTHON(tcl, -ltcl) + KDE_TRY_LINK_PYTHON(db2, -ldb2) + KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm]) + KDE_TRY_LINK_PYTHON(pthread_and_panel_curses, [$LIBPTHREAD $LIBDL -lm -lpanel -lcurses]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [], + [AC_MSG_WARN([it seems, Python depends on another library. + Please set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this + and contact the authors to let them know about this problem]) + ]) + + LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET" + AC_SUBST(PYTHONINC) + AC_SUBST(PYTHONLIB) + AC_SUBST(LIBPYTHON) + AC_SUBST(PYTHONMODDIR) + AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python]) +fi + +]) + + +AC_DEFUN([KDE_CHECK_PYTHON], +[ + KDE_CHECK_PYTHON_INTERN("2.3", + [KDE_CHECK_PYTHON_INTERN("2.2", + [KDE_CHECK_PYTHON_INTERN("2.1", + [KDE_CHECK_PYTHON_INTERN("2.0", + [KDE_CHECK_PYTHON_INTERN($1, $2) ]) + ]) + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_STL], +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`" + + AC_MSG_CHECKING([if C++ programs can be compiled]) + AC_CACHE_VAL(kde_cv_stl_works, + [ + AC_TRY_COMPILE([ +#include +using namespace std; +],[ + string astring="Hallo Welt."; + astring.erase(0, 6); // now astring is "Welt" + return 0; +], kde_cv_stl_works=yes, + kde_cv_stl_works=no) +]) + + AC_MSG_RESULT($kde_cv_stl_works) + + if test "$kde_cv_stl_works" = "yes"; then + # back compatible + AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI]) + else + AC_MSG_ERROR([Your Installation isn't able to compile simple C++ programs. +Check config.log for details - if you're using a Linux distribution you might miss +a package named similiar to libstd++-dev.]) + fi + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +AC_DEFUN([AC_FIND_QIMGIO], + [AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for qimgio]) +AC_CACHE_VAL(ac_cv_lib_qimgio, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +ac_save_CXXFLAGS="$CXXFLAGS" +LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT" +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +AC_TRY_RUN(dnl +[ +#include +#include +int main() { + QString t = "hallo"; + t.fill('t'); + qInitImageIO(); +} +], + ac_cv_lib_qimgio=yes, + ac_cv_lib_qimgio=no, + ac_cv_lib_qimgio=no) +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then + LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available]) + AC_SUBST(LIBQIMGIO) +else + AC_MSG_RESULT(not found) +fi +]) + +AC_DEFUN([AM_DISABLE_LIBRARIES], +[ + AC_PROVIDE([AM_ENABLE_STATIC]) + AC_PROVIDE([AM_ENABLE_SHARED]) + enable_static=no + enable_shared=yes +]) + + +AC_DEFUN([AC_CHECK_UTMP_FILE], +[ + AC_MSG_CHECKING([for utmp file]) + + AC_CACHE_VAL(kde_cv_utmp_file, + [ + kde_cv_utmp_file=no + + for ac_file in \ + \ + /var/run/utmp \ + /var/adm/utmp \ + /etc/utmp \ + ; \ + do + if test -r "$ac_file"; then + kde_cv_utmp_file=$ac_file + break + fi + done + ]) + + if test "$kde_cv_utmp_file" != "no"; then + AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries]) + $1 + AC_MSG_RESULT($kde_cv_utmp_file) + else + $2 + AC_MSG_RESULT([non found]) + fi +]) + + +AC_DEFUN([KDE_CREATE_SUBDIRSLIST], +[ + +DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin" + +if test ! -s $srcdir/subdirs; then + dnl Note: Makefile.common creates subdirs, so this is just a fallback + TOPSUBDIRS="" + files=`cd $srcdir && ls -1` + dirs=`for i in $files; do if test -d $i; then echo $i; fi; done` + for i in $dirs; do + echo $i >> $srcdir/subdirs + done +fi + +ac_topsubdirs= +if test -s $srcdir/inst-apps; then + ac_topsubdirs="`cat $srcdir/inst-apps`" +elif test -s $srcdir/subdirs; then + ac_topsubdirs="`cat $srcdir/subdirs`" +fi + +for i in $ac_topsubdirs; do + AC_MSG_CHECKING([if $i should be compiled]) + if test -d $srcdir/$i; then + install_it="yes" + for j in $DO_NOT_COMPILE; do + if test $i = $j; then + install_it="no" + fi + done + else + install_it="no" + fi + AC_MSG_RESULT($install_it) + vari=`echo $i | sed -e 's,[[-+.]],_,g'` + if test $install_it = "yes"; then + TOPSUBDIRS="$TOPSUBDIRS $i" + eval "$vari""_SUBDIR_included=yes" + else + eval "$vari""_SUBDIR_included=no" + fi +done + +AC_SUBST(TOPSUBDIRS) +]) + +AC_DEFUN([KDE_CHECK_NAMESPACES], +[ +AC_MSG_CHECKING(whether C++ compiler supports namespaces) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILE([ +], +[ +namespace Foo { + extern int i; + namespace Bar { + extern int i; + } +} + +int Foo::i = 0; +int Foo::Bar::i = 1; +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NAMESPACES) +], [ +AC_MSG_RESULT(no) +]) +AC_LANG_RESTORE +]) + +dnl ------------------------------------------------------------------------ +dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_S_ISSOCK], +[ +AC_MSG_CHECKING(for S_ISSOCK) +AC_CACHE_VAL(ac_cv_have_s_issock, +[ +AC_TRY_LINK( +[ +#include +], +[ +struct stat buff; +int b = S_ISSOCK( buff.st_mode ); +], +ac_cv_have_s_issock=yes, +ac_cv_have_s_issock=no) +]) +AC_MSG_RESULT($ac_cv_have_s_issock) +if test "$ac_cv_have_s_issock" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.]) +fi + +AH_VERBATIM(_ISSOCK, +[ +#ifndef HAVE_S_ISSOCK +#define HAVE_S_ISSOCK +#define S_ISSOCK(mode) (1==0) +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_KDEMAXPATHLEN], +[ +AC_MSG_CHECKING(for MAXPATHLEN) +AC_CACHE_VAL(ac_cv_maxpathlen, +[ +cat > conftest.$ac_ext < +#endif +#include +#include +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif + +KDE_HELLO MAXPATHLEN + +EOF + +ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out" + +if AC_TRY_EVAL(ac_try) && test -s conftest.out; then + ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out` +else + ac_cv_maxpathlen=1024 +fi + +rm conftest.* + +]) +AC_MSG_RESULT($ac_cv_maxpathlen) +AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] ) +]) + +AC_DEFUN([KDE_CHECK_HEADER], +[ + AC_LANG_SAVE + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_CPLUSPLUS + AC_CHECK_HEADER([$1], [$2], [$3], [$4]) + CPPFLAGS=$kde_safe_cppflags + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_CHECK_HEADERS], +[ + AH_CHECK_HEADERS([$1]) + AC_LANG_SAVE + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_CPLUSPLUS + AC_CHECK_HEADERS([$1], [$2], [$3], [$4]) + CPPFLAGS=$kde_safe_cppflags + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_FAST_CONFIGURE], +[ + dnl makes configure fast (needs perl) + AC_ARG_ENABLE(fast-perl, AC_HELP_STRING([--disable-fast-perl],[disable fast Makefile generation (needs perl)]), + with_fast_perl=$enableval, with_fast_perl=yes) +]) + +AC_DEFUN([KDE_CONF_FILES], +[ + val= + if test -f $srcdir/configure.files ; then + val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files` + fi + CONF_FILES= + if test -n "$val" ; then + for i in $val ; do + CONF_FILES="$CONF_FILES $i" + done + fi + AC_SUBST(CONF_FILES) +])dnl + +AC_DEFUN([KDE_SET_PREFIX], +[ + unset CDPATH + dnl make $KDEDIR the default for the installation + AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) + + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + ac_configure_args="$ac_configure_args --prefix=$prefix" + fi + # And delete superfluous '/' to make compares easier + prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + KDE_FAST_CONFIGURE + KDE_CONF_FILES +]) + +pushdef([AC_PROG_INSTALL], +[ + dnl our own version, testing for a -p flag + popdef([AC_PROG_INSTALL]) + dnl as AC_PROG_INSTALL works as it works we first have + dnl to save if the user didn't specify INSTALL, as the + dnl autoconf one overwrites INSTALL and we have no chance to find + dnl out afterwards + test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL + test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM + test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT + AC_PROG_INSTALL + + if test -z "$kde_save_INSTALL_given" ; then + # OK, user hasn't given any INSTALL, autoconf found one for us + # now we test, if it supports the -p flag + AC_MSG_CHECKING(for -p flag to install) + rm -f confinst.$$.* > /dev/null 2>&1 + echo "Testtest" > confinst.$$.orig + ac_res=no + if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then + if test -f confinst.$$.new ; then + # OK, -p seems to do no harm to install + INSTALL="${INSTALL} -p" + ac_res=yes + fi + fi + rm -f confinst.$$.* + AC_MSG_RESULT($ac_res) + fi + dnl the following tries to resolve some signs and wonders coming up + dnl with different autoconf/automake versions + dnl e.g.: + dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s + dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS) + dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s + dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has + dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the + dnl install-@DIR@PROGRAMS targets to explicitly use that flag + dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as + dnl INSTALL_SCRIPT, which breaks with automake <= 1.4 + dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure + dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from + dnl automake (due to broken Makefile.am or whatever) to install programs, + dnl and so does not see the -s flag in automake > 1.4 + dnl to clean up that mess we: + dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG + dnl which cleans KDE's program with automake > 1.4; + dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems + dnl with automake<=1.4 + dnl note that dues to this sometimes two '-s' flags are used (if KDE + dnl properly uses install-@DIR@PROGRAMS, but I don't care + dnl + dnl And to all this comes, that I even can't write in comments variable + dnl names used by automake, because it is so stupid to think I wanted to + dnl _use_ them, therefor I have written A_M_... instead of AM_ + dnl hmm, I wanted to say something ... ahh yes: Arghhh. + + if test -z "$kde_save_INSTALL_PROGRAM_given" ; then + INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)' + fi + if test -z "$kde_save_INSTALL_SCRIPT_given" ; then + INSTALL_SCRIPT='${INSTALL}' + fi +])dnl + +AC_DEFUN([KDE_LANG_CPLUSPLUS], +[AC_LANG_CPLUSPLUS +ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' +pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS]) +]) + +pushdef([AC_LANG_CPLUSPLUS], +[popdef([AC_LANG_CPLUSPLUS]) +KDE_LANG_CPLUSPLUS +]) + +AC_DEFUN([KDE_CHECK_LONG_LONG], +[ +AC_MSG_CHECKING(for long long) +AC_CACHE_VAL(kde_cv_c_long_long, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_LINK([], [ + long long foo = 0; + foo = foo+1; + ], + kde_cv_c_long_long=yes, kde_cv_c_long_long=no) + AC_LANG_RESTORE +]) +AC_MSG_RESULT($kde_cv_c_long_long) +if test "$kde_cv_c_long_long" = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype]) +fi +]) + +AC_DEFUN([KDE_CHECK_LIB], +[ + kde_save_LDFLAGS="$LDFLAGS" + dnl AC_CHECK_LIB modifies LIBS, so save it here + kde_save_LIBS="$LIBS" + LDFLAGS="$LDFLAGS $all_libraries" + case $host_os in + aix*) LDFLAGS="-brtl $LDFLAGS" + test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS" + ;; + esac + AC_CHECK_LIB($1, $2, $3, $4, $5) + LDFLAGS="$kde_save_LDFLAGS" + LIBS="$kde_save_LIBS" +]) + +AC_DEFUN([KDE_JAVA_PREFIX], +[ + dir=`dirname "$1"` + base=`basename "$1"` + list=`ls -1 $dir 2> /dev/null` + for entry in $list; do + if test -d $dir/$entry/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/bin" + ;; + esac + elif test -d $dir/$entry/jre/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/jre/bin" + ;; + esac + fi + done +]) + +dnl KDE_CHEC_JAVA_DIR(onlyjre) +AC_DEFUN([KDE_CHECK_JAVA_DIR], +[ + +AC_ARG_WITH(java, +AC_HELP_STRING([--with-java=javadir],[use java installed in javadir, --without-java disables]), +[ ac_java_dir=$withval +], ac_java_dir="" +) + +AC_MSG_CHECKING([for Java]) + +dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH +if test "x$ac_java_dir" = "xno"; then + kde_java_bindir=no + kde_java_includedir=no + kde_java_libjvmdir=no + kde_java_libgcjdir=no + kde_java_libhpidir=no +else + if test "x$ac_java_dir" = "x"; then + + + dnl No option set -> collect list of candidate paths + if test -n "$JAVA_HOME"; then + KDE_JAVA_PREFIX($JAVA_HOME) + fi + KDE_JAVA_PREFIX(/usr/j2se) + KDE_JAVA_PREFIX(/usr/lib/j2se) + KDE_JAVA_PREFIX(/usr/j*dk*) + KDE_JAVA_PREFIX(/usr/lib/j*dk*) + KDE_JAVA_PREFIX(/opt/j*sdk*) + KDE_JAVA_PREFIX(/usr/lib/java*) + KDE_JAVA_PREFIX(/usr/java*) + KDE_JAVA_PREFIX(/usr/java/j*dk*) + KDE_JAVA_PREFIX(/usr/java/j*re*) + KDE_JAVA_PREFIX(/usr/lib/SunJava2*) + KDE_JAVA_PREFIX(/usr/lib/SunJava*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava2*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava*) + KDE_JAVA_PREFIX(/opt/java*) + + kde_cv_path="NONE" + kde_save_IFS=$IFS + IFS=':' + for dir in $PATH; do + if test -d "$dir"; then + javadirs="$javadirs $dir" + fi + done + IFS=$kde_save_IFS + jredirs= + + dnl Now javadirs contains a list of paths that exist, all ending with bin/ + for dir in $javadirs; do + dnl Check for the java executable + if test -x "$dir/java"; then + dnl And also check for a libjvm.so somewhere under there + dnl Since we have to go to the parent dir, /usr/bin is excluded, /usr is too big. + if test "$dir" != "/usr/bin"; then + libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + if test ! -f $libjvmdir/libjvm.so; then continue; fi + jredirs="$jredirs $dir" + fi + fi + done + + dnl Now jredirs contains a reduced list, of paths where both java and ../**/libjvm.so was found + JAVAC= + JAVA= + kde_java_bindir=no + for dir in $jredirs; do + JAVA="$dir/java" + kde_java_bindir=$dir + if test -x "$dir/javac"; then + JAVAC="$dir/javac" + break + fi + done + + if test -n "$JAVAC"; then + dnl this substitution might not work - well, we test for jni.h below + kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'` + else + kde_java_includedir=no + fi + else + dnl config option set + kde_java_bindir=$ac_java_dir/bin + if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then + kde_java_includedir=no + else + kde_java_includedir=$ac_java_dir/include + fi + fi +fi + +dnl At this point kde_java_bindir and kde_java_includedir are either set or "no" +if test "x$kde_java_bindir" != "xno"; then + + dnl Look for libjvm.so + kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + dnl Look for libgcj.so + kde_java_libgcjdir=`find $kde_java_bindir/.. -name libgcj.so | sed 's,libgcj.so,,'|head -n 1` + dnl Look for libhpi.so and avoid green threads + kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1` + + dnl Now check everything's fine under there + dnl the include dir is our flag for having the JDK + if test -d "$kde_java_includedir"; then + if test ! -x "$kde_java_bindir/javac"; then + AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.]) + fi + if test ! -x "$kde_java_bindir/javah"; then + AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -x "$kde_java_bindir/jar"; then + AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -r "$kde_java_includedir/jni.h"; then + AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.]) + fi + + jni_includes="-I$kde_java_includedir" + dnl Strange thing, jni.h requires jni_md.h which is under genunix here.. + dnl and under linux here.. + + dnl not needed for gcj + + if test "x$kde_java_libgcjdir" = "x"; then + test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux" + test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris" + test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix" + fi + + else + JAVAC= + jni_includes= + fi + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libjvmdir/libjvm.so"; then + AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.]) + fi + else + if test ! -r "$kde_java_libgcjdir/libgcj.so"; then + AC_MSG_ERROR([libgcj.so not found under $kde_java_libgcjdir. Use --without-java.]) + fi + fi + + if test ! -x "$kde_java_bindir/java"; then + AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + + dnl not needed for gcj compile + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libhpidir/libhpi.so"; then + AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.]) + fi + fi + + if test -n "$jni_includes"; then + dnl Check for JNI version + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_cxxflags_safe="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $all_includes $jni_includes" + + AC_TRY_COMPILE([ + #include + ], + [ + #ifndef JNI_VERSION_1_2 + Syntax Error + #endif + ],[ kde_jni_works=yes ], + [ kde_jni_works=no ]) + + if test $kde_jni_works = no; then + AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h. + You need to have Java Development Kit (JDK) version 1.2. + + Use --with-java to specify another location. + Use --without-java to configure without java support. + Or download a newer JDK and try again. + See e.g. http://java.sun.com/products/jdk/1.2 ]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + AC_LANG_RESTORE + + dnl All tests ok, inform and subst the variables + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + if test "x$kde_java_libgcjdir" = "x"; then + JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi" + else + JVMLIBS="-L$kde_java_libgcjdir -lgcj" + fi + AC_MSG_RESULT([java JDK in $kde_java_bindir]) + + else + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([java JRE in $kde_java_bindir]) + fi +elif test -d "/Library/Java/Home"; then + kde_java_bindir="/Library/Java/Home/bin" + jni_includes="-I/Library/Java/Home/include" + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + JVMLIBS="-Xlinker -framework -Xlinker JavaVM" + + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([Apple Java Framework]) +else + AC_MSG_RESULT([none found]) +fi + +AC_SUBST(JAVAC) +AC_SUBST(JAVAH) +AC_SUBST(JAR) +AC_SUBST(JVMLIBS) +AC_SUBST(jni_includes) + +# for backward compat +kde_cv_java_includedir=$kde_java_includedir +kde_cv_java_bindir=$kde_java_bindir +]) + +dnl this is a redefinition of autoconf 2.5x's AC_FOREACH. +dnl When the argument list becomes big, as in KDE for AC_OUTPUT in +dnl big packages, m4_foreach is dog-slow. So use our own version of +dnl it. (matz@kde.org) +m4_define([mm_foreach], +[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])]) +m4_define([mm_car], [[$1]]) +m4_define([mm_car2], [[$@]]) +m4_define([_mm_foreach], +[m4_if(m4_quote($2), [], [], + [m4_define([$1], mm_car($2))$3[]_mm_foreach([$1], + mm_car2(m4_shift($2)), + [$3])])]) +m4_define([AC_FOREACH], +[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])]) + +AC_DEFUN([KDE_NEED_FLEX], +[ +kde_libs_safe=$LIBS +LIBS="$LIBS $USER_LDFLAGS" +AM_PROG_LEX +LIBS=$kde_libs_safe +if test -z "$LEXLIB"; then + AC_MSG_ERROR([You need to have flex installed.]) +fi +AC_SUBST(LEXLIB) +]) + +AC_DEFUN([AC_PATH_QTOPIA], +[ + dnl TODO: use AC_CACHE_VAL + + if test -z "$1"; then + qtopia_minver_maj=1 + qtopia_minver_min=5 + qtopia_minver_pat=0 + else + qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"` + qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"` + qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"` + fi + + qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat" + qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat" + + AC_REQUIRE([AC_PATH_QT]) + + AC_MSG_CHECKING([for Qtopia]) + + LIB_QTOPIA="-lqpe" + AC_SUBST(LIB_QTOPIA) + + kde_qtopia_dirs="$QPEDIR /opt/Qtopia" + + ac_qtopia_incdir=NO + + AC_ARG_WITH(qtopia-dir, + AC_HELP_STRING([--with-qtopia-dir=DIR],[where the root of Qtopia is installed]), + [ ac_qtopia_incdir="$withval"/include] ) + + qtopia_incdirs="" + for dir in $kde_qtopia_dirs; do + qtopia_incdirs="$qtopia_incdirs $dir/include" + done + + if test ! "$ac_qtopia_incdir" = "NO"; then + qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs" + fi + + qtopia_incdir="" + AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir) + ac_qtopia_incdir="$qtopia_incdir" + + if test -z "$qtopia_incdir"; then + AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.]) + fi + + qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`; + qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`; + qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`; + + qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat" + qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat" + if test "$qtopia_ver" -lt "$qtopia_minver"; then + AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr +is required.]) + fi + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + ac_cxxflags_safe="$CXXFLAGS" + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes" + LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" + LIBS="$LIBS $LIB_QTOPIA $LIBQT" + + cat > conftest.$ac_ext < +#include + +int main( int argc, char **argv ) +{ + QPEApplication app( argc, argv ); + return 0; +} +EOF + + if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* + else + rm -f conftest* + AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at +the end of config.log]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + AC_LANG_RESTORE + + QTOPIA_INCLUDES="-I$qtopia_incdir" + AC_SUBST(QTOPIA_INCLUDES) + + AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir]) +]) + + +AC_DEFUN([KDE_INIT_DOXYGEN], +[ +AC_MSG_CHECKING([for Qt docs]) +kde_qtdir= +if test "${with_qt_dir+set}" = set; then + kde_qtdir="$with_qt_dir" +fi + +AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR) +AC_MSG_RESULT($QTDOCDIR) + +AC_SUBST(QTDOCDIR) + +KDE_FIND_PATH(dot, DOT, [], []) +if test -n "$DOT"; then + KDE_HAVE_DOT="YES" +else + KDE_HAVE_DOT="NO" +fi +AC_SUBST(KDE_HAVE_DOT) +KDE_FIND_PATH(doxygen, DOXYGEN, [], []) +AC_SUBST(DOXYGEN) + +DOXYGEN_PROJECT_NAME="$1" +DOXYGEN_PROJECT_NUMBER="$2" +AC_SUBST(DOXYGEN_PROJECT_NAME) +AC_SUBST(DOXYGEN_PROJECT_NUMBER) + +KDE_HAS_DOXYGEN=no +if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then + KDE_HAS_DOXYGEN=yes +fi +AC_SUBST(KDE_HAS_DOXYGEN) + +]) + + +AC_DEFUN([AC_FIND_BZIP2], +[ +AC_MSG_CHECKING([for bzDecompress in libbz2]) +AC_CACHE_VAL(ac_cv_lib_bzip2, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET" +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#define BZ_NO_STDIO +#include +], + [ bz_stream s; (void) bzDecompress(&s); ], + eval "ac_cv_lib_bzip2='-lbz2'", + eval "ac_cv_lib_bzip2=no") +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +AC_MSG_RESULT($ac_cv_lib_bzip2) + +if test ! "$ac_cv_lib_bzip2" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2" + AC_SUBST(LIBBZ2) + +else + + cxx_shared_flag= + ld_shared_flag= + KDE_CHECK_COMPILER_FLAG(shared, [ + ld_shared_flag="-shared" + ]) + KDE_CHECK_COMPILER_FLAG(fPIC, [ + cxx_shared_flag="-fPIC" + ]) + + AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2]) + AC_CACHE_VAL(ac_cv_lib_bzip2_prefix, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + kde_save_LIBS="$LIBS" + LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET" + kde_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES" + + AC_TRY_LINK(dnl + [ + #define BZ_NO_STDIO + #include + ], + [ bz_stream s; (void) BZ2_bzDecompress(&s); ], + eval "ac_cv_lib_bzip2_prefix='-lbz2'", + eval "ac_cv_lib_bzip2_prefix=no") + LIBS="$kde_save_LIBS" + CXXFLAGS="$kde_save_CXXFLAGS" + AC_LANG_RESTORE + ])dnl + + AC_MSG_RESULT($ac_cv_lib_bzip2_prefix) + + if test ! "$ac_cv_lib_bzip2_prefix" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2_prefix" + AC_SUBST(LIBBZ2) + + AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix]) + dnl else, we just ignore this + fi + +fi +AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR") +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the SSL headers and libraries. +dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed) +dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([KDE_CHECK_SSL], +[ +LIBSSL="-lssl -lcrypto" +AC_REQUIRE([KDE_CHECK_LIB64]) + +ac_ssl_includes=NO ac_ssl_libraries=NO +ssl_libraries="" +ssl_includes="" +AC_ARG_WITH(ssl-dir, + AC_HELP_STRING([--with-ssl-dir=DIR],[where the root of OpenSSL is installed]), + [ ac_ssl_includes="$withval"/include + ac_ssl_libraries="$withval"/lib$kdelibsuff + ]) + +want_ssl=yes +AC_ARG_WITH(ssl, + AC_HELP_STRING([--without-ssl],[disable SSL checks]), + [want_ssl=$withval]) + +if test $want_ssl = yes; then + +AC_MSG_CHECKING(for OpenSSL) + +AC_CACHE_VAL(ac_cv_have_ssl, +[#try to guess OpenSSL locations + + ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes" + ssl_incdirs="$ac_ssl_includes $ssl_incdirs" + AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir) + ac_ssl_includes="$ssl_incdir" + + ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs" + if test ! "$ac_ssl_libraries" = "NO"; then + ssl_libdirs="$ac_ssl_libraries $ssl_libdirs" + fi + + test=NONE + ssl_libdir=NONE + for dir in $ssl_libdirs; do + try="ls -1 $dir/libssl*" + if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done + + ac_ssl_libraries="$ssl_libdir" + + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries" + LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref" + + AC_TRY_LINK(,void RSAPrivateEncrypt(void);RSAPrivateEncrypt();, + ac_ssl_rsaref="yes" + , + ac_ssl_rsaref="no" + ) + + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then + have_ssl=no + else + have_ssl=yes; + fi + + ]) + + eval "$ac_cv_have_ssl" + + AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes]) + + AC_MSG_CHECKING([whether OpenSSL uses rsaref]) + AC_MSG_RESULT($ac_ssl_rsaref) + + AC_MSG_CHECKING([for easter eggs]) + AC_MSG_RESULT([none found]) + +else + have_ssl=no +fi + +if test "$have_ssl" = yes; then + AC_MSG_CHECKING(for OpenSSL version) + dnl Check for SSL version + AC_CACHE_VAL(ac_cv_ssl_version, + [ + + cat >conftest.$ac_ext < +#include + int main() { + +#ifndef OPENSSL_VERSION_NUMBER + printf("ssl_version=\\"error\\"\n"); +#else + if (OPENSSL_VERSION_NUMBER < 0x00906000) + printf("ssl_version=\\"old\\"\n"); + else + printf("ssl_version=\\"ok\\"\n"); +#endif + return (0); + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + if test "$ac_ssl_includes" != "/usr/include"; then + CPPFLAGS="$CPPFLAGS -I$ac_ssl_includes" + fi + + if AC_TRY_EVAL(ac_link); then + + if eval `./conftest 2>&5`; then + if test $ssl_version = error; then + AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !]) + else + if test $ssl_version = old; then + AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.]) + have_ssl=no + fi + fi + ac_cv_ssl_version="ssl_version=$ssl_version" + else + AC_MSG_ERROR([Your system couldn't run a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + + else + AC_MSG_ERROR([Your system couldn't link a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + ]) + + eval "$ac_cv_ssl_version" + AC_MSG_RESULT($ssl_version) +fi + +if test "$have_ssl" != yes; then + LIBSSL=""; +else + AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL]) + ac_cv_have_ssl="have_ssl=yes \ + ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref" + + + ssl_libraries="$ac_ssl_libraries" + ssl_includes="$ac_ssl_includes" + + if test "$ac_ssl_rsaref" = yes; then + LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref" + fi + + if test $ssl_version = "old"; then + AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6]) + fi +fi + +SSL_INCLUDES= + +if test "$ssl_includes" = "/usr/include"; then + if test -f /usr/kerberos/include/krb5.h; then + SSL_INCLUDES="-I/usr/kerberos/include" + fi +elif test "$ssl_includes" != "/usr/local/include" && test -n "$ssl_includes"; then + SSL_INCLUDES="-I$ssl_includes" +fi + +if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries" || test "$ssl_libraries" = "NONE"; then + SSL_LDFLAGS="" +else + SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries" +fi + +AC_SUBST(SSL_INCLUDES) +AC_SUBST(SSL_LDFLAGS) +AC_SUBST(LIBSSL) +]) + +AC_DEFUN([KDE_CHECK_STRLCPY], +[ + AC_REQUIRE([AC_CHECK_STRLCAT]) + AC_REQUIRE([AC_CHECK_STRLCPY]) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_SIZEOF(unsigned long) + + AC_MSG_CHECKING([sizeof size_t == sizeof unsigned long]) + AC_TRY_COMPILE(,[ + #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG + choke me + #endif + ],AC_MSG_RESULT([yes]),[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + Apparently on your system our assumption sizeof size_t == sizeof unsigned long + does not apply. Please mail kde-devel@kde.org with a description of your system! + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_BINUTILS], +[ + AC_MSG_CHECKING([if ld supports unversioned version maps]) + + kde_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + echo "{ local: extern \"C++\" { foo }; };" > conftest.map + AC_TRY_LINK([int foo;], +[ +#ifdef __INTEL_COMPILER +icc apparently does not support libtools version-info and version-script +at the same time. Dunno where the bug is, but until somebody figured out, +better disable the optional version scripts. +#endif + + foo = 42; +], kde_supports_versionmaps=yes, kde_supports_versionmaps=no) + LDFLAGS="$kde_save_LDFLAGS" + rm -f conftest.map + AM_CONDITIONAL(include_VERSION_SCRIPT, + [test "$kde_supports_versionmaps" = "yes" && test "$kde_use_debug_code" = "no"]) + + AC_MSG_RESULT($kde_supports_versionmaps) +]) + +AC_DEFUN([AM_PROG_OBJC],[ +AC_CHECK_PROGS(OBJC, gcc, gcc) +test -z "$OBJC" && AC_MSG_ERROR([no acceptable objective-c gcc found in \$PATH]) +if test "x${OBJCFLAGS-unset}" = xunset; then + OBJCFLAGS="-g -O2" +fi +AC_SUBST(OBJCFLAGS) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(OBJC)]) +]) + +AC_DEFUN([KDE_CHECK_PERL], +[ + KDE_FIND_PATH(perl, PERL, [$bindir $exec_prefix/bin $prefix/bin], [ + AC_MSG_ERROR([No Perl found in your $PATH. +We need perl to generate some code.]) + ]) + AC_SUBST(PERL) +]) +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool --silent' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LINUX_64_MODE="32" + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + LINUX_64_MODE="64" + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + testring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring=$testring$testring + done + testring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* out/* + rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + libsuff= + if test "x$LINUX_64_MODE" = x64; then + # Some platforms are per default 64-bit, so there's no /lib64 + if test -d /lib64; then + libsuff=64 + fi + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && test "X$CXX" != "Xno"; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + case $host_cpu in + alpha* | hppa* | i*86 | ia64* | m68* | mips* | powerpc* | sparc* | s390* | sh* | x86_64* ) + lt_cv_deplibs_check_method=pass_all ;; + # the debian people say, arm and glibc 2.3.1 works for them with pass_all + arm* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + darwin* | rhapsody*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # KDE requires run time linking. Make it the default. + aix_use_runtimelinking=yes + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='-qmkshrobj ${wl}-G' + else + shared_flag='-qmkshrobj' + fi + fi + fi + + # Let the compiler handle the export list. + _LT_AC_TAGVAR(always_export_symbols, $1)=no + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + darwin* | rhapsody*) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + dgux*) + case $cc_basename in + ec++) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc) + # Intel C++ + with_gnu_ld=yes + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + cxx) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + osf3*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext='$shrext' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGISTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $CC in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + + # KDE requires run time linking. Make it the default. + aix_use_runtimelinking=yes + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='-qmkshrobj ${wl}-G' + else + shared_flag='-qmkshrobj' + fi + fi + fi + + # Let the compiler handle the export list. + _LT_AC_TAGVAR(always_export_symbols, $1)=no + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi4*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + if test "$GXX" = yes ; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && break + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 10 + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7.9])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# -*- Autoconf -*- +# Copyright (C) 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 1 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# serial 5 -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + + +# Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# serial 3 + +AC_PREREQ(2.50) + +# AM_PROG_LEX +# ----------- +# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a +# "missing" invocation, for better error output. +AC_DEFUN([AM_PROG_LEX], +[AC_REQUIRE([AM_MISSING_HAS_RUN])dnl +AC_REQUIRE([AC_PROG_LEX])dnl +if test "$LEX" = :; then + LEX=${am_missing_run}flex +fi]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..0611cad --- /dev/null +++ b/config.h.in @@ -0,0 +1,219 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define if you have the CoreAudio API */ +#undef HAVE_COREAUDIO + +/* Define to 1 if you have the header file. */ +#undef HAVE_CRT_EXTERNS_H + +/* Defines if your system has the crypt function */ +#undef HAVE_CRYPT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have libjpeg */ +#undef HAVE_LIBJPEG + +/* Define if you have libpng */ +#undef HAVE_LIBPNG + +/* Define if you have a working libpthread (will enable threaded code) */ +#undef HAVE_LIBPTHREAD + +/* Define if you have libz */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if your system needs _NSGetEnviron to set up the environment */ +#undef HAVE_NSGETENVIRON + +/* Define if you have the res_init function */ +#undef HAVE_RES_INIT + +/* Define if you have a STL implementation by SGI */ +#undef HAVE_SGI_STL + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define if you have strlcat */ +#undef HAVE_STRLCAT + +/* Define if you have the strlcat prototype */ +#undef HAVE_STRLCAT_PROTO + +/* Define if you have strlcpy */ +#undef HAVE_STRLCPY + +/* Define if you have the strlcpy prototype */ +#undef HAVE_STRLCPY_PROTO + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Suffix for lib directories */ +#undef KDELIBSUFF + +/* Define a safe value for MAXPATHLEN */ +#undef KDEMAXPATHLEN + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* 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 + +/* The size of a `char *', as computed by sizeof. */ +#undef SIZEOF_CHAR_P + +/* The size of a `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of a `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of a `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of a `size_t', as computed by sizeof. */ +#undef SIZEOF_SIZE_T + +/* The size of a `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* + * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system + * headers and I'm too lazy to write a configure test as long as only + * unixware is related + */ +#ifdef _UNIXWARE +#define HAVE_BOOLEAN +#endif + + + +/* + * AIX defines FD_SET in terms of bzero, but fails to include + * that defines bzero. + */ + +#if defined(_AIX) +#include +#endif + + + +#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H) +# include +# include +# define environ (*_NSGetEnviron()) +#endif + + + +#if !defined(HAVE_STRLCAT_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +unsigned long strlcat(char*, const char*, unsigned long); +#ifdef __cplusplus +} +#endif +#endif + + + +#if !defined(HAVE_STRLCPY_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +unsigned long strlcpy(char*, const char*, unsigned long); +#ifdef __cplusplus +} +#endif +#endif + + + +/* + * On HP-UX, the declaration of vsnprintf() is needed every time ! + */ + +#if !defined(HAVE_VSNPRINTF) || defined(hpux) +#if __STDC__ +#include +#include +#else +#include +#endif +#ifdef __cplusplus +extern "C" +#endif +int vsnprintf(char *str, size_t n, char const *fmt, va_list ap); +#ifdef __cplusplus +extern "C" +#endif +int snprintf(char *str, size_t n, char const *fmt, ...); +#endif + + + +#if defined(__SVR4) && !defined(__svr4__) +#define __svr4__ 1 +#endif + + +/* Compatibility define */ +#undef ksize_t + +/* Define the real type of socklen_t */ +#undef socklen_t diff --git a/configure.files b/configure.files new file mode 100644 index 0000000..030bce8 --- /dev/null +++ b/configure.files @@ -0,0 +1,2 @@ +./admin/configure.in.min +configure.in.in diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..e6480f4 --- /dev/null +++ b/configure.in @@ -0,0 +1,95 @@ +dnl This file is part of the KDE libraries/packages +dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org) + +dnl This file is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Library General Public +dnl License as published by the Free Software Foundation; either +dnl version 2 of the License, or (at your option) any later version. + +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Library General Public License for more details. + +dnl You should have received a copy of the GNU Library General Public License +dnl along with this library; see the file COPYING.LIB. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +dnl Boston, MA 02110-1301, USA. + +# Original Author was Kalle@kde.org +# I lifted it in some mater. (Stephan Kulow) +# I used much code from Janos Farkas + +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(acinclude.m4) dnl a source file from your sub dir + +dnl This is so we can use kde-common +AC_CONFIG_AUX_DIR(admin) + +dnl This ksh/zsh feature conflicts with `cd blah ; pwd` +unset CDPATH + +dnl Checking host/target/build systems, for make, install etc. +AC_CANONICAL_SYSTEM +dnl Perform program name transformation +AC_ARG_PROGRAM + +dnl Automake doc recommends to do this only here. (Janos) +AM_INIT_AUTOMAKE(ksystemlog, 0.1) dnl searches for some needed programs + +KDE_SET_PREFIX + +dnl generate the config header +AM_CONFIG_HEADER(config.h) dnl at the distribution this done + +dnl Checks for programs. +AC_CHECK_COMPILERS +AC_ENABLE_SHARED(yes) +AC_ENABLE_STATIC(no) +KDE_PROG_LIBTOOL + +dnl for NLS support. Call them in this order! +dnl WITH_NLS is for the po files +AM_KDE_WITH_NLS + +KDE_USE_QT(3.2.0) +AC_PATH_KDE +#MIN_CONFIG(3.2.0) + +dnl PACKAGE set before +AC_C_BIGENDIAN +AC_CHECK_KDEMAXPATHLEN + +KDE_CREATE_SUBDIRSLIST +AC_CONFIG_FILES([ Makefile ]) +AC_CONFIG_FILES([ ksystemlog/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/doc/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/doc/en/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/po/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/acpid/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/apache/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/bootauth/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/config/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/cron/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/cups/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/daemon/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/kernel/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/postfix/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/samba/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/system/Makefile ]) +AC_CONFIG_FILES([ ksystemlog/src/xorg/Makefile ]) +AC_OUTPUT +if test "$all_tests" = "bad"; then + if test ! "$cache_file" = "/dev/null"; then + echo "" + echo "Please remove the file $cache_file after changing your setup" + echo "so that configure will find the changes next time." + echo "" + fi +else + echo "" + echo "Good - your configure finished. Start make now" + echo "" +fi diff --git a/configure.in.in b/configure.in.in new file mode 100644 index 0000000..6af7631 --- /dev/null +++ b/configure.in.in @@ -0,0 +1,6 @@ +#MIN_CONFIG(3.2.0) + +AM_INIT_AUTOMAKE(ksystemlog, 0.1) +AC_C_BIGENDIAN +AC_CHECK_KDEMAXPATHLEN + diff --git a/ksystemlog.kdevelop b/ksystemlog.kdevelop new file mode 100644 index 0000000..d34cead --- /dev/null +++ b/ksystemlog.kdevelop @@ -0,0 +1,229 @@ + + + + Nicolas Ternisien + nicolas.ternisien@gmail.com + 0.3.2 + KDevKDEAutoProject + C++ + + C++ + Code + Qt + KDE + + . + false + + + kdevfileview + kdevscripting + kdevfilter + kdevdoxygen + kdevbookmarks + kdevdistpart + kdevfilegroups + kdevctags2 + kdevgrepview + kdevkonsoleview + kdevsnippet + kdevreplace + kdevpartexplorer + + + + + + ksystemlog/src/ksystemlog + debug + + + ksystemlog/src/ksystemlog + false + executable + + + + / + + true + + + + + + + + false + 1 + false + + 0 + + + + optimized + kdevgccoptions + kdevgppoptions + kdevg77options + -O2 -g0 + + + --enable-debug=full + debug + kdevgccoptions + kdevgppoptions + kdevg77options + -O0 -g3 + + + + + + + + + + + + false + false + + + false + *.o,*.lo,CVS + false + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + ruby + ruby_bugs + sdl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + qmake User Guide + + + + + libtool + + + true + false + false + true + + + + + + false + true + 10 + + + + + + + + + + + + -f + + -dP + + -f + -u3 -p + + + + + + + false + + + .h + .cpp + true + + + + true + 2 + + + + Collection de documentation Doxygen + ksystemlog.tag + + + + + ksystemlog + ksystemlog + Ksystemlog + KSYSTEMLOG + Nicolas Ternisien + nicolast@libertysurf.fr + GPL + COPYING + 0.1 + 2005 + /mnt/boulot/devel/ksystemlog + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + + set + m_,_ + theValue + true + true + + + diff --git a/ksystemlog.kdevelop.pcs b/ksystemlog.kdevelop.pcs new file mode 100644 index 0000000..8344ff8 Binary files /dev/null and b/ksystemlog.kdevelop.pcs differ diff --git a/ksystemlog.kdevses b/ksystemlog.kdevses new file mode 100644 index 0000000..bfb0c59 --- /dev/null +++ b/ksystemlog.kdevses @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ksystemlog/AUTHORS b/ksystemlog/AUTHORS new file mode 100644 index 0000000..2a3ec53 --- /dev/null +++ b/ksystemlog/AUTHORS @@ -0,0 +1,3 @@ +Nicolas Ternisien + +Please see http://annivernet.free.fr/ksystemlog/ for more informations. \ No newline at end of file diff --git a/ksystemlog/COPYING b/ksystemlog/COPYING new file mode 100644 index 0000000..c13faf0 --- /dev/null +++ b/ksystemlog/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. + + + Copyright (C) + + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. + + , 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. diff --git a/ksystemlog/ChangeLog b/ksystemlog/ChangeLog new file mode 100644 index 0000000..84c41e2 --- /dev/null +++ b/ksystemlog/ChangeLog @@ -0,0 +1,16 @@ +---------------------------------- +KSystemLog Changelog +---------------------------------- +Please see the changelog of KSystemLog online at : + +http://annivernet.free.fr/ksystemlog/changelog.php + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : + + +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/ksystemlog/INSTALL b/ksystemlog/INSTALL new file mode 100644 index 0000000..9b962f5 --- /dev/null +++ b/ksystemlog/INSTALL @@ -0,0 +1,181 @@ + +Specific Trouble case with KSystemLog +=================================================== +I hope that you will don't have any problems to compile and test KSystemLog. +If you successfully compile KSystemLog but you have strange problems (with the +tool bars, please manually copy src/ksystemlogui.rc in the $HOME/.kde/share/apps/ksystemlog +folder (create it if it does not exist). + +If you still have problems, do not hesitate do email me ;-) +Nicolas Ternisien + +For more informations, please also see the KsystemLog Web site : +http://annivernet.free.fr/ksystemlog/ + +Basic Installation +=================================================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/ksystemlog/Makefile.am b/ksystemlog/Makefile.am new file mode 100644 index 0000000..af437a6 --- /dev/null +++ b/ksystemlog/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/ksystemlog/NEWS b/ksystemlog/NEWS new file mode 100644 index 0000000..4fd6b41 --- /dev/null +++ b/ksystemlog/NEWS @@ -0,0 +1,16 @@ +---------------------------------- +KSystemLog News +---------------------------------- +Please see the news of KSystemLog online at : + +http://localhost.localdomain/ksystemlog/index.php#news + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : + + +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/ksystemlog/README b/ksystemlog/README new file mode 100644 index 0000000..e6cfe35 --- /dev/null +++ b/ksystemlog/README @@ -0,0 +1,14 @@ +---------------------------------- +KSystemLog Readme +---------------------------------- +Please see the official KSystemLog Web site online at : + +http://localhost.localdomain/ksystemlog/ + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/ksystemlog/TODO b/ksystemlog/TODO new file mode 100644 index 0000000..106f83c --- /dev/null +++ b/ksystemlog/TODO @@ -0,0 +1,15 @@ +---------------------------------- +KSystemLog TODO List +---------------------------------- +Please see the changelog of KSystemLog online at : + +http://annivernet.free.fr/ksystemlog/ideas.php + +Thank you. + +For any information and/or improvements, do not hesitate to send a mail to : + +Nicolas Ternisien + +KSystemLog Web site : +http://annivernet.free.fr/ksystemlog/ diff --git a/ksystemlog/doc/Makefile b/ksystemlog/doc/Makefile new file mode 100644 index 0000000..27b71d6 --- /dev/null +++ b/ksystemlog/doc/Makefile @@ -0,0 +1,646 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 1.7 $ +# ksystemlog/doc/Makefile. Generated from Makefile.in by config.pl. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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. + + + +# the SUBDIRS is filled automatically by am_edit. If files are +# in this directory they are installed into the english dir + +srcdir = . +top_srcdir = ../.. +VPATH = . +pkgdatadir = $(datadir)/ksystemlog +pkglibdir = $(libdir)/ksystemlog +pkgincludedir = $(includedir)/ksystemlog +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c -p +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 +target_triplet = i686-pc-linux-gnu +ACLOCAL = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run aclocal-1.7 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run tar +AR = ar +ARTSCCONFIG = /usr/bin/artsc-config +AUTOCONF = $(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure +AUTODIRS = +AUTOHEADER = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run autoheader +AUTOMAKE = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run automake-1.7 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -O2 -Wformat-security -Wmissing-format-attribute +CONF_FILES = $(top_srcdir)/./admin/configure.in.min $(top_srcdir)/configure.in.in +CPP = gcc -E +CPPFLAGS = -DQT_THREAD_SUPPORT -D_REENTRANT +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common +CYGPATH_W = echo +DCOPIDL = /usr/bin/dcopidl +DCOPIDL2CPP = /usr/bin/dcopidl2cpp +DCOPIDLNG = /usr/bin/dcopidlng +DCOP_DEPENDENCIES = $(DCOPIDL) $(DCOPIDLNG) +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +F77 = +FFLAGS = +FRAMEWORK_COREAUDIO = +GMSGFMT = /usr/bin/msgfmt +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_STRIP_FLAG) +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +KCFG_DEPENDENCIES = $(KCONFIG_COMPILER) +KCONFIG_COMPILER = /usr/bin/kconfig_compiler +KDECONFIG = /usr/bin/kde-config +KDE_EXTRA_RPATH = +KDE_INCLUDES = -I/usr/include/kde +KDE_LDFLAGS = -L/usr/lib +KDE_MT_LDFLAGS = +KDE_MT_LIBS = -lpthread +KDE_NO_UNDEFINED = -Wl,--no-undefined -Wl,--allow-shlib-undefined +KDE_PLUGIN = -avoid-version -module -no-undefined $(KDE_NO_UNDEFINED) $(KDE_RPATH) $(KDE_MT_LDFLAGS) +KDE_RPATH = -R $(kde_libraries) -R $(qt_libraries) -R $(x_libraries) +KDE_USE_CLOSURE_FALSE = +KDE_USE_CLOSURE_TRUE = # +KDE_USE_FINAL_FALSE = +KDE_USE_FINAL_TRUE = # +KDE_USE_NMCHECK_FALSE = +KDE_USE_NMCHECK_TRUE = # +KDE_XSL_STYLESHEET = /usr/share/apps/ksgmltools2/customization/kde-chunk.xsl +LDFLAGS = +LIBCOMPAT = +LIBCRYPT = -lcrypt +LIBDL = -ldl +LIBJPEG = -ljpeg +LIBOBJS = +LIBPNG = -lpng -lz -lm +LIBPTHREAD = -lpthread +LIBRESOLV = -lresolv +LIBS = +LIBSM = -lSM -lICE +LIBSOCKET = +LIBTOOL = $(SHELL) $(top_builddir)/libtool --silent +LIBUCB = +LIBUTIL = -lutil +LIBZ = -lz +LIB_KAB = -lkab +LIB_KABC = -lkabc +LIB_KDECORE = -lkdecore +LIB_KDEPIM = -lkdepim +LIB_KDEPRINT = -lkdeprint +LIB_KDEUI = -lkdeui +LIB_KFILE = -lkio +LIB_KFM = +LIB_KHTML = -lkhtml +LIB_KIO = -lkio +LIB_KPARTS = -lkparts +LIB_KSPELL = -lkspell +LIB_KSYCOCA = -lkio +LIB_KUTILS = -lkutils +LIB_POLL = +LIB_QPE = +LIB_QT = -lqt-mt $(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM) -lpthread +LIB_SMB = -lsmb +LIB_X11 = -lX11 $(LIBSOCKET) +LIB_XEXT = -lXext +LIB_XRENDER = +LN_S = ln -s +LTLIBOBJS = +MAKEINFO = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run makeinfo +MCOPIDL = /usr/bin/mcopidl +MEINPROC = /usr/bin/meinproc +MOC = /usr/share/qt3/bin/moc +MSGFMT = /usr/bin/msgfmt +NOOPT_CFLAGS = -O0 +NOOPT_CXXFLAGS = -O0 +OBJEXT = o +PACKAGE = ksystemlog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +QTE_NORTTI = +QT_INCLUDES = -I/usr/share/qt3/include +QT_LDFLAGS = -L/usr/share/qt3/lib +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +TOPSUBDIRS = ksystemlog +UIC = /usr/share/qt3/bin/uic -L $(kde_widgetdir) -nounload +UIC_TR = tr2i18n +USER_INCLUDES = +USER_LDFLAGS = +USE_EXCEPTIONS = -fexceptions +USE_RTTI = +USE_THREADS = +VERSION = 0.1 +WOVERLOADED_VIRTUAL = +XGETTEXT = /usr/bin/xgettext +XMLLINT = /usr/bin/xmllint +X_EXTRA_LIBS = +X_INCLUDES = -I. +X_LDFLAGS = -L/usr/lib +X_PRE_LIBS = +X_RPATH = -R $(x_libraries) +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +ac_ct_RANLIB = ranlib +ac_ct_STRIP = strip +all_includes = -I/usr/include/kde -I/usr/share/qt3/include -I. +all_libraries = -L/usr/lib -L/usr/share/qt3/lib +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__fastdepCXX_FALSE = # +am__fastdepCXX_TRUE = +am__include = include +am__leading_dot = . +am__quote = +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +include_ARTS_FALSE = # +include_ARTS_TRUE = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /root/ksystemlog/ksystemlog-0.3.2/admin/install-sh +kde_appsdir = ${datadir}/applnk +kde_bindir = ${exec_prefix}/bin +kde_confdir = ${datadir}/config +kde_datadir = ${datadir}/apps +kde_htmldir = ${datadir}/doc/HTML +kde_icondir = ${datadir}/icons +kde_includes = /usr/include/kde +kde_kcfgdir = ${datadir}/config.kcfg +kde_libraries = /usr/lib +kde_libs_htmldir = /usr/share/doc/kde/HTML +kde_libs_prefix = /usr +kde_locale = ${datadir}/locale +kde_mimedir = ${datadir}/mimelnk +kde_moduledir = ${libdir}/kde3 +kde_qtver = 3 +kde_servicesdir = ${datadir}/services +kde_servicetypesdir = ${datadir}/servicetypes +kde_sounddir = ${datadir}/sounds +kde_styledir = ${libdir}/kde3/plugins/styles +kde_templatesdir = ${datadir}/templates +kde_wallpaperdir = ${datadir}/wallpapers +kde_widgetdir = /usr/lib/kde3/plugins/designer +kdeinitdir = $(kde_moduledir) +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +oldincludedir = /usr/include +prefix = /usr +program_transform_name = s,x,x, +qt_includes = /usr/share/qt3/include +qt_libraries = /usr/share/qt3/lib +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +x_includes = . +x_libraries = /usr/lib +xdg_appsdir = ${datadir}/applications/kde +xdg_directorydir = ${datadir}/desktop-directories +xdg_menudir = ${sysconfdir}/xdg/menus + +KDE_LANG = en +KDE_DOCS = ksystemlog +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. en +subdir = ksystemlog/doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +#>- RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ +#>- ps-recursive install-info-recursive uninstall-info-recursive \ +#>- all-recursive install-data-recursive install-exec-recursive \ +#>- installdirs-recursive install-recursive uninstall-recursive \ +#>- check-recursive installcheck-recursive +#>+ 5 +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive nmcheck-recursive bcheck-recursive +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +DIST_SUBDIRS = $(SUBDIRS) +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu ksystemlog/doc/Makefile +#>+ 3 + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ksystemlog/doc/Makefile + cd $(top_srcdir) && perl admin/am_edit ksystemlog/doc/Makefile.in +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + 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 + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + 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) $(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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { 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 +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: + +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: + -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-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic clean-libtool mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -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-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ + pdf-recursive ps ps-am ps-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# 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: + +#>+ 2 +KDE_DIST=Makefile.in + +#>+ 2 +docs-am: + +#>+ 6 +force-reedit: + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ksystemlog/doc/Makefile + cd $(top_srcdir) && perl admin/am_edit ksystemlog/doc/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +cvs-clean: + $(MAKE) admindir=$(top_srcdir)/admin -f $(top_srcdir)/admin/Makefile.common cvs-clean + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/ksystemlog/doc/Makefile.am b/ksystemlog/doc/Makefile.am new file mode 100644 index 0000000..c6ddd74 --- /dev/null +++ b/ksystemlog/doc/Makefile.am @@ -0,0 +1,6 @@ +# the SUBDIRS is filled automatically by am_edit. If files are +# in this directory they are installed into the english dir + +KDE_LANG = en +KDE_DOCS = ksystemlog +SUBDIRS = $(AUTODIRS) diff --git a/ksystemlog/doc/en/Makefile b/ksystemlog/doc/en/Makefile new file mode 100644 index 0000000..2bd7b6d --- /dev/null +++ b/ksystemlog/doc/en/Makefile @@ -0,0 +1,532 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 1.7 $ +# ksystemlog/doc/en/Makefile. Generated from Makefile.in by config.pl. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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. + + + +srcdir = . +top_srcdir = ../../.. +VPATH = . +pkgdatadir = $(datadir)/ksystemlog +pkglibdir = $(libdir)/ksystemlog +pkgincludedir = $(includedir)/ksystemlog +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c -p +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 +target_triplet = i686-pc-linux-gnu +ACLOCAL = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run aclocal-1.7 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run tar +AR = ar +ARTSCCONFIG = /usr/bin/artsc-config +AUTOCONF = $(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure +AUTODIRS = +AUTOHEADER = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run autoheader +AUTOMAKE = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run automake-1.7 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -O2 -Wformat-security -Wmissing-format-attribute +CONF_FILES = $(top_srcdir)/./admin/configure.in.min $(top_srcdir)/configure.in.in +CPP = gcc -E +CPPFLAGS = -DQT_THREAD_SUPPORT -D_REENTRANT +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common +CYGPATH_W = echo +DCOPIDL = /usr/bin/dcopidl +DCOPIDL2CPP = /usr/bin/dcopidl2cpp +DCOPIDLNG = /usr/bin/dcopidlng +DCOP_DEPENDENCIES = $(DCOPIDL) $(DCOPIDLNG) +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +F77 = +FFLAGS = +FRAMEWORK_COREAUDIO = +GMSGFMT = /usr/bin/msgfmt +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_STRIP_FLAG) +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +KCFG_DEPENDENCIES = $(KCONFIG_COMPILER) +KCONFIG_COMPILER = /usr/bin/kconfig_compiler +KDECONFIG = /usr/bin/kde-config +KDE_EXTRA_RPATH = +KDE_INCLUDES = -I/usr/include/kde +KDE_LDFLAGS = -L/usr/lib +KDE_MT_LDFLAGS = +KDE_MT_LIBS = -lpthread +KDE_NO_UNDEFINED = -Wl,--no-undefined -Wl,--allow-shlib-undefined +KDE_PLUGIN = -avoid-version -module -no-undefined $(KDE_NO_UNDEFINED) $(KDE_RPATH) $(KDE_MT_LDFLAGS) +KDE_RPATH = -R $(kde_libraries) -R $(qt_libraries) -R $(x_libraries) +KDE_USE_CLOSURE_FALSE = +KDE_USE_CLOSURE_TRUE = # +KDE_USE_FINAL_FALSE = +KDE_USE_FINAL_TRUE = # +KDE_USE_NMCHECK_FALSE = +KDE_USE_NMCHECK_TRUE = # +KDE_XSL_STYLESHEET = /usr/share/apps/ksgmltools2/customization/kde-chunk.xsl +LDFLAGS = +LIBCOMPAT = +LIBCRYPT = -lcrypt +LIBDL = -ldl +LIBJPEG = -ljpeg +LIBOBJS = +LIBPNG = -lpng -lz -lm +LIBPTHREAD = -lpthread +LIBRESOLV = -lresolv +LIBS = +LIBSM = -lSM -lICE +LIBSOCKET = +LIBTOOL = $(SHELL) $(top_builddir)/libtool --silent +LIBUCB = +LIBUTIL = -lutil +LIBZ = -lz +LIB_KAB = -lkab +LIB_KABC = -lkabc +LIB_KDECORE = -lkdecore +LIB_KDEPIM = -lkdepim +LIB_KDEPRINT = -lkdeprint +LIB_KDEUI = -lkdeui +LIB_KFILE = -lkio +LIB_KFM = +LIB_KHTML = -lkhtml +LIB_KIO = -lkio +LIB_KPARTS = -lkparts +LIB_KSPELL = -lkspell +LIB_KSYCOCA = -lkio +LIB_KUTILS = -lkutils +LIB_POLL = +LIB_QPE = +LIB_QT = -lqt-mt $(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM) -lpthread +LIB_SMB = -lsmb +LIB_X11 = -lX11 $(LIBSOCKET) +LIB_XEXT = -lXext +LIB_XRENDER = +LN_S = ln -s +LTLIBOBJS = +MAKEINFO = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run makeinfo +MCOPIDL = /usr/bin/mcopidl +MEINPROC = /usr/bin/meinproc +MOC = /usr/share/qt3/bin/moc +MSGFMT = /usr/bin/msgfmt +NOOPT_CFLAGS = -O0 +NOOPT_CXXFLAGS = -O0 +OBJEXT = o +PACKAGE = ksystemlog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +QTE_NORTTI = +QT_INCLUDES = -I/usr/share/qt3/include +QT_LDFLAGS = -L/usr/share/qt3/lib +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +TOPSUBDIRS = ksystemlog +UIC = /usr/share/qt3/bin/uic -L $(kde_widgetdir) -nounload +UIC_TR = tr2i18n +USER_INCLUDES = +USER_LDFLAGS = +USE_EXCEPTIONS = -fexceptions +USE_RTTI = +USE_THREADS = +VERSION = 0.1 +WOVERLOADED_VIRTUAL = +XGETTEXT = /usr/bin/xgettext +XMLLINT = /usr/bin/xmllint +X_EXTRA_LIBS = +X_INCLUDES = -I. +X_LDFLAGS = -L/usr/lib +X_PRE_LIBS = +X_RPATH = -R $(x_libraries) +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +ac_ct_RANLIB = ranlib +ac_ct_STRIP = strip +all_includes = -I/usr/include/kde -I/usr/share/qt3/include -I. +all_libraries = -L/usr/lib -L/usr/share/qt3/lib +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__fastdepCXX_FALSE = # +am__fastdepCXX_TRUE = +am__include = include +am__leading_dot = . +am__quote = +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +include_ARTS_FALSE = # +include_ARTS_TRUE = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /root/ksystemlog/ksystemlog-0.3.2/admin/install-sh +kde_appsdir = ${datadir}/applnk +kde_bindir = ${exec_prefix}/bin +kde_confdir = ${datadir}/config +kde_datadir = ${datadir}/apps +kde_htmldir = ${datadir}/doc/HTML +kde_icondir = ${datadir}/icons +kde_includes = /usr/include/kde +kde_kcfgdir = ${datadir}/config.kcfg +kde_libraries = /usr/lib +kde_libs_htmldir = /usr/share/doc/kde/HTML +kde_libs_prefix = /usr +kde_locale = ${datadir}/locale +kde_mimedir = ${datadir}/mimelnk +kde_moduledir = ${libdir}/kde3 +kde_qtver = 3 +kde_servicesdir = ${datadir}/services +kde_servicetypesdir = ${datadir}/servicetypes +kde_sounddir = ${datadir}/sounds +kde_styledir = ${libdir}/kde3/plugins/styles +kde_templatesdir = ${datadir}/templates +kde_wallpaperdir = ${datadir}/wallpapers +kde_widgetdir = /usr/lib/kde3/plugins/designer +kdeinitdir = $(kde_moduledir) +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +oldincludedir = /usr/include +prefix = /usr +program_transform_name = s,x,x, +qt_includes = /usr/share/qt3/include +qt_libraries = /usr/share/qt3/lib +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +x_includes = . +x_libraries = /usr/lib +xdg_appsdir = ${datadir}/applications/kde +xdg_directorydir = ${datadir}/desktop-directories +xdg_menudir = ${sysconfdir}/xdg/menus +KDE_DOCS = ksystemlog +KDE_LANG = en +subdir = ksystemlog/doc/en +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +#>- all: all-am +#>+ 1 +all: docs-am all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu ksystemlog/doc/en/Makefile +#>+ 3 + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ksystemlog/doc/en/Makefile + cd $(top_srcdir) && perl admin/am_edit ksystemlog/doc/en/Makefile.in +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 + +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +#>- uninstall: uninstall-am +#>+ 1 +uninstall: uninstall-docs uninstall-nls 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: + -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 +#>+ 1 +clean: kde-rpo-clean clean-am + +#>- clean-am: clean-generic clean-libtool mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-exec-am: + +install-info: install-info-am + +install-man: + +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-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man 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-info-am + +# 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: + +#>+ 2 +KDE_DIST=Makefile.in index.docbook + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/common + +uninstall-docs: + -rm -rf $(kde_htmldir)/$(KDE_LANG)/ksystemlog + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/ksystemlog/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 6 +force-reedit: + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ksystemlog/doc/en/Makefile + cd $(top_srcdir) && perl admin/am_edit ksystemlog/doc/en/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-am + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +cvs-clean: + $(MAKE) admindir=$(top_srcdir)/admin -f $(top_srcdir)/admin/Makefile.common cvs-clean + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/ksystemlog/doc/en/Makefile.am b/ksystemlog/doc/en/Makefile.am new file mode 100644 index 0000000..2d51c18 --- /dev/null +++ b/ksystemlog/doc/en/Makefile.am @@ -0,0 +1,2 @@ +KDE_DOCS = ksystemlog +KDE_LANG = en diff --git a/ksystemlog/doc/en/index.docbook b/ksystemlog/doc/en/index.docbook new file mode 100644 index 0000000..47b1b92 --- /dev/null +++ b/ksystemlog/doc/en/index.docbook @@ -0,0 +1,555 @@ + +ksystemlog 0.1"> + + + + + + + +]> + + + + + + + + + + + + + + +The &ksystemlog; Handbook + + + + + +Nicolas Ternisien + +
nicolast@libertysurf.fr
+
+
+
+ + + + +1999 +2005 +Nicolas Ternisien + + + +&FDLNotice; + + + +2001-10-18 +0.1 + + + + + +&ksystemlog; is an application specially designed to do nothing you would +ever want. + + + + + + +KDE +ksystemlog +nothing +nothing else + + +
+ + + + +Introduction + + + + +&ksystemlog; is a program that lets you do absolutely nothing. Please report +any problems or feature requests to the &kde; mailing lists. + + + + +Using &ksystemlog; + + + + + + + + +Here's a screenshot of &ksystemlog; + + + + + + + + + Screenshot + + + + + + + +More &ksystemlog; features + +It slices! It dices! and it comes with a free toaster! + +The Squiggle Tool + + + + + + + + Squiggle + + is used to draw squiggly lines all over +the &ksystemlog; main window. It's not a bug, it's a feature! + + + + + + +Command Reference + + + + +The main &ksystemlog; window + + +The File Menu + + + + + +&Ctrl;N + +File +New + +Creates a new document + + + + +&Ctrl;S + +File +Save + +Saves the document + + + + +&Ctrl;Q + +File +Quit + +Quits &ksystemlog; + + + + + + + +The <guimenu>Help</guimenu> Menu + + + + + + +&help.menu.documentation; + + + + + + + +Developer's Guide to &ksystemlog; + + + + +Programming &ksystemlog; plugins is a joy to behold. Just read through the next +66 pages of API's to learn how! + + + + + + +XtUnmanageChildren +Xt - Geometry Management + + +XtUnmanageChildren + +remove a list of children from a parent widget's managed +list. +widgetsremoving +XtUnmanageChildren + + + + + +4 March 1996 + + +void XtUnmanageChildren(children, num_children) + WidgetList children; + Cardinal num_children; + + + +Inputs + + +children + + +Specifies an array of child widgets. Each child must be of +class RectObj or any subclass thereof. + + + + +num_children + + +Specifies the number of elements in children. + + + + + + + +Description + +XtUnmanageChildren() unmaps the specified widgets +and removes them from their parent's geometry management. +The widgets will disappear from the screen, and (depending +on its parent) may no longer have screen space allocated for +them. + +Each of the widgets in the children array must have +the same parent. + +See the “Algorithm” section below for full details of the +widget unmanagement procedure. + + + + +Usage +Unmanaging widgets is the usual method for temporarily +making them invisible. They can be re-managed with +XtManageChildren(). + +You can unmap a widget, but leave it under geometry +management by calling XtUnmapWidget(). You can +destroy a widget's window without destroying the widget by +calling XtUnrealizeWidget(). You can destroy a +widget completely with XtDestroyWidget(). + +If you are only going to unmanage a single widget, it is +more convenient to call XtUnmanageChild(). It is +often more convenient to call XtUnmanageChild() +several times than it is to declare and initialize an array +of widgets to pass to XtUnmanageChildren(). Calling +XtUnmanageChildren() is more efficient, however, +because it only calls the parent's change_managed() +method once. + + + + +Algorithm + +XtUnmanageChildren() performs the following: + + + +- + + +Ignores the child if it already is unmanaged or is being +destroyed. + + + + +- + + +Otherwise, if the child is realized, it makes it nonvisible +by unmapping it. + + + + + + + + + +Structures +The WidgetList type is simply an array of widgets: + +typedef Widget *WidgetList; + + + + + + + +Questions and Answers + + + +&reporting.bugs; +&updating.documentation; + + + + +My Mouse doesn't work. How do I quit &ksystemlog;? + + +You silly goose! Check out the Commands +Section for the answer. + + + + +Why can't I twiddle my documents? + + +You can only twiddle your documents if you have the foobar.lib +installed. + + + + + + + + + +Credits and License + + +&ksystemlog; + + +Program copyright 2005 Nicolas Ternisien nicolast@libertysurf.fr + + +Contributors: + +Konqui the KDE Dragon konqui@kde.org + +Tux the Linux Penguin tux@linux.org + + + + + +Documentation copyright 2005 Nicolas Ternisien nicolast@libertysurf.fr + + + + +&underFDL; + + + +&underGPL; +&underBSDLicense; +&underArtisticLicense; +&underX11License; + + + + +Installation + + +How to obtain &ksystemlog; + + + +&install.intro.documentation; + + + + +Requirements + + + + +In order to successfully use &ksystemlog;, you need &kde; 1.1. Foobar.lib is +required in order to support the advanced &ksystemlog; features. &ksystemlog; uses +about 5 megs of memory to run, but this may vary depending on your +platform and configuration. + + + +All required libraries as well as &ksystemlog; itself can be found +on The &ksystemlog; home page. + + + + +You can find a list of changes at http://apps.kde.org/ksystemlog. + + + + +Compilation and Installation + + + + + +&install.compile.documentation; + + + + +Configuration + +Don't forget to tell your system to start the dtd +dicer-toaster daemon first, or &ksystemlog; won't work ! + + + + + +&documentation.index; +
+ + + diff --git a/ksystemlog/po/Makefile b/ksystemlog/po/Makefile new file mode 100644 index 0000000..9b8dff9 --- /dev/null +++ b/ksystemlog/po/Makefile @@ -0,0 +1,589 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 1.7 $ +# ksystemlog/po/Makefile. Generated from Makefile.in by config.pl. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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. + + + +srcdir = . +top_srcdir = ../.. +VPATH = . +pkgdatadir = $(datadir)/ksystemlog +pkglibdir = $(libdir)/ksystemlog +pkgincludedir = $(includedir)/ksystemlog +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c -p +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 +target_triplet = i686-pc-linux-gnu +ACLOCAL = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run aclocal-1.7 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run tar +AR = ar +ARTSCCONFIG = /usr/bin/artsc-config +AUTOCONF = $(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure +AUTODIRS = +AUTOHEADER = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run autoheader +AUTOMAKE = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run automake-1.7 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -ansi -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -O2 -Wformat-security -Wmissing-format-attribute +CONF_FILES = $(top_srcdir)/./admin/configure.in.min $(top_srcdir)/configure.in.in +CPP = gcc -E +CPPFLAGS = -DQT_THREAD_SUPPORT -D_REENTRANT +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common +CYGPATH_W = echo +DCOPIDL = /usr/bin/dcopidl +DCOPIDL2CPP = /usr/bin/dcopidl2cpp +DCOPIDLNG = /usr/bin/dcopidlng +DCOP_DEPENDENCIES = $(DCOPIDL) $(DCOPIDLNG) +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = grep -E +EXEEXT = +F77 = +FFLAGS = +FRAMEWORK_COREAUDIO = +GMSGFMT = /usr/bin/msgfmt +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_STRIP_FLAG) +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +KCFG_DEPENDENCIES = $(KCONFIG_COMPILER) +KCONFIG_COMPILER = /usr/bin/kconfig_compiler +KDECONFIG = /usr/bin/kde-config +KDE_EXTRA_RPATH = +KDE_INCLUDES = -I/usr/include/kde +KDE_LDFLAGS = -L/usr/lib +KDE_MT_LDFLAGS = +KDE_MT_LIBS = -lpthread +KDE_NO_UNDEFINED = -Wl,--no-undefined -Wl,--allow-shlib-undefined +KDE_PLUGIN = -avoid-version -module -no-undefined $(KDE_NO_UNDEFINED) $(KDE_RPATH) $(KDE_MT_LDFLAGS) +KDE_RPATH = -R $(kde_libraries) -R $(qt_libraries) -R $(x_libraries) +KDE_USE_CLOSURE_FALSE = +KDE_USE_CLOSURE_TRUE = # +KDE_USE_FINAL_FALSE = +KDE_USE_FINAL_TRUE = # +KDE_USE_NMCHECK_FALSE = +KDE_USE_NMCHECK_TRUE = # +KDE_XSL_STYLESHEET = /usr/share/apps/ksgmltools2/customization/kde-chunk.xsl +LDFLAGS = +LIBCOMPAT = +LIBCRYPT = -lcrypt +LIBDL = -ldl +LIBJPEG = -ljpeg +LIBOBJS = +LIBPNG = -lpng -lz -lm +LIBPTHREAD = -lpthread +LIBRESOLV = -lresolv +LIBS = +LIBSM = -lSM -lICE +LIBSOCKET = +LIBTOOL = $(SHELL) $(top_builddir)/libtool --silent +LIBUCB = +LIBUTIL = -lutil +LIBZ = -lz +LIB_KAB = -lkab +LIB_KABC = -lkabc +LIB_KDECORE = -lkdecore +LIB_KDEPIM = -lkdepim +LIB_KDEPRINT = -lkdeprint +LIB_KDEUI = -lkdeui +LIB_KFILE = -lkio +LIB_KFM = +LIB_KHTML = -lkhtml +LIB_KIO = -lkio +LIB_KPARTS = -lkparts +LIB_KSPELL = -lkspell +LIB_KSYCOCA = -lkio +LIB_KUTILS = -lkutils +LIB_POLL = +LIB_QPE = +LIB_QT = -lqt-mt $(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM) -lpthread +LIB_SMB = -lsmb +LIB_X11 = -lX11 $(LIBSOCKET) +LIB_XEXT = -lXext +LIB_XRENDER = +LN_S = ln -s +LTLIBOBJS = +MAKEINFO = ${SHELL} /root/ksystemlog/ksystemlog-0.3.2/admin/missing --run makeinfo +MCOPIDL = /usr/bin/mcopidl +MEINPROC = /usr/bin/meinproc +MOC = /usr/share/qt3/bin/moc +MSGFMT = /usr/bin/msgfmt +NOOPT_CFLAGS = -O0 +NOOPT_CXXFLAGS = -O0 +OBJEXT = o +PACKAGE = ksystemlog +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +QTE_NORTTI = +QT_INCLUDES = -I/usr/share/qt3/include +QT_LDFLAGS = -L/usr/share/qt3/lib +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +TOPSUBDIRS = ksystemlog +UIC = /usr/share/qt3/bin/uic -L $(kde_widgetdir) -nounload +UIC_TR = tr2i18n +USER_INCLUDES = +USER_LDFLAGS = +USE_EXCEPTIONS = -fexceptions +USE_RTTI = +USE_THREADS = +VERSION = 0.1 +WOVERLOADED_VIRTUAL = +XGETTEXT = /usr/bin/xgettext +XMLLINT = /usr/bin/xmllint +X_EXTRA_LIBS = +X_INCLUDES = -I. +X_LDFLAGS = -L/usr/lib +X_PRE_LIBS = +X_RPATH = -R $(x_libraries) +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +ac_ct_RANLIB = ranlib +ac_ct_STRIP = strip +all_includes = -I/usr/include/kde -I/usr/share/qt3/include -I. +all_libraries = -L/usr/lib -L/usr/share/qt3/lib +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__fastdepCXX_FALSE = # +am__fastdepCXX_TRUE = +am__include = include +am__leading_dot = . +am__quote = +bindir = ${exec_prefix}/bin +build = i686-pc-linux-gnu +build_alias = +build_cpu = i686 +build_os = linux-gnu +build_vendor = pc +datadir = ${prefix}/share +exec_prefix = ${prefix} +host = i686-pc-linux-gnu +host_alias = +host_cpu = i686 +host_os = linux-gnu +host_vendor = pc +include_ARTS_FALSE = # +include_ARTS_TRUE = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /root/ksystemlog/ksystemlog-0.3.2/admin/install-sh +kde_appsdir = ${datadir}/applnk +kde_bindir = ${exec_prefix}/bin +kde_confdir = ${datadir}/config +kde_datadir = ${datadir}/apps +kde_htmldir = ${datadir}/doc/HTML +kde_icondir = ${datadir}/icons +kde_includes = /usr/include/kde +kde_kcfgdir = ${datadir}/config.kcfg +kde_libraries = /usr/lib +kde_libs_htmldir = /usr/share/doc/kde/HTML +kde_libs_prefix = /usr +kde_locale = ${datadir}/locale +kde_mimedir = ${datadir}/mimelnk +kde_moduledir = ${libdir}/kde3 +kde_qtver = 3 +kde_servicesdir = ${datadir}/services +kde_servicetypesdir = ${datadir}/servicetypes +kde_sounddir = ${datadir}/sounds +kde_styledir = ${libdir}/kde3/plugins/styles +kde_templatesdir = ${datadir}/templates +kde_wallpaperdir = ${datadir}/wallpapers +kde_widgetdir = /usr/lib/kde3/plugins/designer +kdeinitdir = $(kde_moduledir) +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +oldincludedir = /usr/include +prefix = /usr +program_transform_name = s,x,x, +qt_includes = /usr/share/qt3/include +qt_libraries = /usr/share/qt3/lib +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target = i686-pc-linux-gnu +target_alias = +target_cpu = i686 +target_os = linux-gnu +target_vendor = pc +x_includes = . +x_libraries = /usr/lib +xdg_appsdir = ${datadir}/applications/kde +xdg_directorydir = ${datadir}/desktop-directories +xdg_menudir = ${sysconfdir}/xdg/menus +#>- POFILES = AUTO +#>+ 2 +POFILES = br.po da.po de.po el.po et.po ga.po fr.po it.po pa.po pl.po rw.po sv.po tr.po en_GB.po +GMOFILES = br.gmo da.gmo de.gmo el.gmo et.gmo ga.gmo fr.gmo it.gmo pa.gmo pl.gmo rw.gmo sv.gmo tr.gmo en_GB.gmo +subdir = ksystemlog/po +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +#>- all: all-am +#>+ 1 +all: all-nls docs-am all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu ksystemlog/po/Makefile +#>+ 3 + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ksystemlog/po/Makefile + cd $(top_srcdir) && perl admin/am_edit ksystemlog/po/Makefile.in +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +#>+ 1 +DISTFILES = $(GMOFILES) $(POFILES) $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 + +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +#>- uninstall: uninstall-am +#>+ 1 +uninstall: uninstall-nls 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: + -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 +#>+ 1 +clean: kde-rpo-clean clean-am + +#>- clean-am: clean-generic clean-libtool mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-nls + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +#>- maintainer-clean: maintainer-clean-am +#>+ 1 +maintainer-clean: clean-nls 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-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man 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-info-am + +# 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: + +#>+ 2 +KDE_DIST=rw.po Makefile.in da.po sv.po ksystemlog.pot pl.po de.po br.po et.po en_GB.po it.po fr.po ga.po el.po tr.po pa.po + +#>+ 43 +br.gmo: br.po + rm -f br.gmo; $(GMSGFMT) -o br.gmo $(srcdir)/br.po + test ! -f br.gmo || touch br.gmo +da.gmo: da.po + rm -f da.gmo; $(GMSGFMT) -o da.gmo $(srcdir)/da.po + test ! -f da.gmo || touch da.gmo +de.gmo: de.po + rm -f de.gmo; $(GMSGFMT) -o de.gmo $(srcdir)/de.po + test ! -f de.gmo || touch de.gmo +el.gmo: el.po + rm -f el.gmo; $(GMSGFMT) -o el.gmo $(srcdir)/el.po + test ! -f el.gmo || touch el.gmo +et.gmo: et.po + rm -f et.gmo; $(GMSGFMT) -o et.gmo $(srcdir)/et.po + test ! -f et.gmo || touch et.gmo +ga.gmo: ga.po + rm -f ga.gmo; $(GMSGFMT) -o ga.gmo $(srcdir)/ga.po + test ! -f ga.gmo || touch ga.gmo +fr.gmo: fr.po + rm -f fr.gmo; $(GMSGFMT) -o fr.gmo $(srcdir)/fr.po + test ! -f fr.gmo || touch fr.gmo +it.gmo: it.po + rm -f it.gmo; $(GMSGFMT) -o it.gmo $(srcdir)/it.po + test ! -f it.gmo || touch it.gmo +pa.gmo: pa.po + rm -f pa.gmo; $(GMSGFMT) -o pa.gmo $(srcdir)/pa.po + test ! -f pa.gmo || touch pa.gmo +pl.gmo: pl.po + rm -f pl.gmo; $(GMSGFMT) -o pl.gmo $(srcdir)/pl.po + test ! -f pl.gmo || touch pl.gmo +rw.gmo: rw.po + rm -f rw.gmo; $(GMSGFMT) -o rw.gmo $(srcdir)/rw.po + test ! -f rw.gmo || touch rw.gmo +sv.gmo: sv.po + rm -f sv.gmo; $(GMSGFMT) -o sv.gmo $(srcdir)/sv.po + test ! -f sv.gmo || touch sv.gmo +tr.gmo: tr.po + rm -f tr.gmo; $(GMSGFMT) -o tr.gmo $(srcdir)/tr.po + test ! -f tr.gmo || touch tr.gmo +en_GB.gmo: en_GB.po + rm -f en_GB.gmo; $(GMSGFMT) -o en_GB.gmo $(srcdir)/en_GB.po + test ! -f en_GB.gmo || touch en_GB.gmo + +#>+ 3 +clean-nls: + -rm -f br.gmo da.gmo de.gmo el.gmo et.gmo ga.gmo fr.gmo it.gmo pa.gmo pl.gmo rw.gmo sv.gmo tr.gmo en_GB.gmo + +#>+ 10 +install-nls: + @for base in br da de el et ga fr it pa pl rw sv tr en_GB ; do \ + echo $(INSTALL_DATA) $$base.gmo $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES/$(PACKAGE).mo ;\ + $(mkinstalldirs) $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES ; \ + if test -f $$base.gmo; then $(INSTALL_DATA) $$base.gmo $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES/$(PACKAGE).mo ;\ + elif test -f $(srcdir)/$$base.gmo; then $(INSTALL_DATA) $(srcdir)/$$base.gmo $(DESTDIR)$(kde_locale)/$$base/LC_MESSAGES/$(PACKAGE).mo ;\ + fi ;\ + done + + +#>+ 16 +uninstall-nls: + rm -f $(DESTDIR)$(kde_locale)/br/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/da/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/de/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/el/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/et/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/ga/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/fr/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/it/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/pa/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/pl/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/rw/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/sv/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/tr/LC_MESSAGES/$(PACKAGE).mo + rm -f $(DESTDIR)$(kde_locale)/en_GB/LC_MESSAGES/$(PACKAGE).mo + +#>+ 2 +all-nls: $(GMOFILES) + +#>+ 8 +distdir-nls:$(GMOFILES) + for file in $(POFILES); do \ + cp $(srcdir)/$$file $(distdir); \ + done + for file in $(GMOFILES); do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 4 +merge: + $(MAKE) -f $(top_srcdir)/admin/Makefile.common package-merge POFILES="${POFILES}" PACKAGE=${PACKAGE} + + +#>+ 2 +docs-am: + +#>+ 6 +force-reedit: + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ksystemlog/po/Makefile + cd $(top_srcdir) && perl admin/am_edit ksystemlog/po/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-am + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +cvs-clean: + $(MAKE) admindir=$(top_srcdir)/admin -f $(top_srcdir)/admin/Makefile.common cvs-clean + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/ksystemlog/po/Makefile.am b/ksystemlog/po/Makefile.am new file mode 100644 index 0000000..0fa209c --- /dev/null +++ b/ksystemlog/po/Makefile.am @@ -0,0 +1 @@ +POFILES = AUTO diff --git a/ksystemlog/po/br.po b/ksystemlog/po/br.po new file mode 100644 index 0000000..fae75fc --- /dev/null +++ b/ksystemlog/po/br.po @@ -0,0 +1,1302 @@ +msgid "" +msgstr "" +"Project-Id-Version: all2.po\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2004-09-20 15:44+0200\n" +"Last-Translator: Thierry Vignaud \n" +"Language-Team: br \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Thierry Vignaud" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "tvignaud@mandrakesoft.com" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Deiziad" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Seurt" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Kemennad" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "hini ebet" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Anv an Ostiz" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Argerzh" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Arveriad" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Respont" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Oktedoù kaset" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Emaon o tigeriñ ur restr ... '%1'" + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "" + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "" + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "" + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&A heul" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "&Pignit" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "&Diskennit" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "Le&mel an holl re" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "Roll ar restroù" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Pep restr (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "" + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "" + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "" + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Niver a arouezenn :" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "" + +#: globals.cpp:48 +msgid "information" +msgstr "titouroù" + +#: globals.cpp:51 +msgid "notice" +msgstr "kemenn" + +#: globals.cpp:54 +msgid "warning" +msgstr "diwallit" + +#: globals.cpp:57 +msgid "error" +msgstr "fazi" + +#: globals.cpp:60 +msgid "critical" +msgstr "arvarus" + +#: globals.cpp:63 +msgid "alert" +msgstr "" + +#: globals.cpp:66 +msgid "emergency" +msgstr "" + +#: globals.cpp:91 +msgid "No log" +msgstr "" + +#: globals.cpp:94 +msgid "File log" +msgstr "" + +#: globals.cpp:97 +msgid "System log" +msgstr "" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "Hiziv" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "Dec'h" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Deiziad :" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Anv an ostiz :" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Argerzh : " + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Arveriad :" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Live :" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Rizh :" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "Dilesadur :" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Anv an arveriad :" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Oktedoù kaset :" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Serriñ ar vevennig red" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "" + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "" + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&Bevennig nevez" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Serriñ ar vevennig" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Eilañ ar vevennig" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "" + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Munudoù" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "" + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "" + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "" + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "" + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "" + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "" + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "" + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "" + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "N'hellan ket enrollañ ar restr." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Digeriñ ul lec'hiadur" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "Strollañ gant" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "Ebet" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Deiz" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "Eur" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "" + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Teul da zigeriñ" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "Pennañ" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&Cups" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Prenestr" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Barrenn kentañ an ostilhoù" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "N'eus ket ur restr" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "N'eus ket ur restr. '%1'" + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Eur" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Ostiz" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "&Kemmañ ar stad" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "Sil :" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "Bann :" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Holl" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Linenn" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "dibarzh dre ziouer" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "" + +#~ msgid "Order" +#~ msgstr "Urzhiañ" diff --git a/ksystemlog/po/da.po b/ksystemlog/po/da.po new file mode 100644 index 0000000..890f008 --- /dev/null +++ b/ksystemlog/po/da.po @@ -0,0 +1,1303 @@ +# Danish translation of ksystemlog +# Erik Kjær Pedersen , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-06-09 10:30+0200\n" +"Last-Translator: Erik Kjær Pedersen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.1\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Erik Kjær Pedersen" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "erik@binghamton.edu" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Dato" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Type" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Besked" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "ingen" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Værtsnavn" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Proces" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Bruger" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "" + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Svar" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Byte sendt" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "" + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "" + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "" + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "" + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Næste" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Flyt &op" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Flyt &ned" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "F&jern alle" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "Filliste" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "" + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "" + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "" + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "debug" + +#: globals.cpp:48 +msgid "information" +msgstr "information" + +#: globals.cpp:51 +msgid "notice" +msgstr "" + +#: globals.cpp:54 +msgid "warning" +msgstr "advarsel" + +#: globals.cpp:57 +msgid "error" +msgstr "fejl" + +#: globals.cpp:60 +msgid "critical" +msgstr "" + +#: globals.cpp:63 +msgid "alert" +msgstr "" + +#: globals.cpp:66 +msgid "emergency" +msgstr "" + +#: globals.cpp:91 +msgid "No log" +msgstr "" + +#: globals.cpp:94 +msgid "File log" +msgstr "" + +#: globals.cpp:97 +msgid "System log" +msgstr "" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Dato:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Værtsnavn:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Bruger:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Niveau:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Type:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Brugernavn:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Luk dette faneblad" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "" + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "" + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "" + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Gen&optag analyse" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Detaljer" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "&Aktivér detaljeret værktøjsvink" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "" + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "" + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "" + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "" + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "" + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "" + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "" + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "" + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Kan ikke gemme fil." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Åbn sted" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "Gruppér efter" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "Ingen" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "" + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Dokument at åbne" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "Generelt" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Vindue" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Hovedværktøjslinje" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "" + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Tid" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Vært" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "Filter:" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "Søjle:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Alle" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "" diff --git a/ksystemlog/po/de.po b/ksystemlog/po/de.po new file mode 100644 index 0000000..6006250 --- /dev/null +++ b/ksystemlog/po/de.po @@ -0,0 +1,555 @@ +# translation of ksystemlog.po to Deutsch +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# Elias Probst , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-05-06 14:20+0200\n" +"PO-Revision-Date: 2005-05-09 21:17+0200\n" +"Last-Translator: Elias Probst \n" +"Language-Team: Deutsch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" + +#: bootAuthenticationOptions.cpp:48 +msgid "Boot Log File" +msgstr "Log-Datei für Systemstart" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File :" +msgstr "Log-Datei für Systemstart:" + +#: bootAuthenticationOptions.cpp:57 +msgid "Authentication Log File" +msgstr "Authentifizierungs-Log-Datei" + +#: bootAuthenticationOptions.cpp:59 +msgid "Authentication Log File :" +msgstr "Authentifizierungs-Log-Datei:" + +#: cronOptions.cpp:50 +msgid "" +"

These files will be analyzed to display Cron Logs (i.e. " +"planned tasks logs). This list also determines the order in which the files " +"are read.

" +msgstr "

Diese Dateien werden analysiert um Cron Log-Dateien (z.B. Log-Dateien geplanter Aufgaben) anzuzeigen. Zudem legt diese Liste fest, in welcher Reihenfolge die Dateien ausgelesen werden.

" + +#: cronReader.cpp:41 sambaReader.cpp:39 systemReader.cpp:40 +msgid "Date" +msgstr "Datum" + +#: cronReader.cpp:42 systemReader.cpp:41 +msgid "Host Name" +msgstr "Rechnername" + +#: cronReader.cpp:43 sambaReader.cpp:42 systemReader.cpp:42 +msgid "Process" +msgstr "Prozess" + +#: cronReader.cpp:44 +msgid "User" +msgstr "Benutzer" + +#: cronReader.cpp:45 sambaReader.cpp:43 systemReader.cpp:43 xorgReader.cpp:56 +msgid "Message" +msgstr "Nachricht" + +#: daemonOptions.cpp:50 +msgid "" +"

These files will be analyzed to display daemons Logs. This " +"list also determine the order in which the files are read.

" +msgstr "

Diese Dateien werden analysiert um Daemon Log-Dateien anzuzeigen. Zudem legt diese Liste fest, in welcher Reihenfolge die Dateien ausgelesen werden.

" + +#: defaultReader.cpp:80 +msgid "Opening file '%1'..." +msgstr "Datei '%1' wird geöffnet..." + +#: defaultReader.cpp:148 +msgid "Log file '%1' loaded successfully." +msgstr "Log-Datei '%1' erfolgreich geladen." + +#: defaultReader.cpp:235 +msgid "Log file '%1' has changed." +msgstr "Log-Datei '%1' hat sich geändert." + +#: defaultReader.cpp:376 ksystemlog.cpp:157 logListItem.cpp:198 +msgid "none" +msgstr "nichts" + +#: defaultReader.moc.cpp:34 defaultReader.moc.cpp:42 +msgid "DefaultReader" +msgstr "StandardLeser" + +#: detailDialog.cpp:31 +msgid "Log Line Details" +msgstr "Log-Zeilen-Details" + +#: detailDialog.cpp:73 +msgid "&Next" +msgstr "&Weiter" + +#: fileList.cpp:63 fileList.cpp:80 +msgid "&Add a file" +msgstr "Datei h&inzufügen" + +#: fileList.cpp:69 fileList.cpp:83 +msgid "Move &Up" +msgstr "&Nach oben" + +#: fileList.cpp:72 fileList.cpp:84 +msgid "Move &Down" +msgstr "Nach &unten" + +#: fileList.cpp:75 fileList.cpp:86 +msgid "Re&move All" +msgstr "Alle ent&fernen" + +#: fileList.cpp:79 +msgid "File list" +msgstr "Dateiliste" + +#: fileList.cpp:123 specificFileList.cpp:83 +msgid "All files (*)" +msgstr "Alle Dateien (*)" + +#: fileList.cpp:123 specificFileList.cpp:83 +msgid "Log files (*.log)" +msgstr "Log-Dateien (*.log)" + +#: fileList.cpp:123 specificFileList.cpp:83 +msgid "Choose a log file" +msgstr "Wähle eine Log-Datei" + +#: fileList.cpp:143 +msgid "'%1' is not valid." +msgstr "'%1' ist nicht gültig." + +#: fileList.cpp:144 fileList.cpp:151 fileList.cpp:158 +msgid "File selection failed" +msgstr "Dateiauswahl fehlgeschlagen" + +#: fileList.cpp:150 +msgid "'%1' is not a local file." +msgstr "'%1' ist keine lokale Datei." + +#: fileList.cpp:157 +msgid "'%1' is a folder." +msgstr "'%1' ist ein Verzeichnis." + +#: generalOptions.cpp:46 +msgid "Parsing" +msgstr "Analysiere" + +#: generalOptions.cpp:48 +msgid "Parsed line number :" +msgstr "Analysierte Zeilennummer:" + +#: kernelOptions.cpp:50 +msgid "" +"

These files will be analyzed to display Kernel logs. This list " +"also determines the order in which the files are read.

" +msgstr "

Diese Dateien werden analysiert um Kernel Log-Dateien anzuzeigen. Zudem legt diese Liste fest, in welcher Reihenfolge die Dateien ausgelesen werden.

" + +#: ksystemlog.cpp:160 +msgid "debug" +msgstr "Fehler finden und entfernen" + +#: ksystemlog.cpp:162 +msgid "information" +msgstr "Information" + +#: ksystemlog.cpp:165 +msgid "notice" +msgstr "Notiz" + +#: ksystemlog.cpp:168 +msgid "warning" +msgstr "Warnung" + +#: ksystemlog.cpp:171 +msgid "error" +msgstr "Fehler" + +#: ksystemlog.cpp:174 +msgid "critical" +msgstr "Kritisch" + +#: ksystemlog.cpp:175 +msgid "alert" +msgstr "Alarm" + +#: ksystemlog.cpp:176 +msgid "emergency" +msgstr "Notfall" + +#: ksystemlog.cpp:225 +msgid "Resu&me Parsing" +msgstr "A&nalysieren wiederaufnehmen" + +#: ksystemlog.cpp:228 +msgid "S&top Parsing" +msgstr "Analysieren s&toppen" + +#: ksystemlog.cpp:230 +msgid "&Details" +msgstr "D&etails" + +#: ksystemlog.cpp:233 +msgid "S&ystem log" +msgstr "S&ystem-Log" + +#: ksystemlog.cpp:234 +msgid "&Kernel log" +msgstr "&Kernel-Log" + +#: ksystemlog.cpp:235 +msgid "&X.org log" +msgstr "&X.org-Log" + +#: ksystemlog.cpp:236 +msgid "&Boot log" +msgstr "&Systemstart-Log" + +#: ksystemlog.cpp:237 +msgid "A&uthentication log" +msgstr "A&uthentifizierungs-Log" + +#: ksystemlog.cpp:238 +msgid "&Daemons log" +msgstr "&Daemon-Log" + +#: ksystemlog.cpp:239 +msgid "&Planned tasks log" +msgstr "Log ge&planter Aufgaben" + +#: ksystemlog.cpp:241 +msgid "&Apache log" +msgstr "&Apache-Log" + +#: ksystemlog.cpp:242 +msgid "Pro&FTP log" +msgstr "Pro&FTP-Log" + +#: ksystemlog.cpp:243 +msgid "Sa&mba log" +msgstr "Sa&mba-Log" + +#: ksystemlog.cpp:245 +msgid "&Enable Detailed Tooltips" +msgstr "D&etaillierte Kurzinfos aktivieren" + +#: ksystemlog.cpp:248 +msgid "&Display New Lines" +msgstr "Ne&ue Zeilen anzeigen" + +#: ksystemlog.cpp:359 +msgid "%1 log lines." +msgstr "%1 Log-Zeilen." + +#: ksystemlog.cpp:363 +msgid "Last updating : %1." +msgstr "Zuletzt aktualisiert: %1." + +#: ksystemlog.cpp:400 +msgid "No items selected. Nothing copied to clipboard." +msgstr "Keine Einträge ausgewählt. Es wurde nichts in die Zwischenablage kopiert." + +#: ksystemlog.cpp:407 +msgid "%1 log lines copied to clipboard." +msgstr "%1 Log-Zeilen wurden in die Zwischenablage kopiert." + +#: ksystemlog.cpp:418 +msgid "No items selected. Please select items to be able to save them." +msgstr "Keine Einträge ausgewählt. Bitte Einträge auswählen, um diese speichern zu können." + +#: ksystemlog.cpp:448 +msgid "%1 log lines saved to '%2'." +msgstr "%1 Log-Zeilen nach '%2' gesichert." + +#: ksystemlog.cpp:451 +msgid "Unable to save file '%1': Permission Denied." +msgstr "Konnte Datei '%1' nicht speichern: Zugriff wurde verweigert." + +#: ksystemlog.cpp:452 +msgid "Unable to save file." +msgstr "Konnte Datei nicht speichern." + +#: ksystemlog.cpp:569 +msgid "Open Location" +msgstr "Datei öffnen" + +#: ksystemlog.cpp:582 +msgid "Malformed URL. Unable to open this file." +msgstr "Ungültige URL. Datei kann nicht geöffnet werden." + +#: ksystemlog.cpp:583 +msgid "Unable to open this file." +msgstr "Datei kann nicht geöffnet werden." + +#: ksystemlog.cpp:703 ksystemlog.cpp:741 ksystemlog.cpp:799 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "Die URL '%1' ist nicht gültig. Übergehe diese URL." + +#: ksystemlog.cpp:722 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "Die Größen der Felder sind unterschiedlich. Das Lesen der Log-Dateien wird übersprungen." + +#: ksystemlog.cpp:871 +msgid "Loading file log..." +msgstr "Log-Datei wird geladen..." + +#: ksystemlog.cpp:901 options.cpp:132 +msgid "System Log" +msgstr "System-Log" + +#: ksystemlog.cpp:933 +msgid "Boot Log" +msgstr "Systemstart-Log" + +#: ksystemlog.cpp:964 +msgid "Authentication Log" +msgstr "Authentifizierungs-Log" + +#: ksystemlog.cpp:994 options.cpp:161 +msgid "Kernel Log" +msgstr "Kernel-Log" + +#: ksystemlog.cpp:1024 options.cpp:215 +msgid "Daemons Log" +msgstr "Daemon-Log" + +#: ksystemlog.cpp:1059 +msgid "Planified tasks Log" +msgstr "Log geplanter Aufgaben" + +#: ksystemlog.cpp:1090 options.cpp:242 +msgid "X.org Log" +msgstr "X.org-Log" + +#: ksystemlog.cpp:1122 +msgid "Samba Server Log" +msgstr "Samba Server-Log" + +#: logListItem.cpp:123 logListItem.cpp:166 +msgid "Date :" +msgstr "Datum:" + +#: logListItem.cpp:124 logListItem.cpp:167 +msgid "Host Name :" +msgstr "Rechnername:" + +#: logListItem.cpp:125 logListItem.cpp:168 +msgid "Process :" +msgstr "Prozess:" + +#: logListItem.cpp:126 +msgid "User :" +msgstr "Benutzer:" + +#: logListItem.cpp:127 logListItem.cpp:169 +msgid "Level :" +msgstr "Einstufung:" + +#: logListItem.cpp:128 logListItem.cpp:170 logListItem.cpp:202 +msgid "Original File :" +msgstr "Originaldatei:" + +#: logListItem.cpp:141 logListItem.cpp:153 logListItem.cpp:184 +msgid "
" +msgstr "
" + +#: logListItem.cpp:198 logListItem.cpp:200 +msgid "Type :" +msgstr "Typ:" + +#: logListItem.moc.cpp:34 logListItem.moc.cpp:42 +msgid "LogListItem" +msgstr "LogListItem" + +#: main.cpp:31 +msgid "A system log viewer tool for KDE" +msgstr "Ein Programm für KDE um System-Logs darzustellen." + +#: main.cpp:37 +msgid "Document to open" +msgstr "Zu öffnendes Dokument" + +#: main.cpp:43 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: options.cpp:77 +msgid "General" +msgstr "Allgemein" + +#: options.cpp:106 +msgid "Boot / Authentication" +msgstr "Systemstart/Authentifizierung" + +#: options.cpp:106 +msgid "Boot && Authentication Logs" +msgstr "Systemstart && Authentifizierungs-Logs" + +#: options.cpp:188 +msgid "Cron Log" +msgstr "Cron-Log" + +#: options.cpp:270 +msgid "Samba Log" +msgstr "Samba-Log" + +#: rc.cpp:6 +#, no-c-format +msgid "Logs" +msgstr "Logs" + +#: rc.cpp:9 +#, no-c-format +msgid "&Window" +msgstr "&Fenster" + +#: rc.cpp:12 +#, no-c-format +msgid "Log Toolbar" +msgstr "Log-Werkzeugleiste" + +#: rc.cpp:15 +#, no-c-format +msgid "Main toolbar" +msgstr "Haupt-Werkzeugleiste" + +#: reader.cpp:162 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "Diese Datei ist ungültig. Bitte in den Einstellungen von KSystemLog korrigieren." + +#: reader.cpp:163 reader.cpp:175 +msgid "The file does not exist" +msgstr "Die Datei existiert nicht" + +#: reader.cpp:174 +msgid "The file '%1' does not exist." +msgstr "Die Datei '%1' existiert nicht." + +#: reader.cpp:183 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "Es bestehen nicht genügende Berechtigungen um '%1' zu lesen." + +#: reader.cpp:184 +msgid "Insufficient permissions" +msgstr "Unzureichende Zugriffsrechte" + +#: sambaOptions.cpp:50 +msgid "" +"

These files will be analyzed to display Samba log. This list " +"also determines the order in which the files are read.

" +msgstr "

Diese Dateien werden analysiert um Samba Log-Dateien anzuzeigen. Zudem legt diese Liste fest, in welcher Reihenfolge die Dateien ausgelesen werden.

" + +#: sambaReader.cpp:40 +msgid "Time" +msgstr "Zeit" + +#: sambaReader.cpp:41 +msgid "Host" +msgstr "Rechnername" + +#: sortedReader.moc.cpp:34 sortedReader.moc.cpp:42 +msgid "SortedReader" +msgstr "SortedReader" + +#: specificFileList.cpp:51 specificFileList.cpp:55 +msgid "&Change status" +msgstr "Einst&ufung ändern" + +#: specificFileList.cpp:111 +msgid "Selecting the file type" +msgstr "Dateityp auswählen" + +#: specificFileList.cpp:117 +msgid "Please select the type of this file :" +msgstr "Bitte den Typ dieser Datei auswählen" + +#: specificFileList.cpp:193 +msgid "The two arrays size are different, skipping the reading of generic paths." +msgstr "Die beiden Feldgrößen sind unterschiedlich. Das einlesen der Standardpfade wird übersprungen." + +#: systemOptions.cpp:50 +msgid "" +"

These files will be analyzed to display System logs. This list " +"also determines the order in which the files are read.

" +msgstr "

Diese Dateien werden analysiert um Systen Log-Dateien anzuzeigen. Zudem legt diese Liste fest, in welcher Reihenfolge die Dateien ausgelesen werden.

" + +#: systemOptions.moc.cpp:34 systemOptions.moc.cpp:42 +msgid "SystemOptions" +msgstr "SystemOptions" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "" +"_: Namen der Übersetzer\n" +"Elias Probst" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "" +"_: eMail-Adressen der Übersetzer\n" +"elias.probst@gmx.de" + +#: view.cpp:77 +msgid "Clear search" +msgstr "Suche zurücksetzen" + +#: view.cpp:79 +msgid "Filter :" +msgstr "Filter:" + +#: view.cpp:85 +msgid "Column :" +msgstr "Spalte:" + +#: view.cpp:164 view.cpp:296 +msgid "All" +msgstr "Alles" + +#: xorgOptions.cpp:50 +msgid "" +"

These files will be analyzed to display X.org log. This list " +"also determines the order in which the files are read.

" +msgstr "

Diese Dateien werden analysiert um X.org Log-Dateien anzuzeigen. Zudem legt diese Liste fest, in welcher Reihenfolge die Dateien ausgelesen werden.

" + +#: xorgReader.cpp:54 +msgid "Order" +msgstr "Reihenfolge" + +#: xorgReader.cpp:55 +msgid "Type" +msgstr "Typ" + +#: xorgReader.cpp:89 +msgid "probed" +msgstr "geprüft" + +#: xorgReader.cpp:90 +msgid "from config file" +msgstr "Aus Konfigurationsdatei" + +#: xorgReader.cpp:91 +msgid "default setting" +msgstr "Standardeinstellung" + +#: xorgReader.cpp:92 +msgid "from command Line" +msgstr "Von Kommandozeile" + +#: xorgReader.cpp:97 +msgid "not implemented" +msgstr "nicht implementiert" + diff --git a/ksystemlog/po/el.po b/ksystemlog/po/el.po new file mode 100644 index 0000000..53c1ceb --- /dev/null +++ b/ksystemlog/po/el.po @@ -0,0 +1,1316 @@ +# translation of ksystemlog.po to Greek +# Spiros Georgaras , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-05-28 14:36+0300\n" +"Last-Translator: Spiros Georgaras \n" +"Language-Team: Greek \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Σπύρος Γεωργαράς" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "sngeorgaras@otenet.gr" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Ημερομηνία" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Τύπος" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Μήνυμα" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "κανένα" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Όνομα κόμβου" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Χρήστης" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "" + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "" + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "" + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "" + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "" + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "Επόμε&νο" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Μετακίνηση &πάνω" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Μετακίνηση &κάτω" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "Α&φαίρεση όλων" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "" + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "" + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "" + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "" + +#: globals.cpp:48 +msgid "information" +msgstr "" + +#: globals.cpp:51 +msgid "notice" +msgstr "" + +#: globals.cpp:54 +msgid "warning" +msgstr "" + +#: globals.cpp:57 +msgid "error" +msgstr "" + +#: globals.cpp:60 +msgid "critical" +msgstr "" + +#: globals.cpp:63 +msgid "alert" +msgstr "" + +#: globals.cpp:66 +msgid "emergency" +msgstr "" + +#: globals.cpp:91 +msgid "No log" +msgstr "" + +#: globals.cpp:94 +msgid "File log" +msgstr "" + +#: globals.cpp:97 +msgid "System log" +msgstr "" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:88 +#, fuzzy +msgid "%1, %2h" +msgstr "%1 (%2)" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +#, fuzzy +msgid "Date:" +msgstr "Ημερομηνία" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +#, fuzzy +msgid "Hostname:" +msgstr "Όνομα κόμβου" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "" + +#: itemFactory.cpp:263 +#, fuzzy +msgid "User:" +msgstr "Χρήστης" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +#, fuzzy +msgid "Type:" +msgstr "Τύπος" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "" + +#: itemFactory.cpp:330 +#, fuzzy +msgid "Username:" +msgstr "Χρήστης" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Κλείσιμο τρέχουσας καρτέλας" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "" + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "" + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "" + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Λεπτομέρειες" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "" + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "" + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "" + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "" + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "" + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "" + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "" + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "" + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Αδύνατη η αποθήκευση του αρχείου." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Άνοιγμα τοποθεσίας" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "" + +#: ksystemlog.cpp:1586 +#, fuzzy +msgid "None" +msgstr "κανένα" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "" + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Έγγραφο για άνοιγμα" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "Γενικά" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Παράθυρο" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "" + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Χρόνος" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Υπολογιστής" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Όλα" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "" + +#~ msgid "Parsing" +#~ msgstr "Ανάλυση" + +#~ msgid "Order" +#~ msgstr "Διάταξη" diff --git a/ksystemlog/po/en_GB.po b/ksystemlog/po/en_GB.po new file mode 100644 index 0000000..3257dd0 --- /dev/null +++ b/ksystemlog/po/en_GB.po @@ -0,0 +1,1452 @@ +# translation of ksystemlog.po to British English +# Andrew Coles , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-06-17 13:24+0100\n" +"Last-Translator: Andrew Coles \n" +"Language-Team: British English \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.9\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Andrew Coles" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "andrew_coles@yahoo.co.uk" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display ACPId log" +". This list also determines the order in which the files are read.

" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Date" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Type" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Message" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "none" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "Boot Log File" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "Boot Log File:" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" +"You can type or choose here the boot log file. This file will be analysed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "Authentication Log File" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "Authentication Log File:" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" +"You can type or choose here the authentication log file. This file will be " +"analysed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" +"" +"

These files will be analysed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Host Name" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Process" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "User" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Response" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Bytes Sent" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "HTTP Request" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "debug 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display daemons Logs" +". This list also determine the order in which the files are read.

" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Opening file '%1'..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "No log line in '%1'." + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "Log file '%1' loaded successfully." + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "Log file '%1' has changed." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "Log Line Details" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" +"This dialogue displays detailed information about the currently selected log " +"line." + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "Move to the previous line" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Next" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "Move to the next line" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "Close the Detail dialogue." + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "Closes this Detail dialogue." + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "List of files used by this log type" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "&Add a file" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Choose a new file" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "Opens a dialogue box to choose a new file to be added to the list." + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "Delete the current file(s)" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "Deletes the selected files of the list." + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Move &Up" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "Move up the current file(s)" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Move &Down" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "Move down the current file(s)" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "Re&move All" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "Remove all files" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "Remove all files of the list, even if they are not selected." + +#: fileList.cpp:95 +msgid "File list" +msgstr "File list" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "All files (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "Log files (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Choose a log file" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "'%1' is not valid." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "File selection failed" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "'%1' is not a local file." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "'%1' is a folder." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "Log Lines List" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "Maximum Lines Displayed:" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" +"Choose here the maximum number of log lines displayed in the main view." + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" +"You can choose here the maximum number of log lines displayed in the main " +"view." + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "Delete duplicated log lines (may be slow)" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "Maximum Characters to Read Per Line" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Number of Characters:" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" +"Choose here the maximum number of characters to read from each log " +"line." + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" +"You can choose here the maximum number of characters to read from each log " +"line." + +#: globals.cpp:45 +msgid "debug" +msgstr "debug" + +#: globals.cpp:48 +msgid "information" +msgstr "information" + +#: globals.cpp:51 +msgid "notice" +msgstr "notice" + +#: globals.cpp:54 +msgid "warning" +msgstr "warning" + +#: globals.cpp:57 +msgid "error" +msgstr "error" + +#: globals.cpp:60 +msgid "critical" +msgstr "critical" + +#: globals.cpp:63 +msgid "alert" +msgstr "alert" + +#: globals.cpp:66 +msgid "emergency" +msgstr "emergency" + +#: globals.cpp:91 +msgid "No log" +msgstr "No log" + +#: globals.cpp:94 +msgid "File log" +msgstr "File log" + +#: globals.cpp:97 +msgid "System log" +msgstr "System log" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Kernel log" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "X.org log" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Samba log" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Boot log" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Authentication log" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Cron log" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Daemon log" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "ACPI log" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "Cups log" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "Cups Access log" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "Today" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "Yesterday" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "
Group: %1
" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "%1, %2 hour" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "
Group: none
" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Date:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Hostname:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Process:" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "User:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Level:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "Original File:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Type:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "Identification:" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Username:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "HTTP Response:" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Bytes Sent:" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display Kernel logs" +". This list also determines the order in which the files are read.

" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Create a new tab" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "Creates a new tab which can display another log." + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Close the current tab" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Closes the current tab." + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Open a file in KSystemLog" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" +"Opens a file in KSystemLog and displays its content in the current tab." + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "Save the selection to a file" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Quit KSystemLog" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Quits KSystemLog." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "Copy the selection to the clipboard" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "&Email selection" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "Send the selection by mail" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "Select all lines of the current log" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." + +#: ksystemlog.cpp:291 +#, fuzzy +msgid "Show &Filter Bar" +msgstr "&Hide Filter Bar" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&New tab" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Close tab" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Duplicate tab" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Duplicate the current tab" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Duplicates the current tab." + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "Move tab &left" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "Move the current tab to the left" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "Moves the current tab to the left." + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "Move tab &right" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "Move the current tab to the right" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "Moves the current tab to the right." + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Reload the current log" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Resu&me Parsing" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "Resume the watching of the current log" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "S&top Parsing" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "Pause the watching of the current log" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Details" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "Display details on the currently selected line" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" +"Displays a dialogue box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialogue box with the " +"Previous / Next buttons." + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "&Enable Detailed Tooltips" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "Disable/Enable the tooltips on the current view" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "&Display New Lines" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "Display or not new lines if the log changes" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "S&ystem log" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Display the system log." + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialised processes (like \"sudo\" or \"fsck\" commands)" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "&Kernel log" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Display the kernel log." + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "&Boot log" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Display the boot log." + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "A&uthentication log" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Display the authentication log." + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "&Daemons log" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Display the daemons log." + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "&Planned tasks log" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "Display the planned tasks log (or Cron log)." + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "&X.org log" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Display the X.org log." + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognised." + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "&ACPI log" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Display the ACPI log." + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "&Cups log" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Display the Cups log." + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "&Cups Web log" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "Display the Cups Web Server Access log." + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "No Log" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" +"1 log line.\n" +"%n log lines." + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "Last updated: %1." + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "No items selected. Nothing copied to clipboard." + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" +"1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "No items selected. Please select items to be able to save them." + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" +"1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "Unable to save file '%1': Permission Denied." + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Unable to save file." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Open Location" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "Malformed URL. Unable to open this file." + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "Unable to open this file." + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "Group By" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "None" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "Log Level" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Day" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "Hour" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "Log File" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" +"Here are my logs:\n" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" +"---------------------------------------\n" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" +"You have selected too many lines. Please only select important log lines." + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "Too Many Lines Selected" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "Log Lines of my problem" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "Loading Progress" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "Loading %1 (%2/%3)..." + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "Reloading %1 (%2/%3)..." + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "Loading %1..." + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "Reloading %1..." + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Loading log..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "Log successfully loaded." + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "System Logs Viewer Tool for KDE" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Document to open" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "Ideas, Code improvements" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "French trains between Paris and Rouen" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "Often late, so I have time to improve KSystemLog ;-)" + +#: options.cpp:86 +msgid "General" +msgstr "General" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "Boot / Authentication" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "Boot && Authentication Logs" + +#: options.cpp:141 +msgid "System Log" +msgstr "System Log" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "Kernel Log" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "Cron Log" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "Daemons Log" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "X.org Log" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "ACPI Log" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "ACPI Daemon Log" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "Cups Log" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "Cups and Cups Web Server Log" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "Samba Log" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "&Logs" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&Cups" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Window" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "Log Toolbar" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Main toolbar" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" +"This file is not valid. Please adjust it in the settings of KSystemLog." + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "The file does not exist" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "The file '%1' does not exist." + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "You do not have sufficient permissions to read '%1'." + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "Insufficient permissions" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "URL '%1' is not valid, skipping this URL." + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "The two arrays size are different, skipping the reading of log files." + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display Samba log" +". This list also determines the order in which the files are read.

" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Time" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Host" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "&Change status" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "Change the level of the current file(s)" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "Selecting the file type" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "Please select the type of this file:" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "List of existing log levels" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" +"The two arrays size are different, skipping the reading of generic paths." + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display System logs" +". This list also determines the order in which the files are read.

" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "Clear the filter" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "This button clears the filter in one click." + +#: view.cpp:82 +msgid "Filter:" +msgstr "Filter:" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" +"Allows you to select only list items that match the content of this text." + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "Type your item filter here" + +#: view.cpp:90 +msgid "Column:" +msgstr "Column:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "All" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "Choose the filtered column here" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

These files will be analysed to display X.org log" +". This list also determines the order in which the files are read.

" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Line" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "probed" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "from config file" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "default setting" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "from command Line" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "not implemented" + +#~ msgid "&Apache log" +#~ msgstr "&Apache log" + +#~ msgid "Pro&FTP log" +#~ msgstr "Pro&FTP log" + +#~ msgid "Sa&mba log" +#~ msgstr "Sa&mba log" diff --git a/ksystemlog/po/et.po b/ksystemlog/po/et.po new file mode 100644 index 0000000..3b580a9 --- /dev/null +++ b/ksystemlog/po/et.po @@ -0,0 +1,1402 @@ +# translation of ksystemlog.po to Estonian +# Marek Laane , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-06-19 14:45+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.1\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Marek Laane" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "bald@starman.ee" + +#: acpidOptions.cpp:51 +msgid "" +"

These files will be analyzed to display ACPId log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse ACPId logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Kuupäev" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Tüüp" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Sõnum" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "puudub" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "Alglaadimise logifail" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "Alglaadimise logifail:" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" +"Siin saad kirjutada või valida alglaadimise logifaili " +"(näiteks /var/log/boot.log)." + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be " +"analyzed by KSystemLog when you will choose the Boot log menu item. " +"Generally, its name is /var/log/boot.log" +msgstr "" +"Siin saad kirjutada või valida alglaadimise logifaili. KSystemLog " +"analüüsib seda faili, kui valid menüükäsu Alglaadimise logi. " +"Enamasti on selleks failis /var/log/boot.log." + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "Autentimise logifail" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "Autentimise logifail:" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" +"Siin saad kirjutada või valida autentimise logifaili " +"(näiteks /var/log/auth.log)." + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will " +"be analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" +"Siin saad kirjutada või valida autentimise logifaili. KSystemLog " +"analüüsib seda faili, kui valid menüükäsu Autentimise logi. " +"Enamasti on selleks failis /var/log/auth.log." + +#: cronOptions.cpp:51 +msgid "" +"

These files will be analyzed to display Cron Logs (i.e. " +"planned tasks logs). This list also determines the order in which the files " +"are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse Cron'i logi " +"(s.t. ajastatud ülesannete logi). Nimekiri määrab ka järjekorra, milles " +"faile loetakse.

" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Masinanimi" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Protsess" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Kasutaja" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "ID" + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Vastus" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Baite saadetud" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "HTTP päring" + +#: cupsOptions.cpp:47 +msgid "" +"

These files will be analyzed to display Cups log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse CUPS-i logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: cupsOptions.cpp:48 +msgid "" +"

These files will be analyzed to display Cups Web Server log. " +"This list also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse CUPS-i veebiserveri logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "debug 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog " +"developer to add it." +msgstr "" +"Avastati uus logitase: palun saada see logifail KSystemLogi arendajatele, " +"et need saaks selle lisada." + +#: daemonOptions.cpp:51 +msgid "" +"

These files will be analyzed to display daemons Logs. This " +"list also determine the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse deemonite logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Faili '%1' avamine..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "'%1' ei sisalda logirida." + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "Logifail '%1' edukalt laaditud." + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "Logifaili '%1' on muudetud." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "Logirea üksikasjad" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" +"See dialoog näitab üksikasjalikku infot valitud logirea kohta." + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "Mine eelmisele reale" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no " +"previous log line." +msgstr "" +"Liigub eelmisele reale. Nuppu ei saa kasutada, kui eelmist logirida pole." + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Järgmine" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "Mine järgmisele reale" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" +"Liigub järgmisele reale. Nuppu ei saa kasutada, kui järgmist logirida pole." + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "Sulge üksikasjade dialoog." + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "Sulgeb üksikasjade dialoogi." + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "Antud logitüübi failide nimekiri" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" +"See on kõigi failide nimekiri, mida KSystemLog loeb käesolevate " +"logiridade näitamiseks." + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "Lis&a fail" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Vali uus fail" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "Avab dialoogi, kus saab valida uue nimekirja lisatava faili." + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "Kustuta valitud fail(id)" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "Kustutab valitud failid nimekirjast." + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Liiguta ü&les" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "Liiguta valitud faili ülespoole" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to " +"be read in first by KSystemLog." +msgstr "" +"Liigutab valitud faile nimekirjas ülespoole. Nii saab määrata, et " +"KSystemLog loeks liigutatud faile enne teisi." + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Liiguta &alla" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "Liiguta valitud faili allapoole" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files " +"to be read at last by KSystemLog." +msgstr "" +"Liigutab valitud faile nimekirjas allapoole. Nii saab määrata, et " +"KSystemLog loeks liigutatud faile pärast teisi." + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "Ee&malda kõik" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "Eemalda kõik failid" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "Eemaldab nimekirjast kõik failid, ka need, mis pole valitud." + +#: fileList.cpp:95 +msgid "File list" +msgstr "Failinimekiri" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Kõik failid (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "Logifailid (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Logifaili valik" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "'%1' pole sobiv." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "Faili valik ebaõnnestus" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "%1' pole kohalik fail." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "'%1' on kataloog." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "Logiridade nimekiri" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "Maks. näidatavaid ridu:" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" +"Vali siin maksimaalne logiridade arv, mida näidatakse peavaates." + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the " +"main view." +msgstr "" +"Siin saad valida maksimaalse logiridade arvu, mida näidatakse " +"peavaates." + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "Topeltlogiridade kustutamine (võib olla aeglane)" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines (may be " +"slow)." +msgstr "" +"Vali, kui soovid kustutada topeltlogiread (võib olla aeglane)." + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" +"Selle valimisel kustutatakse topeltlogiread. See võib tublisti " +"aeglustada andmete lugemist." + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "Maks. loetavaid märke rea kohta" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Märkide arv:" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" +"Vali siin maksimaalne märkide arv, mida igalt logirealt loetakse." + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each " +"log line." +msgstr "" +"Siin saad valida maksimaalse märkide arvu, mida igalt logirealt " +"loetakse." + +#: globals.cpp:45 +msgid "debug" +msgstr "silumine" + +#: globals.cpp:48 +msgid "information" +msgstr "info" + +#: globals.cpp:51 +msgid "notice" +msgstr "märkus" + +#: globals.cpp:54 +msgid "warning" +msgstr "hoiatus" + +#: globals.cpp:57 +msgid "error" +msgstr "viga" + +#: globals.cpp:60 +msgid "critical" +msgstr "kriitiline" + +#: globals.cpp:63 +msgid "alert" +msgstr "häire" + +#: globals.cpp:66 +msgid "emergency" +msgstr "hädaolukord" + +#: globals.cpp:91 +msgid "No log" +msgstr "Logi puudub" + +#: globals.cpp:94 +msgid "File log" +msgstr "Faili logi" + +#: globals.cpp:97 +msgid "System log" +msgstr "Süsteemi logi" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Kerneli logi" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "X.org-i logi" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Samba logi" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Alglaadimise logi" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Autentimise logi" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Cron'i logi" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Deemoni logi" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "ACPI logi" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "CUPS-i logi" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "CUPS-i ligipääsu logi" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "Täna" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "Eile" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "
Grupp: %1
" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "%1, %2 tundi" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "
Grupp: puudub
" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Kuupäev:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Masinanimi:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Protsess:" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Kasutaja:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Tase:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "Originaalfail:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Tüüp:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "ID:" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Kasutajanimi:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "HTTP vastus:" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Baite saadetud:" + +#: kernelOptions.cpp:51 +msgid "" +"

These files will be analyzed to display Kernel logs. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse kerneli logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Loo uus kaart" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "Loob uue kaardi, kus näidata mõnda muud logi." + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Sulge aktiivne kaart" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Sulgeb aktiivse kaardi." + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Ava fail KSystemLogis" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "Avab faili KSystemLogis ja näitab selle sisu aktiivsel kaardil." + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "Salvesta valik faili" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create " +"an attachment or a backup of a particular log." +msgstr "" +"Salvestab valiku faili. See on mõttekas, kui soovid näiteks teatud logi " +"failina e-kirjale kaasa panna või logist varukoopia teha." + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Välju KSystemLogist" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Väljub KSystemLogist." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "Kopeeri valik lõikepuhvrisse" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"Kopeerib valiku lõikepuhvrisse. Sellest on kasu, kui soovid näiteks asetada " +"valiku vestlusse või e-kirja." + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "Saada valik &e-postiga" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "Saada valik e-kirjana" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"Saadab valiku e-postiga. Vali lihtsalt vajalikud read ja siis see menüükäsk " +"valiku saatmiseks mõnele sõbrale või meililisti." + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "Vali aktiivse logi kõik read" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" +"Valib kõik aktiivse logi read. See on mõttekas, kui soovid näiteks salvestada " +"kogu aktiivse logi sisu failina." + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "Näita &filtririba" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&Uus kaart" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Sulge kaart" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Dubleeri kaart" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Dubleeri aktiivne kaart" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Dubleerib aktiivse kaardi." + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "&Liiguta kaart vasakule" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "Liiguta aktiivne kaart vasakule" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "Liigutab aktiivse kaardi vasakule." + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "Liiguta kaa&rt paremale" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "Liiguta aktiivne kaart paremale" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "Liigutab aktiivse kaardi paremale." + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Laadi logi uuesti" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" +"Laadib aktiivse logi uuesti, kui soovid näiteks veenduda, et vaade on " +"korrektselt uuendatud." + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Jätka parsi&mist" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "Jätka aktiivse logi jälgimist" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when " +"the user has already paused the reading." +msgstr "" +"Taasalustab aktiivse logi jälgimist. Seda saab kasutada ainult siis, kui " +"oled logi lugemise eelnevalt peatanud." + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "Pea&ta parsimine" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "Peatab aktiivse logi jälgimise" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful " +"when the system is writing too many lines to log files, causing KSystemLog " +"to reload too frequently." +msgstr "" +"Peatab aktiivse logi jälgimise. See on mõttekas, kui süsteem kirjutab " +"logifaili liiga palju ridu, mis sunnib KSystemLogi logi liiga sageli " +"uuesti laadima." + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "Üksikasja&d" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "Näita valitud rea üksikasju" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" +"Avab dialoogi valitud rea üksikasjadega. Selles dialoogis saab logis liikuda " +"nuppude Eelmine/Järgmine abil." + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "Üksikasjalik&e kohtspikrite lubamine" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "Keela/luba kohtspikrid aktiivses vaates" + +#: ksystemlog.cpp:345 +msgid "Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "Keelab/lubab kohtspikrite näitamise kursori peatamisel logirea kohal." + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "Uute ri&dade näitamine" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "Näita või ära näita uusi ridu logi muutumisel" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" +"Näitab või ei näita uusi ridu logi muutumisel. See on mõttekas, kui soovid " +"näha vanemaid logiridu, kuid KSystemLog uuendab aktiivset vaadet väga sageli." + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "Süst&eemi logi" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Näita süsteemi logi" + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" +"Näitab aktiivsel kaardil süsteemi logi. Seda kasutavad tavaliselt " +"üldised protsessid (näiteks käsud \"sudo\" või \"fsck\")." + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "&Kerneli logi" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Näita kerneli logi" + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what " +"is the cause of the last kernel panic/oops." +msgstr "" +"Näitab aktiivsel kaardil kerneli logi. See on kasulik ainult neile, kes " +"tahavad teada, miks kernel nende riistvara ära ei tunne või mis oli viimase " +"kernel panic/oops põhjus." + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "Al&glaadimise logi" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Näita alglaadimise logi" + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want " +"to verify if all startup services have been correctly started." +msgstr "" +"Näitab aktiivsel kaardil alglaadimise logi. See on mõttekas, kui soovid " +"kontrollida, et kõik teenused, mis tuleb algkäivitamise ajal tööle panna, " +"on ka korrektselt tööle pandud." + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "A&utentimise logi" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Näita autentimise logi" + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays " +"all log in made by each user of the system, and can help you to know if " +"someone tried to crack your system." +msgstr "" +"Näitab aktiivsel kaardil autentimise logi. See näitab kõiki logisid, " +"mida on tekitanud kõik süsteemi kasutajad, millest võib abi olla selgitamisel, " +"ega keegi ole süsteemi sisse murdnud." + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "&Deemonite logi" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Näitab deemonite logi" + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all " +"processes launched in the background of the system. See this log if you want " +"to know what it occurs in the background of your system." +msgstr "" +"Näitab aktiivsel kaardil deemonite logi. Deemonid on protsessid, mis " +"käivitatakse süsteemis taustal. Sellest logist saad teada, mis toimub " +"sinu süsteemis tagaplaanil." + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "A&jastatud ülesannete logi" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "Näita ajastatud ülesannete ehk Cron'i logi" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" +"Näitab aktiivsel kaardil ajastatud ülesannete logi. Cron'i protsess on " +"programm, mis tegeleb ajastatud ülesannete käivitamisega sinu süsteemis " +"(näiteks turvakontrollid või mingite teenuste automaatne käivitamine). " +"Selle menüüga saad näha viimati käivitatud protsesse." + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "&X.org-i logi" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Näita X.org-i logi" + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your " +"input device is not recognized." +msgstr "" +"Näitab aktiivsel kaardil X.org-i logi. X.org on teenus, mis näitab " +"sinu töölaual ekraani ja haldab sinu graafikariistvara. Sellest logist saad " +"näiteks teada, miks sul puudub 3D kiirendus või miks sinu sisendseadet " +"ära ei tuntud." + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "&ACPI logi" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Näita ACPI logi" + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" +"Näitab aktiivsel kaardil ACPI logi. ACPI abil saab hallata arvuti " +"teatud riistvara, näiteks sülearvuti akusid, taaskäivitamisnuppe jne." + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "&CUPS-i logi" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Näita CUPS-i logi" + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which " +"manage printing on your computer." +msgstr "" +"Näitab aktiivsel kaardil CUPS-i logi. CUPS on programm, mis tegeleb " +"arvutis trükkimisasjadega." + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "&CUPS-i veebilogi" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "Näita CUPS-i veebiserveri ligipääsu logi" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: " +"http://localhost:631)." +msgstr "" +"Näitab aktiivsel kaardil CUPS-i veebiserveri ligipääsu logi. CUPS on " +"programm, mis tegeleb arvutis trükkimisasjadega. See logi salvestab kõik " +"päringud, mida tehakse CUPS-i põimitud veebiserverile (vaikimisi " +"http://localhost:631)." + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "Logi puudub" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" +"1 logirida.\n" +"%n logirida." + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "Viimati uuendatud: %1." + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "Midagi pole valitud. Lõikepuhvrisse ei kopeeritud midagi." + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" +"1 logirida lõikepuhvrisse kopeeritud.\n" +"%n logirida lõikepuhvrisse kopeeritud." + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "Midagi pole valitud. Salvestamiseks tuleb midagi valida." + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" +"1 logirida salvestatud faili '%1'.\n" +"%n logirida salvestatud faili '%1'." + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "Faili '%1' salvestamine ebaõnnestus: õigustest ei piisanud." + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Faili salvestamine ebaõnnestus." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Asukoha avamine" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "Vigane URL. Faili avamine ebaõnnestus." + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "Faili avamine ebaõnnestus." + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "Rühmitamise alus" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "Puudub" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "Logitase" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Päev" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "Tund" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "Logifail" + +#: ksystemlog.cpp:1730 +msgid "Here are my logs:\n" +msgstr "Need on minu logid:\n" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "---------------------------------------\n" +msgstr "---------------------------------------\n" + +#: ksystemlog.cpp:1753 +msgid "You have selected too many lines. Please only select important log lines." +msgstr "Oled valinud liiga palju ridu. Palun vali ainult olulised read." + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "Liiga palju ridu valitud" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "Minu probleemi logiread" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "Laadimise edenemine" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "Laaditakse %1 (%2/%3)..." + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "Laaditakse uuesti %1 (%2/%3)..." + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "Laaditakse %1..." + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "Laaditakse uuesti %1..." + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Laaditakse logi..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "Logi edukalt laaditud." + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1: (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "KDE süsteemi logifailide vaatamise tööriist" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Avatav dokument" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "Ideed, koodi parandamine" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "Prantsuse rongid marsruudil Pariis-Rouen" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "Sageli hilinesid, jättes mulle aega KSystemLogiga tegeld ;-)" + +#: options.cpp:86 +msgid "General" +msgstr "Üldine" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "Alglaadimine/autentimine" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "Alglaadimise ja autentimise logid" + +#: options.cpp:141 +msgid "System Log" +msgstr "Süsteemi logi" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "Kerneli logi" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "Cron'i logi" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "Deemonite logi" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "X.org-i logi" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "ACPI logi" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "ACPI deemoni logi" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "CUPS-i logi" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "CUPS-i ja CUPS-i veebiserveri logi" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "Samba logi" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "&Logid" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&CUPS" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "A&ken" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "Logiriba" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Peamine tööriistariba" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "Fail ei ole sobilik. Palun kohenda seda KSystemLogi seadistustes." + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "Seda faili pole olemas" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "Faili '%1' pole olemas." + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "'%1' lugemiseks napib õigusi." + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "Ebapiisavad õigused" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "URL '%1' ei ole sobilik, see URL jäetakse vahele." + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "Kahe massiivi suurus on erinev, logifailide lugemine jäetakse vahele." + +#: sambaOptions.cpp:49 +msgid "" +"

These files will be analyzed to display Samba log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse Samba logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Aeg" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Masin" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "&Muuda staatust" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "Muuda aktiivsete failide taset" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation " +"for more information about each log level." +msgstr "" +"Muudab aktiivsete failide taset. Logitasemetest räägib lähemalt " +"KSystemLogi käsiraamat." + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "Failitüübi valik" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "Palun vali selle faili tüüp:" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "Olemasolevate logitasemete nimekiri" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them " +"to be used for the selected files of the list." +msgstr "" +"See on olemasolevate logitasemete nimekiri. Palun vali neist üks, mida " +"kasutatakse nimekirjas valitud failide puhul." + +#: specificFileList.cpp:184 +msgid "The two arrays size are different, skipping the reading of generic paths." +msgstr "Kahe massiivi suurus on erinev, üldiste asukohtade lugemine jäetakse vahele." + +#: systemOptions.cpp:50 +msgid "" +"

These files will be analyzed to display System logs. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse süsteemi logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "Puhasta filter" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "Selle nupuga saab filtri täielikult puhastada." + +#: view.cpp:82 +msgid "Filter:" +msgstr "Filter:" + +#: view.cpp:87 +msgid "Allows you to select only list items that match the content of this text." +msgstr "Võimaldab valida ainult need nimekirja elemendid, mis vastavad filtri sisule." + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "Kirjuta siia filtri sisu" + +#: view.cpp:90 +msgid "Column:" +msgstr "Veerg:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Kõik" + +#: view.cpp:270 +msgid "" +"

This is the main view of KSystemLog. It displays the last lines of " +"the selected log. Please see the documentation to discovers the meaning of " +"each icons and existing log.

Log lines in bold are the last " +"added to the list.

" +msgstr "" +"

See on KSystemLogi peavaade. See näitab valitud logi viimaseid ridu. " +"Ikoonide tähendusest ja kõigest muust räägib lähemalt käsiraamat.

" +"

Rasvases kirjas logiread on viimasena nimekirja lisatud.

" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. " +"\"All\" column means no specific filter." +msgstr "" +"Võimaldab rakendada filtri sisu ainult määratud veerule. Kõik " +"tähendab filtri rakendamist kõigile veergudele." + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "Vali siin filtreeritav veerg" + +#: xorgOptions.cpp:51 +msgid "" +"

These files will be analyzed to display X.org log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Nende failide analüüsimise järel näidatakse X.org-i logi. " +"Nimekiri määrab ka järjekorra, milles faile loetakse.

" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Rida" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "proovitud" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "konfiguratsioonifailist" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "vaikimisi seadistus" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "käsurealtn" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "pole teostatud" + diff --git a/ksystemlog/po/fr.po b/ksystemlog/po/fr.po new file mode 100644 index 0000000..aa3d506 --- /dev/null +++ b/ksystemlog/po/fr.po @@ -0,0 +1,1442 @@ +# translation of fr.po to +# translation of ksystemlog.po to Français +# translation of fr.po to Français +# translation of toto.po to Français +# translation of fr.po to Français +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# Nicolas Ternisien , 2005. +# Nicolas Ternisien , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-06-19 21:37+0200\n" +"PO-Revision-Date: 2005-06-19 21:50+0200\n" +"Last-Translator: Nicolas Ternisien \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.1\n" + +#: acpidOptions.cpp:51 +msgid "" +"

These files will be analyzed to display ACPId log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal de X.org. Cette liste détermine également l'ordre dans lequel les fichiers seront " +"lus.

" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Date" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Type" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Message" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:416 globals.cpp:42 +#: itemFactory.cpp:103 itemFactory.cpp:366 +msgid "none" +msgstr "aucun" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "Fichier de journalisation du démarrage" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "Journal du démarrage :" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: /var/log/" +"boot.log)." +msgstr "" +"Vous pouvez saisir ou choisir ici le journal du démarrage (par exemple : " +"/var/log/boot.log)." + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be " +"analyzed by KSystemLog when you will choose the Boot log menu item. " +"Generally, its name is /var/log/boot.log" +msgstr "" +"Vous pouvez saisir ou choisir ici le fichier du journal de démarrage. Ce " +"fichier sera analysé par KSystemLog lorsque vous choisirez l'entrée de menu " +"Journal du démarrage. Généralement, son nom est /var/log/boot.log." + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "Fichier de journalisation des authentifications" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "Journal des authentifications :" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: /" +"var/log/auth.log)." +msgstr "" +"Vous pouvez ici saisir ou choisir le fichier du journal " +"d'authentification (par exemple : /var/log/auth.log)." + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will " +"be analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" +"Vous pouvez saisir ou choisir ici le fichier du journal des " +"authentifications. Ce fichier sera analysé par KSystemLog lorsque vous " +"choisirez l'entrée de menu Journal des authentifications. " +"Généralement, son nom est /var/log/auth.log." + +#: cronOptions.cpp:51 +msgid "" +"

These files will be analyzed to display Cron Logs (i.e. " +"planned tasks logs). This list also determines the order in which the files " +"are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal de Cron (e.g. tâches planifiées). Cette liste détermine également l'ordre dans " +"lequel les fichiers seront lus.

" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Nom d'hôte" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Processus" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Utilisateur" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Réponse" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Octets envoyés" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "Requête HTTP" + +#: cupsOptions.cpp:47 +msgid "" +"

These files will be analyzed to display Cups log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal de Cups. Cette liste détermine également l'ordre dans lequel les fichiers seront " +"lus.

" + +#: cupsOptions.cpp:48 +msgid "" +"

These files will be analyzed to display Cups Web Server log. " +"This list also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal du serveur " +"Web de Cups. Cette liste détermine également l'ordre dans lequel les " +"fichiers seront lus.

" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "débogage 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog " +"developer to add it." +msgstr "" +"Nouveau niveau de journalisation détecté : Veuillez envoyer ce journal au " +"développeur de KSystemLog pour qu'il l'ajoute." + +#: daemonOptions.cpp:51 +msgid "" +"

These files will be analyzed to display daemons Logs. This " +"list also determine the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal des " +"démons. Cette liste détermine également l'ordre dans lequel les fichiers " +"seront lus.

" + +#: defaultReader.cpp:92 +msgid "Opening file '%1'..." +msgstr "Ouverture du fichier « %1 »..." + +#: defaultReader.cpp:114 +msgid "No log line in '%1'." +msgstr "%1 lignes enregistrées dans « %2 »." + +#: defaultReader.cpp:173 +msgid "Log file '%1' loaded successfully." +msgstr "Fichier de journalisation « %1 » chargé correctement." + +#: defaultReader.cpp:264 +msgid "Log file '%1' has changed." +msgstr "Fichier de journalisation « %1 » modifié." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "Détails de la ligne" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" +"Cette fenêtre affiche des informations détaillées sur la ligne actuellement " +"sélectionnée du journal." + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "Aller à la ligne précédente" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no " +"previous log line." +msgstr "" +"Aller à la ligne précédente. Ce bouton est désactivé s'il " +"n'existe pas de ligne suivante dans le journal." + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Suivante" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "Aller à la ligne suivante" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" +"Aller à la ligne suivante. Ce bouton est désactivé s'il n'existe " +"pas de ligne suivante dans le journal." + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "Fermer la fenêtre de détails." + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "Ferme la fenêtre de détails." + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "Liste des fichiers utilisés pour ce type de journal" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" +"Voici la liste de tous les fichiers qui seront lus par KSystemLog afin " +"d'afficher les lignes de journal actuelles." + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "&Ajouter un fichier" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Sélectionner un nouveau fichier" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" +"Ouvre une boîte de dialogue permettant de choisir un fichier à ajouter à la " +"liste." + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "Supprimer le(s) fichier(s) sélectionné(s)" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "Supprime les fichiers sélectionnés dans la liste." + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "&Monter" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "Monter le(s) fichier(s) sélectionné(s)" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to " +"be read in first by KSystemLog." +msgstr "" +"Monte les fichiers sélectionnés dans la liste. Cette option permet de " +"choisir les fichiers lus en premier par KSystemLog." + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "&Descendre" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "Descendre le(s) fichier(s) sélectionné(s)" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files " +"to be read at last by KSystemLog." +msgstr "" +"Descend les fichiers sélectionnés dans la liste. Cette option permet de " +"choisir les fichiers lus en dernier par KSystemLog." + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "Tout &supprimer" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "Supprimer tous les fichiers" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" +"Supprimer toutes les fichiers de la liste, même s'ils ne sont pas " +"sélectionnés." + +#: fileList.cpp:95 +msgid "File list" +msgstr "Liste de fichiers" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Tous les fichiers (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "Fichiers de journalisation (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Sélectionnez un fichier de journalisation" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "« %1 » n'est pas valable." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "Sélection du fichier échouée." + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "« %1 » n'est pas un fichier local." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "« %1 » est un dossier." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "Liste des lignes de journalisation" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "Nombre max. de lignes affichées :" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" +"Choisissez ici le nombre maximal de lignes affichées dans la vue " +"principale." + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the " +"main view." +msgstr "" +"Vous pouvez choisir ici le nombre maximal de lignes affichées dans la " +"vue principale." + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "Supprimer les lignes identiques (peut prendre plus de temps)" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines (may be " +"slow)." +msgstr "Sélectionnez cette option si vous souhaitez supprimer les lignes dupliquées dans le journal (peut être plus lent)." + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "Vous pouvez sélectionner cette option si vous souhaitez supprimer les lignes de journal en double. Cette option peut ralentir la lecture." + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "Nombre de caractères maximum à lire par ligne" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Nombre de caractères :" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log line." +"" +msgstr "Choisissez ici le nombre maximal de caractères à lire par ligne de journal." + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each " +"log line." +msgstr "Vous pouvez choisir ici le nombre maximal de caractères à lire depuis chaque ligne de journal." + +#: globals.cpp:45 +msgid "debug" +msgstr "débogage" + +#: globals.cpp:48 +msgid "information" +msgstr "information" + +#: globals.cpp:51 +msgid "notice" +msgstr "remarque" + +#: globals.cpp:54 +msgid "warning" +msgstr "avertissement" + +#: globals.cpp:57 +msgid "error" +msgstr "erreur" + +#: globals.cpp:60 +msgid "critical" +msgstr "critique" + +#: globals.cpp:63 +msgid "alert" +msgstr "alerte" + +#: globals.cpp:66 +msgid "emergency" +msgstr "urgence" + +#: globals.cpp:91 +msgid "No log" +msgstr "Aucun journal" + +#: globals.cpp:94 +msgid "File log" +msgstr "Journal d'un fichier" + +#: globals.cpp:97 +msgid "System log" +msgstr "Journal système" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Journal du noyau" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "Journal de X.org" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Journal de Samba" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Journal du démarrage" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Journal des authentifications" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Journal de Cron" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Journal des démons" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "Journal ACPI" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "Journal Cups" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "Journal des accès Cups" + +#: itemFactory.cpp:76 +msgid "Today" +msgstr "Aujourd'hui" + +#: itemFactory.cpp:78 +msgid "Yesterday" +msgstr "Hier" + +#: itemFactory.cpp:86 +msgid "%1, %2h" +msgstr "%1, %2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "
Groupe : %1
" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "%1, %2 heure" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "
Groupe : aucun
" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Date :" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Nom d'hôte :" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Processus :" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Utilisateur :" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Niveau :" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "Fichier original :" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Type :" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "Identification :" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Nom d'utilisateur :" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "Réponse HTTP :" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Octets envoyés :" + +#: kernelOptions.cpp:51 +msgid "" +"

These files will be analyzed to display Kernel logs. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal du noyau. Cette liste détermine également l'ordre dans lequel les fichiers seront " +"lus.

" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Créer un nouvel onglet" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "Crée un nouvel onglet dans lequel afficher un nouveau journal." + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Fermer l'onglet courant" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Ferme l'onglet courant." + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Ouvrir un fichier dans KSystemLog" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" +"Ouvre un fichier dans KSystemLog et affiche son contenu dans l'onglet " +"courant." + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "Enregistrer la sélection dans un fichier" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create " +"an attachment or a backup of a particular log." +msgstr "" +"Enregistre la sélection dans un fichier. Cette action est utile si vous " +"souhaitez créer une pièce jointe ou une sauvegarde d'un journal particulier." + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Quitter KSystemlog" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Quitte KSystemlog." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "Copier la sélection dans le presse-papiers" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"Copie la sélection dans le presse-papiers. Cette action est utile si vous " +"souhaitez coller la sélection dans une fenêtre de discussion ou dans un " +"courrier électronique." + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "&Envoyer la sélection" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "Envoyer la sélection par courrier électronique." + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"Envoie la sélection par courrier électronique. Sélectionnez simplement les " +"lignes importantes, puis cliquez sur cette entrée de menu pour envoyer la " +"sélection à un ami ou à une liste de diffusion." + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "Sélectionner toutes les lignes du journal courant" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" +"Sélectionne toutes les lignes du journal courant. Cette action est utile si " +"vous souhaitez, par exemple, enregistrer l'ensemble du contenu de ce journal " +"dans un fichier." + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "Afficher la barre de &filtre" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&Nouvel onglet" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Fermer l'onglet" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Dupliquer l'onglet" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Dupliquer l'onglet courant" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Duplique l'onglet courant." + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "Déplacer l'onglet à &gauche" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "Déplacer l'onglet courant à gauche" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "Déplace l'onglet courant à gauche." + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "Déplacer l'onglet à &droite" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "Déplacer l'onglet courant à droite" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "Déplace l'onglet courant à droite." + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Recharger le journal actuel" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" +"Recharge le journal courant, si vous souhaitez être sûr que la vue est " +"correctement actualisée." + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Repre&ndre l'analyse" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "Relance la surveillance du journal courant" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when " +"the user has already paused the reading." +msgstr "" +"Relance la surveillance du journal courant. Cette action est uniquement " +"disponible si l'utilisateur a mis en pause la lecture." + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "Arrê&ter l'analyse" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "Met en pause la surveillance du journal courant" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful " +"when the system is writing too many lines to log files, causing KSystemLog " +"to reload too frequently." +msgstr "" +"Met en pause la surveillance du journal actuel. Cette action est " +"particulièrement utile lorsque le système inscrit trop de lignes dans les " +"fichiers de journalisation, ayant pour conséquence des rechargements " +"réguliers dans KSystemLog." + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Détails" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "Afficher les détails sur la ligne actuellement sélectionnée" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" +"Affiche une boîte de dialogue contenant des détails sur la ligne " +"actuellement sélectionnée. Vous pouvez naviguer dans les journaux depuis " +"cette fenêtre grâce aux boutons Précédent et Suivant." + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "&Activer les bulles de détails" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "Activer / Désactiver les bulles d'aide sur la vue actuelle" + +#: ksystemlog.cpp:345 +msgid "Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" +"Active / Désactive les bulles d'aide affichées lorsque le curseur passe au-" +"dessus d'une ligne de journal." + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "&Afficher les nouvelles lignes" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "Afficher ou non les nouvelles lignes si le journal change" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" +"Affiche ou non les nouvelles lignes lorsque le journal change. Cette option " +"est utile lorsque vous ne souhaitez voir que les anciennes lignes du " +"journal, mais que KSystemLog recharge souvent la vue." + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "&Journal système" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Afficher le journal système." + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" +"Affiche le journal du système dans l'onglet courant. Ce journal est " +"généralement utilisé par les processus non-spécialisés (comme les commandes " +"« sudo » ou « fsck »)" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "&Journal du noyau" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Afficher le journal du noyau." + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what " +"is the cause of the last kernel panic/oops." +msgstr "" +"Affiche le journal du noyau dans l'onglet courant. Ce journal est " +"uniquement utile aux utilisateurs souhaitant savoir pourquoi le noyau n'a " +"pas détecté leur matériel, ou ceux désirant connaître l'explication du " +"dernier kernel panic / oops." + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "Journal du démarrage" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Afficher le journal du démarrage." + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want " +"to verify if all startup services have been correctly started." +msgstr "" +"Affiche le journal du démarrage dans l'onglet courant. Ce journal est " +"utile si vous souhaitez savoir si l'ensemble des services du démarrage se " +"sont convenablement démarrés." + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "Journal des a&uthentifications" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Afficher le journal des authentifications." + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays " +"all log in made by each user of the system, and can help you to know if " +"someone tried to crack your system." +msgstr "" +"Affiche le journal des authentifications dans l'onglet courant. Ce " +"journal affiche toutes les connexions effectués par les utilisateurs du " +"système, et peut vous aider à savoir si quelqu'un tente de pirater votre " +"système." + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "Journal des &démons" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Afficher le journal des démons." + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all " +"processes launched in the background of the system. See this log if you want " +"to know what it occurs in the background of your system." +msgstr "" +"Affiche le journal des démons dans l'onglet courant. Les démons sont les " +"processus lancés en arrière-plan du système. Consultez ce journal si vous " +"souhaitez savoir ce qui se passe en arrière-plan de votre système." + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "Journal des tâches &planifiées" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "Afficher le journal des tâches planifiées (ou journal Cron)." + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the last-" +"launched processes." +msgstr "" +"Affiche le journal des tâches planifiées dans l'onglet courant. Le " +"programme Cron est chargé du lancement des tâches planifiées sur votre " +"système, comme par exemple, les vérifications de sécurité, ou le " +"rechargement de certains services. Utilisez cette action du menu pour " +"observer les derniers processus lancés." + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "Journal de &X.org" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Afficher le journal de X.org." + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your " +"input device is not recognized." +msgstr "" +"Affiche le journal de X.org dans l'onglet courant. X.org est le service " +"affichant votre bureau sur votre écran, et gérant votre matériel graphique. " +"Consultez par exemple ce journal si vous souhaitez savoir pourquoi " +"l'accélération 3D ne fonctionne pas ou pourquoi votre périphérique d'entrée " +"n'est pas reconnu." + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "Journal ACPI" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Afficher le journal ACPI." + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" +"Affiche le journal ACPI dans l'onglet courant. L'ACPI est utilisé pour " +"gérer les composants matériels de votre ordinateur, comme les batteries de " +"portables, les boutons de redémarrage..." + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "Journal de &Cups" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Afficher le journal de Cups." + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which " +"manage printing on your computer." +msgstr "" +"Affiche le journal de Cups dans l'onglet courant. CUPS est le programme " +"en charge de l'impression sur votre ordinateur." + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "Journal de &Cups Web" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "Afficher le journal des accès au serveur Web de Cups." + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631)." +msgstr "" +"Affiche le journal des accès au serveur Web de Cups dans l'onglet " +"courant. CUPS est le programme qui gère l'impression sur votre ordinateur. " +"Ce journal enregistre toutes les requêtes effectuées sur le serveur Web " +"inclus dans Cups (par défaut : http://localhost:631)." + +#: ksystemlog.cpp:604 +msgid "No Log" +msgstr "Aucun journal" + +#: ksystemlog.cpp:954 +msgid "1 log line." +msgstr "1 ligne de journal." + +#: ksystemlog.cpp:958 +msgid "Last updated: %1." +msgstr "Dernière mise à jour : %1." + +#: ksystemlog.cpp:996 +msgid "No items selected. Nothing copied to clipboard." +msgstr "Aucun élément sélectionné. Rien n'a été copié dans le presse-papiers." + +#: ksystemlog.cpp:1003 +msgid "1 log line copied to clipboard." +msgstr "1 ligne copiée dans le presse-papiers." + +#: ksystemlog.cpp:1014 +msgid "No items selected. Please select items to be able to save them." +msgstr "" +"Aucun élément sélectionné. Veuillez en sélectionner afin de pouvoir les " +"enregistrer." + +#: ksystemlog.cpp:1044 +msgid "1 log line saved to '%1'." +msgstr "1 ligne enregistrée dans « %1 »." + +#: ksystemlog.cpp:1047 +msgid "Unable to save file '%1': Permission Denied." +msgstr "Impossible d'enregistrer le fichier « %1 » : Permission refusée." + +#: ksystemlog.cpp:1048 +msgid "Unable to save file." +msgstr "Impossible d'enregistrer le fichier." + +#: ksystemlog.cpp:1164 +msgid "Open Location" +msgstr "Ouvrir l'emplacement" + +#: ksystemlog.cpp:1177 +msgid "Malformed URL. Unable to open this file." +msgstr "URL mal formée. Impossible d'ouvrir ce fichier." + +#: ksystemlog.cpp:1178 +msgid "Unable to open this file." +msgstr "Impossible d'ouvrir ce fichier." + +#: ksystemlog.cpp:1593 +msgid "Group By" +msgstr "Regrouper par" + +#: ksystemlog.cpp:1598 +msgid "None" +msgstr "Aucun" + +#: ksystemlog.cpp:1602 +msgid "Log Level" +msgstr "Niveau d'importance" + +#: ksystemlog.cpp:1604 +msgid "Day" +msgstr "Jour" + +#: ksystemlog.cpp:1606 +msgid "Hour" +msgstr "Heure" + +#: ksystemlog.cpp:1608 +msgid "Log File" +msgstr "Fichier de journalisation" + +#: ksystemlog.cpp:1742 +msgid "Here are my logs:\n" +msgstr "Voici les lignes de mon journal :\n" + +#: ksystemlog.cpp:1744 ksystemlog.cpp:1761 +msgid "---------------------------------------\n" +msgstr "---------------------------------------\n" + +#: ksystemlog.cpp:1765 +msgid "You have selected too many lines. Please only select important log lines." +msgstr "" +"Vous avez sélectionné un nombre de lignes trop important. Veuillez ne choisir " +"que les lignes principales du journal." + +#: ksystemlog.cpp:1765 +msgid "Too Many Lines Selected" +msgstr "Trop de lignes sélectionnées" + +#: ksystemlog.cpp:1779 +msgid "Log Lines of my problem" +msgstr "Lignes problèmatiques du journal" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "Progression du chargement" + +#: loadingDialog.cpp:111 +msgid "Loading %1 [%2/%3 file] (%4/%5)..." +msgstr "Chargement de %1 [fichier %2/%3] (%4/%5)..." + +#: loadingDialog.cpp:113 +msgid "Reloading %1 [%2/%3 file] (%4/%5)..." +msgstr "Rehargement de %1 [fichier %2/%3] (%4/%5)..." + +#: loadingDialog.cpp:118 +msgid "Loading %1 [%2/%3 file]..." +msgstr "Chargement de %1 [fichier %2/%3]..." + +#: loadingDialog.cpp:120 +msgid "Reloading %1 [%2/%3 file]..." +msgstr "Rechargement de %1 [fichier %2/%3]..." + +#: loadingDialog.cpp:129 +msgid "Loading %1 (%2/%3)..." +msgstr "Chargement de %1 (%2/%3)..." + +#: loadingDialog.cpp:131 +msgid "Reloading %1 (%2/%3)..." +msgstr "Rechargement de %1 (%2/%3)..." + +#: loadingDialog.cpp:136 +msgid "Loading %1..." +msgstr "Chargement de %1..." + +#: loadingDialog.cpp:138 +msgid "Reloading %1..." +msgstr "Rechargement de %1..." + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Chargement du journal..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "Journal correctement chargé." + +#: logManager.cpp:219 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "Outil de visualisation des journaux système pour KDE" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Document à ouvrir" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "Idées, améliorations du code" + +#: options.cpp:86 +msgid "General" +msgstr "Général" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "Démarrage / Authentification" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "Journaux de démarrage et d'authentification" + +#: options.cpp:141 +msgid "System Log" +msgstr "Journal système" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "Journal du noyau" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "Journal de Cron" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "Journal des démons" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "Journal de X.org" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "Journal ACPI" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "Journal du démon ACPI" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "Journal de Cups" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "Journaux de Cups et de son serveur Web" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "Journal de Samba" + +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "&Journaux" + +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&Cups" + +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Fenêtre" + +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "Barre d'outils des journaux" + +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Barre d'outils principale" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" +"Ce fichier n'est pas valable. Veuillez l'ajuster dans la configuration de " +"KSystemLog." + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "Le fichier n'existe pas" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "Le fichier « %1 » n'existe pas." + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "Vous n'avez pas les permissions suffisantes pour lire « %1 »." + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "Permissions insuffisantes" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "L'URL « %1 » n'est pas valable, celle-ci ne sera pas lue." + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" +"Les tailles des tableaux sont différentes, passage de la lecture des " +"fichiers de journalisation." + +#: sambaOptions.cpp:49 +msgid "" +"

These files will be analyzed to display Samba log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal de Samba. Cette liste détermine également l'ordre dans lequel les fichiers seront " +"lus.

" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Temps" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "HÃŽte" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "&Modifier l'état" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "Modifier le niveau du (des) fichier(s) courant(s)" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation " +"for more information about each log level." +msgstr "" +"Change le niveau du ou des fichiers sélectionnés. Consultez la " +"documentation de KSystemLog pour plus d'informations sur chaque niveau." + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "Sélection du type du fichier" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "Veuillez sélectionner le type de ce fichier :" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "Liste des niveaux de journalisation existants" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them " +"to be used for the selected files of the list." +msgstr "" +"Voici la liste de tous les niveaux de journalisation existants. Veuillez " +"sélectionner l'un d'eux pour l'appliquer aux fichiers sélectionnés de la " +"liste." + +#: specificFileList.cpp:184 +msgid "The two arrays size are different, skipping the reading of generic paths." +msgstr "" +"Les tailles des tableaux sont différentes, passage de la lecture des chemins " +"génériques." + +#: systemOptions.cpp:50 +msgid "" +"

These files will be analyzed to display System logs. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal du " +"système. Cette liste détermine également l'ordre dans lequel les " +"fichiers seront lus.

" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Nicolas Ternisien" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "nicolas.ternisien@gmail.com" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "Effacer le filtre" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "Ce bouton efface le contenu du filtre en un clic." + +#: view.cpp:82 +msgid "Filter:" +msgstr "Filtre :" + +#: view.cpp:87 +msgid "Allows you to select only list items that match the content of this text." +msgstr "" +"Vous permet de sélectionner uniquement les éléments de la liste " +"correspondants au texte saisi ici." + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "Saisissez votre filtre ici" + +#: view.cpp:90 +msgid "Column:" +msgstr "Colonne :" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Toutes" + +#: view.cpp:270 +msgid "" +"

This is the main view of KSystemLog. It displays the last lines of " +"the selected log. Please see the documentation to discovers the meaning of " +"each icons and existing log.

Log lines in bold are the last " +"added to the list.

" +msgstr "" +"

Voici la vue principale de KSystemLog. Elle affiche les dernières " +"lignes en date du journal sélectionné. Veuillez consulter la documentation " +"afin de comprendre la signification de chaque icône et des journaux " +"existants.

Les lignes de journaux en gras correspondent aux " +"dernières ajoutées à la liste.

" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. " +"\"All\" column means no specific filter." +msgstr "" +"Permet d'appliquer un filtre sur les éléments appartenant à la colonne " +"indiquée ici. « Toutes » signifie qu'aucun filtre n'est appliqué sur " +"une colonne particulière." + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "Sélectionnez ici la colonne à filtrer" + +#: xorgOptions.cpp:51 +msgid "" +"

These files will be analyzed to display X.org log. This list " +"also determines the order in which the files are read.

" +msgstr "" +"

Ces fichiers seront analysés afin d'afficher le journal de X.org. Cette liste détermine également l'ordre dans lequel les fichiers seront " +"lus.

" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Ligne" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "sondé" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "de la configuration" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "paramètre par défaut" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "de la ligne de commande" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "non implémenté" + diff --git a/ksystemlog/po/ga.po b/ksystemlog/po/ga.po new file mode 100644 index 0000000..593f234 --- /dev/null +++ b/ksystemlog/po/ga.po @@ -0,0 +1,1323 @@ +msgid "" +msgstr "" +"Project-Id-Version: playground-sysadmin/ksystemlog.po\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-05-12 08:45-0500\n" +"Last-Translator: Kevin Patrick Scannell \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Kevin Scannell" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "scannell at slu dot edu" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Dáta" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Cineál" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Teachtaireacht" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "neamhní" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "Logchomhad Tosaithe" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "Logchomhad Tosaithe:" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" +"Anseo, is féidir leat an logchomhad tosaithe a roghnú (mar shampla: " +"/var/log/boot.log)." + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "Logchomhad Fíordheimhnithe" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "Logchomhad Fíordheimhnithe:" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" +"Anseo, is féidir leat an logchomhad fíordheimhnithe a roghnú (mar shampla: " +"/var/log/auth.log)." + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Ainm Óstríomhaire" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Próiseas" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Úsáideoir" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Aitheantas" + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Freagra" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Bearta Seolta" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "Iarratas HTTP" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "dífhabhtú 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Comhad '%1' á oscailt..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "" + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "D'éirigh le luchtú an logchomhaid '%1'." + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "Athraíodh logchomhad '%1'." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "Téigh go dtí an líne roimhe seo" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Ar Aghaidh" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "Téigh go dtí an chéad líne eile" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "&Cuir comhad leis" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Roghnaigh comhad nua" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "Scrios na comhaid reatha" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Bog S&uas" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Bog Sí&os" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "Bai&n Uile" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "Bain gach comhad" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "Liosta comhad" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Gach comhad (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "Logchomhaid (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Roghnaigh logchomhad" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "Is neamhbhailí é '%1'." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "Ní comhad logánta é '%1'." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "Is fillteán é '%1'." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Líon na gCarachtar:" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "dífhabhtaigh" + +#: globals.cpp:48 +msgid "information" +msgstr "eolas" + +#: globals.cpp:51 +msgid "notice" +msgstr "fógra" + +#: globals.cpp:54 +msgid "warning" +msgstr "rabhadh" + +#: globals.cpp:57 +msgid "error" +msgstr "earráid" + +#: globals.cpp:60 +msgid "critical" +msgstr "criticiúil" + +#: globals.cpp:63 +msgid "alert" +msgstr "airdeall" + +#: globals.cpp:66 +msgid "emergency" +msgstr "éigeandáil" + +#: globals.cpp:91 +msgid "No log" +msgstr "Gan logchomhad" + +#: globals.cpp:94 +msgid "File log" +msgstr "" + +#: globals.cpp:97 +msgid "System log" +msgstr "Logchomhad an chórais" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Logchomhad na heithne" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "Logchomhad X.org" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Logchomhad Samba" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Logchomhad tosaithe" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Logchomhad fíordheimhnithe" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Logchomhad Cron" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Logchomhad na ndeamhan" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "Logchomhad ACPI" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "Logchomhad Cups" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "Logchomhad Rochtana Cups" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "Inniu" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "Inné" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2u" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "
Grúpa: %1
" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "%1, %2 uaire" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "
Grúpa: neamhní
" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Dáta:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Óstainm:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Próiseas:" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Úsáideoir:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Leibhéal:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "Bunchomhad:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Cineál:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "Aitheantas:" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Ainm Úsáideora:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "Freagra HTTP:" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Bearta Seolta:" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Cruthaigh cluaisín nua" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Dún an Cluaisín Reatha" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Dún an cluaisín reatha." + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Oscail comhad i KSystemLog" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Scoir KSystemLog" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Scoir KSystemLog." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "Roghnaigh gach líne as an logchomhad reatha" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "Cluaisín &nua" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Dún cluaisín" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Cóipeáil cluaisín" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Cóipeáil an cluaisín reatha" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Cóipeáil an cluaisín reatha." + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "Bog cluaisín faoi ch&lé" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "Bog an cluaisín reatha faoi chlé" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "Bog an cluaisín reatha faoi chlé." + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "Bog cluaisín faoi &dheis" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "Bog an cluaisín reatha faoi dheis" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "Bog an cluaisín reatha faoi dheis." + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Athluchtaigh an logchomhad reatha" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Sonraí" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "&Taispeáin Línte Nua" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "Logchomhad an &chórais" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Taispeáin logchomhad an chórais." + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "Logchomhad na h&eithne" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Taispeáin logchomhad na heithne." + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "Logchomhad &tosaithe" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Taispeáin an logchomhad tosaithe." + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "Logchomhad &fíordheimhnithe" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Taispeáin an logchomhad fíordheimhnithe." + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "Logchomhad na n&deamhan" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Taispeáin logchomhad na ndeamhan." + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "Logchomhad &X.org" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Taispeáin an logchomhad X.org." + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "Logchomhad &ACPI" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Taispeáin an logchomhad ACPI." + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "Logchomhad &Cups" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Taispeáin an logchomhad Cups." + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "Gan Logchomhad" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "Nuashonraithe: %1." + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Ní féidir an comhad a shábháil." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Oscail Suíomh" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "URL míchumtha. Ní féidir an comhad seo a oscailt." + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "Ní féidir an comhad seo a oscailt." + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "Grúpáil De Réir" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "Neamhní" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "Leibhéal Logála" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Lá" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "Uair" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "Logchomhad" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" +"Is iad seo mo chuid logchomhad:\n" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" +"---------------------------------------\n" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "An Iomarca Línte Roghnaithe Agat" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "Dul chun cinn luchtaithe" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "%1 á luchtú (%2/%3)..." + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "%1 á athluchtú (%2/%3)..." + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "%1 á luchtú..." + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "%1 á athluchtú..." + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Logchomhad á luchtú..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "D'éirigh le luchtú an logchomhaid." + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Cáipéis le hoscailt" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "Traenacha Francacha idir Páras agus Rouen" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "Ginearálta" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "Tosú / Fíordheimhniú" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "Logchomhaid Tosaithe && Fíordheimhnithe" + +#: options.cpp:141 +msgid "System Log" +msgstr "Logchomhad an Chórais" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "Logchomhad na hEithne" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "Logchomhad Cron" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "Logchomhad na nDeamhan" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "Logchomhad X.org" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "Logchomhad ACPI" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "Logcomhad an Deamhain ACPI" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "Logchomhad Cups" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "Logchomhad Samba" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "&Logchomhaid" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&Cups" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Fuinneog" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "Barra Uirlisí na Logchomhad" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Príomhbharra uirlisí" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "Níl an comhad ann" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "Níl comhad '%1' ann." + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Am" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Óstríomhaire" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "&Athraigh stádas" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "Athraigh leibhéal an chomhaid reatha" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "Scagaire:" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "Colún:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Uile" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Líne" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "ón chomhad cumraíochta" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "réamhshocrú" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "ó líne na n-orduithe" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "níl ar fáil" + +#~ msgid "&Apache log" +#~ msgstr "Logchomhad &Apache" + +#~ msgid "Pro&FTP log" +#~ msgstr "Logchomhad Pro&FTP" + +#~ msgid "Sa&mba log" +#~ msgstr "Logchomhad Sa&mba" + +#~ msgid "Parsing" +#~ msgstr "Parsáil" + +#~ msgid "Parsed line number:" +#~ msgstr "Parsáladh líne-uimhir:" + +#~ msgid "Order" +#~ msgstr "Ord" diff --git a/ksystemlog/po/it.po b/ksystemlog/po/it.po new file mode 100644 index 0000000..3081f73 --- /dev/null +++ b/ksystemlog/po/it.po @@ -0,0 +1,1322 @@ +# translation of ksystemlog.po to Italian +# Nicola Ruggero , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-06-17 15:59+0200\n" +"Last-Translator: Nicola Ruggero \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.1\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Nicola Ruggero" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "nixprog.adsl@tiscali.it" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Data" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Tipo" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Messaggio" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "nessuno" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "File registro di avvio" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "File registro di avvio:" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "File registro di autenticazione" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "File registro di autenticazione:" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Nome host" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Processo" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Utente" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Risposta" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Byte inviati" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "Richiesta HTTP" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "debug 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Apertura file \"%1\"..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "Nessuna riga di registro in \"%1\"." + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "File registro \"%1\" caricato correttamente." + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "Il file registro \"%1\" è cambiato." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "Dettaglio riga di registro" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "Vai alla riga precedente" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Successivo" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "Vai alla riga successiva" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "Chiudi finestra dei dettagli." + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "Chiude questa finestra dei dettagli." + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "&Aggiunge un file" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Scegli un nuovo file" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "Lista file" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Tutti i file (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "File registro (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Scegli un file registro" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "\"%1\" non è valido." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "Selezione file non riuscita" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "\"%1\" non è un file locale." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "\"%1\" è una cartella." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "Lista righe di registro" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "Righe massime visualizzate:" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "Cancella le righe di registro duplicate (può essere lento)" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Numero di caratteri:" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "debug" + +#: globals.cpp:48 +msgid "information" +msgstr "informazione" + +#: globals.cpp:51 +msgid "notice" +msgstr "notifica" + +#: globals.cpp:54 +msgid "warning" +msgstr "avvertimento" + +#: globals.cpp:57 +msgid "error" +msgstr "errore" + +#: globals.cpp:60 +msgid "critical" +msgstr "critico" + +#: globals.cpp:63 +msgid "alert" +msgstr "avviso" + +#: globals.cpp:66 +msgid "emergency" +msgstr "emergenza" + +#: globals.cpp:91 +msgid "No log" +msgstr "Nessun registro" + +#: globals.cpp:94 +msgid "File log" +msgstr "File registro" + +#: globals.cpp:97 +msgid "System log" +msgstr "Registro di sistema" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Registro del kernel" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "Registro di X.org" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Registro di samba" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Registro di avvio" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Registro di autenticazione" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Registro di cron" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Registro del daemon" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "Registro dell'ACPI" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "Registro di cups" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "Registro degli accessi di cups" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "Oggi" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "Ieri" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "
Gruppo: %1
" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "%1, %2 ora" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "
Gruppo: nessuno
" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Data:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Nome host:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Processo:" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Utente:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Livello:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "File originale:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Tipo:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "Identificazione:" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Nome utente:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "Risposta HTTP:" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Byte inviati:" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Crea una nuova scheda" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "Crea una nuova scheda per visualizzare un altro registro." + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Chiudi la scheda corrente" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Chiude la scheda corrente." + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Apri un file in KSystemLog" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" +"Apre un file in KSystemLog e visualizza il suo contenuto nella scheda corrente." + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "Salva la selezione su file" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" +"Salva la selezione su file. Questa azione è utile se vuoi creare allegati o " +"copie di sicurezza di un particolare registro." + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Esci da KSystemLog" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Esce da KSystemLog." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "Copia la selezione negli appunti" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"Copia la selezione negli appunti. Questa azione è utile se vuoi incollare la " +"selezione in una chat oppure in un messaggio di posta elettronica." + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "Sp&edisci selezione" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "Spedisci la selezione per posta elettronica" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"Spedisce la selezione per posta elettronica. Semplicemente seleziona le righe " +"importanti e fai clic su questa voce del menu per inviare la selezione a un " +"amico oppure a una mailing list." + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&Nuova scheda" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Chiudi scheda" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Duplica scheda" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Duplica la scheda corrente" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Duplica la scheda corrente." + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Ricarica il registro corrente" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Ri&pristina analisi" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "Arres&ta analisi" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Dettagli" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "Registro di s&istema" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Mostra il registro di sistema." + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "Registro del &kernel" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Mostra il registro del kernel." + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "Registro di &avvio" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Mostra il registro di avvio." + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "Registro di a&utenticazione" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Mostra il registro di autenticazione." + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "Registro dei &daemon" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Mostra il registro dei daemon." + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "Registro delle operazioni &pianificate" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "Mostra il registro delle operazioni pianificate (registro di cron)." + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "Registro di &X.org" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Mostra il registro di X.org." + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "Registro dell'&ACPI" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Mostra il registro dell'ACPI." + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "Registro di &cups" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Mostra il registro di cups." + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "Nessun registro" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" +"1 riga di registro.\n" +"%n righe di registro." + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "Ultimo aggiornamento: %1." + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "" + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Apri indirizzo" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "Impossibile aprire il file." + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Giorno" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "Ora" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "File registro" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "Avanzamento caricamento" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Caricamento registro..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "Registro caricato correttamente." + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "Strumento di visualizzazione dei registri di sistema per KDE" + +#: main.cpp:35 +msgid "Document to open" +msgstr "" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "Generale" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "" + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "Permessi non sufficienti" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Ora" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Host" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "Filtro:" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "Colonna:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Tutto" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Riga" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "non implementato" + +#~ msgid "&Apache log" +#~ msgstr "Registro di &apache" + +#~ msgid "Pro&FTP log" +#~ msgstr "Registro di Pro&FTP" + +#~ msgid "Sa&mba log" +#~ msgstr "Registro di Sa&mba" diff --git a/ksystemlog/po/ksystemlog.pot b/ksystemlog/po/ksystemlog.pot new file mode 100644 index 0000000..d71c14f --- /dev/null +++ b/ksystemlog/po/ksystemlog.pot @@ -0,0 +1,1198 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-06-29 00:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: defaultReader.cpp:93 +msgid "Opening file '%1'..." +msgstr "" + +#: defaultReader.cpp:123 +msgid "No log line in '%1'." +msgstr "" + +#: defaultReader.cpp:177 +msgid "Log file '%1' loaded successfully." +msgstr "" + +#: defaultReader.cpp:271 +msgid "Log file '%1' has changed." +msgstr "" + +#: defaultReader.cpp:434 globals.cpp:42 itemFactory.cpp:112 +#: itemFactory.cpp:375 +msgid "none" +msgstr "" + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no " +"previous log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add File..." +msgstr "" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to " +"be read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files " +"to be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File List" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All Files (*)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log Files (*.log)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose Log File" +msgstr "" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "" + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "" + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "" + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum lines displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the " +"main view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines (may be " +"slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of characters:" +msgstr "" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log line." +"" +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each " +"log line." +msgstr "" + +#: generalOptions.cpp:77 +msgid "Delete process identifier from process name" +msgstr "" + +#: generalOptions.cpp:80 +msgid "Delete process identifier from process name." +msgstr "" + +#: generalOptions.cpp:81 +msgid "" +"You can select this option if you want to delete the process identifier " +"from process name. For example, you will sometimes see in the Process " +"column something like cron[3433]. If this option is activated, " +"the annoying bold part will be erased." +msgstr "" + +#: generalOptions.cpp:83 +msgid "Colorize log lines" +msgstr "" + +#: generalOptions.cpp:86 +msgid "" +"This option allows the colorization of log lines, depending on their log " +"level." +msgstr "" + +#: generalOptions.cpp:87 +msgid "" +"This option allows the colorization of log lines, depending on their log " +"level. For example, an error will be in red, an warning in orange... This " +"will help you to better see problems." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "" + +#: globals.cpp:48 +msgid "information" +msgstr "" + +#: globals.cpp:51 +msgid "notice" +msgstr "" + +#: globals.cpp:54 +msgid "warning" +msgstr "" + +#: globals.cpp:57 +msgid "error" +msgstr "" + +#: globals.cpp:60 +msgid "critical" +msgstr "" + +#: globals.cpp:63 +msgid "alert" +msgstr "" + +#: globals.cpp:66 +msgid "emergency" +msgstr "" + +#: globals.cpp:97 ksystemlog.cpp:668 +msgid "No Log" +msgstr "" + +#: globals.cpp:100 +msgid "File Log" +msgstr "" + +#: globals.cpp:103 options.cpp:144 +msgid "System Log" +msgstr "" + +#: globals.cpp:106 options.cpp:173 +msgid "Kernel Log" +msgstr "" + +#: globals.cpp:109 options.cpp:254 +msgid "X.org Log" +msgstr "" + +#: globals.cpp:112 globals.cpp:145 +msgid "Samba Log" +msgstr "" + +#: globals.cpp:115 +msgid "Boot Log" +msgstr "" + +#: globals.cpp:118 +msgid "Authentication Log" +msgstr "" + +#: globals.cpp:121 options.cpp:200 +msgid "Cron Log" +msgstr "" + +#: globals.cpp:124 +msgid "Daemon Log" +msgstr "" + +#: globals.cpp:127 options.cpp:283 +msgid "ACPI Log" +msgstr "" + +#: globals.cpp:130 options.cpp:312 +msgid "CUPS Log" +msgstr "" + +#: globals.cpp:133 +msgid "CUPS Access Log" +msgstr "" + +#: globals.cpp:136 options.cpp:340 +msgid "Apache Log" +msgstr "" + +#: globals.cpp:139 +msgid "Apache Access Log" +msgstr "" + +#: globals.cpp:142 options.cpp:369 +msgid "Postfix Log" +msgstr "" + +#: itemFactory.cpp:85 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:87 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:95 +msgid "%1, %2h" +msgstr "" + +#: itemFactory.cpp:238 itemFactory.cpp:241 itemFactory.cpp:245 +#: itemFactory.cpp:248 itemFactory.cpp:256 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:244 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:254 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:269 itemFactory.cpp:288 itemFactory.cpp:306 +#: itemFactory.cpp:320 itemFactory.cpp:335 itemFactory.cpp:358 +msgid "Date:" +msgstr "" + +#: itemFactory.cpp:270 itemFactory.cpp:289 itemFactory.cpp:337 +msgid "Hostname:" +msgstr "" + +#: itemFactory.cpp:271 itemFactory.cpp:290 +msgid "Process:" +msgstr "" + +#: itemFactory.cpp:272 +msgid "User:" +msgstr "" + +#: itemFactory.cpp:273 itemFactory.cpp:291 itemFactory.cpp:307 +#: itemFactory.cpp:321 itemFactory.cpp:336 itemFactory.cpp:359 +msgid "Level:" +msgstr "" + +#: itemFactory.cpp:274 itemFactory.cpp:292 itemFactory.cpp:360 +#: itemFactory.cpp:379 +msgid "Original file:" +msgstr "" + +#: itemFactory.cpp:308 itemFactory.cpp:375 itemFactory.cpp:377 +msgid "Type:" +msgstr "" + +#: itemFactory.cpp:338 +msgid "Identification:" +msgstr "" + +#: itemFactory.cpp:339 +msgid "Username:" +msgstr "" + +#: itemFactory.cpp:340 +msgid "HTTP response:" +msgstr "" + +#: itemFactory.cpp:341 +msgid "Bytes sent:" +msgstr "" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Create a new tab" +msgstr "" + +#: ksystemlog.cpp:152 ksystemlog.cpp:307 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Close the current tab" +msgstr "" + +#: ksystemlog.cpp:158 ksystemlog.cpp:311 +msgid "Closes the current tab." +msgstr "" + +#: ksystemlog.cpp:259 +msgid "Open a file in KSystemLog" +msgstr "" + +#: ksystemlog.cpp:260 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:266 +msgid "Save the selection to a file" +msgstr "" + +#: ksystemlog.cpp:267 +msgid "" +"Saves the selection to a file. This action is useful if you want to create " +"an attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:271 +msgid "Quit KSystemLog" +msgstr "" + +#: ksystemlog.cpp:272 +msgid "Quits KSystemLog." +msgstr "" + +#: ksystemlog.cpp:275 +msgid "Copy the selection to the clipboard" +msgstr "" + +#: ksystemlog.cpp:276 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:279 +msgid "&Email Selection..." +msgstr "" + +#: ksystemlog.cpp:280 +msgid "Send the selection by mail" +msgstr "" + +#: ksystemlog.cpp:281 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:285 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:286 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:292 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:305 +msgid "&New Tab" +msgstr "" + +#: ksystemlog.cpp:309 +msgid "&Close Tab" +msgstr "" + +#: ksystemlog.cpp:313 +msgid "&Duplicate Tab" +msgstr "" + +#: ksystemlog.cpp:314 +msgid "Duplicate the current tab" +msgstr "" + +#: ksystemlog.cpp:315 +msgid "Duplicates the current tab." +msgstr "" + +#: ksystemlog.cpp:317 +msgid "Move Tab &Left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:319 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move Tab &Right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:323 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:327 +msgid "Reload the current log" +msgstr "" + +#: ksystemlog.cpp:328 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:330 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:332 +msgid "" +"Resumes the watching of the current log. This action is only available when " +"the user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:335 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:337 +msgid "" +"Pauses the watching of the current log. This action is particularly useful " +"when the system is writing too many lines to log files, causing KSystemLog " +"to reload too frequently." +msgstr "" + +#: ksystemlog.cpp:339 +msgid "&Details" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:341 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:344 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:346 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:351 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:353 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:388 +msgid "S&ystem Log" +msgstr "" + +#: ksystemlog.cpp:389 +msgid "Display the system log." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:396 +msgid "&Kernel Log" +msgstr "" + +#: ksystemlog.cpp:397 +msgid "Display the kernel log." +msgstr "" + +#: ksystemlog.cpp:398 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what " +"is the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Boot Log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the boot log." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want " +"to verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:412 +msgid "A&uthentication Log" +msgstr "" + +#: ksystemlog.cpp:413 +msgid "Display the authentication log." +msgstr "" + +#: ksystemlog.cpp:414 +msgid "" +"Displays the authentication log in the current tab. This log displays " +"all log in made by each user of the system, and can help you to know if " +"someone tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:420 +msgid "&Daemons Log" +msgstr "" + +#: ksystemlog.cpp:421 +msgid "Display the daemons log." +msgstr "" + +#: ksystemlog.cpp:422 +msgid "" +"Displays the daemons log in the current tab. The daemons are all " +"processes launched in the background of the system. See this log if you want " +"to know what it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:428 +msgid "&Planned Tasks Log" +msgstr "" + +#: ksystemlog.cpp:429 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:430 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the last-" +"launched processes." +msgstr "" + +#: ksystemlog.cpp:436 +msgid "&X.org Log" +msgstr "" + +#: ksystemlog.cpp:437 +msgid "Display the X.org log." +msgstr "" + +#: ksystemlog.cpp:438 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your " +"input device is not recognized." +msgstr "" + +#: ksystemlog.cpp:444 +msgid "&ACPI Log" +msgstr "" + +#: ksystemlog.cpp:445 +msgid "Display the ACPI log." +msgstr "" + +#: ksystemlog.cpp:446 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:452 +msgid "&Cups Log" +msgstr "" + +#: ksystemlog.cpp:453 +msgid "Display the Cups log." +msgstr "" + +#: ksystemlog.cpp:454 +msgid "" +"Displays the CUPS log in the current tab. CUPS is the program which " +"manage printing on your computer." +msgstr "" + +#: ksystemlog.cpp:460 +msgid "&Cups Web Log" +msgstr "" + +#: ksystemlog.cpp:461 +msgid "Display the CUPS Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:462 +msgid "" +"Displays the CUPS Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the CUPS embedded web server (default: http://localhost:631)." +msgstr "" + +#: ksystemlog.cpp:469 +msgid "&Apache log" +msgstr "" + +#: ksystemlog.cpp:470 +msgid "Display the Apache log." +msgstr "" + +#: ksystemlog.cpp:471 +msgid "" +"Displays the Apache log in the current tab. Apache is the main used Web " +"server in the world." +msgstr "" + +#: ksystemlog.cpp:477 +msgid "&Apache Web log" +msgstr "" + +#: ksystemlog.cpp:478 +msgid "Display the Apache Access log." +msgstr "" + +#: ksystemlog.cpp:479 +msgid "" +"Displays the Apache Access log in the current tab. CUPS is the program " +"which manage printing on your computer. This log saves all requests " +"performed by the Apache web server." +msgstr "" + +#: ksystemlog.cpp:485 +msgid "&Postfix Log" +msgstr "" + +#: ksystemlog.cpp:486 +msgid "Display the Postfix log." +msgstr "" + +#: ksystemlog.cpp:487 +msgid "" +"Displays the Postfix log in the current tab. Postfix is the most known " +"and used mail server in the Linux world." +msgstr "" + +#: ksystemlog.cpp:493 +msgid "&Samba Log" +msgstr "" + +#: ksystemlog.cpp:494 +msgid "Display the Samba log." +msgstr "" + +#: ksystemlog.cpp:495 +msgid "" +"Displays the Samba log in the current tab. Samba is the file sharing " +"server which interacts with Microsoft Windows network." +msgstr "" + +#: ksystemlog.cpp:1012 +msgid "1 log line." +msgstr "" + +#: ksystemlog.cpp:1016 +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:1054 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1061 +msgid "1 log line copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1072 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1102 +msgid "1 log line saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1105 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1106 +msgid "Unable to save file." +msgstr "" + +#: ksystemlog.cpp:1211 +msgid "Open Location" +msgstr "" + +#: ksystemlog.cpp:1224 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1225 +msgid "Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1586 +msgid "Group By" +msgstr "" + +#: ksystemlog.cpp:1591 +msgid "None" +msgstr "" + +#: ksystemlog.cpp:1595 +msgid "Log Level" +msgstr "" + +#: ksystemlog.cpp:1597 +msgid "Day" +msgstr "" + +#: ksystemlog.cpp:1599 +msgid "Hour" +msgstr "" + +#: ksystemlog.cpp:1601 +msgid "Log File" +msgstr "" + +#: ksystemlog.cpp:1735 +msgid "Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1737 ksystemlog.cpp:1754 +msgid "---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1758 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1758 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1772 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "" + +#: loadingDialog.cpp:111 +msgid "Loading %1 [%2/%3 file] (%4/%5)..." +msgstr "" + +#: loadingDialog.cpp:113 +msgid "Reloading %1 [%2/%3 file] (%4/%5)..." +msgstr "" + +#: loadingDialog.cpp:118 +msgid "Loading %1 [%2/%3 file]..." +msgstr "" + +#: loadingDialog.cpp:120 +msgid "Reloading %1 [%2/%3 file]..." +msgstr "" + +#: loadingDialog.cpp:129 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:131 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:136 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:138 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:103 +msgid "Loading log..." +msgstr "" + +#: logManager.cpp:123 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:224 +msgid "%1 (%2)" +msgstr "" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: options.cpp:89 +msgid "General" +msgstr "" + +#: options.cpp:118 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:118 +msgid "Boot & Authentication Logs" +msgstr "" + +#: options.cpp:227 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:283 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:312 +msgid "CUPS & CUPS Web Server Log" +msgstr "" + +#: options.cpp:340 +msgid "Apache and Web Access Logs" +msgstr "" + +#: parsingHelper.cpp:87 +msgid "%1 B" +msgstr "" + +#: parsingHelper.cpp:92 +msgid "%1 KB" +msgstr "" + +#: parsingHelper.cpp:98 +msgid "%1 MB" +msgstr "" + +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#: rc.cpp:12 +#, no-c-format +msgid "&CUPS" +msgstr "" + +#: rc.cpp:15 +#, no-c-format +msgid "&Apache" +msgstr "" + +#: rc.cpp:21 +#, no-c-format +msgid "&Window" +msgstr "" + +#: rc.cpp:24 +#, no-c-format +msgid "Main Logs Toolbar" +msgstr "" + +#: reader.cpp:115 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:116 reader.cpp:128 +msgid "The File Does Not Exist" +msgstr "" + +#: reader.cpp:127 +msgid "The file '%1' does not exist." +msgstr "" + +#: reader.cpp:136 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:137 +msgid "Insufficient Permissions" +msgstr "" + +#: readerFactory.cpp:338 readerFactory.cpp:370 readerFactory.cpp:401 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:351 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: specificFileList.cpp:48 +msgid "&Change Status..." +msgstr "" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation " +"for more information about each log level." +msgstr "" + +#: specificFileList.cpp:54 +msgid "&Change Status" +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting File Type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them " +"to be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "" + +#: view.cpp:270 +msgid "" +"

This is the main view of KSystemLog. It displays the last lines of " +"the selected log. Please see the documentation to discovers the meaning of " +"each icons and existing log.

Log lines in bold are the last " +"added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. " +"\"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" diff --git a/ksystemlog/po/pa.po b/ksystemlog/po/pa.po new file mode 100644 index 0000000..3b44365 --- /dev/null +++ b/ksystemlog/po/pa.po @@ -0,0 +1,1323 @@ +# translation of ksystemlog.po to Panjabi +# Amanpreet Singh Alam , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-06-07 13:03+0530\n" +"Last-Translator: Amanpreet Singh Alam \n" +"Language-Team: Panjabi \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.9.1\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Amanpreet Singh Alam[ਆਲਮ]" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "aalam@redhat.com" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "ਮਿਤੀ" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "ਕਿਸਮ" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "ਸੁਨੇਹਾ" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "ਬੂਟ ਲਾਗ ਫਾਇਲ" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "ਬੂਟ ਲਾਗ ਫਾਇਲ:" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਾਗ ਫਾਇਲ" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਾਗ ਫਾਇਲ:" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "ਮੇਜ਼ਬਾਨ ਨਾਂ" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "ਕਾਰਜ" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "ਉਪਭੋਗਤਾ" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "ਜਵਾਬ" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "ਬਾਇਟ ਭੇਜੇ" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "HTTP ਬੇਨਤੀ" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "debug 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "'%1' ਫਾਇਲ ਖੋਲੀ ਜਾ ਰਹੀ ਹੈ..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "'%1' ਵਿੱਚ ਕੋਈ ਲਾਗ ਸਤਰ ਨਹੀਂ ਹੈ..." + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "ਲਾਗ ਫਾਇਲ '%1' ਸਫ਼ਲਤਾਪੂਰਕ ਲੋਡ ਕੀਤੀ ਗਈ ਹੈ।" + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "ਲਾਗ ਫਾਇਲ '%1' ਤਬਦੀਲ ਹੈ।" + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "ਲਾਗ ਸਤਰ ਵੇਰਵਾ" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "ਅੱਗੇ(&N)" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "ਵੇਰਵਾ ਵਾਰਤਾਲਾਪ ਬੰਦ ਕਰੋ।" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "ਇਹ ਵੇਰਵਾ ਵਾਰਤਾਲਾਪ ਬੰਦ ਕਰੋ।" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "ਇੱਕ ਫਾਇਲ ਸ਼ਾਮਿਲ(&A)" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "ਨਵੀਂ ਫਾਇਲ ਦੀ ਚੋਣ ਕਰੋ" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "ਮੌਜੂਦਾ ਫਾਇਲ ਹਟਾਓ" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "ਉੱਪਰ ਭੇਜੋ(&U)" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "ਹੇਠਾਂ ਜਾਓ(&D)" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "ਸਭ ਹਟਾਓ(&m)" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "ਸਭ ਫਾਇਲਾਂ ਹਟਾਓ" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "ਫਾਇਲ ਸੂਚੀ" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "ਸਭ ਫਾਇਲਾਂ (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "ਲਾਗ ਫਾਇਲਾਂ (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "ਇੱਕ ਲਾਗ ਫਾਇਲ ਚੁਣੋ" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "'%1' ਠੀਕ ਨਹੀਂ ਹੈ।" + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "ਫਾਇਲ ਚੋਣ ਅਸਫ਼ਲ" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "'%1' ਲੋਕਲ ਫਾਇਲ ਨਹੀਂ ਹੈ।" + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "'%1' ਇੱਕ ਫੋਲਡਰ ਹੈ।" + +#: generalOptions.cpp:49 +#, fuzzy +msgid "Log Lines List" +msgstr "ਲਾਗ ਸਤਰ ਵੇਰਵਾ" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "ਡੀਬੱਗ" + +#: globals.cpp:48 +msgid "information" +msgstr "ਜਾਣਕਾਰੀ" + +#: globals.cpp:51 +msgid "notice" +msgstr "ਸੂਚਨਾ" + +#: globals.cpp:54 +msgid "warning" +msgstr "ਚੇਤਾਵਨੀ" + +#: globals.cpp:57 +msgid "error" +msgstr "ਗਲਤੀ" + +#: globals.cpp:60 +msgid "critical" +msgstr "ਘਾਤਕ" + +#: globals.cpp:63 +msgid "alert" +msgstr "ਚੇਤਾਵਨੀ" + +#: globals.cpp:66 +msgid "emergency" +msgstr "ਸੰਕਟਕਾਲੀਨ" + +#: globals.cpp:91 +msgid "No log" +msgstr "ਕੋਈ ਲਾਗ ਨਹੀਂ" + +#: globals.cpp:94 +msgid "File log" +msgstr "ਫਾਇਲ ਲਾਗ" + +#: globals.cpp:97 +msgid "System log" +msgstr "ਸਿਸਟਮ ਲਾਗ" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "ਕਰਨਲ ਲਾਗ" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "X.org ਲਾਗ" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "ਸਾਂਬਾ ਲਾਗ" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "ਬੂਟ ਲਾਗ" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "ਪ੍ਰਮਾਣਕਿਤਾ ਲਾਗ" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "ਕਰੋਨ ਲਾਗ" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "ਡਾਈਮੋਨ ਲਾਗ" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "ACPI ਲਾਗ" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "Cups log" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "Cups Access log" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:88 +#, fuzzy +msgid "%1, %2h" +msgstr "%1 (%2)" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "ਮਿਤੀ:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "ਮੇਜ਼ਬਾਨ ਨਾਂ:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "ਕਾਰਜ:" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "ਉਪਭੋਗੀ:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "ਪੱਧਰ:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "ਅਸਲੀ ਫਾਇਲ:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "ਕਿਸਮ:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "ਪਛਾਣ:" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "ਉਪਭੋਗੀ ਨਾਂ:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "HTTP ਜਵਾਬ:" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "ਭੇਜੇ ਬਾਇਟ:" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "ਨਵੀਂ ਟੈਬ ਬਣਾਓ" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "ਮੌਜੂਦਾ ਟੈਬ ਬੰਦ ਕਰੋ" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "ਮੌਜੂਦਾ ਟੈਬ ਬੰਦ ਕਰੋ।" + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "KSystemLog ਵਿੱਚ ਇੱਕ ਫਾਇਲ ਖੋਲੋ" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "ਚੋਣ ਨੂੰ ਇੱਕ ਫਾਇਲ ਵਿੱਚ ਸੰਭਾਲੋ" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "KSystemLog ਬੰਦ" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "KSystemLog ਬੰਦ ਕਰੋ।" + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "ਚੋਣ ਨੂੰ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਨਕਲ" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "ਚੋਣ ਈਮੇਲ ਕਰੋ(&E)" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "ਚੋਣ ਨੂੰ ਮੇਲ ਰਾਹੀਂ ਭੇਜੋ" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "ਨਵੀਂ ਟੈਬ(&N)" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "ਟੈਬ ਬੰਦ(&C)" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "ਦੁਹਰੀ ਟੈਬ(&D)" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "ਮੌਜੂਦਾ ਟੈਬ ਦੀ ਡੁਪਲੀਕੇਟ" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "ਮੌਜੂਦਾ ਟੈਬ ਦੀ ਡੁਪਲੀਕੇਟ" + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "ਟੈਬ ਖੱਬੇ ਕਰੋ(&l)" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "ਪਾਰਸਿੰਗ ਰੋਕੋ(&t)" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "ਵੇਰਵਾ(&D)" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "ਨਵੀਆਂ ਸਤਰਾਂ ਵਿਖਾਓ(&D)" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "ਸਿਸਟਮ ਲਾਗ(&y)" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "ਸਿਸਟਮ ਲਾਗ ਵਿਖਾਓ।" + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "ਕਰਨਲ ਲਾਗ(&K)" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "ਕਰਨਲ ਲਾਗ ਵਿਖਾਓ।" + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "ਬੂਟ ਲਾਗ(&B)" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "ਬੂਟ ਲਾਗ ਵਿਖਾਉ।" + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਾਗ(&u)" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "" + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "ਡਾਈਮੋਨ ਲਾਗ(&D)" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "" + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "&X.org ਲਾਗ" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "" + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "&ACPI ਲਾਗ" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "" + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "&Cups ਲਾਗ" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "" + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "ਕੋਈ ਲਾਗ ਨਹੀਂ" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "" + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "ਸਥਿਤੀ ਖੋਲੋ" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "ਇਹ ਫਾਇਲ ਖੋਲਣ ਲਈ ਅਸਫ਼ਲ ਹੈ।" + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "ਗਰੁੱਪ" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "ਲਾਗ ਪੱਧਰ" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "" + +#: ksystemlog.cpp:1596 +#, fuzzy +msgid "Log File" +msgstr "ਬੂਟ ਲਾਗ ਫਾਇਲ" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" +"---------------------------------------\n" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +#, fuzzy +msgid "Loading Progress" +msgstr "ਲਾਗ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "ਲਾਗ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "ਖੋਲਣ ਲਈ ਦਸਤਾਵੇਜ਼" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "ਸਧਾਰਨ" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "ਸਿਸਟਮ ਲਾਗ" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "ਕਰਨਲ ਲਾਗ" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "ਕਰੋਨ ਲਾਗ" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "ਡਾਈਮੋਨ ਲਾਗ" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "X.org ਲਾਗ" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "ACPI ਲਾਗ" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "ਲਾਗ(&L)" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&Cups" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "ਝਰੋਖਾ(&W)" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "ਲਾਗ ਸੰਦ-ਪੱਟੀ" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "ਮੁੱਖ ਸੰਦਪੱਟੀ" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "ਫਾਇਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "ਫਾਇਲ '%1' ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "ਨਾ-ਲੋੜੀਦੇ ਅਧਿਕਾਰ" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "ਸਮਾਂ" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "ਮੇਜ਼ਬਾਨ" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "ਸਥਿਤੀ ਤਬਦੀਲ(&C)" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "ਫਿਲਟਰ ਹਟਾਓ" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "ਫਿਲਟਰ:" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "ਕਾਲਮ:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "ਸਭ" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "ਖੋਜਿਆ" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਤੋਂ" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "ਮੂਲ ਵਿਵਸਥਾ" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "ਕਮਾਂਡ ਲਾਇਨ ਤੋਂ" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "" + +#~ msgid "&Apache log" +#~ msgstr "&Apache ਲਾਗ" + +#~ msgid "Pro&FTP log" +#~ msgstr "Pro&FTP ਲਾਗ" + +#~ msgid "Sa&mba log" +#~ msgstr "ਸਾਂਬਾ ਲਾਗ(&m)" + +#~ msgid "Parsing" +#~ msgstr "ਪਾਰਸਿੰਗ" + +#~ msgid "Order" +#~ msgstr "ਕ੍ਰਮ" diff --git a/ksystemlog/po/pl.po b/ksystemlog/po/pl.po new file mode 100644 index 0000000..7600a06 --- /dev/null +++ b/ksystemlog/po/pl.po @@ -0,0 +1,1501 @@ +# translation of ksystemlog.po to +# translation of ksystemlog2.po to +# Marcin Raubal , 2005. +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-05-28 11:30+0200\n" +"Last-Translator: Marcin Raubal \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Marcin Raubal" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "marcin@jamaro.pl" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowane by wyświetlić dziennik ACPId" +". Ta lista określa również kolejność wczytywania plików.

" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Data" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Typ" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Wiadomość" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "brak" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "Plik dziennika rozruchu" + +#: bootAuthenticationOptions.cpp:52 +#, fuzzy +msgid "Boot Log File:" +msgstr "Plik dziennika rozruchu (Boot Log):" + +#: bootAuthenticationOptions.cpp:56 +#, fuzzy +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" +"Tutaj możesz wpisać lub wybrać plik dziennika rozruchu (np. " +"/var/log/boot.log)." + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" +"Tutaj możesz wpisać lub wybrać plik dziennika rozruchu (Boot Log). Plik " +"zostanie zanalizowany przez KSystemLog po wybraniu pozycji " +"Dziennik rozruchu z menu. Zazwyczaj jest to /var/log/boot.log" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "Plik dziennika uwierzytelniania" + +#: bootAuthenticationOptions.cpp:64 +#, fuzzy +msgid "Authentication Log File:" +msgstr "Plik dziennika uwierzytelniania:" + +#: bootAuthenticationOptions.cpp:68 +#, fuzzy +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" +"Tutaj możesz wpisać lub wybrać plik dziennika uwierzytelniania (np. " +"/var/log/auth.log)." + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" +"Tutaj możesz wpisać lub wybrać plik dziennika uwierzytelnienia. Plik " +"zostanie zanalizowany przez KSystemLog po wybraniu pozycji " +"Dziennik uwierzytelniania z menu. Zazwyczaj jest to /var/log/auth.log" +"" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowanie by wyświetlić dziennik Cron-a " +"(dziennik zaplanowanych zadań). Ta lista wyznacza kolejność, w jakiej pliki " +"zostaną wczytane.

" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Nazwa hosta" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Proces" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Użytkownik" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Odpowiedź" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Bajtów wysłanych" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "Żądanie HTTP" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowanie by wyświetlić dziennik CUPS" +". Ta lista określa również kolejność wczytywania plików.

" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowanie by wyświetlić dziennik CUPS Web Server" +". Ta lista określa również kolejność wczytywania plików.

" + +#: cupsReader.cpp:77 +#, fuzzy +msgid "debug 2" +msgstr "debuguj" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" +"Wykryto nowy poziom dziennika: Proszę wyślij ten dziennik do dewelopera " +"KSystemLog, aby mógł go dodać." + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowanie by wyświetlić dziennik demonów" +". Ta lista określa również kolejność wczytywania plików.

" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Otwieranie pliku '%1'..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "Brak linii dziennika w '%1'." + +#: defaultReader.cpp:294 +#, fuzzy +msgid "Log file '%1' loaded successfully." +msgstr "Plik dziennika załadowany pomyślnie." + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "Plik dziennika '%1' został zmieniony." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "Szczegóły linii dziennika" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" +"To okno dialogowe wyświetla szczegółowe informacje o aktualnie wybranej linii " +"dziennika." + +#: detailDialog.cpp:83 +#, fuzzy +msgid "Move to the previous line" +msgstr "Przesuń do poprzedniej linii dziennika" + +#: detailDialog.cpp:84 +#, fuzzy +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" +"Przesuwa do poprzedniej linii dziennika. Ten przycisk jest nieaktywny jeśli " +"istnieje poprzednia linia." + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Następny" + +#: detailDialog.cpp:93 +#, fuzzy +msgid "Move to the next line" +msgstr "Przesuń do następnej linii dziennika" + +#: detailDialog.cpp:94 +#, fuzzy +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" +"Przesuwa do następnej linii dziennika. Ten przycisk jest nieaktywny jeśli " +"istnieje następna linia." + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "Zamknij okno szczegółów." + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "Zamyka okno szczegółów." + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "Lista plików użytych przez ten typ dziennika" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" +"Tutaj jest lista wszystkich plików czytanych przez KSystemLog aby " +"wyświetlić bieżące linie dziennika." + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "&Dodaj plik" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Wybierz nowy plik" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "Otwiera okno dialogowe wyboru nowego pliku do dodania." + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "Usuń bieżący(e) plik(i)" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "Usuwa wybrane pliki z listy." + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Przenieś &wyżej" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "Przenieś wyżej bieżący(e) plik(i)" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" +"Przenosi wyżej wybrane pliki z listy. Ta opcja pozwala na odczyt plików" +"w pierwszej kolejności przez KSystemLog." + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Przenieś &niżej" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "Przenosi niżej bieżący(e) plik(i)" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" +"Przenosi niżej wybrane pliki w liście. Ta opcja pozwala czytanie plików " +"jako ostatnie przez KSystemLog" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "&Usuń wszystkie" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "Usuń wszystkie pliki" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "Usuń wszystkie pliki z listy, nawet jeśli nie są zaznaczone." + +#: fileList.cpp:95 +msgid "File list" +msgstr "Lista plików" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Wszystkie pliki (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "Pliki dziennika (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Wybierz plik dziennika" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "'%1' nie jest poprawny." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "Nieudany wybór pliku" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "'%1' nie jest plikiem lokalnym." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "'%1' jest folderem." + +#: generalOptions.cpp:49 +#, fuzzy +msgid "Log Lines List" +msgstr "Szczegóły linii dziennika" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" +"Wybierz maksymalną liczbę linii dziennika wyświetlanych w głównym " +"widoku." + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" +"Tutaj możesz wybrać maksymalną liczbę linii dziennika wyświetlanych w " +"głównym widoku." + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "" + +#: generalOptions.cpp:71 +#, fuzzy +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" +"Wybierz maksymalną liczbę linii dziennika wyświetlanych w głównym " +"widoku." + +#: generalOptions.cpp:72 +#, fuzzy +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" +"Tutaj możesz wybrać maksymalną liczbę linii dziennika wyświetlanych w " +"głównym widoku." + +#: globals.cpp:45 +msgid "debug" +msgstr "debuguj" + +#: globals.cpp:48 +msgid "information" +msgstr "informacja" + +#: globals.cpp:51 +msgid "notice" +msgstr "notatka" + +#: globals.cpp:54 +msgid "warning" +msgstr "ostrzeżenie" + +#: globals.cpp:57 +msgid "error" +msgstr "błąd" + +#: globals.cpp:60 +msgid "critical" +msgstr "krytyczny" + +#: globals.cpp:63 +msgid "alert" +msgstr "alert" + +#: globals.cpp:66 +msgid "emergency" +msgstr "awaria" + +#: globals.cpp:91 +msgid "No log" +msgstr "Brak dziennika" + +#: globals.cpp:94 +msgid "File log" +msgstr "Dziennik pliku" + +#: globals.cpp:97 +msgid "System log" +msgstr "Dziennik systemu" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Dziennik kernela" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "Dziennik X.org" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Dziennik Samby" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Dziennik rozruchu" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Dziennik uwierzytelniania" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Dziennik Cron-a" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Dziennik demonów" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "Dziennik ACPI" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "Dziennik CUPS" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "Dziennik CUPS Access" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:88 +#, fuzzy +msgid "%1, %2h" +msgstr "%1 (%2)" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +#, fuzzy +msgid "Date:" +msgstr "Data:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +#, fuzzy +msgid "Hostname:" +msgstr "Nazwa hosta :" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +#, fuzzy +msgid "Process:" +msgstr "Proces:" + +#: itemFactory.cpp:263 +#, fuzzy +msgid "User:" +msgstr "Użytkownik:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +#, fuzzy +msgid "Level:" +msgstr "Poziom:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +#, fuzzy +msgid "Original File:" +msgstr "Oryginalny plik:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +#, fuzzy +msgid "Type:" +msgstr "Typ:" + +#: itemFactory.cpp:329 +#, fuzzy +msgid "Identification:" +msgstr "Identyfikacja:" + +#: itemFactory.cpp:330 +#, fuzzy +msgid "Username:" +msgstr "Nazwa użytkownika:" + +#: itemFactory.cpp:331 +#, fuzzy +msgid "HTTP Response:" +msgstr "Odpowiedź HTTP:" + +#: itemFactory.cpp:332 +#, fuzzy +msgid "Bytes Sent:" +msgstr "Bajtów wysłanych:" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowanie by wyświetlić dziennik kernela" +". Ta lista określa również kolejność wczytywania plików.

" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Utwórz nową zakładkę" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "Tworzy nową zakładkę, która może wyświetlać inny dziennik." + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Zamknij bieżącą zakładkę" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Zamyka bieżącą zakładkę." + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Otwórz plik w KSystemLog " + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" +"Otwiera plik w KSystemLog i wyświetla jego zawartość w bieżącej zakładce." + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "Zapisz zaznaczenie do pliku" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" +"Zapisuje zaznaczenie do pliku. Ta akcja jest użyteczna, jeśli chcesz utworzyć " +"załącznik lub kopię zapasową dziennika." + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Zamknij KSystemLog" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Zamyka KSystemLog." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "Kopiuj zaznaczenie do schowka" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"Kopiuje zaznaczenie do schowka. Ta akcja jest użyteczna jeśli chcesz wkleić " +"zaznaczenie do okienka czatu lub do wiadomości e-mail." + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "Wyślij" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "Wyślij zaznaczenie przez e-mail " + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"Wysyła zaznaczenie przez e-mail. Zaznacz ważne linie i kliknij na element menu " +"aby wysłać zaznaczenie do znajomego lub listy mailingowej." + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "Zaznacz wszystkie linie bieżącego dziennika" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" +"Zaznacz wszystkie linie bieżącego dziennika. Ta akcja jest użyteczna jeśli " +"przykładowo chcesz zapisać całą zawartość bieżącego dziennika do pliku." + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&Nowa zakładka" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "&Zamknij zakładkę" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Duplikuj zakładkę" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Duplikuj bieżącą zakładkę" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Duplikuje bieżącą zakładkę." + +#: ksystemlog.cpp:316 +#, fuzzy +msgid "Move tab &left" +msgstr "Przenieś zakładkę w &lewo" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "Przenieś bieżącą zakładkę w lewo" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "Przenosi bieżącą zakładkę w lewo." + +#: ksystemlog.cpp:320 +#, fuzzy +msgid "Move tab &right" +msgstr "Przenieś zakładkę w &prawo" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "Przenieś bieżącą zakładkę w prawo" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "Przenosi bieżącą zakładkę w prawo." + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Odśwież bieżący dziennik" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" +"Odświeża bieżący dziennik, jeśli chcesz być pewny, że aktualny widok jest " +"poprawnie uaktualniony." + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Wznów analizowanie" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "Wznów obserwację bieżącego dziennika" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" +"Wznawia obserwację bieżącego dziennika. Ta akcja jest dostępna jedynie wtedy, " +"gdy użytkownik przerwał czytanie." + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "&Zatrzymaj analizę" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "Przerwij obserwację bieżącego dziennika" + +#: ksystemlog.cpp:336 +#, fuzzy +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" +"Przerywa obserwację bieżącego dziennika. Ta akcja jest szczególnie użyteczna " +"gdy system wypisuje za dużo linii w plikach dziennika, co powoduje zbyt częste " +"przeładowania KSystemLog." + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Szczegóły" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "Wyświetla szczegóły aktualnie zaznaczonej linii" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" +"Wyświetla okno dialogowe, które zawiera szczegóły aktualnie wybranej linii. " +"Masz możliwość nawigacji w dzienniku z tego okna dialogowego poprzez przyciski " +"Poprzedni / Następny ." + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "Włącz szcz&egółowe wskazówki" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "Włącz/wyłącz wskazówki w bieżącym widoku" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" +"Włącza/wyłącza wskazówki wyświetlane po najechaniu myszką na linię dziennika." + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "&Wyświetl nowe linie" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "Wyświetl nowe linie w razie zmiany dziennika" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" +"Wyświetla nowe linie w razie zmiany dziennika. Ta opcja jest użyteczna gdy " +"chcesz zobaczyć linie starszego dziennika i żeby KSystemLog często odświeżał " +"bieżący widok." + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "Dziennik s&ystemu" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Wyświetl dziennik systemu." + +#: ksystemlog.cpp:371 +#, fuzzy +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" +"Wyświetla dziennik systemu w bieżącej zakładce. Ten log jest ogólnie stosowany " +"przez niewyspecjalizowane procesy (takie jak komendy \"sudo\" lub \"fsck\")" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "Dziennik &kernela" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Wyświetl dziennik kernela." + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" +"Wyświetla dziennik kernela w bieżącej zakładce. Ten dziennik jest użyteczny " +"dla użytkowników, którzy chcą wiedzieć dlaczego kernel nie wykrywa ich urządzeń " +"lub co jest powodem ostatniego wystąpienia kernel panic/oops." + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "Dziennik &rozruchu" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Wyświetl dziennik rozruchu." + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" +"Wyświetla dziennik rozruchu w bieżącej zakładce. Ten dziennik jest " +"użyteczny, by zweryfikować czy wszystkie usługi zostały poprawnie " +"uruchomione." + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "Dziennik &uwierzytelniania" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Wyświetl dziennik uwierzytelnienia." + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" +"Wyświetla dziennik uwierzytelniania w bieżącej zakładce. Ten dziennik " +"wyświetla wszystkie logowania do systemu wykonywane przez użytkowników i może " +"Ci pomóc, jeśli ktoś próbował włamać się do systemu." + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "Dziennik &demonów" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Wyświetl dziennik demonów." + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" +"Wyświetla dziennik demonów w bieżącej zakładce. Demony to procesy " +"uruchamiane w tle systemu. Zobacz ten dziennik jeśli chcesz jakie demony " +"zostały uruchomione w twoim systemie." + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "Dziennik za&planowanych zadań" + +#: ksystemlog.cpp:405 +#, fuzzy +msgid "Display the planned tasks log (or Cron log)." +msgstr "Wyświetl dziennik zaplanowanych zadań (Cron)." + +#: ksystemlog.cpp:406 +#, fuzzy +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" +"Wyświetla dziennik zaplanowanych zadań (Cron) w bieżącej zakładce. Cron to " +"program zarządzający uruchamianiem zaplanowanych zadań w twoim systemie, takich " +"jak sprawdzanie zabezpieczeń, lub też automatyczne restarty niektórych usług. " +"Użyj tego menu by sprawdzić ostatnio uruchomiony proces." + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "Dziennik &X.org" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Wyświetl dziennik X.org." + +#: ksystemlog.cpp:413 +#, fuzzy +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" +"Wyświetla dziennik X.org w bieżącej zakładce. X.org to usługa, które " +"wyświetla na Twoim ekranie środowisko graficzne i zarządza sprzętem graficznym. " +"Sprawdź ten dziennik jeśli chcesz się dowiedzieć dlaczego nie masz akceleracji " +"3D lub też dlaczego nie zostało rozpoznane urządzenie wskazujące." + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "Dziennik &APCI" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Wyświetl dziennik ACPI." + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" +"Wyświetla dziennik ACPI w bieżącej zakładce. ACPI wykorzystywane jest do " +"zarządzania sprzętem i oszczędzania energii w Twoim komputerze." + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "Dziennik &CUPS" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Wyświetl dziennik CUPS." + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" +"Wyświetla dziennik CUPS w bieżącej zakładce. CUPS to program zarządzający " +"drukowaniem na Twoim komputerze." + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "Dziennik &Cups Web" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "Wyświetl dziennik dostępu do Cups Web Server ." + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" +"Wyświetl dziennik dostępu do Cups Web Server w bieżącej zakładce. CUPS to " +"program zarządzający drukowaniem na Twoim komputerze. Ten dziennik zapisuje " +"wszystkie żądania do serwera CUPS (domyślnie http://localhost:631)." + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "Brak dziennika" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, fuzzy, c-format +msgid "Last updated: %1." +msgstr "Ostatnio aktualizowany: %1." + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "Brak wybranych elementów. Nic nie skopiowano do schowka." + +#: ksystemlog.cpp:995 +#, fuzzy, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "%1 linii dziennika skopiowanych do schowka." + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "Brak wybranych elementów. Proszę wybrać elementy, by móc je zapisać." + +#: ksystemlog.cpp:1036 +#, fuzzy +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "%1 linii dziennika zapisanych do '%2'." + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "Nie można zapisać pliku '%1': Zabroniony dostęp." + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Nie można zapisać pliku." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Otwórz plik" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "Nieprawidłowy URL. Nie można otworzyć tego pliku." + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "Nieudało się otworzyć tego pliku." + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "" + +#: ksystemlog.cpp:1586 +#, fuzzy +msgid "None" +msgstr "brak" + +#: ksystemlog.cpp:1590 +#, fuzzy +msgid "Log Level" +msgstr "Szczegóły linii dziennika" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "" + +#: ksystemlog.cpp:1596 +#, fuzzy +msgid "Log File" +msgstr "Plik dziennika rozruchu" + +#: ksystemlog.cpp:1730 +#, fuzzy +msgid "" +"Here are my logs:\n" +msgstr "" +"Tutaj są moje dzienniki :\n" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" +"---------------------------------------\n" + +#: ksystemlog.cpp:1753 +#, fuzzy +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" +"Wybrałeś za dużo linii. Proszę zaznaczyć tylko najważniejsze linie dziennika." + +#: ksystemlog.cpp:1753 +#, fuzzy +msgid "Too Many Lines Selected" +msgstr "Za dużo wybranych linii" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "Linie dziennika z moim problemem" + +#: loadingDialog.cpp:26 +#, fuzzy +msgid "Loading Progress" +msgstr "Wczytywanie dziennika..." + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Wczytywanie dziennika..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "Narzędzie do przeglądania logów dla KDE" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Dokument do otwarcia" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "KSystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "Pomysły, poprawki w kodzie" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "Francuskie pociągi między Paryżem i Rouen" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "Często się spóźniają, więc mam czas aby ulepszać KSystemLog ;-)" + +#: options.cpp:86 +msgid "General" +msgstr "Ogólne" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "Rozruch / Uwierzytelnianie" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "Dzienniki rozruchu i uwierzytelniania" + +#: options.cpp:141 +msgid "System Log" +msgstr "Dziennik systemowy" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "Dziennik kernela" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "Dziennik Cron-a" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "Dziennik demonów" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "Dziennik X.org" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "Dziennik ACPI" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "Dziennik demona ACPI" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "Dziennik CUPS" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "Dziennik CUPS i serwera CUPS" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "Dziennik Samby" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "&Dzienniki" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&CUPS" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Okno" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "Pasek narzędzi dziennika" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Główny pasek narzędzi" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "Ten plik nie jest poprawny. Skonfiguruj to w ustawieniach KSystemLog." + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "Plik nie istnieje" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "Plik '%1' nie istnieje." + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "Nie masz wystarczających uprawnień by odczytać '%1'." + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "Niewystarczające uprawnienia" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "URL -'%1' nie jest poprawny, pomijam ten URL." + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" +"Te dwie tablice mają różne rozmiary, pomijam czytanie plików dziennika." + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowane by wyświetlić dziennik Samby" +". Ta lista określa również kolejność wczytywania plików.

" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Czas" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Host" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "&Zmień status" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "Zmień poziom bieżącego(ych) pliku(ów)" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" +"Zmienia poziom bieżącego(ych) pliku(ów). Więcej informacji na temat każdego " +"poziomu dziennika znajduje się w dokumentacji KSystemLog." + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "Wybór typu pliku" + +#: specificFileList.cpp:116 +#, fuzzy +msgid "Please select the type of this file:" +msgstr "Wybierz typ tego pliku:" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "Lista istniejących poziomów dziennika" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" +"To jest lista wszystkich istniejących poziomów dziennika. Proszę wybrać " +"jeden z nich, by użyć go do wybranych plików listy " + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" +"Te dwie tablice mają różne rozmiary, pomijam czytanie standardowych ścieżek." + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowane by wyświetlić dziennik systemu" +". Ta lista określa również kolejność wczytywania plików.

" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "Wyczyść filtr" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "Ten przycisk czyści filtr jednym kliknięciem." + +#: view.cpp:82 +#, fuzzy +msgid "Filter:" +msgstr "Filtr :" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" +"Pozwala Ci wybrać tylko te elementy listy, które pasują do zawartości tego " +"tekstu." + +#: view.cpp:88 +#, fuzzy +msgid "Type your item filter here" +msgstr "Wpisz twój filtr pozycji tutaj" + +#: view.cpp:90 +#, fuzzy +msgid "Column:" +msgstr "Kolumna :" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Wszystkie" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" +"" +"

To jest główny widok KSystemLog-a. Wyświetla ostatnie linie wybranego " +"dziennika. Sprawdź w dokumentacji znaczenie każdej ikony i istniejących " +"dzienników

" +"

Pogrubione linie dziennika to te ostatnio dodane do listy.

" + +#: view.cpp:332 +#, fuzzy +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" +"Pozwala Ci zastosować filtr elementów na wybranej kolumnie.\"" +"Wszystkie\" oznacza brak filtru." + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "Wybierz filtrowaną kolumnę" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Te pliki zostaną zanalizowane by wyświetlić dziennik X.org" +". Ta lista wyznacza również kolejność, w jakiej pliki zostaną wczytane

" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "wypróbowane" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "z pliku konfiguracyjnego" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "ustawienie domyślne" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "z linii poleceń " + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "nie zaimplementowane" + +#~ msgid "&Apache log" +#~ msgstr "Dziennik &Apache" + +#~ msgid "Pro&FTP log" +#~ msgstr "Dziennik Pro&FTP" + +#~ msgid "Sa&mba log" +#~ msgstr "Dziennik Sa&mby" + +#~ msgid "Parsing" +#~ msgstr "Analiza" + +#, fuzzy +#~ msgid "Parsed line number:" +#~ msgstr "Liczba analizowanych linii:" + +#~ msgid "Order" +#~ msgstr "Zamów" + +#~ msgid "%1 log lines." +#~ msgstr "%1 linii dziennika." diff --git a/ksystemlog/po/rw.po b/ksystemlog/po/rw.po new file mode 100644 index 0000000..ab317bc --- /dev/null +++ b/ksystemlog/po/rw.po @@ -0,0 +1,1639 @@ +# translation of ksystemlog to Kinyarwanda. +# Copyright (C) +# This file is distributed under the same license as the ksystemlog package. +# Steve Murphy , 2005. +# Steve performed initial rough translation from compendium built from translations provided by the following translators: +# Philibert Ndandali , 2005. +# Viateur MUGENZI , 2005. +# Noëlla Mupole , 2005. +# Carole Karema , 2005. +# JEAN BAPTISTE NGENDAHAYO , 2005. +# Augustin KIBERWA , 2005. +# Donatien NSENGIYUMVA , 2005. +# Antoine Bigirimana , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog 3.4\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-05-25 18:09-0600\n" +"Last-Translator: Steve Murphy \n" +"Language-Team: Kinyarwanda \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "" +"Viateur MUGENZI, JEAN BAPTISTE NGENDAHAYO, Augustin KIBERWA, Donatien " +"NSENGIYUMVA" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "" +"muvia1@yahoo.fr, ngenda_denis@yahoo.co.uk, akiberwa@yahoo.co.uk, " +"ndonatienuk@yahoo.co.uk" + +#: acpidOptions.cpp:51 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: LOG . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Itariki" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Ubwoko" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Ubutumwa" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "ntacyo" + +#: bootAuthenticationOptions.cpp:50 +#, fuzzy +msgid "Boot Log File" +msgstr "Idosiye " + +#: bootAuthenticationOptions.cpp:52 +#, fuzzy +msgid "Boot Log File:" +msgstr "Idosiye : " + +#: bootAuthenticationOptions.cpp:56 +#, fuzzy +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" +" , Ubwoko: Cyangwa Hitamo... i LOG Idosiye ( Urugero: : < i > " +"/VAR /LOG /. LOG < /i " + +#: bootAuthenticationOptions.cpp:57 +#, fuzzy +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" +" Ubwoko: Cyangwa Hitamo... i LOG Idosiye . Idosiye ku Ryari: Hitamo... i " +"LOG Ibikubiyemo Ikintu . , Izina: ni < i > /VAR /LOG /. LOG < /i " + +#: bootAuthenticationOptions.cpp:62 +#, fuzzy +msgid "Authentication Log File" +msgstr "Idosiye " + +#: bootAuthenticationOptions.cpp:64 +#, fuzzy +msgid "Authentication Log File:" +msgstr "Idosiye : " + +#: bootAuthenticationOptions.cpp:68 +#, fuzzy +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" +" , Ubwoko: Cyangwa Hitamo... i Kwemeza LOG Idosiye ( Urugero: : < i > " +"/VAR /LOG /. LOG < /i " + +#: bootAuthenticationOptions.cpp:69 +#, fuzzy +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" +" Ubwoko: Cyangwa Hitamo... i Kwemeza LOG Idosiye . Idosiye ku Ryari: " +"Hitamo... i LOG Ibikubiyemo Ikintu . , Izina: ni < i > " +"/VAR /LOG /. LOG < /i " + +#: cronOptions.cpp:51 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "

e." + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +#, fuzzy +msgid "Host Name" +msgstr "Izina ry'ubuturo" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Ukoresha" + +#: cupsAccessReader.cpp:40 +#, fuzzy +msgid "Id." +msgstr "IKIRANGA:" + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "" + +#: cupsOptions.cpp:47 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: LOG . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: cupsOptions.cpp:48 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: LOG . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: cupsReader.cpp:77 +#, fuzzy +msgid "debug 2" +msgstr "Kosora amakosa 2 " + +#: cupsReader.cpp:97 +#, fuzzy +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr ": Kohereza iyi LOG Idosiye Kuri i Mukoraporogaramu Kuri &Ongera . " + +#: daemonOptions.cpp:51 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: defaultReader.cpp:86 +#, fuzzy +msgid "Opening file '%1'..." +msgstr "Idosiye ... " + +#: defaultReader.cpp:105 +#, fuzzy +msgid "No log line in '%1'." +msgstr "LOG Umurongo: in . " + +#: defaultReader.cpp:294 +#, fuzzy +msgid "Log file '%1' loaded successfully." +msgstr "Idosiye ' %1 ' . " + +#: defaultReader.cpp:385 +#, fuzzy +msgid "Log file '%1' has changed." +msgstr "Idosiye ' %1 ' Byahinduwe . " + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +#, fuzzy +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "Ikiganiro Ibisobanuro: Bigyanye i Byahiswemo LOG Umurongo: . " + +#: detailDialog.cpp:83 +#, fuzzy +msgid "Move to the previous line" +msgstr "Kuri i Ibanjirije Umurongo: " + +#: detailDialog.cpp:84 +#, fuzzy +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" +"Kuri i Ibanjirije Umurongo: . Akabuto ni NIBA ni Oya Ibanjirije LOG Umurongo: . " + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "Bikurikira" + +#: detailDialog.cpp:93 +#, fuzzy +msgid "Move to the next line" +msgstr "Kuri i Ibikurikira > Umurongo: " + +#: detailDialog.cpp:94 +#, fuzzy +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" +"Kuri i Ibikurikira > Umurongo: . Akabuto ni NIBA ni Oya Ibikurikira > " +"LOG Umurongo: . " + +#: detailDialog.cpp:101 +#, fuzzy +msgid "Close the Detail dialog." +msgstr "Funga i Ikiganiro . " + +#: detailDialog.cpp:102 +#, fuzzy +msgid "Closes this Detail dialog." +msgstr "iyi Ikiganiro . " + +#: fileList.cpp:64 +#, fuzzy +msgid "List of files used by this log type" +msgstr "Bya Idosiye ku iyi LOG Ubwoko: " + +#: fileList.cpp:65 +#, fuzzy +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" +" ni A Urutonde Bya buri Idosiye Soma ku Kuri Kugaragaza: i KIGEZWEHO LOG " +"Imirongo " + +#: fileList.cpp:68 fileList.cpp:96 +#, fuzzy +msgid "&Add a file" +msgstr "A Idosiye " + +#: fileList.cpp:70 +#, fuzzy +msgid "Choose a new file" +msgstr "A Gishya Idosiye " + +#: fileList.cpp:71 +#, fuzzy +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" +"A Ikiganiro Agasanduku Kuri Hitamo... A Gishya Idosiye Kuri Kyongewe Kuri i " +"Urutonde . " + +#: fileList.cpp:76 +#, fuzzy +msgid "Delete the current file(s)" +msgstr "i KIGEZWEHO Idosiye ( S ) " + +#: fileList.cpp:77 +#, fuzzy +msgid "Deletes the selected files of the list." +msgstr "i Byahiswemo Idosiye Bya i Urutonde . " + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Kwimura hejuru" + +#: fileList.cpp:81 +#, fuzzy +msgid "Move up the current file(s)" +msgstr "Hejuru i KIGEZWEHO Idosiye ( S ) " + +#: fileList.cpp:82 +#, fuzzy +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" +" Hejuru i Byahiswemo Idosiye in i Urutonde . Ihitamo i Idosiye Kuri Soma " +"in Itangira ku " + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Kwimura hasi" + +#: fileList.cpp:86 +#, fuzzy +msgid "Move down the current file(s)" +msgstr "Hasi i KIGEZWEHO Idosiye ( S ) " + +#: fileList.cpp:87 +#, fuzzy +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" +" Hasi i Byahiswemo Idosiye in i Urutonde . Ihitamo i Idosiye Kuri Soma " +"Ku Iheruka ku " + +#: fileList.cpp:89 fileList.cpp:102 +#, fuzzy +msgid "Re&move All" +msgstr "Gukuraho Byose" + +#: fileList.cpp:91 +#, fuzzy +msgid "Remove all files" +msgstr "Byose Idosiye " + +#: fileList.cpp:92 +#, fuzzy +msgid "Remove all files of the list, even if they are not selected." +msgstr "" +" Byose Idosiye Bya i Urutonde , ATARIIGIHARWE NIBA OYA Byahiswemo " + +#: fileList.cpp:95 +#, fuzzy +msgid "File list" +msgstr "Irisiti Y'Amadosiye" + +#: fileList.cpp:139 specificFileList.cpp:82 +#, fuzzy +msgid "All files (*)" +msgstr "Amadosiye yose" + +#: fileList.cpp:139 specificFileList.cpp:82 +#, fuzzy +msgid "Log files (*.log)" +msgstr "Idosiye ( * . LOG ) " + +#: fileList.cpp:139 specificFileList.cpp:82 +#, fuzzy +msgid "Choose a log file" +msgstr "A LOG Idosiye " + +#: fileList.cpp:159 +#, fuzzy +msgid "'%1' is not valid." +msgstr "' %1 ' ni OYA Byemewe . " + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +#, fuzzy +msgid "File selection failed" +msgstr "Idosiye Ihitamo Byanze " + +#: fileList.cpp:166 +#, fuzzy +msgid "'%1' is not a local file." +msgstr "' %1 ' ni OYA A Idosiye . " + +#: fileList.cpp:173 +#, fuzzy +msgid "'%1' is a folder." +msgstr "'%1'ni ububiko." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +#, fuzzy +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr " i Kinini Umubare Bya LOG Imirongo in i Reba " + +#: generalOptions.cpp:55 +#, fuzzy +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr " Hitamo... i Kinini Umubare Bya LOG Imirongo in i Reba " + +#: generalOptions.cpp:57 +#, fuzzy +msgid "Delete duplicated log lines (may be slow)" +msgstr "LOG Imirongo ( Gicurasi Buhoro ) " + +#: generalOptions.cpp:60 +#, fuzzy +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" +" iyi Ihitamo NIBA Kuri Gusiba LOG Imirongo ( Gicurasi Buhoro " + +#: generalOptions.cpp:61 +#, fuzzy +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" +" Guhitamo iyi Ihitamo NIBA Kuri Gusiba LOG Imirongo . " +"Ihitamo Buhoro i " + +#: generalOptions.cpp:66 +#, fuzzy +msgid "Maximum Characters to Read Per Line" +msgstr "Kuri " + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Inomero z'inyuguti" + +#: generalOptions.cpp:71 +#, fuzzy +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" +" i Kinini Umubare Bya Inyuguti Kuri Soma Kuva: LOG Umurongo: " + +#: generalOptions.cpp:72 +#, fuzzy +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" +" Hitamo... i Kinini Umubare Bya Inyuguti Kuri Soma Kuva: LOG Umurongo: " + +#: globals.cpp:45 +#, fuzzy +msgid "debug" +msgstr "Kosora amakosa" + +#: globals.cpp:48 +#, fuzzy +msgid "information" +msgstr "Ibisobanuro" + +#: globals.cpp:51 +msgid "notice" +msgstr "" + +#: globals.cpp:54 +#, fuzzy +msgid "warning" +msgstr "Iburira" + +#: globals.cpp:57 +#, fuzzy +msgid "error" +msgstr "Ikosa" + +#: globals.cpp:60 +#, fuzzy +msgid "critical" +msgstr "Ibyangombwa" + +#: globals.cpp:63 +#, fuzzy +msgid "alert" +msgstr "Ikimenyetso" + +#: globals.cpp:66 +msgid "emergency" +msgstr "" + +#: globals.cpp:91 +#, fuzzy +msgid "No log" +msgstr "LOG " + +#: globals.cpp:94 +#, fuzzy +msgid "File log" +msgstr "Idosiye LOG " + +#: globals.cpp:97 +#, fuzzy +msgid "System log" +msgstr "LOG " + +#: globals.cpp:100 +#, fuzzy +msgid "Kernel log" +msgstr "LOG " + +#: globals.cpp:103 +#, fuzzy +msgid "X.org log" +msgstr ". org LOG " + +#: globals.cpp:106 +#, fuzzy +msgid "Samba log" +msgstr "LOG " + +#: globals.cpp:109 +#, fuzzy +msgid "Boot log" +msgstr "LOG " + +#: globals.cpp:112 +#, fuzzy +msgid "Authentication log" +msgstr "LOG " + +#: globals.cpp:115 +#, fuzzy +msgid "Cron log" +msgstr "LOG " + +#: globals.cpp:118 +#, fuzzy +msgid "Daemon log" +msgstr "LOG " + +#: globals.cpp:121 +#, fuzzy +msgid "ACPI log" +msgstr "LOG " + +#: globals.cpp:124 +#, fuzzy +msgid "Cups log" +msgstr "LOG " + +#: globals.cpp:127 +#, fuzzy +msgid "Cups Access log" +msgstr "LOG " + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:88 +#, fuzzy +msgid "%1, %2h" +msgstr "%1,%2h" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +#, fuzzy +msgid "

Group: %1
" +msgstr "< Itunganya = ' > : %1 < /> " + +#: itemFactory.cpp:235 +#, fuzzy +msgid "%1, %2 hour" +msgstr "%1 , %2 ISAHA " + +#: itemFactory.cpp:245 +#, fuzzy +msgid "
Group: none
" +msgstr "< Itunganya = ' > : Ntana kimwe < /> " + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Itariki:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +#, fuzzy +msgid "Hostname:" +msgstr "Izina ry'inturo:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Ukoresha" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +#, fuzzy +msgid "Level:" +msgstr "urwego" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +#, fuzzy +msgid "Original File:" +msgstr "Idosiye : " + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Ubwoko:" + +#: itemFactory.cpp:329 +#, fuzzy +msgid "Identification:" +msgstr "irangamimerere" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Izina- ukoresha:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "" + +#: kernelOptions.cpp:51 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +#, fuzzy +msgid "Create a new tab" +msgstr "A Gishya tab " + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +#, fuzzy +msgid "Creates a new tab which can display another log." +msgstr "A Gishya tab Kugaragaza: LOG . " + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +#, fuzzy +msgid "Close the current tab" +msgstr "Funga i KIGEZWEHO tab " + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +#, fuzzy +msgid "Closes the current tab." +msgstr "i KIGEZWEHO tab . " + +#: ksystemlog.cpp:258 +#, fuzzy +msgid "Open a file in KSystemLog" +msgstr "Gufungura A Idosiye in " + +#: ksystemlog.cpp:259 +#, fuzzy +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "A Idosiye in na Ibirimo: in i KIGEZWEHO tab . " + +#: ksystemlog.cpp:265 +#, fuzzy +msgid "Save the selection to a file" +msgstr "Kubika i Ihitamo Kuri A Idosiye " + +#: ksystemlog.cpp:266 +#, fuzzy +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" +"i Ihitamo Kuri A Idosiye . Igikorwa ni NIBA Kuri Kurema Umugereka Cyangwa A " +"Inyibutsa Bya A LOG . " + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "" + +#: ksystemlog.cpp:274 +#, fuzzy +msgid "Copy the selection to the clipboard" +msgstr "i Ihitamo Kuri i Ububikokoporora " + +#: ksystemlog.cpp:275 +#, fuzzy +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"i Ihitamo Kuri i Ububikokoporora . Igikorwa ni NIBA Kuri Komeka i Ihitamo in A " +"Cyangwa Imeli " + +#: ksystemlog.cpp:278 +#, fuzzy +msgid "&Email selection" +msgstr "Ihitamo " + +#: ksystemlog.cpp:279 +#, fuzzy +msgid "Send the selection by mail" +msgstr "i Ihitamo ku Ibaruwa " + +#: ksystemlog.cpp:280 +#, fuzzy +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"i Ihitamo ku Ibaruwa . Guhitamo i By'ingirakamaro Imirongo na Kanda ku iyi " +"Ibikubiyemo Icyinjijwe Kuri Kohereza i Ihitamo Kuri A Cyangwa A Urutonde . " + +#: ksystemlog.cpp:284 +#, fuzzy +msgid "Select all lines of the current log" +msgstr "Byose Imirongo Bya i KIGEZWEHO LOG " + +#: ksystemlog.cpp:285 +#, fuzzy +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" +"Byose Imirongo Bya i KIGEZWEHO LOG . Igikorwa ni NIBA , ya: Urugero: , Kuri " +"Kubika Byose i Ibirimo: Bya i KIGEZWEHO LOG in A Idosiye . " + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +#, fuzzy +msgid "&New tab" +msgstr "Isimbuka nshya" + +#: ksystemlog.cpp:308 +#, fuzzy +msgid "&Close tab" +msgstr "Funga Isimbuka" + +#: ksystemlog.cpp:312 +#, fuzzy +msgid "&Duplicate tab" +msgstr "tab " + +#: ksystemlog.cpp:313 +#, fuzzy +msgid "Duplicate the current tab" +msgstr "i KIGEZWEHO tab " + +#: ksystemlog.cpp:314 +#, fuzzy +msgid "Duplicates the current tab." +msgstr "i KIGEZWEHO tab . " + +#: ksystemlog.cpp:316 +#, fuzzy +msgid "Move tab &left" +msgstr "tab Ibumoso: " + +#: ksystemlog.cpp:317 +#, fuzzy +msgid "Move the current tab to the left" +msgstr "i KIGEZWEHO tab Kuri i Ibumoso: " + +#: ksystemlog.cpp:318 +#, fuzzy +msgid "Moves the current tab to the left." +msgstr "i KIGEZWEHO tab Kuri i Ibumoso: . " + +#: ksystemlog.cpp:320 +#, fuzzy +msgid "Move tab &right" +msgstr "tab Iburyo: " + +#: ksystemlog.cpp:321 +#, fuzzy +msgid "Move the current tab to the right" +msgstr "i KIGEZWEHO tab Kuri i Iburyo: " + +#: ksystemlog.cpp:322 +#, fuzzy +msgid "Moves the current tab to the right." +msgstr "i KIGEZWEHO tab Kuri i Iburyo: . " + +#: ksystemlog.cpp:326 +#, fuzzy +msgid "Reload the current log" +msgstr "Kongerakuyitangiza i KIGEZWEHO LOG " + +#: ksystemlog.cpp:327 +#, fuzzy +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "i KIGEZWEHO LOG , NIBA Kuri i Reba ni . " + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:330 +#, fuzzy +msgid "Resume the watching of the current log" +msgstr "i Bya i KIGEZWEHO LOG " + +#: ksystemlog.cpp:331 +#, fuzzy +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" +"i Bya i KIGEZWEHO LOG . Igikorwa ni Bihari Ryari: i Umukoresha Mu karuhuko i . " + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:335 +#, fuzzy +msgid "Pause the watching of the current log" +msgstr "i Bya i KIGEZWEHO LOG " + +#: ksystemlog.cpp:336 +#, fuzzy +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" +"i Bya i KIGEZWEHO LOG . Igikorwa ni Ryari: i Sisitemu ni Imirongo Kuri LOG " +"Idosiye , Kuri Kongera Gutangiza . " + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "Birambuye" + +#: ksystemlog.cpp:339 +#, fuzzy +msgid "Display details on the currently selected line" +msgstr "Birambuye ku i Byahiswemo Umurongo: " + +#: ksystemlog.cpp:340 +#, fuzzy +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" +"A Ikiganiro Agasanduku ifite Birambuye ku i Byahiswemo Umurongo: . Kuri " +"Kubuganya Gihinguranya i Kuva: iyi Ikiganiro Agasanduku Na: i / " +"Utubuto . " + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +#, fuzzy +msgid "Disable/Enable the tooltips on the current view" +msgstr "/i ku i KIGEZWEHO Reba " + +#: ksystemlog.cpp:345 +#, fuzzy +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "/i Ryari: i indanga A LOG Umurongo: . " + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:351 +#, fuzzy +msgid "Display or not new lines if the log changes" +msgstr "Cyangwa OYA Gishya Imirongo NIBA i LOG Amahinduka " + +#: ksystemlog.cpp:352 +#, fuzzy +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" +"Cyangwa OYA i Gishya Imirongo NIBA i LOG Amahinduka . Ihitamo ni Ryari: Kuri " +"ki/bishaje LOG Imirongo na i KIGEZWEHO Reba . " + +#: ksystemlog.cpp:369 +#, fuzzy +msgid "S&ystem log" +msgstr "LOG " + +#: ksystemlog.cpp:370 +#, fuzzy +msgid "Display the system log." +msgstr "i Sisitemu LOG . " + +#: ksystemlog.cpp:371 +#, fuzzy +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" +"i Sisitemu LOG in i KIGEZWEHO tab . LOG ni ku - cy'umwihariko/mwihariko ( nka " +"\" \" Cyangwa \" \" Amabwiriza ) " + +#: ksystemlog.cpp:376 +#, fuzzy +msgid "&Kernel log" +msgstr "LOG " + +#: ksystemlog.cpp:377 +#, fuzzy +msgid "Display the kernel log." +msgstr "i LOG . " + +#: ksystemlog.cpp:378 +#, fuzzy +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" +" i LOG in i KIGEZWEHO tab . LOG ni ya: Abakoresha Kuri i OYA Cyangwa ni i " +"Bya i Iheruka < i > /< /i " + +#: ksystemlog.cpp:383 +#, fuzzy +msgid "&Boot log" +msgstr "LOG " + +#: ksystemlog.cpp:384 +#, fuzzy +msgid "Display the boot log." +msgstr "i LOG . " + +#: ksystemlog.cpp:385 +#, fuzzy +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" +" i LOG in i KIGEZWEHO tab . LOG ni NIBA Kuri Gusuzuma: NIBA Byose Gutangira " +" Yatangiye: " + +#: ksystemlog.cpp:390 +#, fuzzy +msgid "A&uthentication log" +msgstr "LOG " + +#: ksystemlog.cpp:391 +#, fuzzy +msgid "Display the authentication log." +msgstr "i Kwemeza LOG . " + +#: ksystemlog.cpp:392 +#, fuzzy +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" +" i Kwemeza LOG in i KIGEZWEHO tab . LOG Byose LOG in ku Umukoresha Bya i " +"Sisitemu , na Ifashayobora Kuri NIBA Kuri Sisitemu " + +#: ksystemlog.cpp:397 +#, fuzzy +msgid "&Daemons log" +msgstr "LOG " + +#: ksystemlog.cpp:398 +#, fuzzy +msgid "Display the daemons log." +msgstr "i LOG . " + +#: ksystemlog.cpp:399 +#, fuzzy +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" +" i LOG in i KIGEZWEHO tab . Byose in i Mbuganyuma Bya i Sisitemu . iyi LOG " +"NIBA Kuri in i Mbuganyuma Bya Sisitemu " + +#: ksystemlog.cpp:404 +#, fuzzy +msgid "&Planned tasks log" +msgstr "Ibikorwa LOG " + +#: ksystemlog.cpp:405 +#, fuzzy +msgid "Display the planned tasks log (or Cron log)." +msgstr "i Ibikorwa LOG ( Cyangwa LOG . " + +#: ksystemlog.cpp:406 +#, fuzzy +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" +" i Ibikorwa LOG in i KIGEZWEHO tab . ni A Porogaramu in Bya Gutangiza %1 " +"Ibikorwa ku Sisitemu , nka Umutekano , Cyangwa Ikiyega - Bya . iyi Ibikubiyemo " +"Kuri i Iheruka - " + +#: ksystemlog.cpp:411 +#, fuzzy +msgid "&X.org log" +msgstr ". org LOG " + +#: ksystemlog.cpp:412 +#, fuzzy +msgid "Display the X.org log." +msgstr "i . org LOG . " + +#: ksystemlog.cpp:413 +#, fuzzy +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" +" i . org LOG in i KIGEZWEHO tab . . org ni i Serivisi ku Mugaragaza Ibiro " +"na kuyobora . iyi LOG NIBA Kuri OYA Cyangwa Iyinjiza APAREYE ni OYA " + +#: ksystemlog.cpp:418 +#, fuzzy +msgid "&ACPI log" +msgstr "LOG " + +#: ksystemlog.cpp:419 +#, fuzzy +msgid "Display the ACPI log." +msgstr "i LOG . " + +#: ksystemlog.cpp:420 +#, fuzzy +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" +" i LOG in i KIGEZWEHO tab . ni Kuri kuyobora i Bya , nka , Kugarura Utubuto " +" " + +#: ksystemlog.cpp:425 +#, fuzzy +msgid "&Cups log" +msgstr "LOG " + +#: ksystemlog.cpp:426 +#, fuzzy +msgid "Display the Cups log." +msgstr "i LOG . " + +#: ksystemlog.cpp:427 +#, fuzzy +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" +" i LOG in i KIGEZWEHO tab . ni i Porogaramu kuyobora Icapa ku " + +#: ksystemlog.cpp:432 +#, fuzzy +msgid "&Cups Web log" +msgstr "LOG " + +#: ksystemlog.cpp:433 +#, fuzzy +msgid "Display the Cups Web Server Access log." +msgstr "i LOG . " + +#: ksystemlog.cpp:434 +#, fuzzy +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" +" i LOG in i KIGEZWEHO tab . ni i Porogaramu kuyobora Icapa ku . LOG Byose " +"Kuri i Gitsindiye Urubuga Seriveri: ( Mburabuzi : < i > HTTP : //: < /i " + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "" + +#: ksystemlog.cpp:946 +#, fuzzy, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" +"1 LOG Umurongo: . \n" +"%n LOG Imirongo . " + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:988 +#, fuzzy +msgid "No items selected. Nothing copied to clipboard." +msgstr "Ibigize Byahiswemo . Kuri Ububikokoporora . " + +#: ksystemlog.cpp:995 +#, fuzzy, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" +"1 LOG Umurongo: Kuri Ububikokoporora . \n" +"%n LOG Imirongo Kuri Ububikokoporora . " + +#: ksystemlog.cpp:1006 +#, fuzzy +msgid "No items selected. Please select items to be able to save them." +msgstr "Ibigize Byahiswemo . Guhitamo Ibigize Kuri Kuri Kubika . " + +#: ksystemlog.cpp:1036 +#, fuzzy +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" +"1 LOG Umurongo: Kuri ' %1 ' . \n" +"%n LOG Imirongo Kuri . " + +#: ksystemlog.cpp:1039 +#, fuzzy +msgid "Unable to save file '%1': Permission Denied." +msgstr "Kuri Kubika Idosiye ' %1 ' : . " + +#: ksystemlog.cpp:1040 +#, fuzzy +msgid "Unable to save file." +msgstr "Ntibikunze kubika idosiye''." + +#: ksystemlog.cpp:1156 +#, fuzzy +msgid "Open Location" +msgstr "Fungura indanganturo..." + +#: ksystemlog.cpp:1169 +#, fuzzy +msgid "Malformed URL. Unable to open this file." +msgstr ". Kuri Gufungura iyi Idosiye . " + +#: ksystemlog.cpp:1170 +#, fuzzy +msgid "Unable to open this file." +msgstr "Kuri Gufungura iyi Idosiye . " + +#: ksystemlog.cpp:1581 +#, fuzzy +msgid "Group By" +msgstr "Akazu k'itsinda" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "Nta na kimwe" + +#: ksystemlog.cpp:1590 +#, fuzzy +msgid "Log Level" +msgstr "Gufungura urwego:" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Umunsi" + +#: ksystemlog.cpp:1594 +#, fuzzy +msgid "Hour" +msgstr "ISAHA" + +#: ksystemlog.cpp:1596 +#, fuzzy +msgid "Log File" +msgstr "Idosiye bikamikorere" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1753 +#, fuzzy +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "Byahiswemo Imirongo . Guhitamo By'ingirakamaro LOG Imirongo . " + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +#, fuzzy +msgid "Log Lines of my problem" +msgstr "Bya " + +#: loadingDialog.cpp:26 +#, fuzzy +msgid "Loading Progress" +msgstr "LOG ... " + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +#, fuzzy +msgid "Loading log..." +msgstr "LOG ... " + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +#, fuzzy +msgid "System Logs Viewer Tool for KDE" +msgstr "ya: MukusanyaKDE " + +#: main.cpp:35 +#, fuzzy +msgid "Document to open" +msgstr "Kuri Gufungura " + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +#, fuzzy +msgid "French trains between Paris and Rouen" +msgstr "hagati na " + +#: main.cpp:55 +#, fuzzy +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr ", Igihe Kuri ) " + +#: options.cpp:86 +msgid "General" +msgstr "Rusange" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:251 +#, fuzzy +msgid "X.org Log" +msgstr ". org " + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +#, fuzzy +msgid "Cups and Cups Web Server Log" +msgstr "na " + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, fuzzy, no-c-format +msgid "&Cups" +msgstr "cups" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "Idirishya" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, fuzzy, no-c-format +msgid "Main toolbar" +msgstr "umwanya w'ibikoresho w'ibanze" + +#: reader.cpp:168 +#, fuzzy +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "Idosiye ni OYA Byemewe . in i Igenamiterere Bya . " + +#: reader.cpp:169 reader.cpp:181 +#, fuzzy +msgid "The file does not exist" +msgstr "Idosiye\"\"ntibaho." + +#: reader.cpp:180 +#, fuzzy +msgid "The file '%1' does not exist." +msgstr "Idosiye\"%1\"ntibaho." + +#: reader.cpp:189 +#, fuzzy +msgid "You do not have sufficient permissions to read '%1'." +msgstr "OYA Uruhushya Kuri Soma . " + +#: reader.cpp:190 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Uruhushya " + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +#, fuzzy +msgid "URL '%1' is not valid, skipping this URL." +msgstr "' %1 ' ni OYA Byemewe , Gusimbuka: %s iyi . " + +#: readerFactory.cpp:278 +#, fuzzy +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "Kabiri Ingano: , Gusimbuka: %s i Bya LOG Idosiye . " + +#: sambaOptions.cpp:49 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: LOG . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Igihe" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Ubuturo" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +#, fuzzy +msgid "&Change status" +msgstr "Imimerere " + +#: specificFileList.cpp:50 +#, fuzzy +msgid "Change the level of the current file(s)" +msgstr "i urwego Bya i KIGEZWEHO Idosiye ( S ) " + +#: specificFileList.cpp:51 +#, fuzzy +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" +" i urwego Bya i KIGEZWEHO Idosiye ( S ) . Inyandiko ya: Birenzeho " +"Ibisobanuro: Bigyanye LOG urwego " + +#: specificFileList.cpp:110 +#, fuzzy +msgid "Selecting the file type" +msgstr "i Idosiye Ubwoko: " + +#: specificFileList.cpp:116 +#, fuzzy +msgid "Please select the type of this file:" +msgstr "Guhitamo i Ubwoko: Bya iyi Idosiye : " + +#: specificFileList.cpp:119 +#, fuzzy +msgid "List of existing log levels" +msgstr "Bya LOG Intera " + +#: specificFileList.cpp:120 +#, fuzzy +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" +" ni i Urutonde Bya Byose LOG Intera . Guhitamo Rimwe Bya Kuri ya: i " +"Byahiswemo Idosiye Bya i Urutonde " + +#: specificFileList.cpp:184 +#, fuzzy +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "Kabiri Ingano: , Gusimbuka: %s i Bya Gifitanye isano Inzira . " + +#: systemOptions.cpp:50 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: . Urutonde i Itondekanya in i Idosiye " +"Soma " + +#: view.cpp:76 view.cpp:79 +#, fuzzy +msgid "Clear the filter" +msgstr "i Akayunguruzo: " + +#: view.cpp:78 +#, fuzzy +msgid "This button clears the filter in one click." +msgstr "Akabuto i Akayunguruzo: in Rimwe Kanda . " + +#: view.cpp:82 +msgid "Filter:" +msgstr "Muyunguruzi:" + +#: view.cpp:87 +#, fuzzy +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "Kuri Guhitamo Urutonde Ibigize BIHUYE i Ibirimo: Bya iyi Umwandiko . " + +#: view.cpp:88 +#, fuzzy +msgid "Type your item filter here" +msgstr "Ikintu Akayunguruzo: " + +#: view.cpp:90 +msgid "Column:" +msgstr "Inkingi:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Byose" + +#: view.cpp:270 +#, fuzzy +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" +" " +"

ni i Reba Bya . i Iheruka Imirongo Bya i Byahiswemo LOG . i Inyandiko Kuri " +"i Igisobanuro Bya Udushushondanga na LOG .

" +"

Imirongo in Bitsindagiye i Iheruka Kyongewe Kuri i Urutonde " + +#: view.cpp:332 +#, fuzzy +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" +" Kuri Gushyiraho i Ikintu Akayunguruzo: ku i Inkingi . \" < i > < /i > " +"\" Inkingi Oya Akayunguruzo: " + +#: view.cpp:333 +#, fuzzy +msgid "Choose the filtered column here" +msgstr "i Inkingi " + +#: xorgOptions.cpp:51 +#, fuzzy +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" +" " +"

Idosiye Kuri Kugaragaza: . org LOG . Urutonde i Itondekanya in i " +"Idosiye Soma " + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Umurongo" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +#, fuzzy +msgid "from config file" +msgstr "Kuva: Idosiye " + +#: xorgReader.cpp:98 +#, fuzzy +msgid "default setting" +msgstr "Igenamiterere Mburabuzi" + +#: xorgReader.cpp:99 +#, fuzzy +msgid "from command Line" +msgstr "Kuva: command " + +#: xorgReader.cpp:104 +#, fuzzy +msgid "not implemented" +msgstr "Ntibyakozwe" + +#, fuzzy +#~ msgid "&Apache log" +#~ msgstr "LOG " + +#, fuzzy +#~ msgid "Pro&FTP log" +#~ msgstr "LOG " + +#, fuzzy +#~ msgid "Sa&mba log" +#~ msgstr "LOG " + +#~ msgid "Order" +#~ msgstr "Itondekanya" diff --git a/ksystemlog/po/sv.po b/ksystemlog/po/sv.po new file mode 100644 index 0000000..aead0f7 --- /dev/null +++ b/ksystemlog/po/sv.po @@ -0,0 +1,1423 @@ +# translation of ksystemlog.po to Svenska +# translation of ksystemlog.po to Swedish +# Stefan Asserhäll , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-06-19 22:36+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Svenska \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Stefan Asserhäll" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "stefan.asserhall@comhem.se" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa ACPId-loggar" +". Listan avgör också ordningen som filerna läses.

" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "Datum" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "Typ" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "Meddelande" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "ingen" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "Startloggfil" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "Startloggfil:" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" +"Här kan du skriva in eller välja startloggfil (exempel: " +"/var/log/boot.log)." + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" +"Här kan du skriva in eller välja startloggfilen. Filen analyseras av " +"Ksystemlog när du väljer menyalternativet Startlogg. Oftast heter den " +"/var/log/boot.log" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "Behörighetsloggfil" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "Behörighetsloggfil:" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" +"Här kan du skriva in eller välja behörighetsloggfilen (exempel: " +"/var/log/auth.log)." + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" +"Här kan du skriva in eller välja behörighetsloggfilen. Filen analyseras av " +"Ksystemlog när du väljer menyalternativet Behörighetslogg" +". Oftast heter den /var/log/auth.log" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa cron-loggar " +"(dvs loggar över planlagda aktiviteter). Listan avgör också ordningen som " +"filerna läses.

" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "Värddatornamn" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "Process" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "Användare" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "Id." + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "Svar" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "Byte skickade" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "HTTP-begäran" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa CUPS-loggar" +". Listan avgör också ordningen som filerna läses.

" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa CUPS-webbserverloggar" +". Listan avgör också ordningen som filerna läses.

" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "felsök 2" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" +"Ny loggnivå detekterad. Skicka loggfilen till utvecklaren av Ksystemlog för att " +"lägga till den." + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa demonloggar" +". Listan avgör också ordningen som filerna läses.

" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "Öppnar filen '%1'..." + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "Inga loggrader i '%1'." + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "Loggfilen '%1' laddad med lyckat resultat." + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "Loggfilen '%1' har ändrats." + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "Loggradsinformation" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" +"Dialogrutan visar detaljerad information om loggraden som för närvarande är " +"markerad." + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "Gå till föregående rad" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" +"Går till föregående rad. Knappen är inaktiverad om det inte finns någon " +"föregående loggrad." + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "&Nästa" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "Gå till nästa rad" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" +"Går till nästa rad. Knappen är inaktiverad om det inte finns någon nästa " +"loggrad." + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "Stänger detaljdialogrutan." + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "Stänger den här detaljdialogrutan." + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "Lista över filer som används av loggtypen" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" +"Här är en lista med alla filer som kommer att läsas av Ksystemlog för " +"att visa nuvarande loggrader." + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "&Lägg till en fil" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "Välj en ny fil" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "Öppnar en dialogruta för att välja en ny fil som ska läggas till i listan." + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "Tar bort nuvarande fil(er)" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "Tar bort markerade filer i listan." + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "Flytta &upp" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "Flytta upp nuvarande fil(er)" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" +"Flyttar upp markerade filer i listan. Alternativet låter filerna läsas in " +"först av Ksystemlog." + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "Flytta &ner" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "Flytta ner nuvarande fil(er)" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" +"Flyttar ner markerade filer i listan. Alternativet låter filerna läsas in " +"sist av Ksystemlog." + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "T&a bort alla" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "Ta bort alla filer" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "Ta bort alla filer från listan, även om de inte är markerade." + +#: fileList.cpp:95 +msgid "File list" +msgstr "Fillista" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "Alla filer (*)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "Loggfiler (*.log)" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "Välj en loggfil" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "'%1' är inte giltig." + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "Val av fil misslyckades" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "'%1' är inte en lokal fil." + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "'%1' är en katalog." + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "Loggradslista" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "Maximalt antal rader som visas:" + +#: generalOptions.cpp:54 +msgid "Choose here the maximum number of log lines displayed in the main view." +msgstr "Välj det maximala antalet loggrader som visas i huvudvyn här." + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "Här kan du välja det maximala antalet loggrader som visas i huvudvyn." + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "Ta bort duplicerade loggrader (kan vara långsamt)" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" +"Markera alternativet om du vill ta bort duplicerade loggrader " +"(kan vara långsamt)." + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" +"Du kan markera alternativet om du vill ta bort duplicerade loggrader. " +"Alternativet kan göra läsningen långsammare." + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "Maximalt antal tecken att läsa per rad" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "Antal tecken:" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "Välj det maximala antalet tecken att läsa från varje loggrad här." + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "Här kan du välja det maximala antalet tecken att läsa från varje loggrad." + +#: globals.cpp:45 +msgid "debug" +msgstr "felsök" + +#: globals.cpp:48 +msgid "information" +msgstr "information" + +#: globals.cpp:51 +msgid "notice" +msgstr "anmärkning" + +#: globals.cpp:54 +msgid "warning" +msgstr "varning" + +#: globals.cpp:57 +msgid "error" +msgstr "fel" + +#: globals.cpp:60 +msgid "critical" +msgstr "kritiskt fel" + +#: globals.cpp:63 +msgid "alert" +msgstr "larm" + +#: globals.cpp:66 +msgid "emergency" +msgstr "nödfall" + +#: globals.cpp:91 +msgid "No log" +msgstr "Ingen logg" + +#: globals.cpp:94 +msgid "File log" +msgstr "Fillogg" + +#: globals.cpp:97 +msgid "System log" +msgstr "Systemlogg" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "Kärnlogg" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "X.org-logg" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "Samba-logg" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "Startlogg" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "Behörighetslogg" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "Cron-logg" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "Demonlogg" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "ACPI-logg" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "CUPS-logg" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "CUPS-åtkomstlogg" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "Idag" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "Igår" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "%1, %2 t" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "
Grupp: %1
" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "%1, %2 timme" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "
Grupp: ingen
" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "Datum:" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "Värddatornamn:" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "Process:" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "Användare:" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "Nivå:" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "Originalfil:" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "Typ:" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "Identifikation:" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "Användarnamn:" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "HTTP-svar:" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "Byte skickade" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa kärnloggar" +". Listan avgör också ordningen som filerna läses.

" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "Skapa en ny flik" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "Skapar en ny flik som kan visa en annan logg." + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "Stäng aktuell flik" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "Stänger den aktuella fliken" + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "Öppna en fil i Ksystemlog" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "Öppnar en fil i Ksystemlog och visar dess innehåll i aktuell flik." + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "Spara markeringen i en fil" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" +"Sparar markeringen i en fil. Åtgärden är användbar om du vill skapa en bilaga " +"eller säkerhetskopia av en viss logg." + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "Avsluta Ksystemlog" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "Avslutar Ksystemlog." + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "Kopiera markeringen till klippbordet" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" +"Kopierar markeringen till klippbordet. Åtgärden är användbar om du vill klippa " +"in markeringen i ett chattfönster eller brev." + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "&E-posta markeringen" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "Skicka markeringen med e-post" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" +"Skickar markeringen med e-post. Markera helt enkelt de viktiga raderna och " +"klicka på menyalternativet för att skicka markeringen till en vän eller " +"e-postlista." + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "Markerar alla rader i aktuell logg" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" +"Markerar alla rader i aktuell logg. Åtgärden är användbar om du till exempel " +"vill spara hela innehållet i aktuell logg i en fil." + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "Visa &filterrad" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "&Ny flik" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "Stän&g flik" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "&Duplicera flik" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "Duplicerar aktuell flik" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "Duplicerar aktuell flik." + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "Flytta flik åt &vänster" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "Flytta aktuell flik åt vänster" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "Flyttar aktuell flik åt vänster." + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "Flytta flik åt &höger" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "Flytta aktuell flik åt höger" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "Flyttar aktuell flik åt höger." + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "Laddar aktuell logg igen" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" +"Laddar aktuell logg igen, om du vill vara säker på att visningen är riktigt " +"uppdaterad." + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "Åter&uppta tolkning" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "Återupptar bevakningen av aktuell logg" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" +"Återupptar bevakningen av aktuell logg. Åtgärden är bara tillgänglig när " +"användaren gjort paus i läsningen." + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "Stoppa &tolkning" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "Gör paus i bevakningen av aktuell logg" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" +"Gör paus i bevakningen av aktuell logg. Åtgärden är särskilt användbar när " +"systemet skriver för många rader i loggfiler, vilket gör att Ksystemlog laddar " +"om för ofta." + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "&Detaljinformation" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "Visar detaljinformation om aktuell markerad rad" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" +"Visar en dialogruta som innehåller detaljer om raden som för närvarande är " +"markerad. Du kan flytta dig igenom loggen från dialogrutan med knapparna " +"Föregående och Nästa." + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "Aktiv&era detaljerade verktygstips" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "Inaktivera eller aktivera verktygstips för aktuell vy" + +#: ksystemlog.cpp:345 +msgid "Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" +"Inaktivera eller aktivera verktygstips som visas när markören hålls stilla över " +"en loggrad." + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "&Visa nya rader" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "Visar, eller visar inte, nya rader om loggen ändras" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" +"Visar, eller visar inte, nya rader om loggen ändras. Alternativet är användbart " +"när du vill se en gammal loggrad och Ksystemlog ofta uppdaterar aktuell vy." + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "S&ystemlogg" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "Visar systemloggen." + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" +"Visar systemloggen under aktuell flik. Loggen används i allmänhet av processer " +"som inte är specialiserade (som kommandona \"sudo\" eller \"fsck\")." + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "&Kärnlogg" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "Visar kärnloggen." + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" +"Visar kärnloggen under aktuell flik. Den här loggen är bara användbar för " +"användare som vill veta varför kärnan inte detekterar deras hårdvara eller vad " +"som är orsaken till senaste panic eller oops från kärnan." + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "&Startlogg" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "Visar startloggen." + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" +"Visar startloggen under aktuell flik. Den här loggen är användbar om du " +"vill kontrollera om alla tjänster har startats som de ska." + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "&Behörighetslogg" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "Visar behörighetsloggen." + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" +"Visar behörighetsloggen under aktuell flik. Den här loggen visar alla " +"inloggningar som gjorts av varje användare av systemet, och kan hjälpa dig att " +"veta om någon försökte bryta sig in i systemet." + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "&Demonlogg" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "Visar demonloggen." + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" +"Visar demonloggen under aktuell flik. Demoner är alla processer som startas " +"i bakgrunden av systemet. Titta i den här loggen om du vill veta vad som händer " +"i systemets bakgrund." + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "Logg över &planlagda aktiviteter" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "Visa loggen över planlagda aktiviteter (Cron-loggen)" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" +"Visar loggen över planlagda aktiviteter under aktuell flik. Cron-processen " +"är ett program som är ansvarigt för att starta planlagda aktiviteter i " +"systemet, som säkerhetskontroller, eller automatisk omstart av vissa tjänster. " +"Använd menyn för att se processerna som senast startades." + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "&X.org-logg" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "Visar X.org-loggen." + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" +"Visar X.org-loggen under aktuell flik. X-org är tjänsten som visar " +"skrivbordet på skärmen och hanterar grafikhårdvaran. Titta i den här loggen om " +"du vill veta varför du inte har 3D-acceleration eller varför en inmatningsenhet " +"inte känns igen." + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "&ACPI-logg" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "Visar ACPI-loggen." + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" +"Visar ACPI-loggen under aktuell flik. ACPI är tjänsten som används " +"för att hantera hårdvarukomponenter i datorn, som batteriet i bärbara " +"datorer, återställningsknapper ..." + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "&CUPS-logg" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "Visar CUPS-loggen." + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" +"Visar CUPS-loggen under aktuell flik. CUPS är programmet som hanterar " +"utskrift på datorn." + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "&CUPS-webblogg" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "Visar CUPS webbserveråtkomstlogg." + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" +"Visar CUPS-webbåtkomstlogg under aktuell flik. CUPS är programmet som " +"hanterar utskrift på datorn. Loggen sparar varje begäran som görs till " +"CUPS inbäddade webbserver (normalt http://localhost:631)." + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "Ingen logg" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" +"1 loggrad.\n" +"%n loggrader." + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "Senaste uppdatering: %1." + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "Inga objekt markerade. Ingenting kopierat till klippbordet." + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" +"1 loggrad kopierad till klippbordet.\n" +"%n loggrader kopierade till klippbordet." + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "Inga objekt markerade. Markera objekt för att kunna spara dem." + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" +"1 loggrad sparad i '%1'.\n" +"%n loggrader sparade i '%1'." + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "Kunde inte spara filen '%1'. Rättigheter saknas." + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "Kunde inte spara filen." + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "Öppna plats" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "Felaktig webbadress. Kunde inte öppna filen." + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "Kunde inte öppna filen." + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "Gruppera enligt" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "ingen" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "Loggnivå" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "Dag" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "Timme" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "Loggfil" + +#: ksystemlog.cpp:1730 +msgid "Here are my logs:\n" +msgstr "Här är mina loggar:\n" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "---------------------------------------\n" +msgstr "---------------------------------------\n" + +#: ksystemlog.cpp:1753 +msgid "You have selected too many lines. Please only select important log lines." +msgstr "Du har markerat för många rader. Välj bara viktiga loggrader." + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "För många rader markerade" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "Loggrader med mitt problem" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "Laddningsförlopp" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "Laddar %1 (%2/%3)..." + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "Laddar om %1 (%2/%3)..." + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "Laddar %1..." + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "Laddar om %1..." + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "Laddar logg..." + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "Loggen laddades med lyckat resultat." + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "Ett KDE-verktyg för systemloggvisning" + +#: main.cpp:35 +msgid "Document to open" +msgstr "Dokument att öppna" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "Ksystemlog" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "Idéer, kodförbättringar" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "Franska tåg mellan Paris och Rouen" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "Ofta försenade, så att jag har tid att förbättra Ksystemlog." + +#: options.cpp:86 +msgid "General" +msgstr "Allmänt" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "Start och behörighet" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "Start- och behörighetsloggar" + +#: options.cpp:141 +msgid "System Log" +msgstr "Systemlogg" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "Kärnlogg" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "Cron-logg" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "Demonlogg" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "X.org-logg" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "ACPI-logg" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "ACPI-demonlogg" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "CUPS-logg" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "CUPS-logg och CUPS-webbserverlogg" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "Samba-logg" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "&Loggar" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "&CUPS" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "&Fönster" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "Loggverktygsrad" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "Huvudverktygsrad" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "Filen är inte giltig. Justera den i Ksystemlogs inställningar." + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "Filen finns inte" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "Filen '%1' finns inte." + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "Du har inte tillräckliga rättigheter för att läsa '%1'." + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "Otillräckliga rättigheter" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "Webbadressen '%1' är inte giltig. Hoppar över den här webbadressen." + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "De två fältstorlekarna är olika. Hoppar över läsning av loggfiler." + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa Samba-loggar" +". Listan avgör också ordningen som filerna läses.

" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "Tid" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "Värddator" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "Ä&ndra status" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "Ändra nivå för nuvarande fil(er)" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" +"Ändrar nivå på nuvarande fil(er). Se Ksystemlogs dokumentation för " +"mer information om varje loggnivå." + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "Val av filtyp" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "Välj typ av fil:" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "Lista över befintliga loggnivåer" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" +"Det här är listan över befintliga loggnivåer. Välj en av dem att " +"använda för de markerade filerna i listan." + +#: specificFileList.cpp:184 +msgid "The two arrays size are different, skipping the reading of generic paths." +msgstr "De två fältstorlekarna är olika. Hoppar över läsning av generella sökvägar." + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa systemloggar" +". Listan avgör också ordningen som filerna läses.

" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "Rensa filtret" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "Den här knappen rensar filtret med ett klick." + +#: view.cpp:82 +msgid "Filter:" +msgstr "Filter:" + +#: view.cpp:87 +msgid "Allows you to select only list items that match the content of this text." +msgstr "Låter dig markera objekt i listan som matchar innehållet i texten." + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "Skriv ditt objektfilter här" + +#: view.cpp:90 +msgid "Column:" +msgstr "Kolumn:" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "Alla" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" +"" +"

Det här är huvudvyn i Ksystemlog. Den visar de senaste raderna i vald logg. " +"Se dokumentationen för att ta reda på betydelsen av varje ikon och befintlig " +"logg.

" +"

Loggrader med fetstil är de som senast lagts till i listan.

" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" +"Låter dig använda objektfiltret bara för kolumner som anges här. \"" +"Alla\" kolumner betyder ingen speciell filtrering." + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "Välj filtrerad kolumn här" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" +"" +"

Dessa filer analyseras för att visa X.org-loggar" +". Listan avgör också ordningen som filerna läses.

" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "Rad" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "avsökt" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "från inställningsfil" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "förvald inställning" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "från kommandoraden" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "inte implementerad" + diff --git a/ksystemlog/po/tr.po b/ksystemlog/po/tr.po new file mode 100644 index 0000000..e6ba09d --- /dev/null +++ b/ksystemlog/po/tr.po @@ -0,0 +1,1303 @@ +# translation of ksystemlog.po to Turkish +# Görkem Çetin , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: ksystemlog\n" +"POT-Creation-Date: 2005-06-19 01:38+0200\n" +"PO-Revision-Date: 2005-05-12 12:50+0000\n" +"Last-Translator: Görkem Çetin \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "" + +#: acpidOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display ACPId log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: acpidReader.cpp:38 cronReader.cpp:39 cupsAccessReader.cpp:38 +#: cupsReader.cpp:42 sambaReader.cpp:37 systemReader.cpp:38 +msgid "Date" +msgstr "" + +#: acpidReader.cpp:39 xorgReader.cpp:56 +msgid "Type" +msgstr "" + +#: acpidReader.cpp:40 cronReader.cpp:43 cupsReader.cpp:43 sambaReader.cpp:41 +#: systemReader.cpp:41 xorgReader.cpp:57 +msgid "Message" +msgstr "" + +#: acpidReader.cpp:56 acpidReader.cpp:87 defaultReader.cpp:537 globals.cpp:42 +#: itemFactory.cpp:105 itemFactory.cpp:366 +msgid "none" +msgstr "" + +#: bootAuthenticationOptions.cpp:50 +msgid "Boot Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:52 +msgid "Boot Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:56 +msgid "" +"Here, you can type or choose the boot log file (example: " +"/var/log/boot.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:57 +msgid "" +"You can type or choose here the boot log file. This file will be analyzed " +"by KSystemLog when you will choose the Boot log " +"menu item. Generally, its name is /var/log/boot.log" +msgstr "" + +#: bootAuthenticationOptions.cpp:62 +msgid "Authentication Log File" +msgstr "" + +#: bootAuthenticationOptions.cpp:64 +msgid "Authentication Log File:" +msgstr "" + +#: bootAuthenticationOptions.cpp:68 +msgid "" +"Here, you can type or choose the authentication log file (example: " +"/var/log/auth.log)." +msgstr "" + +#: bootAuthenticationOptions.cpp:69 +msgid "" +"You can type or choose here the authentication log file. This file will be " +"analyzed by KSystemLog when you will choose the Authentication log " +"menu item. Generally, its name is /var/log/auth.log" +msgstr "" + +#: cronOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Cron Logs " +"(i.e. planned tasks logs). This list also determines the order in which the " +"files are read.

" +msgstr "" + +#: cronReader.cpp:40 cupsAccessReader.cpp:39 systemReader.cpp:39 +msgid "Host Name" +msgstr "" + +#: cronReader.cpp:41 sambaReader.cpp:40 systemReader.cpp:40 +msgid "Process" +msgstr "" + +#: cronReader.cpp:42 cupsAccessReader.cpp:41 +msgid "User" +msgstr "" + +#: cupsAccessReader.cpp:40 +msgid "Id." +msgstr "" + +#: cupsAccessReader.cpp:42 +msgid "Response" +msgstr "" + +#: cupsAccessReader.cpp:43 +msgid "Bytes Sent" +msgstr "" + +#: cupsAccessReader.cpp:44 +msgid "HTTP Request" +msgstr "" + +#: cupsOptions.cpp:47 +msgid "" +"" +"

These files will be analyzed to display Cups log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsOptions.cpp:48 +msgid "" +"" +"

These files will be analyzed to display Cups Web Server log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: cupsReader.cpp:77 +msgid "debug 2" +msgstr "" + +#: cupsReader.cpp:97 +msgid "" +"New Log Level detected: Please send this log file to the KSystemLog developer " +"to add it." +msgstr "" + +#: daemonOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display daemons Logs" +". This list also determine the order in which the files are read.

" +msgstr "" + +#: defaultReader.cpp:86 +msgid "Opening file '%1'..." +msgstr "" + +#: defaultReader.cpp:105 +msgid "No log line in '%1'." +msgstr "" + +#: defaultReader.cpp:294 +msgid "Log file '%1' loaded successfully." +msgstr "" + +#: defaultReader.cpp:385 +msgid "Log file '%1' has changed." +msgstr "" + +#: detailDialog.cpp:38 +msgid "Log Line Details" +msgstr "" + +#: detailDialog.cpp:45 +msgid "" +"This dialog displays detailed information about the currently selected log " +"line." +msgstr "" + +#: detailDialog.cpp:83 +msgid "Move to the previous line" +msgstr "" + +#: detailDialog.cpp:84 +msgid "" +"Moves to the previous line. This button is deactivated if there is no previous " +"log line." +msgstr "" + +#: detailDialog.cpp:87 +msgid "&Next" +msgstr "" + +#: detailDialog.cpp:93 +msgid "Move to the next line" +msgstr "" + +#: detailDialog.cpp:94 +msgid "" +"Moves to the next line. This button is deactivated if there is no next log " +"line." +msgstr "" + +#: detailDialog.cpp:101 +msgid "Close the Detail dialog." +msgstr "" + +#: detailDialog.cpp:102 +msgid "Closes this Detail dialog." +msgstr "" + +#: fileList.cpp:64 +msgid "List of files used by this log type" +msgstr "" + +#: fileList.cpp:65 +msgid "" +"Here is a list of every files that will be read by KSystemLog to display " +"the current log lines." +msgstr "" + +#: fileList.cpp:68 fileList.cpp:96 +msgid "&Add a file" +msgstr "" + +#: fileList.cpp:70 +msgid "Choose a new file" +msgstr "" + +#: fileList.cpp:71 +msgid "Opens a dialog box to choose a new file to be added to the list." +msgstr "" + +#: fileList.cpp:76 +msgid "Delete the current file(s)" +msgstr "" + +#: fileList.cpp:77 +msgid "Deletes the selected files of the list." +msgstr "" + +#: fileList.cpp:79 fileList.cpp:99 +msgid "Move &Up" +msgstr "" + +#: fileList.cpp:81 +msgid "Move up the current file(s)" +msgstr "" + +#: fileList.cpp:82 +msgid "" +"Moves up the selected files in the list. This option allows the files to be " +"read in first by KSystemLog." +msgstr "" + +#: fileList.cpp:84 fileList.cpp:100 +msgid "Move &Down" +msgstr "" + +#: fileList.cpp:86 +msgid "Move down the current file(s)" +msgstr "" + +#: fileList.cpp:87 +msgid "" +"Moves down the selected files in the list. This option allows the files to " +"be read at last by KSystemLog." +msgstr "" + +#: fileList.cpp:89 fileList.cpp:102 +msgid "Re&move All" +msgstr "" + +#: fileList.cpp:91 +msgid "Remove all files" +msgstr "" + +#: fileList.cpp:92 +msgid "Remove all files of the list, even if they are not selected." +msgstr "" + +#: fileList.cpp:95 +msgid "File list" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "All files (*)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Log files (*.log)" +msgstr "" + +#: fileList.cpp:139 specificFileList.cpp:82 +msgid "Choose a log file" +msgstr "" + +#: fileList.cpp:159 +msgid "'%1' is not valid." +msgstr "" + +#: fileList.cpp:160 fileList.cpp:167 fileList.cpp:174 +msgid "File selection failed" +msgstr "" + +#: fileList.cpp:166 +msgid "'%1' is not a local file." +msgstr "" + +#: fileList.cpp:173 +msgid "'%1' is a folder." +msgstr "" + +#: generalOptions.cpp:49 +msgid "Log Lines List" +msgstr "" + +#: generalOptions.cpp:50 +msgid "Maximum Lines Displayed:" +msgstr "" + +#: generalOptions.cpp:54 +msgid "" +"Choose here the maximum number of log lines displayed in the main view." +msgstr "" + +#: generalOptions.cpp:55 +msgid "" +"You can choose here the maximum number of log lines displayed in the main " +"view." +msgstr "" + +#: generalOptions.cpp:57 +msgid "Delete duplicated log lines (may be slow)" +msgstr "" + +#: generalOptions.cpp:60 +msgid "" +"Select this option if you want to delete duplicated log lines " +"(may be slow)." +msgstr "" + +#: generalOptions.cpp:61 +msgid "" +"You can select this option if you want to delete duplicated log lines. " +"This option can slow the reading." +msgstr "" + +#: generalOptions.cpp:66 +msgid "Maximum Characters to Read Per Line" +msgstr "" + +#: generalOptions.cpp:67 +msgid "Number of Characters:" +msgstr "" + +#: generalOptions.cpp:71 +msgid "" +"Choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: generalOptions.cpp:72 +msgid "" +"You can choose here the maximum number of characters to read from each log " +"line." +msgstr "" + +#: globals.cpp:45 +msgid "debug" +msgstr "" + +#: globals.cpp:48 +msgid "information" +msgstr "" + +#: globals.cpp:51 +msgid "notice" +msgstr "" + +#: globals.cpp:54 +msgid "warning" +msgstr "" + +#: globals.cpp:57 +msgid "error" +msgstr "" + +#: globals.cpp:60 +msgid "critical" +msgstr "" + +#: globals.cpp:63 +msgid "alert" +msgstr "" + +#: globals.cpp:66 +msgid "emergency" +msgstr "" + +#: globals.cpp:91 +msgid "No log" +msgstr "" + +#: globals.cpp:94 +msgid "File log" +msgstr "" + +#: globals.cpp:97 +msgid "System log" +msgstr "" + +#: globals.cpp:100 +msgid "Kernel log" +msgstr "" + +#: globals.cpp:103 +msgid "X.org log" +msgstr "" + +#: globals.cpp:106 +msgid "Samba log" +msgstr "" + +#: globals.cpp:109 +msgid "Boot log" +msgstr "" + +#: globals.cpp:112 +msgid "Authentication log" +msgstr "" + +#: globals.cpp:115 +msgid "Cron log" +msgstr "" + +#: globals.cpp:118 +msgid "Daemon log" +msgstr "" + +#: globals.cpp:121 +msgid "ACPI log" +msgstr "" + +#: globals.cpp:124 +msgid "Cups log" +msgstr "" + +#: globals.cpp:127 +msgid "Cups Access log" +msgstr "" + +#: itemFactory.cpp:78 +msgid "Today" +msgstr "" + +#: itemFactory.cpp:80 +msgid "Yesterday" +msgstr "" + +#: itemFactory.cpp:88 +msgid "%1, %2h" +msgstr "" + +#: itemFactory.cpp:229 itemFactory.cpp:232 itemFactory.cpp:236 +#: itemFactory.cpp:239 itemFactory.cpp:247 +msgid "
Group: %1
" +msgstr "" + +#: itemFactory.cpp:235 +msgid "%1, %2 hour" +msgstr "" + +#: itemFactory.cpp:245 +msgid "
Group: none
" +msgstr "" + +#: itemFactory.cpp:260 itemFactory.cpp:279 itemFactory.cpp:297 +#: itemFactory.cpp:311 itemFactory.cpp:326 itemFactory.cpp:349 +msgid "Date:" +msgstr "" + +#: itemFactory.cpp:261 itemFactory.cpp:280 itemFactory.cpp:328 +msgid "Hostname:" +msgstr "" + +#: itemFactory.cpp:262 itemFactory.cpp:281 +msgid "Process:" +msgstr "" + +#: itemFactory.cpp:263 +msgid "User:" +msgstr "" + +#: itemFactory.cpp:264 itemFactory.cpp:282 itemFactory.cpp:298 +#: itemFactory.cpp:312 itemFactory.cpp:327 itemFactory.cpp:350 +msgid "Level:" +msgstr "" + +#: itemFactory.cpp:265 itemFactory.cpp:283 itemFactory.cpp:351 +#: itemFactory.cpp:370 +msgid "Original File:" +msgstr "" + +#: itemFactory.cpp:299 itemFactory.cpp:366 itemFactory.cpp:368 +msgid "Type:" +msgstr "" + +#: itemFactory.cpp:329 +msgid "Identification:" +msgstr "" + +#: itemFactory.cpp:330 +msgid "Username:" +msgstr "" + +#: itemFactory.cpp:331 +msgid "HTTP Response:" +msgstr "" + +#: itemFactory.cpp:332 +msgid "Bytes Sent:" +msgstr "" + +#: kernelOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display Kernel logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: ksystemlog.cpp:150 ksystemlog.cpp:305 +msgid "Create a new tab" +msgstr "" + +#: ksystemlog.cpp:151 ksystemlog.cpp:306 +msgid "Creates a new tab which can display another log." +msgstr "" + +#: ksystemlog.cpp:156 ksystemlog.cpp:309 +msgid "Close the current tab" +msgstr "" + +#: ksystemlog.cpp:157 ksystemlog.cpp:310 +msgid "Closes the current tab." +msgstr "" + +#: ksystemlog.cpp:258 +msgid "Open a file in KSystemLog" +msgstr "" + +#: ksystemlog.cpp:259 +msgid "Opens a file in KSystemLog and displays its content in the current tab." +msgstr "" + +#: ksystemlog.cpp:265 +msgid "Save the selection to a file" +msgstr "" + +#: ksystemlog.cpp:266 +msgid "" +"Saves the selection to a file. This action is useful if you want to create an " +"attachment or a backup of a particular log." +msgstr "" + +#: ksystemlog.cpp:270 +msgid "Quit KSystemLog" +msgstr "" + +#: ksystemlog.cpp:271 +msgid "Quits KSystemLog." +msgstr "" + +#: ksystemlog.cpp:274 +msgid "Copy the selection to the clipboard" +msgstr "" + +#: ksystemlog.cpp:275 +msgid "" +"Copies the selection to the clipboard. This action is useful if you want to " +"paste the selection in a chat or an email." +msgstr "" + +#: ksystemlog.cpp:278 +msgid "&Email selection" +msgstr "" + +#: ksystemlog.cpp:279 +msgid "Send the selection by mail" +msgstr "" + +#: ksystemlog.cpp:280 +msgid "" +"Sends the selection by mail. Simply select the important lines and click on " +"this menu entry to send the selection to a friend or a mailing list." +msgstr "" + +#: ksystemlog.cpp:284 +msgid "Select all lines of the current log" +msgstr "" + +#: ksystemlog.cpp:285 +msgid "" +"Selects all lines of the current log. This action is useful if you want, for " +"example, to save all the content of the current log in a file." +msgstr "" + +#: ksystemlog.cpp:291 +msgid "Show &Filter Bar" +msgstr "" + +#: ksystemlog.cpp:304 +msgid "&New tab" +msgstr "" + +#: ksystemlog.cpp:308 +msgid "&Close tab" +msgstr "" + +#: ksystemlog.cpp:312 +msgid "&Duplicate tab" +msgstr "" + +#: ksystemlog.cpp:313 +msgid "Duplicate the current tab" +msgstr "" + +#: ksystemlog.cpp:314 +msgid "Duplicates the current tab." +msgstr "" + +#: ksystemlog.cpp:316 +msgid "Move tab &left" +msgstr "" + +#: ksystemlog.cpp:317 +msgid "Move the current tab to the left" +msgstr "" + +#: ksystemlog.cpp:318 +msgid "Moves the current tab to the left." +msgstr "" + +#: ksystemlog.cpp:320 +msgid "Move tab &right" +msgstr "" + +#: ksystemlog.cpp:321 +msgid "Move the current tab to the right" +msgstr "" + +#: ksystemlog.cpp:322 +msgid "Moves the current tab to the right." +msgstr "" + +#: ksystemlog.cpp:326 +msgid "Reload the current log" +msgstr "" + +#: ksystemlog.cpp:327 +msgid "" +"Reloads the current log, if you want to be sure that the view is correctly " +"updated." +msgstr "" + +#: ksystemlog.cpp:329 +msgid "Resu&me Parsing" +msgstr "" + +#: ksystemlog.cpp:330 +msgid "Resume the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:331 +msgid "" +"Resumes the watching of the current log. This action is only available when the " +"user has already paused the reading." +msgstr "" + +#: ksystemlog.cpp:334 +msgid "S&top Parsing" +msgstr "" + +#: ksystemlog.cpp:335 +msgid "Pause the watching of the current log" +msgstr "" + +#: ksystemlog.cpp:336 +msgid "" +"Pauses the watching of the current log. This action is particularly useful when " +"the system is writing too many lines to log files, causing KSystemLog to reload " +"too frequently." +msgstr "" + +#: ksystemlog.cpp:338 +msgid "&Details" +msgstr "" + +#: ksystemlog.cpp:339 +msgid "Display details on the currently selected line" +msgstr "" + +#: ksystemlog.cpp:340 +msgid "" +"Displays a dialog box which contains details on the currently selected line. " +"You are able to navigate through the logs from this dialog box with the " +"Previous / Next buttons." +msgstr "" + +#: ksystemlog.cpp:343 +msgid "&Enable Detailed Tooltips" +msgstr "" + +#: ksystemlog.cpp:344 +msgid "Disable/Enable the tooltips on the current view" +msgstr "" + +#: ksystemlog.cpp:345 +msgid "" +"Disables/Enables the tooltips displayed when the cursor hovers a log line." +msgstr "" + +#: ksystemlog.cpp:350 +msgid "&Display New Lines" +msgstr "" + +#: ksystemlog.cpp:351 +msgid "Display or not new lines if the log changes" +msgstr "" + +#: ksystemlog.cpp:352 +msgid "" +"Displays or not the new lines if the log changes. This option is useful when " +"you want to see an old log lines and that KSystemLog often refreshes the " +"current view." +msgstr "" + +#: ksystemlog.cpp:369 +msgid "S&ystem log" +msgstr "" + +#: ksystemlog.cpp:370 +msgid "Display the system log." +msgstr "" + +#: ksystemlog.cpp:371 +msgid "" +"Displays the system log in the current tab. This log is generally used by " +"non-specialized processes (like \"sudo\" or \"fsck\" commands)" +msgstr "" + +#: ksystemlog.cpp:376 +msgid "&Kernel log" +msgstr "" + +#: ksystemlog.cpp:377 +msgid "Display the kernel log." +msgstr "" + +#: ksystemlog.cpp:378 +msgid "" +"Displays the kernel log in the current tab. This log is only useful for " +"users who want to know why the Kernel does not detect their hardware or what is " +"the cause of the last kernel panic/oops." +msgstr "" + +#: ksystemlog.cpp:383 +msgid "&Boot log" +msgstr "" + +#: ksystemlog.cpp:384 +msgid "Display the boot log." +msgstr "" + +#: ksystemlog.cpp:385 +msgid "" +"Displays the boot log in the current tab. This log is useful if you want to " +"verify if all startup services have been correctly started." +msgstr "" + +#: ksystemlog.cpp:390 +msgid "A&uthentication log" +msgstr "" + +#: ksystemlog.cpp:391 +msgid "Display the authentication log." +msgstr "" + +#: ksystemlog.cpp:392 +msgid "" +"Displays the authentication log in the current tab. This log displays all " +"log in made by each user of the system, and can help you to know if someone " +"tried to crack your system." +msgstr "" + +#: ksystemlog.cpp:397 +msgid "&Daemons log" +msgstr "" + +#: ksystemlog.cpp:398 +msgid "Display the daemons log." +msgstr "" + +#: ksystemlog.cpp:399 +msgid "" +"Displays the daemons log in the current tab. The daemons are all processes " +"launched in the background of the system. See this log if you want to know what " +"it occurs in the background of your system." +msgstr "" + +#: ksystemlog.cpp:404 +msgid "&Planned tasks log" +msgstr "" + +#: ksystemlog.cpp:405 +msgid "Display the planned tasks log (or Cron log)." +msgstr "" + +#: ksystemlog.cpp:406 +msgid "" +"Displays the planned tasks log in the current tab. Cron process is a " +"program in charged of launching planned tasks on your system, like security " +"checks, or auto-restarting of some services. Use this menu to see the " +"last-launched processes." +msgstr "" + +#: ksystemlog.cpp:411 +msgid "&X.org log" +msgstr "" + +#: ksystemlog.cpp:412 +msgid "Display the X.org log." +msgstr "" + +#: ksystemlog.cpp:413 +msgid "" +"Displays the X.org log in the current tab. X.org is the service which " +"displays on screen your desktop and manage your graphical hardware. See this " +"log if you want to know why you do not have 3D accelerations or why your input " +"device is not recognized." +msgstr "" + +#: ksystemlog.cpp:418 +msgid "&ACPI log" +msgstr "" + +#: ksystemlog.cpp:419 +msgid "Display the ACPI log." +msgstr "" + +#: ksystemlog.cpp:420 +msgid "" +"Displays the ACPI log in the current tab. ACPI is used to manage the " +"hardware components of your computer, like notebook batteries, reset " +"buttons..." +msgstr "" + +#: ksystemlog.cpp:425 +msgid "&Cups log" +msgstr "" + +#: ksystemlog.cpp:426 +msgid "Display the Cups log." +msgstr "" + +#: ksystemlog.cpp:427 +msgid "" +"Displays the Cups log in the current tab. CUPS is the program which manage " +"printing on your computer." +msgstr "" + +#: ksystemlog.cpp:432 +msgid "&Cups Web log" +msgstr "" + +#: ksystemlog.cpp:433 +msgid "Display the Cups Web Server Access log." +msgstr "" + +#: ksystemlog.cpp:434 +msgid "" +"Displays the Cups Web Server Access log in the current tab. CUPS is the " +"program which manage printing on your computer. This log saves all requests " +"performed to the Cups embedded web server (default: http://localhost:631" +")." +msgstr "" + +#: ksystemlog.cpp:596 +msgid "No Log" +msgstr "" + +#: ksystemlog.cpp:946 +#, c-format +msgid "" +"_n: 1 log line.\n" +"%n log lines." +msgstr "" + +#: ksystemlog.cpp:950 +#, c-format +msgid "Last updated: %1." +msgstr "" + +#: ksystemlog.cpp:988 +msgid "No items selected. Nothing copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:995 +#, c-format +msgid "" +"_n: 1 log line copied to clipboard.\n" +"%n log lines copied to clipboard." +msgstr "" + +#: ksystemlog.cpp:1006 +msgid "No items selected. Please select items to be able to save them." +msgstr "" + +#: ksystemlog.cpp:1036 +msgid "" +"_n: 1 log line saved to '%1'.\n" +"%n log lines saved to '%1'." +msgstr "" + +#: ksystemlog.cpp:1039 +msgid "Unable to save file '%1': Permission Denied." +msgstr "" + +#: ksystemlog.cpp:1040 +msgid "Unable to save file." +msgstr "" + +#: ksystemlog.cpp:1156 +msgid "Open Location" +msgstr "" + +#: ksystemlog.cpp:1169 +msgid "Malformed URL. Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1170 +msgid "Unable to open this file." +msgstr "" + +#: ksystemlog.cpp:1581 +msgid "Group By" +msgstr "" + +#: ksystemlog.cpp:1586 +msgid "None" +msgstr "" + +#: ksystemlog.cpp:1590 +msgid "Log Level" +msgstr "" + +#: ksystemlog.cpp:1592 +msgid "Day" +msgstr "" + +#: ksystemlog.cpp:1594 +msgid "Hour" +msgstr "" + +#: ksystemlog.cpp:1596 +msgid "Log File" +msgstr "" + +#: ksystemlog.cpp:1730 +msgid "" +"Here are my logs:\n" +msgstr "" + +#: ksystemlog.cpp:1732 ksystemlog.cpp:1749 +msgid "" +"---------------------------------------\n" +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "" +"You have selected too many lines. Please only select important log lines." +msgstr "" + +#: ksystemlog.cpp:1753 +msgid "Too Many Lines Selected" +msgstr "" + +#: ksystemlog.cpp:1767 +msgid "Log Lines of my problem" +msgstr "" + +#: loadingDialog.cpp:26 +msgid "Loading Progress" +msgstr "" + +#: loadingDialog.cpp:87 +msgid "Loading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:89 +msgid "Reloading %1 (%2/%3)..." +msgstr "" + +#: loadingDialog.cpp:93 +msgid "Loading %1..." +msgstr "" + +#: loadingDialog.cpp:95 +msgid "Reloading %1..." +msgstr "" + +#: logManager.cpp:102 +msgid "Loading log..." +msgstr "" + +#: logManager.cpp:122 +msgid "Log successfully loaded." +msgstr "" + +#: logManager.cpp:218 +msgid "%1 (%2)" +msgstr "" + +#: main.cpp:30 +msgid "System Logs Viewer Tool for KDE" +msgstr "" + +#: main.cpp:35 +msgid "Document to open" +msgstr "" + +#: main.cpp:42 +msgid "KSystemlog" +msgstr "" + +#: main.cpp:54 +msgid "Ideas, Code improvements" +msgstr "" + +#: main.cpp:55 +msgid "French trains between Paris and Rouen" +msgstr "" + +#: main.cpp:55 +msgid "Often late, so I have time to improve KSystemLog ;-)" +msgstr "" + +#: options.cpp:86 +msgid "General" +msgstr "" + +#: options.cpp:115 +msgid "Boot / Authentication" +msgstr "" + +#: options.cpp:115 +msgid "Boot && Authentication Logs" +msgstr "" + +#: options.cpp:141 +msgid "System Log" +msgstr "" + +#: options.cpp:170 +msgid "Kernel Log" +msgstr "" + +#: options.cpp:197 +msgid "Cron Log" +msgstr "" + +#: options.cpp:224 +msgid "Daemons Log" +msgstr "" + +#: options.cpp:251 +msgid "X.org Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Log" +msgstr "" + +#: options.cpp:280 +msgid "ACPI Daemon Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups Log" +msgstr "" + +#: options.cpp:309 +msgid "Cups and Cups Web Server Log" +msgstr "" + +#: options.cpp:337 +msgid "Samba Log" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 31 +#: rc.cpp:9 +#, no-c-format +msgid "&Logs" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 42 +#: rc.cpp:12 +#, no-c-format +msgid "&Cups" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 58 +#: rc.cpp:18 +#, no-c-format +msgid "&Window" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 71 +#: rc.cpp:21 +#, no-c-format +msgid "Log Toolbar" +msgstr "" + +#. i18n: file ./ksystemlogui.rc line 89 +#: rc.cpp:24 +#, no-c-format +msgid "Main toolbar" +msgstr "" + +#: reader.cpp:168 +msgid "This file is not valid. Please adjust it in the settings of KSystemLog." +msgstr "" + +#: reader.cpp:169 reader.cpp:181 +msgid "The file does not exist" +msgstr "" + +#: reader.cpp:180 +msgid "The file '%1' does not exist." +msgstr "" + +#: reader.cpp:189 +msgid "You do not have sufficient permissions to read '%1'." +msgstr "" + +#: reader.cpp:190 +msgid "Insufficient permissions" +msgstr "" + +#: readerFactory.cpp:265 readerFactory.cpp:297 readerFactory.cpp:384 +msgid "URL '%1' is not valid, skipping this URL." +msgstr "" + +#: readerFactory.cpp:278 +msgid "The two arrays size are different, skipping the reading of log files." +msgstr "" + +#: sambaOptions.cpp:49 +msgid "" +"" +"

These files will be analyzed to display Samba log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: sambaReader.cpp:38 +msgid "Time" +msgstr "" + +#: sambaReader.cpp:39 +msgid "Host" +msgstr "" + +#: specificFileList.cpp:48 specificFileList.cpp:54 +msgid "&Change status" +msgstr "" + +#: specificFileList.cpp:50 +msgid "Change the level of the current file(s)" +msgstr "" + +#: specificFileList.cpp:51 +msgid "" +"Changes the level of the current file(s). See KSystemLog documentation for " +"more information about each log level." +msgstr "" + +#: specificFileList.cpp:110 +msgid "Selecting the file type" +msgstr "" + +#: specificFileList.cpp:116 +msgid "Please select the type of this file:" +msgstr "" + +#: specificFileList.cpp:119 +msgid "List of existing log levels" +msgstr "" + +#: specificFileList.cpp:120 +msgid "" +"This is the list of all existing log levels. Please select one of them to " +"be used for the selected files of the list." +msgstr "" + +#: specificFileList.cpp:184 +msgid "" +"The two arrays size are different, skipping the reading of generic paths." +msgstr "" + +#: systemOptions.cpp:50 +msgid "" +"" +"

These files will be analyzed to display System logs" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: view.cpp:76 view.cpp:79 +msgid "Clear the filter" +msgstr "" + +#: view.cpp:78 +msgid "This button clears the filter in one click." +msgstr "" + +#: view.cpp:82 +msgid "Filter:" +msgstr "" + +#: view.cpp:87 +msgid "" +"Allows you to select only list items that match the content of this text." +msgstr "" + +#: view.cpp:88 +msgid "Type your item filter here" +msgstr "" + +#: view.cpp:90 +msgid "Column:" +msgstr "" + +#: view.cpp:218 view.cpp:335 +msgid "All" +msgstr "" + +#: view.cpp:270 +msgid "" +"" +"

This is the main view of KSystemLog. It displays the last lines of the " +"selected log. Please see the documentation to discovers the meaning of each " +"icons and existing log.

" +"

Log lines in bold are the last added to the list.

" +msgstr "" + +#: view.cpp:332 +msgid "" +"Allows you to apply the item filter only on the specified column here. \"" +"All\" column means no specific filter." +msgstr "" + +#: view.cpp:333 +msgid "Choose the filtered column here" +msgstr "" + +#: xorgOptions.cpp:51 +msgid "" +"" +"

These files will be analyzed to display X.org log" +". This list also determines the order in which the files are read.

" +msgstr "" + +#: xorgReader.cpp:55 +msgid "Line" +msgstr "" + +#: xorgReader.cpp:96 +msgid "probed" +msgstr "" + +#: xorgReader.cpp:97 +msgid "from config file" +msgstr "" + +#: xorgReader.cpp:98 +msgid "default setting" +msgstr "" + +#: xorgReader.cpp:99 +msgid "from command Line" +msgstr "" + +#: xorgReader.cpp:104 +msgid "not implemented" +msgstr "" diff --git a/ksystemlog/src/Makefile.am b/ksystemlog/src/Makefile.am new file mode 100644 index 0000000..5cc9aba --- /dev/null +++ b/ksystemlog/src/Makefile.am @@ -0,0 +1,76 @@ +## Makefile.am for ksystemlog + +# this is the program that gets installed. it's name is used for all +# of the other Makefile.am variables +bin_PROGRAMS = ksystemlog + +# set the include path for X, qt and KDE +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config \ + -I$(top_srcdir)/ksystemlog/src/acpid -I$(top_builddir)/ksystemlog/src \ + -I$(top_srcdir)/ksystemlog/src/apache -I$(top_srcdir)/ksystemlog/src/bootauth \ + -I$(top_srcdir)/ksystemlog/src/cron -I$(top_srcdir)/ksystemlog/src/cups \ + -I$(top_srcdir)/ksystemlog/src/daemon -I$(top_srcdir)/ksystemlog/src/kernel \ + -I$(top_srcdir)/ksystemlog/src/postfix -I$(top_srcdir)/ksystemlog/src/samba \ + -I$(top_srcdir)/ksystemlog/src/system -I$(top_srcdir)/ksystemlog/src/xorg $(all_includes) + +# the library search path. +ksystemlog_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lkutils + +# the libraries to link against. +ksystemlog_LDADD = \ + $(top_builddir)/ksystemlog/src/bootauth/libksystemlog_bootauth.la \ + $(top_builddir)/ksystemlog/src/config/libksystemlog_config.la \ + $(top_builddir)/ksystemlog/src/acpid/libksystemlog_acpid.la \ + $(top_builddir)/ksystemlog/src/daemon/libksystemlog_daemon.la \ + $(top_builddir)/ksystemlog/src/cups/libksystemlog_cups.la \ + $(top_builddir)/ksystemlog/src/kernel/libksystemlog_kernel.la \ + $(top_builddir)/ksystemlog/src/postfix/libksystemlog_postfix.la \ + $(top_builddir)/ksystemlog/src/xorg/libksystemlog_xorg.la \ + $(top_builddir)/ksystemlog/src/system/libksystemlog_system.la \ + $(top_builddir)/ksystemlog/src/cron/libksystemlog_cron.la \ + $(top_builddir)/ksystemlog/src/apache/libksystemlog_apache.la \ + $(top_builddir)/ksystemlog/src/samba/libksystemlog_samba.la \ + $(LIB_KFILE) $(LIB_KDEPRINT) + +# which sources should be compiled for ksystemlog + + +# these are the headers for your project + + +# client stuff + +# let automoc handle all of the meta source files (moc) +METASOURCES = AUTO + +messages: rc.cpp + $(EXTRACTRC) `find . -name \*.ui -o -name \*.rc` > rc.cpp + $(XGETTEXT) *.cpp -o $(podir)/ksystemlog.pot + +KDE_ICON = AUTO + +# this is where the kdelnk file will go +kdelnkdir = $(kde_appsdir)/Utilities +kdelnk_DATA = ksystemlog.desktop + +# this is where the XML-GUI resource file goes +rcdir = $(kde_datadir)/ksystemlog +rc_DATA = ksystemlogui.rc + +ksystemlog_SOURCES = detailDialogBase.ui loggerDialogBase.ui detailDialog.cpp \ + fileList.cpp generalOptions.cpp globals.cpp ksystemlog.cpp logFile.cpp logLevel.cpp \ + logLine.cpp logLineList.cpp logListItem.cpp logViewColumn.cpp main.cpp options.cpp \ + reader.cpp specificFileList.cpp view.cpp viewToolTip.cpp logManager.cpp \ + defaultReader.cpp logMode.cpp ksystemlogiface.skel childLogLine.cpp parentLogLine.cpp \ + logLineTree.cpp readerFactory.cpp itemFactory.cpp logViewColumns.cpp loadingDialog.cpp \ + slotLogAction.cpp parsingHelper.cpp logLineFilter.cpp loggerDialog.cpp findManager.cpp + +noinst_HEADERS = defaultReader.h detailDialog.h fileList.h generalOptions.h \ + globals.h ksystemlogiface.h logFile.h logLevel.h logLine.h logLineList.h \ + logListItem.h logViewColumn.h options.h reader.h specificFileList.h view.h \ + viewToolTip.h logManager.h logMode.h childLogLine.h parentLogLine.h logLineTree.h \ + readerFactory.h itemFactory.h logViewColumns.h loadingDialog.h slotLogAction.h \ + slotLogActionCompatibility.h parsingHelper.h logLineFilter.h loggerDialog.h findManager.h + +SUBDIRS = config bootauth acpid apache cron system xorg postfix kernel cups daemon samba . + diff --git a/ksystemlog/src/acpid/Makefile.am b/ksystemlog/src/acpid/Makefile.am new file mode 100644 index 0000000..2fa0084 --- /dev/null +++ b/ksystemlog/src/acpid/Makefile.am @@ -0,0 +1,8 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_acpid.la +libksystemlog_acpid_la_LDFLAGS = $(all_libraries) +libksystemlog_acpid_la_SOURCES = acpidOptions.cpp acpidReader.cpp +noinst_HEADERS = acpidOptions.h acpidReader.h + diff --git a/ksystemlog/src/acpid/acpidOptions.cpp b/ksystemlog/src/acpid/acpidOptions.cpp new file mode 100644 index 0000000..63aa273 --- /dev/null +++ b/ksystemlog/src/acpid/acpidOptions.cpp @@ -0,0 +1,104 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "acpidOptions.h" +#include "ksystemlogConfig.h" + +AcpidOptions::AcpidOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description=i18n("

These files will be analyzed to display ACPId log. This list also determines the order in which the files are read.

"); + fileList=new FileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +AcpidOptions::~AcpidOptions() { + //TODO Delete fileList (and also in other *Options classes) +} + +bool AcpidOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void AcpidOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void AcpidOptions::saveConfig() { + kdDebug() << "Save config from AcpidOptions" << endl; + + QStringList list; + + int count=fileList->count(); + + for (int i=0; igetText(i)); + } + + KSystemLogConfig::setAcpidPaths(list); +} + +void AcpidOptions::readConfig() { + QStringList files(KSystemLogConfig::acpidPaths()); + + QStringList::iterator it; + for(it=files.begin(); it!=files.end(); ++it) { + fileList->insertItem(*it); + } + +} + +#include "acpidOptions.moc" diff --git a/ksystemlog/src/acpid/acpidOptions.h b/ksystemlog/src/acpid/acpidOptions.h new file mode 100644 index 0000000..d572e24 --- /dev/null +++ b/ksystemlog/src/acpid/acpidOptions.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _ACPID_OPTIONS_H_ +#define _ACPID_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "fileList.h" + + +class AcpidOptions : public QWidget { + + Q_OBJECT + + public: + AcpidOptions(QWidget *parent = 0); + ~AcpidOptions(); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + + FileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/acpid/acpidReader.cpp b/ksystemlog/src/acpid/acpidReader.cpp new file mode 100644 index 0000000..9a41a25 --- /dev/null +++ b/ksystemlog/src/acpid/acpidReader.cpp @@ -0,0 +1,113 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include + +#include "parsingHelper.h" + +#include "acpidReader.h" + +AcpidReader::AcpidReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { +} + + +AcpidReader::~AcpidReader() { + +} + + +void AcpidReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Type"), true, true)); + columns->append(new LogViewColumn(i18n("Message"), true, false)); + +} + +LogLine* AcpidReader::parseMessage(QString& logLine, LogFile* logFile) { + + int dateBegin=logLine.find("["); + int dateEnd=logLine.find("]"); + + QString type; + QString message; + QDate date; + QTime time; + + //If there is a format problem in the line + if (dateBegin==-1 || dateEnd==-1) { + type=i18n("none"); + message=logLine; + date=QDate::currentDate(); + time=QTime::currentTime(); + } + else { + + QString strDate=logLine.mid(dateBegin+1, dateEnd-dateBegin-1); + + QString month=strDate.mid(4, 3); + + QString day=strDate.mid(8, 2); + + QString hour=strDate.mid(11, 2); + QString min=strDate.mid(14, 2); + QString sec=strDate.mid(17, 2); + + QString year=strDate.mid(20, 4); + + date=QDate(year.toInt(), ParsingHelper::parseMonthNumber(month), day.toInt()); + time=QTime(hour.toInt(), min.toInt(), sec.toInt()); + + //kdDebug() << "Date=" << date.toString() << endl; + //kdDebug() << "Time=" << time.toString() << endl; + + logLine=logLine.remove(0, dateEnd+2); + + int endType=logLine.find("\""); + + //If the " character does not exist, it means that there is no Type category + if (endType==-1) { + type=i18n("none"); + message=logLine; + } + else { + type=logLine.left(endType-1); + logLine=logLine.remove(0, endType+1); + + message=logLine.left(logLine.length()-2); + } + + } + + + QStringList list; + + list.push_back(type); + list.push_back(message); + + QString filePath=logFile->url.path(); + LogLine* line=new LogLine(date, time, list, filePath, Globals::informationLogLevel, Globals::acpidMode->id); + return(line); +} + + +#include "acpidReader.moc" diff --git a/ksystemlog/src/acpid/acpidReader.h b/ksystemlog/src/acpid/acpidReader.h new file mode 100644 index 0000000..0ed6397 --- /dev/null +++ b/ksystemlog/src/acpid/acpidReader.h @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _ACPID_READER_H_ +#define _ACPID_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class AcpidReader : public DefaultReader { + Q_OBJECT + + public: + AcpidReader(QObject *parent = 0, const char *name = 0); + + virtual ~AcpidReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + +}; + +#endif diff --git a/ksystemlog/src/apache/Makefile.am b/ksystemlog/src/apache/Makefile.am new file mode 100644 index 0000000..d219b36 --- /dev/null +++ b/ksystemlog/src/apache/Makefile.am @@ -0,0 +1,8 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_apache.la +libksystemlog_apache_la_LDFLAGS = $(all_libraries) +libksystemlog_apache_la_SOURCES = apacheAccessReader.cpp apacheOptions.cpp apacheReader.cpp +noinst_HEADERS = apacheAccessReader.h apacheOptions.h apacheReader.h + diff --git a/ksystemlog/src/apache/apacheAccessReader.cpp b/ksystemlog/src/apache/apacheAccessReader.cpp new file mode 100644 index 0000000..617d9ab --- /dev/null +++ b/ksystemlog/src/apache/apacheAccessReader.cpp @@ -0,0 +1,119 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include + +#include "parsingHelper.h" +#include "apacheAccessReader.h" + +ApacheAccessReader::ApacheAccessReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { +} + + +ApacheAccessReader::~ApacheAccessReader() { + +} + + +void ApacheAccessReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Host Name"), true, true)); + columns->append(new LogViewColumn(i18n("Id."), true, true)); //=Identification protocol [From RFC1413 (see Google for more infos)] + columns->append(new LogViewColumn(i18n("User"), true, true)); + columns->append(new LogViewColumn(i18n("Response"), true, true)); + columns->append(new LogViewColumn(i18n("Bytes Sent"), true, false)); + columns->append(new LogViewColumn(i18n("Agent Identity"), true, true)); + columns->append(new LogViewColumn(i18n("HTTP Request"), true, false)); + columns->append(new LogViewColumn(i18n("URL"), true, true)); + +} + +LogLine* ApacheAccessReader::parseMessage(QString& logLine, LogFile* logFile) { + int spacePos=logLine.find(' '); + + QString hostName=logLine.left(spacePos); + logLine=logLine.remove(0, spacePos+1); + + spacePos=logLine.find(' '); + QString identd=logLine.left(spacePos); + logLine=logLine.remove(0, spacePos+1); + + spacePos=logLine.find(' '); + QString userName=logLine.left(spacePos); + logLine=logLine.remove(0, spacePos+1); + + int endDate=logLine.find(']'); + QString strDateTime=logLine.left(endDate); + logLine=logLine.remove(0, endDate+3); + + QDateTime dateTime=ParsingHelper::parseDateTimeFromHTTP(strDateTime); + QDate date=dateTime.date(); + QTime time=dateTime.time(); + + int endQuote=logLine.find('\"'); + QString message=logLine.left(endQuote); + logLine=logLine.remove(0, endQuote+2); + + spacePos=logLine.find(' '); + QString httpResponse=ParsingHelper::parseHTTPResponse(logLine.left(spacePos)); + logLine=logLine.remove(0, spacePos+1); + + spacePos=logLine.find(' '); + QString bytesSent=ParsingHelper::parseSize(logLine.left(spacePos)); + logLine=logLine.remove(0, spacePos+2); + + QString url; + + endQuote=logLine.find('\"'); + if (endQuote!=-1) { + url=logLine.left(endQuote); + logLine=logLine.remove(0, endQuote+3); + } + + QString agent; + + //TODO Convert this value to find a more simple name for the Agent + endQuote=logLine.find('\"'); + if (endQuote!=-1) { + agent=ParsingHelper::parseAgent(logLine.left(endQuote)); + } + + QStringList list; + list.push_back(hostName); + list.push_back(identd); + list.push_back(userName); + list.push_back(httpResponse); + list.push_back(bytesSent); + list.push_back(agent); + list.push_back(message); + list.push_back(url); + + + QString filePath=logFile->url.path(); + LogLine* line=new LogLine(date, time, list, filePath, Globals::informationLogLevel, Globals::apacheAccessMode->id); + return(line); +} + + + +#include "apacheAccessReader.moc" diff --git a/ksystemlog/src/apache/apacheAccessReader.h b/ksystemlog/src/apache/apacheAccessReader.h new file mode 100644 index 0000000..e134c88 --- /dev/null +++ b/ksystemlog/src/apache/apacheAccessReader.h @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _APACHE_ACCESS_READER_H_ +#define _APACHE_ACCESS_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class ApacheAccessReader : public DefaultReader { + Q_OBJECT + + public: + ApacheAccessReader(QObject *parent = 0, const char *name = 0); + + virtual ~ApacheAccessReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + +}; + +#endif diff --git a/ksystemlog/src/apache/apacheOptions.cpp b/ksystemlog/src/apache/apacheOptions.cpp new file mode 100644 index 0000000..abe6579 --- /dev/null +++ b/ksystemlog/src/apache/apacheOptions.cpp @@ -0,0 +1,124 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "apacheOptions.h" +#include "ksystemlogConfig.h" + +ApacheOptions::ApacheOptions(QWidget *parent) : + QWidget(parent), + tabs(this, "tabs"), + apacheFileList(this, i18n("

These files will be analyzed to display Apache log. This list also determines the order in which the files are read.

")), + apacheAccessFileList(this, i18n("

These files will be analyzed to display Apache Access log. This list also determines the order in which the files are read.

")) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + tabs.addTab(&apacheFileList, Globals::apacheMode->pixmap, Globals::apacheMode->name); + tabs.addTab(&apacheAccessFileList, Globals::apacheAccessMode->pixmap, Globals::apacheAccessMode->name); + + connect(&apacheFileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + connect(&apacheAccessFileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +ApacheOptions::~ApacheOptions() { + +} + +bool ApacheOptions::isValid() { + if (apacheFileList.count()>0 && apacheAccessFileList.count()>0) + return(true); + else + return(false); +} + +void ApacheOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void ApacheOptions::saveConfig() { + kdDebug() << "Save config from ApacheOptions" << endl; + + QStringList list; + + int count=apacheFileList.count(); + + for (int i=0; i +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "fileList.h" +#include "logMode.h" + + +class ApacheOptions : public QWidget { + + Q_OBJECT + + public: + ApacheOptions(QWidget *parent = 0); + ~ApacheOptions(); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + KTabWidget tabs; + + FileList apacheFileList; + + FileList apacheAccessFileList; +}; + +#endif diff --git a/ksystemlog/src/apache/apacheReader.cpp b/ksystemlog/src/apache/apacheReader.cpp new file mode 100644 index 0000000..591f6ce --- /dev/null +++ b/ksystemlog/src/apache/apacheReader.cpp @@ -0,0 +1,154 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include + + +#include "parsingHelper.h" +#include "apacheReader.h" + +ApacheReader::ApacheReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { + + initializeTypeLevels(); +} + + +ApacheReader::~ApacheReader() { + +} + + +void ApacheReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Client"), true, false)); + columns->append(new LogViewColumn(i18n("Message"), true, false)); + +} + +LogLine* ApacheReader::parseMessage(QString& logLine, LogFile* logFile) { + + /* + * Log line examples : + * [Wed May 18 22:16:02 2005] [error] [client 127.0.0.1] File does not exist: /var/www/html/ksystemlog/screenshots/small/kernel-view.png, referer: http://localhost.localdomain/ksystemlog/screenshots.php + * [Wed May 18 22:16:02 2005] [error] [client 127.0.0.1] File does not exist: /var/www/html/ksystemlog/screenshots/small/system-filter.png, referer: http://localhost.localdomain/ksystemlog/screenshots.php + * [Thu May 19 18:00:19 2005] [notice] mod_jk2.post_config() first invocation + * [Thu May 19 18:00:19 2005] [notice] Digest: generating secret for digest authentication ... + * [client 127.0.0.1] PHP Parse error: parse error, unexpected T_PRIVATE, expecting T_STRING in /mnt/boulot/web/annivernet/src/fonctions/formulaire.inc.php on line 25 + */ + + + QDate date; + QTime time; + + QString level; + + //Temporary variable + int squareBracket; + + //Special case which sometimes happens + if (logLine.find("[client")==0) { + date=QDate::currentDate(); + time=QTime::currentTime(); + level="notice"; + } + else { + + //The Date + int dateBegin=logLine.find("["); + int dateEnd=logLine.find("]"); + + QString type; + QString message; + + + QString strDate=logLine.mid(dateBegin+1, dateEnd-dateBegin-1); + + QString month=strDate.mid(4, 3); + + QString day=strDate.mid(8, 2); + + QString hour=strDate.mid(11, 2); + QString min=strDate.mid(14, 2); + QString sec=strDate.mid(17, 2); + + QString year=strDate.mid(20, 4); + + date=QDate(year.toInt(), ParsingHelper::parseMonthNumber(month), day.toInt()); + time=QTime(hour.toInt(), min.toInt(), sec.toInt()); + + logLine=logLine.remove(0, dateEnd+3); + + + //The log level + + squareBracket=logLine.find("]"); + level=logLine.left(squareBracket); + logLine=logLine.remove(0, squareBracket+2); + } + + //The client + int beginSquareBracket=logLine.find("[client"); + squareBracket=logLine.find("]"); + QString client; + if (beginSquareBracket==-1 || squareBracket==-1) { + client=""; + } + else { + client=logLine.mid(8, squareBracket-8); //8=strlen("[client ") + logLine=logLine.remove(0, squareBracket+2); + } + + + QStringList list; + list.push_back(client); + list.push_back(logLine); + + QString filePath=logFile->url.path(); + + LogLine* line=new LogLine(date, time, list, filePath, getTypeLevel(level), Globals::apacheMode->id); + + return(line); +} + + +void ApacheReader::initializeTypeLevels() { + mapTypeLevels["notice"]=Globals::informationLogLevel; + mapTypeLevels["warn"]=Globals::warningLogLevel; + mapTypeLevels["error"]=Globals::errorLogLevel; +} + +LogLevel* ApacheReader::getTypeLevel(const QString& type) { + QMap::iterator it; + + it=mapTypeLevels.find(type); + if (it!=mapTypeLevels.end()) { + return(*it); + } + else { + kdDebug() << i18n("New Log Level detected: Please send this log file to the KSystemLog developer to add it.") << endl; + return(Globals::noneLogLevel); + } +} + + +#include "apacheReader.moc" diff --git a/ksystemlog/src/apache/apacheReader.h b/ksystemlog/src/apache/apacheReader.h new file mode 100644 index 0000000..80ead47 --- /dev/null +++ b/ksystemlog/src/apache/apacheReader.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _APACHE_READER_H_ +#define _APACHE_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class ApacheReader : public DefaultReader { + Q_OBJECT + + public: + ApacheReader(QObject *parent = 0, const char *name = 0); + + virtual ~ApacheReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + + private: + QMap mapTypeLevels; + + void initializeTypeLevels(); + + LogLevel* getTypeLevel(const QString& type); + + +}; + +#endif diff --git a/ksystemlog/src/bootauth/Makefile.am b/ksystemlog/src/bootauth/Makefile.am new file mode 100644 index 0000000..7ef96fe --- /dev/null +++ b/ksystemlog/src/bootauth/Makefile.am @@ -0,0 +1,8 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_bootauth.la +libksystemlog_bootauth_la_LDFLAGS = $(all_libraries) +libksystemlog_bootauth_la_SOURCES = bootAuthenticationOptions.cpp +noinst_HEADERS = bootAuthenticationOptions.h + diff --git a/ksystemlog/src/bootauth/bootAuthenticationOptions.cpp b/ksystemlog/src/bootauth/bootAuthenticationOptions.cpp new file mode 100644 index 0000000..115ae93 --- /dev/null +++ b/ksystemlog/src/bootauth/bootAuthenticationOptions.cpp @@ -0,0 +1,121 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "bootAuthenticationOptions.h" +#include "ksystemlogConfig.h" + + +BootAuthenticationOptions::BootAuthenticationOptions(QWidget *parent) : + QWidget(parent) + { + + QVBoxLayout *layout = new QVBoxLayout(this); + layout->setSpacing(10); + + //Boot log file + QVGroupBox* bootBox=new QVGroupBox(i18n("Boot Log File"), this); + + new QLabel(i18n("Boot Log File:"), bootBox); + bootURLRequester=new KURLRequester(bootBox); + bootURLRequester->setMode(KFile::File); + + QToolTip::add(bootURLRequester, i18n("Here, you can type or choose the boot log file (example: /var/log/boot.log).")); + QWhatsThis::add(bootURLRequester, i18n("You can type or choose here the boot log file. This file will be analyzed by KSystemLog when you will choose the Boot log menu item. Generally, its name is /var/log/boot.log")); + + connect(bootURLRequester, SIGNAL(textChanged(const QString&)), this, SLOT(onOptionsChanged(const QString&))); + + //Authentication log file + QVGroupBox* authenticationBox=new QVGroupBox(i18n("Authentication Log File"), this); + + new QLabel(i18n("Authentication Log File:"), authenticationBox); + authenticationURLRequester=new KURLRequester(authenticationBox); + authenticationURLRequester->setMode(KFile::File); + + QToolTip::add(authenticationURLRequester, i18n("Here, you can type or choose the authentication log file (example: /var/log/auth.log).")); + QWhatsThis::add(authenticationURLRequester, i18n("You can type or choose here the authentication log file. This file will be analyzed by KSystemLog when you will choose the Authentication log menu item. Generally, its name is /var/log/auth.log")); + + connect(authenticationURLRequester, SIGNAL(textChanged(const QString&)), this, SLOT(onOptionsChanged(const QString&))); + + QSpacerItem* spacer=new QSpacerItem(0, 0, QSizePolicy::Preferred, QSizePolicy::Expanding); + + layout->addWidget(bootBox); + layout->addWidget(authenticationBox); + layout->addItem(spacer); + + readConfig(); +} + + +void BootAuthenticationOptions::readConfig() { + QString file=KSystemLogConfig::bootPath(); + bootURLRequester->setURL(file); + + file=KSystemLogConfig::authenticationPath(); + authenticationURLRequester->setURL(file); +} + +void BootAuthenticationOptions::saveConfig() { + kdDebug() << "Save config from Boot Authentication Options" << endl; + + KSystemLogConfig::setAuthenticationPath(bootURLRequester->url()); + + KSystemLogConfig::setAuthenticationPath(authenticationURLRequester->url()); + +} + +//TODO Please verify that this is OK ! +bool BootAuthenticationOptions::isValid() { + KURL test1(bootURLRequester->url()); + KURL test2(authenticationURLRequester->url()); + + if (test1.isValid() && test2.isValid()) + return(true); + else + return(false); +} + + +void BootAuthenticationOptions::onOptionsChanged(const QString& /*text*/) { + emit optionsChanged(true); +} + + + +#include "bootAuthenticationOptions.moc" diff --git a/ksystemlog/src/bootauth/bootAuthenticationOptions.h b/ksystemlog/src/bootauth/bootAuthenticationOptions.h new file mode 100644 index 0000000..81d075d --- /dev/null +++ b/ksystemlog/src/bootauth/bootAuthenticationOptions.h @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _BOOT_AUTHENTICATION_OPTIONS_H_ +#define _BOOT_AUTHENTICATION_OPTIONS_H_ + +#include +#include +#include + +#include +#include + +#include + +#include "globals.h" + + + +class BootAuthenticationOptions : public QWidget { + Q_OBJECT + public: + BootAuthenticationOptions(QWidget *parent = 0); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + signals: + void optionsChanged(bool valid); + + private slots: + void onOptionsChanged(const QString&); + + private: + KURLRequester* bootURLRequester; + KURLRequester* authenticationURLRequester; + +}; + +#endif // _BOOT_AUTHENTICATION_OPTIONS_H_ diff --git a/ksystemlog/src/childLogLine.cpp b/ksystemlog/src/childLogLine.cpp new file mode 100644 index 0000000..f6c5d69 --- /dev/null +++ b/ksystemlog/src/childLogLine.cpp @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "parentLogLine.h" + +#include "childLogLine.h" + +ChildLogLine::ChildLogLine(QDate& date, QTime& time, QStringList& list, QString& file, LogLevel* level, int type) : + LogLine(date, time, list, file, level, type), + parent(NULL) { + +} + +ChildLogLine::~ChildLogLine() { + +} + +void ChildLogLine::setParent(ParentLogLine* line) { + parent=line; +} + +ParentLogLine* ChildLogLine::getParent() { + return(parent); +} + +bool ChildLogLine::isChildLogLine() { + return(true); +} diff --git a/ksystemlog/src/childLogLine.h b/ksystemlog/src/childLogLine.h new file mode 100644 index 0000000..2601be5 --- /dev/null +++ b/ksystemlog/src/childLogLine.h @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _CHILD_LOG_LINE_H_ +#define _CHILD_LOG_LINE_H_ + +#include + +#include + +#include "globals.h" + + +#include "logLine.h" + +class ParentLogLine; + +/** + * @author Nicolas Ternisien + */ +class ChildLogLine : public LogLine { + + public: + ChildLogLine(QDate& date, QTime& time, QStringList& list, QString& originalFile, LogLevel* level, int tpe); + + virtual ~ChildLogLine(); + + void setParent(ParentLogLine* line); + ParentLogLine* getParent(); + + virtual bool isChildLogLine(); + + protected: + ParentLogLine* parent; + +}; + +#endif diff --git a/ksystemlog/src/config/Makefile.am b/ksystemlog/src/config/Makefile.am new file mode 100644 index 0000000..651edbc --- /dev/null +++ b/ksystemlog/src/config/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_config.la +libksystemlog_config_la_SOURCES = ksystemlogConfig.kcfgc dummyConfig.cpp +kde_kcfg_DATA = ksystemlog.kcfg + diff --git a/ksystemlog/src/config/dummyConfig.cpp b/ksystemlog/src/config/dummyConfig.cpp new file mode 100644 index 0000000..5abe44d --- /dev/null +++ b/ksystemlog/src/config/dummyConfig.cpp @@ -0,0 +1,20 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + diff --git a/ksystemlog/src/config/ksystemlog.kcfg b/ksystemlog/src/config/ksystemlog.kcfg new file mode 100644 index 0000000..d611025 --- /dev/null +++ b/ksystemlog/src/config/ksystemlog.kcfg @@ -0,0 +1,181 @@ + + + + + + + + + + + 1000 + + + + + 1024 + + + + + false + + + + + false + + + + + true + + + + + + true + + + + + true + + + + + true + + + + + + + + + -1 + + + + + + /var/log/syslog + + + + 2 + + + + + + + /var/log/kern.log + + + + 2,4,5 + + + + + + /var/log/cron.log + + + + 2,4,5 + + + + + + /var/log/daemon.log + + + + 2,4,5 + + + + + + /var/log/Xorg.0.log + + + + + + /var/log/cups/error_log + + + + + + /var/log/cups/access_log + + + + + + /var/log/apache/error.log + + + + + + /var/log/apache/access.log + + + + + + /var/log/mail.info,/var/log/mail.warn,/var/log/mail.err + + + + 2,4,5 + + + + + + /var/log/samba/log.nmbd,/var/log/samba/log.smbd + + + + + + + /var/log/acpid + + + + + + /var/log/boot.log + + + + + + /var/log/auth.log + + + + + 2 + + + + + + + + + 0 + + + + + \ No newline at end of file diff --git a/ksystemlog/src/config/ksystemlogConfig.kcfgc b/ksystemlog/src/config/ksystemlogConfig.kcfgc new file mode 100644 index 0000000..79d8a76 --- /dev/null +++ b/ksystemlog/src/config/ksystemlogConfig.kcfgc @@ -0,0 +1,4 @@ +File=ksystemlog.kcfg +ClassName=KSystemLogConfig +Singleton=true +Mutators=true \ No newline at end of file diff --git a/ksystemlog/src/cron/Makefile.am b/ksystemlog/src/cron/Makefile.am new file mode 100644 index 0000000..a38a57b --- /dev/null +++ b/ksystemlog/src/cron/Makefile.am @@ -0,0 +1,8 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_cron.la +libksystemlog_cron_la_LDFLAGS = $(all_libraries) +libksystemlog_cron_la_SOURCES = cronOptions.cpp cronReader.cpp +noinst_HEADERS = cronOptions.h cronReader.h + diff --git a/ksystemlog/src/cron/cronOptions.cpp b/ksystemlog/src/cron/cronOptions.cpp new file mode 100644 index 0000000..05b066b --- /dev/null +++ b/ksystemlog/src/cron/cronOptions.cpp @@ -0,0 +1,99 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "cronOptions.h" +#include "ksystemlogConfig.h" + +CronOptions::CronOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display Cron Logs (i.e. planned tasks logs). This list also determines the order in which the files are read.

"); + fileList=new SpecificFileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +CronOptions::~CronOptions() { + //TODO Delete fileList +} + +bool CronOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void CronOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void CronOptions::saveConfig() { + kdDebug() << "Saving config from Cron Options..." << endl; + + QStringList stringList; + QValueList valueList; + + fileList->saveConfig(stringList, valueList); + + KSystemLogConfig::setCronPaths(stringList); + KSystemLogConfig::setCronLevels(valueList); +} + +void CronOptions::readConfig() { + QStringList stringList=KSystemLogConfig::cronPaths(); + QValueList valueList=KSystemLogConfig::cronLevels(); + + fileList->readConfig(stringList, valueList); +} + +#include "cronOptions.moc" diff --git a/ksystemlog/src/cron/cronOptions.h b/ksystemlog/src/cron/cronOptions.h new file mode 100644 index 0000000..bb72210 --- /dev/null +++ b/ksystemlog/src/cron/cronOptions.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _CRON_OPTIONS_H_ +#define _CRON_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + + +#include "globals.h" +#include "specificFileList.h" +#include "logLevel.h" + + +class CronOptions : public QWidget { + Q_OBJECT + public: + CronOptions(QWidget *parent = 0); + ~CronOptions(); + + bool isValid(); + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + SpecificFileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/cron/cronReader.cpp b/ksystemlog/src/cron/cronReader.cpp new file mode 100644 index 0000000..9814043 --- /dev/null +++ b/ksystemlog/src/cron/cronReader.cpp @@ -0,0 +1,81 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "cronReader.h" + +#include +#include + +CronReader::CronReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { + +} + + +CronReader::~CronReader() { + +} + + +void CronReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Host Name"), true, true)); + columns->append(new LogViewColumn(i18n("Process"), true, true)); + columns->append(new LogViewColumn(i18n("User"), true, true)); + columns->append(new LogViewColumn(i18n("Message"), true, false)); +} + + +/** + * TODO Improve speed of this method + */ +LogLine* CronReader::parseMessage(QString& line, LogFile* logFile) { + + //Use the default parsing + LogLine* logLine=DefaultReader::parseMessage(line, logFile); + + + QStringList& list=logLine->getItemList(); + + //Gets the message column (last item) and deletes it + QString message=list.back(); + list.pop_back(); + + int leftBracket=message.find('('); + int rightBracket=message.find(')'); + + QString user=message.mid(leftBracket+1, rightBracket-leftBracket-1); + + list.push_back(user); + + message=message.right(message.length() - rightBracket-2); + + list.push_back(message); + + //This log line comes from Cron Reader + logLine->setType(Globals::cronMode->id); + + return(logLine); +} + +#include "cronReader.moc" + + diff --git a/ksystemlog/src/cron/cronReader.h b/ksystemlog/src/cron/cronReader.h new file mode 100644 index 0000000..78488d8 --- /dev/null +++ b/ksystemlog/src/cron/cronReader.h @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _CRON_READER_H_ +#define _CRON_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class CronReader : public DefaultReader { + Q_OBJECT + + public: + CronReader(QObject *parent = 0, const char *name = 0); + + virtual ~CronReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + +}; + +#endif + diff --git a/ksystemlog/src/cups/Makefile.am b/ksystemlog/src/cups/Makefile.am new file mode 100644 index 0000000..eeb0ac0 --- /dev/null +++ b/ksystemlog/src/cups/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_cups.la +libksystemlog_cups_la_LDFLAGS = $(all_libraries) +libksystemlog_cups_la_SOURCES = cupsAccessReader.cpp cupsOptions.cpp cupsReader.cpp +noinst_HEADERS = cupsAccessReader.h cupsOptions.h cupsReader.h diff --git a/ksystemlog/src/cups/cupsAccessReader.cpp b/ksystemlog/src/cups/cupsAccessReader.cpp new file mode 100644 index 0000000..5d074d3 --- /dev/null +++ b/ksystemlog/src/cups/cupsAccessReader.cpp @@ -0,0 +1,100 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include + +#include "parsingHelper.h" +#include "cupsAccessReader.h" + +CupsAccessReader::CupsAccessReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { +} + + +CupsAccessReader::~CupsAccessReader() { + +} + + +void CupsAccessReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Host Name"), true, true)); + columns->append(new LogViewColumn(i18n("Id."), true, true)); //=Identification protocol [From RFC1413 (see Google for more infos)] + columns->append(new LogViewColumn(i18n("User"), true, true)); + columns->append(new LogViewColumn(i18n("Response"), true, true)); + columns->append(new LogViewColumn(i18n("Bytes Sent"), true, false)); + columns->append(new LogViewColumn(i18n("HTTP Request"), true, false)); + +} + +LogLine* CupsAccessReader::parseMessage(QString& logLine, LogFile* logFile) { + int spacePos=logLine.find(' '); + + QString hostName=logLine.left(spacePos); + logLine=logLine.remove(0, spacePos+1); + + spacePos=logLine.find(' '); + QString identd=logLine.left(spacePos); + logLine=logLine.remove(0, spacePos+1); + + spacePos=logLine.find(' '); + QString userName=logLine.left(spacePos); + logLine=logLine.remove(0, spacePos+1); + + int endDate=logLine.find(']'); + QString strDateTime=logLine.left(endDate); + logLine=logLine.remove(0, endDate+3); + + QDateTime dateTime=ParsingHelper::parseDateTimeFromHTTP(strDateTime); + QDate date=dateTime.date(); + QTime time=dateTime.time(); + + int endQuote=logLine.find('\"'); + QString message=logLine.left(endQuote); + logLine=logLine.remove(0, endQuote+2); + + spacePos=logLine.find(' '); + QString httpResponse=ParsingHelper::parseHTTPResponse(logLine.left(spacePos)); + logLine=logLine.remove(0, spacePos+1); + + spacePos=logLine.find(' '); + QString bytesSent=ParsingHelper::parseSize(logLine.left(spacePos)); + + + QStringList list; + + list.push_back(hostName); + list.push_back(identd); + list.push_back(userName); + list.push_back(httpResponse); + list.push_back(bytesSent); + list.push_back(message); + + + QString filePath=logFile->url.path(); + LogLine* line=new LogLine(date, time, list, filePath, Globals::informationLogLevel, Globals::cupsAccessMode->id); + return(line); +} + + + +#include "cupsAccessReader.moc" diff --git a/ksystemlog/src/cups/cupsAccessReader.h b/ksystemlog/src/cups/cupsAccessReader.h new file mode 100644 index 0000000..5790ed6 --- /dev/null +++ b/ksystemlog/src/cups/cupsAccessReader.h @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _CUPS_ACCESS_READER_H_ +#define _CUPS_ACCESS_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class CupsAccessReader : public DefaultReader { + Q_OBJECT + + public: + CupsAccessReader(QObject *parent = 0, const char *name = 0); + + virtual ~CupsAccessReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + +}; + +#endif diff --git a/ksystemlog/src/cups/cupsOptions.cpp b/ksystemlog/src/cups/cupsOptions.cpp new file mode 100644 index 0000000..6bde6e1 --- /dev/null +++ b/ksystemlog/src/cups/cupsOptions.cpp @@ -0,0 +1,124 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "cupsOptions.h" +#include "ksystemlogConfig.h" + +CupsOptions::CupsOptions(QWidget *parent) : + QWidget(parent), + tabs(this, "tabs"), + cupsFileList(this, i18n("

These files will be analyzed to display Cups log. This list also determines the order in which the files are read.

")), + cupsAccessFileList(this, i18n("

These files will be analyzed to display Cups Web Server log. This list also determines the order in which the files are read.

")) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + tabs.addTab(&cupsFileList, Globals::cupsMode->pixmap, Globals::cupsMode->name); + tabs.addTab(&cupsAccessFileList, Globals::cupsAccessMode->pixmap, Globals::cupsAccessMode->name); + + connect(&cupsFileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + connect(&cupsAccessFileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +CupsOptions::~CupsOptions() { + +} + +bool CupsOptions::isValid() { + if (cupsFileList.count()>0 && cupsAccessFileList.count()>0) + return(true); + else + return(false); +} + +void CupsOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void CupsOptions::saveConfig() { + kdDebug() << "Save config from CupsOptions" << endl; + + QStringList list; + + int count=cupsFileList.count(); + + for (int i=0; i +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "fileList.h" +#include "logMode.h" + + +class CupsOptions : public QWidget { + + Q_OBJECT + + public: + CupsOptions(QWidget *parent = 0); + ~CupsOptions(); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + + KTabWidget tabs; + + FileList cupsFileList; + + FileList cupsAccessFileList; +}; + +#endif diff --git a/ksystemlog/src/cups/cupsReader.cpp b/ksystemlog/src/cups/cupsReader.cpp new file mode 100644 index 0000000..a17fcd7 --- /dev/null +++ b/ksystemlog/src/cups/cupsReader.cpp @@ -0,0 +1,106 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include + +#include "parsingHelper.h" +#include "cupsReader.h" + +#define DEBUG2_LOG_LEVEL_ICON "source" + +CupsReader::CupsReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { + + initializeTypeLevels(); +} + + +CupsReader::~CupsReader() { + +} + + +void CupsReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Message"), true, false)); + +} + + +LogLine* CupsReader::parseMessage(QString& logLine, LogFile* logFile) { + /* + * Log line examples : + * I [15/Feb/2004:01:29:32 +0100] LoadPPDs: No new or changed PPDs... + * E [15/Feb/2004:01:43:15 +0100] Scheduler shutting down due to SIGTERM. + */ + + QChar level=logLine[0]; + + QString strDateTime=logLine.mid(2, 28); + QDateTime dateTime=ParsingHelper::parseDateTimeFromHTTP(strDateTime); + QDate date=dateTime.date(); + QTime time=dateTime.time(); + + QString message=logLine.remove(0, 31); + + LogLevel* logLevel=getTypeLevel(level); + + QStringList list; + list.push_back(message); + + QString filePath=logFile->url.path(); + + LogLine* line=new LogLine(date, time, list, filePath, logLevel, Globals::cupsMode->id); + + return(line); +} + + +void CupsReader::initializeTypeLevels() { + mapTypeLevels['d']=new LogLevel(20, i18n("debug 2"), DEBUG2_LOG_LEVEL_ICON, QColor(169, 189, 165)); + mapTypeLevels['D']=Globals::debugLogLevel; + mapTypeLevels['I']=Globals::informationLogLevel; + mapTypeLevels['N']=Globals::noticeLogLevel; + mapTypeLevels['W']=Globals::warningLogLevel; + mapTypeLevels['E']=Globals::errorLogLevel; + mapTypeLevels['C']=Globals::criticalLogLevel; + mapTypeLevels['A']=Globals::alertLogLevel; + mapTypeLevels['X']=Globals::emergencyLogLevel; + mapTypeLevels[' ']=Globals::noneLogLevel; +} + +LogLevel* CupsReader::getTypeLevel(const QChar& type) { + QMap::iterator it; + + it=mapTypeLevels.find(type); + if (it!=mapTypeLevels.end()) { + return(*it); + } + else { + kdDebug() << i18n("New Log Level detected: Please send this log file to the KSystemLog developer to add it.") << endl; + return(Globals::noneLogLevel); + } +} + + + +#include "cupsReader.moc" diff --git a/ksystemlog/src/cups/cupsReader.h b/ksystemlog/src/cups/cupsReader.h new file mode 100644 index 0000000..d6ad426 --- /dev/null +++ b/ksystemlog/src/cups/cupsReader.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _CUPS_READER_H_ +#define _CUPS_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class CupsReader : public DefaultReader { + Q_OBJECT + + public: + CupsReader(QObject *parent = 0, const char *name = 0); + + virtual ~CupsReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + + private: + QMap mapTypeLevels; + + void initializeTypeLevels(); + + LogLevel* getTypeLevel(const QChar& type); + + + +}; + +#endif diff --git a/ksystemlog/src/daemon/Makefile.am b/ksystemlog/src/daemon/Makefile.am new file mode 100644 index 0000000..d30372b --- /dev/null +++ b/ksystemlog/src/daemon/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_daemon.la +libksystemlog_daemon_la_LDFLAGS = $(all_libraries) +libksystemlog_daemon_la_SOURCES = daemonOptions.cpp +noinst_HEADERS = daemonOptions.h diff --git a/ksystemlog/src/daemon/daemonOptions.cpp b/ksystemlog/src/daemon/daemonOptions.cpp new file mode 100644 index 0000000..b321970 --- /dev/null +++ b/ksystemlog/src/daemon/daemonOptions.cpp @@ -0,0 +1,99 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "daemonOptions.h" +#include "ksystemlogConfig.h" + +DaemonOptions::DaemonOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display daemons Logs. This list also determine the order in which the files are read.

"); + fileList=new SpecificFileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +DaemonOptions::~DaemonOptions() { + +} + +bool DaemonOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void DaemonOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void DaemonOptions::saveConfig() { + kdDebug() << "Saving config from Daemon Options..." << endl; + + QStringList stringList; + QValueList valueList; + + fileList->saveConfig(stringList, valueList); + + KSystemLogConfig::setDaemonPaths(stringList); + KSystemLogConfig::setDaemonLevels(valueList); +} + +void DaemonOptions::readConfig() { + QStringList stringList=KSystemLogConfig::daemonPaths(); + QValueList valueList=KSystemLogConfig::daemonLevels(); + + fileList->readConfig(stringList, valueList); +} + +#include "daemonOptions.moc" diff --git a/ksystemlog/src/daemon/daemonOptions.h b/ksystemlog/src/daemon/daemonOptions.h new file mode 100644 index 0000000..d544634 --- /dev/null +++ b/ksystemlog/src/daemon/daemonOptions.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _DAEMON_OPTIONS_H_ +#define _DAEMON_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "specificFileList.h" +#include "logLevel.h" + +class DaemonOptions : public QWidget { + Q_OBJECT + public: + DaemonOptions(QWidget *parent = 0); + ~DaemonOptions(); + + bool isValid(); + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + SpecificFileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/defaultReader.cpp b/ksystemlog/src/defaultReader.cpp new file mode 100644 index 0000000..e70f5e5 --- /dev/null +++ b/ksystemlog/src/defaultReader.cpp @@ -0,0 +1,498 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#include +#include + +#include "logListItem.h" +#include "ksystemlogConfig.h" +#include "logLine.h" +#include "view.h" +#include "parsingHelper.h" + +#include "defaultReader.h" + + +DefaultReader::DefaultReader(QObject *parent, const char *name) : + Reader(parent, name), + buffers(NULL) + { + + +} + + +DefaultReader::~DefaultReader() { + delete buffers; +} + +void DefaultReader::readLog() { + //Each file in the Log file list are watched with the following method + watchLogFiles(); + + if (buffers!=NULL) + delete buffers; + + if (logManager->getGroupBy()==NO_GROUP_BY) + buffers=new LogLineList(); + else { + buffers=new LogLineTree(logManager->getColumns(), logManager->getGroupBy(), logManager->getGroupByColumn()); + } + + + LogFiles& files=logManager->getLogFiles(); + + //Inform connected QObject that the reading has begun + emit readingBegin(); + + //Read each file of the list, and place their lines in the buffer + int i=files.count()-1; + LogFile* logFile; + while(i>=0) { + logFile=files[i]; + kdDebug() << "Reading file " << logFile->url.path() << endl; + this->readFile(logFile); + + i--; + } + + //Synchronize the buffer once we have fill it + logManager->synchronize(buffers); + + //Says to the buffer that we have read all files, and that + //the next adding will come from logChanged method + if (!buffers->isEmpty()) + buffers->setFirstReadPerformed(true); + + //Inform connected QObject that the reading is now finished + emit readingEnd(); + + //Emit a signal which informs connected slots that there are new lines + emit logUpdated(logManager->getView()->getLogList()->childCount()); +} + +void DefaultReader::readFile(LogFile* logFile) { + QString message=i18n("Opening file '%1'...").arg(logFile->url.path()); + emit statusbarChanged(message); + + //Inform connected QObject that we are now reading the "index" file + emit readingFile(logManager->getLogFiles().count() - logManager->getLogFiles().findIndex(logFile)); + + + //We initialize these values from configuration to be used by the insert methods + tmpDeleteDuplicate=KSystemLogConfig::deleteDuplicatedLines(); + tmpDeleteProcessId=KSystemLogConfig::deleteProcessIdentifier(); + tmpMaxLines=KSystemLogConfig::maxLines(); + tmpMaxCharacters=KSystemLogConfig::maxReadCharacters(); + + //Open the file + QFile* file=this->openFile(logFile->url.path()); + + //If an error occurs, end this method + if (file==NULL) { + return; + } + + QString buffer; + QString filePath=logFile->url.path(); + + + //Insert the content of the file in a string list + QStringList* rawBuffer=getRawBuffer(file); + + //If there is no line + if (rawBuffer->size()==0) { + QString message=i18n("No log line in '%1'.").arg(logFile->url.path()); + emit statusbarChanged(message); + + delete rawBuffer; + return; + } + + kdDebug() << "Testing each line..." << endl; + + QStringList::iterator it; + it=rawBuffer->end(); + it--; + + //Calculate how many lines we will read + int size=rawBuffer->size(); + int stop; + if (size>tmpMaxLines) + stop=size-tmpMaxLines; + else + stop=0; + + + //Test each line of the raw buffer + int i=size-1; + + int progress=0; + + int progressTotal=size-1 - stop; + int each=progressTotal / 100; + if (each==0) + each=progressTotal; + + + while(i>=stop) { + buffer=*it; + + if (insertOrReplaceLine(buffer, logFile)==false) + break; + + it--; + i--; + + if (i>=0 && i%each==0) { + emit openingProgressed(progress++); + } + } + + delete rawBuffer; + + logFile->lastFileSize=file->size(); + + // Close the file + this->closeFile(file); + + message=i18n("Log file '%1' loaded successfully.").arg(logFile->url.path()); + emit statusbarChanged(message); + +} + + + +void DefaultReader::logChanged(LogFile* logFile) { + kdDebug() << "SortedReader : File has been modified !" << endl; + + //We initialize these values from configuration to be used by the insert methods + tmpDeleteDuplicate=KSystemLogConfig::deleteDuplicatedLines(); + tmpDeleteProcessId=KSystemLogConfig::deleteProcessIdentifier(); + tmpMaxLines=KSystemLogConfig::maxLines(); + tmpMaxCharacters=KSystemLogConfig::maxReadCharacters(); + + QString buffer; + + QString filePath=logFile->url.path(); + QFile* file=this->openFile(filePath); + + if (file==NULL) + return; + + + //If there are new lines in the file, insert only them + if (logFile->lastFileSize <= (int) file->size()) { + //Place the cursor to the last line opened + file->at(logFile->lastFileSize); + + kdDebug() << "Retrieving a part of the file..." << endl; + + //Get the maximum number of line read from LogManager + int maxLines=KSystemLogConfig::maxLines(); + + QString buffer; + QStringList* rawBuffer=getRawBuffer(file); + + //If there is no line + if (rawBuffer->size()==0) { + delete rawBuffer; + return; + } + + kdDebug() << "Testing each line..." << endl; + + QStringList::iterator it; + it=rawBuffer->end(); + it--; + + //Calculate how many lines we will read + int size=rawBuffer->size(); + int stop=0; + if (size>maxLines) + stop=size-maxLines; + + //Test each line of the raw buffer + int i=size-1; + while(i>=stop) { + buffer=*it; + + if (insertOrReplaceLine(buffer, logFile)==false) + break; + + it--; + i--; + } + + kdDebug() << "Total read lines : " << (size-1-i) << endl; + + delete rawBuffer; + + + } + //Else reread all lines, clear log list + else { + buffers->clear(); + + file->close(); + + this->readFile(logFile); + } + + int newLineCount=buffers->getNewLineCount(); + + logManager->synchronize(buffers); + + //Get the size file for the next calculation + logFile->lastFileSize=file->size(); + + // Close the file + this->closeFile(file); + + QString message; + message=i18n("Log file '%1' has changed.").arg(logFile->url.path()); + emit statusbarChanged(message); + + //Emit a signal which informs connected slots that there are new lines + emit logUpdated(newLineCount); +} + + + + +bool DefaultReader::insertLine(QString& buffer, LogFile* originalFile) { + LogLine* line=this->parseMessage(buffer, originalFile); + + //Do not insert the line if it NULL + //TODO Maybe return true (because we don't want to stop the reading for one dirty line) + if (line==NULL) + return(false); + + + //If the Delete Duplicated Line is checked, we first test that the line is really new + if (tmpDeleteDuplicate==true) { + if (buffers->lineAlreadyExists(line)==true) + return(true); + } + + //If the line is newer, it can be inserted + if (buffers->isNewer(line)==true) { + + if (buffers->getItemCount()insert(line); + } + else { + return(false); + } + } + //If the line is older, then inserts it only if there is still space in the buffer + else if (buffers->getItemCount()insert(line); + } + + return(true); +} + + +bool DefaultReader::insertOrReplaceLine(QString& buffer, LogFile* originalFile) { + LogLine* line=this->parseMessage(buffer, originalFile); + + //Do not insert the line if it NULL + //TODO Maybe return true (because we don't want to stop the reading for one dirty line) + if (line==NULL) + return(false); + + //If the Delete Duplicated Line is checked, we first test that the line is really new + if (tmpDeleteDuplicate==true) { + if (buffers->lineAlreadyExists(line)==true) { + return(true); + } + } + + + //If the line is newer, it can be inserted + if (buffers->isNewer(line)==true) { + + if (buffers->getItemCount()insert(line); + return(true); + } + else { + buffers->removeOldestLine(); + buffers->insert(line); + return(true); + } + } + //If the line is older, then inserts it only if there is still space in the buffer + else if (buffers->getItemCount()insert(line); + return(true); + } + + return(false); +} + +/** + * TODO Improve speed of this method (with KRegExp class for example) + */ +LogLine* DefaultReader::parseMessage(QString& logLine, LogFile* originalFile) { + //kdDebug() << "Please don't use parseMessage() from SortedReader class" << endl; + + int year=QDate::currentDate().year(); + + //Month number + QString month; + month=logLine.left(3); + + logLine=logLine.remove(0, 4); + int monthNum=ParsingHelper::parseMonthNumber(month); + + //Day number + QString day; + + day=logLine.left(2); + int dayNum=day.toInt(); + + logLine=logLine.remove(0, 3); + + QDate date(year, monthNum, dayNum); + if (!date.isValid()) { + kdDebug() << "Malformed date" << endl; + date=QDate::currentDate(); + } + + //Time + QString stringTime; + stringTime=logLine.left(8); + int h=stringTime.left(2).toInt(); + stringTime.remove(0, 3); + int m=stringTime.left(2).toInt(); + stringTime.remove(0, 3); + int s=stringTime.left(2).toInt(); + stringTime.remove(0, 3); + + QTime time(h, m, s); + if (!time.isValid()) { + kdDebug() << "Malformed time" << endl; + time=QTime::currentTime(); + } + + //QStringList + logLine=logLine.remove(0, 9); + + int nextSpace; + nextSpace=logLine.find(' '); + + //Host name + QString hostname; + + hostname=logLine.left(nextSpace); + + logLine=logLine.remove(0, nextSpace+1); + + + QString process; + QString message; + + //Process name + nextSpace=logLine.find(':'); + if (nextSpace!=-1) { + process=logLine.left(nextSpace); + + //If the delete process identifier option is enabled + if (tmpDeleteProcessId==true) { + int squareBracket=process.find('['); + + //If we find a bracket, we remove the useless part + if (squareBracket!=-1) { + process=process.left(squareBracket); + } + + } + logLine=logLine.remove(0, nextSpace+1); + + message=logLine.remove(0, 1); + } + //If we can't find any ':' character, it means that this line is a + //internal message of syslogd + else { + process=i18n("none"); + + message=logLine; + } + + + + + + QStringList list; + list.append(hostname); + list.append(process); + list.append(message); + + /* + *TODO Try to avoid that 2 columns with the same timestamps (but not the + *same appearance order are not sorted correctly + */ + /* + LogLine* lastLine=buffers->lastLineInserted(); + if (lastLine!=NULL) { + if (lastLine->getTime().date()==date && lastLine->getTime().time()==time) + time=time.addMSecs(1); + } + */ + + QString filePath=originalFile->url.path(); + LogLine* logLineObject=new LogLine(date, time, list, filePath, originalFile->level, Globals::noMode->id); + + return(logLineObject); +} + + +QStringList* DefaultReader::getRawBuffer(QFile* file) { + kdDebug() << "Retrieving the raw buffer..." << endl; + + QString buffer; + QString tmpBuffer; + QStringList* rawBuffer=new QStringList(); + + int res; + + //Insert the content of the file in a string list + while(!file->atEnd()) { + + //Read the first MaxCharactersRead characters + res=file->readLine(buffer, tmpMaxCharacters); + + //Ignore the rest of the line + while(res==tmpMaxCharacters) + file->readLine(tmpBuffer, tmpMaxCharacters); + + //Push the new buffer to the list + rawBuffer->push_back(buffer); + } + + kdDebug() << "Raw buffer retrieved." << endl; + + return(rawBuffer); +} + +#include "defaultReader.moc" diff --git a/ksystemlog/src/defaultReader.h b/ksystemlog/src/defaultReader.h new file mode 100644 index 0000000..3665e63 --- /dev/null +++ b/ksystemlog/src/defaultReader.h @@ -0,0 +1,82 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _DEFAULT_READER_H_ +#define _DEFAULT_READER_H_ + +#include +#include +#include +#include + +#include +#include + +#include "view.h" +#include "globals.h" + +#include "reader.h" + +#include "logLine.h" +#include "logLineList.h" +#include "logLineTree.h" + +#include "logFile.h" + + +/** + * @author Nicolas Ternisien + */ +class DefaultReader : public Reader { + Q_OBJECT + + public: + DefaultReader(QObject *parent = 0, const char *name = 0); + + virtual ~DefaultReader(); + + virtual void readLog(); + + virtual void logChanged(LogFile* file); + + protected: + virtual LogLine* parseMessage(QString& logLine, LogFile* originalFile); + + void readFile(LogFile* logFile); + + virtual QStringList* getRawBuffer(QFile* file); + + LogLineList* buffers; + + bool tmpDeleteDuplicate; + bool tmpDeleteProcessId; + int tmpMaxLines; + int tmpMaxCharacters; + + private: + + //Returns false if the line has not been inserted + bool insertLine(QString& buffer, LogFile* originalFile); + + //Returns false if the line has not been inserted + bool insertOrReplaceLine(QString& buffer, LogFile* originalFile); + +}; + +#endif // _DEFAULT_READER_H_ diff --git a/ksystemlog/src/detailDialog.cpp b/ksystemlog/src/detailDialog.cpp new file mode 100644 index 0000000..200e73b --- /dev/null +++ b/ksystemlog/src/detailDialog.cpp @@ -0,0 +1,242 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include + +//Project includes +#include "parentLogLine.h" + +#include "detailDialog.h" + +DetailDialog::DetailDialog(View* v, QWidget *parent, const char *name) : + //KDialogBase(parent, name, false, i18n("Log Line Details"), 0 /*KDialogBase::Ok*/), + DetailDialogBase(parent, name, false, 0), + view(v), + currentLine(NULL) { + + + previous->setText(i18n("&Previous")); + connect(previous, SIGNAL(clicked()), this, SLOT(previousItem())); + + next->setText(i18n("&Next")); + connect(next, SIGNAL(clicked()), this, SLOT(nextItem())); + + //close->setText(KStdGuiItem::close().text()); + //close->setIcon(KStdGuiItem::close().iconSet()); + connect(closeButton, SIGNAL(clicked()), this, SLOT(closeDetails())); + + updateDetails(); + + /* This code has been replaced by a pretty drawing of the Detail Dialog with Qt Designer + + setMinimumHeight(200); + setMinimumWidth(450); + + QWhatsThis::add(this, i18n("This dialog displays detailed information about the currently selected log line.")); + + QWidget* widget=new QWidget(this); + + QVBoxLayout* mainLayout = new QVBoxLayout(widget, 0, 10); + + QHBoxLayout* l1 = new QHBoxLayout(0, 0, 5); + + icon=new QLabel(widget); + //icon->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ) ); + l1->addWidget(icon, 0, Qt::AlignVCenter); + + //header=new KActiveLabel(widget, "header"); + header=new QLabel(widget, "header"); + //header->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Minimum) ); + //header->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Minimum ) ); + l1->addWidget(header, 0, Qt::AlignVCenter || Qt::AlignHCenter); + + mainLayout->addLayout(l1); + + message=new QTextEdit(widget); + message->setReadOnly(true); + //message->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum) ); + //message->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); + //message->setMinimumHeight(40); + //message->setMinimumHeight(60); + //message->setMinimumWidth(400); + + mainLayout->addWidget(message); + + QHBoxLayout* buttons=new QHBoxLayout(0, 0, 10); + + + previous=new QPushButton(KStdGuiItem::back().iconSet(), i18n("&Previous"), widget); + connect(previous, SIGNAL(clicked()), this, SLOT(previousItem())); + //1=Stretch factor (ratio between object in the QHBoxLayout) + buttons->addWidget(previous, 1, Qt::AlignRight); + + QToolTip::add(previous, i18n("Move to the previous line")); + QWhatsThis::add(previous, i18n("Moves to the previous line. This button is deactivated if there is no previous log line.")); + + buttons->setStretchFactor(previous, 1); + next=new QPushButton(KStdGuiItem::forward().iconSet(), i18n("&Next"), widget); + connect(next, SIGNAL(clicked()), this, SLOT(nextItem())); + //1=Stretch factor (ratio between object in the QHBoxLayout) + buttons->addWidget(next, 1, Qt::AlignLeft); + + + QToolTip::add(next, i18n("Move to the next line")); + QWhatsThis::add(next, i18n("Moves to the next line. This button is deactivated if there is no next log line.")); + + + QPushButton* close=new QPushButton(KStdGuiItem::close().iconSet(), KStdGuiItem::close().text(), widget); + connect(close, SIGNAL(clicked()), this, SLOT(closeDetails())); + buttons->addWidget(close, 0, Qt::AlignRight); + + QToolTip::add(next, i18n("Close the Detail dialog.")); + QWhatsThis::add(next, i18n("Closes this Detail dialog.")); + + mainLayout->addLayout(buttons); + + this->setMainWidget(widget); + + //TODO Try to find a better solution (if it exists!) + //resize(500, 200); + */ + +} + +DetailDialog::~DetailDialog() { + +} + +void DetailDialog::setView(View* view) { + this->view=view; + updateDetails(); +} + +void DetailDialog::selectionChanged() { + updateDetails(); +} + +//TODO Try to find a method that reload (an resize) correctly the content of the detail dialog +void DetailDialog::updateDetails() { + //Get the current-last item selected + currentLine=view->getLastSelectedItem(); + if (currentLine==NULL) { + //If no item are selected and the dialog is still open, we try to select the first + //item of the list. + currentLine=static_cast (view->getLogList()->firstChild()); + if (currentLine==NULL) { + close(); + + return; + } + + + } + + LogLine* logLine=currentLine->getLogLine(); + + //Special case if this is a ParentLogLine (Group By feature) + if (logLine->isParentLogLine()) { + icon->setPixmap(DesktopIcon(GROUP_BY_ICON)); + header->setText(currentLine->getFormattedText()); + message->setText(""); + } + //Normal Log Line + else { + icon->setPixmap(DesktopIcon(logLine->getLogLevel()->icon)); + + header->setText(currentLine->getFormattedText()); + + message->setText(logLine->getItemList().last()); + } + + + if (currentLine->itemAbove()==NULL) + previous->setEnabled(false); + else + previous->setEnabled(true); + + + if (currentLine->itemBelow()==NULL) + next->setEnabled(false); + else + next->setEnabled(true); + + + header->adjustSize(); + this->adjustSize(); +} + +void DetailDialog::previousItem() { + //This case should not occurs + if (currentLine==NULL) + return; + + //This case should not occurs + if (currentLine->itemAbove()==NULL) { + close(); + return; + } + + currentLine->setSelected(false); + currentLine->repaint(); + currentLine=static_cast (currentLine->itemAbove()); + currentLine->setSelected(true); + currentLine->repaint(); + + + updateDetails(); +} + +void DetailDialog::closeDetails() { + this->close(); +} + +void DetailDialog::nextItem() { + //This case should not occurs + if (currentLine==NULL) + return; + + //This case should not occurs + if (currentLine->itemBelow()==NULL) { + close(); + return; + } + + currentLine->setSelected(false); + currentLine->repaint(); + currentLine=static_cast (currentLine->itemBelow()); + currentLine->setSelected(true); + currentLine->repaint(); + + updateDetails(); + +} + +#include "detailDialog.moc" diff --git a/ksystemlog/src/detailDialog.h b/ksystemlog/src/detailDialog.h new file mode 100644 index 0000000..92163fb --- /dev/null +++ b/ksystemlog/src/detailDialog.h @@ -0,0 +1,77 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _DETAIL_DIALOG_H_ +#define _DETAIL_DIALOG_H_ + +#include +#include +#include + +#include +#include +#include + +#include "detailDialogBase.h" + +#include "view.h" +#include "logListItem.h" + +class DetailDialog : public DetailDialogBase { + + Q_OBJECT + + public: + DetailDialog(View* v, QWidget *parent=NULL, const char* name=NULL); + + ~DetailDialog(); + + void setView(View* view); + + public slots: + void selectionChanged(); + + protected slots: + void previousItem(); + void closeDetails(); + void nextItem(); + + private: + void updateDetails(); + + private: + + //KActiveLabel* header; + /* + QLabel* header; + + QTextEdit* message; + QLabel* icon; + + QPushButton* previous; + QPushButton* next; + */ + View* view; + LogListItem* currentLine; + + +}; + +#endif //_DETAIL_DIALOG_H_ diff --git a/ksystemlog/src/detailDialogBase.ui b/ksystemlog/src/detailDialogBase.ui new file mode 100644 index 0000000..3906664 --- /dev/null +++ b/ksystemlog/src/detailDialogBase.ui @@ -0,0 +1,199 @@ + +DetailDialogBase + + + detailDialog + + + + 0 + 0 + 411 + 248 + + + + Log Line Details + + + This dialog displays detailed information about the currently selected log line. + + + + unnamed + + + + message + + + + 5 + 5 + 0 + 0 + + + + Message + + + true + + + + + icon + + + + 5 + 5 + 0 + 0 + + + + Icon + + + + + header + + + + 5 + 7 + 2 + 0 + + + + Main information + + + + + layout2 + + + + unnamed + + + + previous + + + + 1 + 0 + 0 + 0 + + + + &Back + + + Alt+B + + + 14 + + + Move to the previous line + + + Moves to the previous line. This button is deactivated if there is no previous log line. + + + + + next + + + + 1 + 0 + 0 + 0 + + + + &Forward + + + Alt+F + + + 15 + + + Move to the next line + + + Moves to the next line. This button is deactivated if there is no next log line. + + + + + spacer1 + + + Horizontal + + + Expanding + + + + 100 + 31 + + + + + + closeButton + + + + 1 + 0 + 0 + 0 + + + + &Close + + + Alt+C + + + 13 + + + Close the Detail dialog. + + + Closes this Detail dialog. + + + + + + + + message + + + + ktextedit.h + kpushbutton.h + kpushbutton.h + kpushbutton.h + + diff --git a/ksystemlog/src/fileList.cpp b/ksystemlog/src/fileList.cpp new file mode 100644 index 0000000..7e3d050 --- /dev/null +++ b/ksystemlog/src/fileList.cpp @@ -0,0 +1,277 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "fileList.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// KDE includes +#include +#include +#include +#include +#include +#include +#include +#include + +FileList::FileList(QWidget *parent, QString description) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + + QVGroupBox* dirBox = new QVGroupBox(i18n( "Files" ), this); + + QLabel *defaultPathLabel = new QLabel(description, dirBox); + defaultPathLabel->setTextFormat(RichText); + + QHBox* center= new QHBox(dirBox); + center->setSpacing(10); + + fileList=new KListBox(center); + buttons=new QVBox(center); + + fileList->setSelectionMode(QListBox::Extended); + + QToolTip::add(fileList, i18n("List of files used by this log type")); + QWhatsThis::add(fileList, i18n("Here is a list of every files that will be read by KSystemLog to display the current log lines.")); + + + add=new QPushButton(SmallIcon("fileopen"), i18n("&Add File..."), buttons); + connect(add, SIGNAL(clicked()), this, SLOT(addItem())); + QToolTip::add(add, i18n("Choose a new file")); + QWhatsThis::add(add, i18n("Opens a dialog box to choose a new file to be added to the list.")); + + + remove=new QPushButton(SmallIconSet("edit_remove"), i18n("&Remove"), buttons); + connect(remove, SIGNAL(clicked()), this, SLOT(removeSelectedItem())); + QToolTip::add(remove, i18n("Delete the current file(s)")); + QWhatsThis::add(remove, i18n("Deletes the selected files of the list.")); + + up=new QPushButton(SmallIconSet("up"), i18n("Move &Up"), buttons); + connect(up, SIGNAL(clicked()), this, SLOT(moveUpItem())); + QToolTip::add(up, i18n("Move up the current file(s)")); + QWhatsThis::add(up, i18n("Moves up the selected files in the list. This option allows the files to be read in first by KSystemLog.")); + + down=new QPushButton(SmallIconSet("down"), i18n("Move &Down"), buttons); + connect(down, SIGNAL(clicked()), this, SLOT(moveDownItem())); + QToolTip::add(down, i18n("Move down the current file(s)")); + QWhatsThis::add(down, i18n("Moves down the selected files in the list. This option allows the files to be read at last by KSystemLog.")); + + removeAll=new QPushButton(SmallIconSet("cancel"), i18n("Re&move All"), buttons); + connect(removeAll, SIGNAL(clicked()), this, SLOT(removeAllItem())); + QToolTip::add(removeAll, i18n("Remove all files")); + QWhatsThis::add(removeAll, i18n("Remove all files of the list, even if they are not selected.")); + + fileListMenu=new KPopupMenu(this); + fileListMenu->insertTitle(i18n("File List")); + fileListMenu->insertItem(SmallIcon("fileopen"), i18n("&Add File..."), this, SLOT(addItem()), 0, ADD_FILE_MENU_ID); + fileListMenu->insertItem(SmallIcon("edit_remove"), i18n("&Remove"), this, SLOT(removeSelectedItem()), 0, REMOVE_MENU_ID); + fileListMenu->insertSeparator(); + fileListMenu->insertItem(SmallIcon("up"), i18n("Move &Up"), this, SLOT(moveUpItem()), 0, MOVE_UP_MENU_ID); + fileListMenu->insertItem(SmallIcon("down"), i18n("Move &Down"), this, SLOT(moveDownItem()), 0, MOVE_DOWN_MENU_ID); + fileListMenu->insertSeparator(); + fileListMenu->insertItem(SmallIcon("cancel"), i18n("Re&move All"), this, SLOT(removeAllItem()), 0, REMOVE_ALL_MENU_ID); + + connect(fileList, SIGNAL(selectionChanged()), this, SLOT(updateButtons())); + + connect(this, SIGNAL(fileListChanged(int)), this, SLOT(updateButtons())); + + connect(fileList, SIGNAL(rightButtonClicked(QListBoxItem*, const QPoint &)), this, SLOT(displayPopupMenu(QListBoxItem*, const QPoint&))); + + updateButtons(); + +} + +FileList::~FileList() { + +} + +QString FileList::getText(int i) { + return(fileList->text(i)); +} + + + +void FileList::insertItem(QString& item) { + fileList->insertItem(item); +} + +int FileList::count() { + return(fileList->count()); +} + +void FileList::displayPopupMenu(QListBoxItem*, const QPoint& point) { + fileListMenu->popup(point); +} + +void FileList::addItem() { + //Open a standard Filedialog + KURL::List urlList; + urlList=KFileDialog::getOpenURLs(DEFAULT_FOLDER, "*|" + i18n("All Files (*)") + "\n*.log|" + i18n("Log Files (*.log)"), this, i18n("Choose Log File")); + + KURL url; + KURL::List::iterator it; + + for(it=urlList.begin(); it!=urlList.end(); ++it) { + url=*it; + if (isValidFile(url)) { + fileList->insertItem(url.path()); + } + } + + emit fileListChanged(fileList->count()); +} + +bool FileList::isValidFile(KURL url) { + QString message; + + //If it is not valid + if (!url.isValid()) { + message=i18n("'%1' is not valid.").arg(url.path()); + KMessageBox::error(this, message, i18n("File selection failed"), KMessageBox::Notify); + return(false); + } + + //If it is not a local file + if (!url.isLocalFile()) { + message=i18n("'%1' is not a local file.").arg(url.path()); + KMessageBox::error(this, message, i18n("File selection failed"), KMessageBox::Notify); + return(false); + } + + //If it's a directory, it's not valid + if (QDir(url.path()).exists()) { + message=i18n("'%1' is a folder.").arg(url.path()); + KMessageBox::error(this, message, i18n("File selection failed"), KMessageBox::Notify); + return(false); + } + + return(true); +} + +void FileList::removeItem(int id) { + fileList->removeItem(id); +} + +void FileList::removeSelectedItem() { + + for (int i=0; i<(int) fileList->count(); i++) { + if (fileList->isSelected(i)==true) { + this->removeItem(i); + i--; + } + } + + fileList->setSelected(fileList->count()-1, true); + fileList->setCurrentItem(fileList->count()-1); + + emit fileListChanged(fileList->count()); +} + +void FileList::moveUpItem() { + int count=fileList->count(); + + QListBoxItem* item; + int index; + for (int i=1; iisSelected(i)==true && fileList->isSelected(i-1)==false) { + item=fileList->item(i); + fileList->takeItem(item); + fileList->insertItem(item, i-1); + + index=fileList->index(item); + fileList->setSelected(index, true); + fileList->setCurrentItem(index); + } + } + + emit fileListChanged(count); +} + +void FileList::moveDownItem() { + int count=fileList->count(); + + QListBoxItem* item; + int index; + for (int i=count-2; i>=0; i--) { + if (fileList->isSelected(i)==true && fileList->isSelected(i+1)==false) { + item=fileList->item(i); + fileList->takeItem(item); + fileList->insertItem(item, i+1); + + index=fileList->index(item); + fileList->setSelected(index, true); + fileList->setCurrentItem(index); + } + } + + emit fileListChanged(count); + +} + +void FileList::removeAllItem() { + int count=fileList->count(); + + for (int i=0; iremoveItem(0); + } + + emit fileListChanged(0); +} + + +bool FileList::updateButtons() { + int count=fileList->count(); + + if (count==0) + removeAll->setEnabled(false); + else + removeAll->setEnabled(true); + + bool selection=false; + + for (int i=0; iisSelected(i)==true) { + selection=true; + } + } + + //If nothing is selected, disabled special buttons + remove->setEnabled(selection); + up->setEnabled(selection); + down->setEnabled(selection); + + return(selection); +} + + +#include "fileList.moc" diff --git a/ksystemlog/src/fileList.h b/ksystemlog/src/fileList.h new file mode 100644 index 0000000..83472cd --- /dev/null +++ b/ksystemlog/src/fileList.h @@ -0,0 +1,90 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _FILE_LIST_H_ +#define _FILE_LIST_H_ + +#include +#include + +#include +#include + +#include "globals.h" +#include "logLevel.h" + +#define ADD_FILE_MENU_ID 0 +#define REMOVE_MENU_ID 1 +#define MOVE_UP_MENU_ID 2 +#define MOVE_DOWN_MENU_ID 3 +#define REMOVE_ALL_MENU_ID 4 + +//TODO Maybe draw this class with Qt Designer +class FileList : public QWidget { + + Q_OBJECT + + public: + FileList(QWidget *parent, QString description); + ~FileList(); + + virtual void insertItem(QString& item); + virtual void removeItem(int id); + void insertItem(QPixmap& pixmap, QString& item); + + int count(); + + QString getText(int i); + + signals: + void fileListChanged(int itemLeft); + + protected slots: + virtual bool updateButtons(); + + void removeSelectedItem(); + void moveUpItem(); + void moveDownItem(); + void removeAllItem(); + virtual void addItem(); + + void displayPopupMenu(QListBoxItem* item, const QPoint& point); + + protected: + bool isValidFile(KURL url); + + QVBox* buttons; + + KPopupMenu* fileListMenu; + + KListBox* fileList; + + private: + + QPushButton* add; + QPushButton* remove; + QPushButton* up; + QPushButton* down; + QPushButton* removeAll; + + +}; + +#endif //_FILE_LIST_H_ diff --git a/ksystemlog/src/findManager.cpp b/ksystemlog/src/findManager.cpp new file mode 100644 index 0000000..f1bb3c5 --- /dev/null +++ b/ksystemlog/src/findManager.cpp @@ -0,0 +1,208 @@ +// +// C++ Implementation: findManager +// +// Description: +// +// +// Author: Nicolas Ternisien , (C) 2005 +// +// Copyright: See COPYING file that comes with this distribution +// +// + +//Project includes +#include "findManager.h" + +#include "ksystemlog.h" + + +FindManager::FindManager(KSystemLog* parent, const char* name) : + QObject(parent, name), + main(parent), + findDialog(NULL), + findManager(NULL), + previousItemFound(NULL), + currentItemFound(NULL) { + + +} + +FindManager::~FindManager() { + if (findDialog!=NULL) + delete findDialog; + + if (findManager!=NULL) + delete findManager; +} + +void FindManager::slotFind() { + + if (findManager!=NULL) { + delete findManager; + findManager=NULL; + } + + if (findDialog==NULL) { + kdDebug() << "KFindDialog creation" << endl; + //TODO Save the Find options to Config file + findDialog=new KFindDialog(false, main, "find_dialog"); + connect(findDialog, SIGNAL(okClicked()), this, SLOT(slotFindNext())); + + findDialog->show(); + } + else { + findDialog->show(); + + //KWin::activateWindow(findDialog->winId()); + //return; + } + +} + + +void FindManager::slotFirstFind() { + kdDebug() << "First Find" << endl; + + LogManager* currentManager=main->activeLogManager(); + KListView* list=currentManager->getView()->getLogList(); + + //Delete the previous KFind object (if it exists) + if (findManager!=NULL) { + delete findManager; + findManager=NULL; + } + + //TODO Is useful? + if (previousItemFound!=NULL) { + list->setSelected(previousItemFound, false); + } + + //This creates a find-next-prompt dialog if needed. + findManager=new KFind(findDialog->pattern(), findDialog->options(), main, findDialog); + connect(findManager, SIGNAL(highlight(const QString&, int, int)), this, SLOT(highlightSearch(const QString&, int, int))); + connect(findManager, SIGNAL(findNext()), this, SLOT(slotFindNext())); + + //Do not keep the KFindDialog open + findDialog->hide(); + + + //findManager->closeFindNextDialog(); + + QListViewItemIterator it(list, QListViewItemIterator::Selected); + int itemPos=-1; + int currentPos; + while (it.current()) { + list->setSelected(it.current(), false); + + currentPos=list->itemPos(it.current()); + if (currentPos>=itemPos) { + itemPos=currentPos; + previousItemFound=static_cast (it.current()); + } + + ++it; + } + //Unselect all previous items (the last one if always selected) + if (previousItemFound!=NULL) + list->setSelected(previousItemFound, true); + + + + //If we search from the cursor, the iterator goes to the first selected item + if (findDialog->options() & KFindDialog::FromCursor) { + currentItemFound=currentManager->getView()->getFirstSelectedItem(); + + //If nothing is selected, then we initialize the iterator classicaly + if (currentItemFound==NULL) { + currentItemFound=static_cast (list->firstChild()); + } + + previousItemFound=currentItemFound; + } + //If we search from the last, the iterator is initialized to the last item + else if (findDialog->options() & KFindDialog::FindBackwards) { + currentItemFound=static_cast (list->lastItem()); + } + //Default initialization + else { + currentItemFound=static_cast (list->firstChild()); + } + +} + +void FindManager::slotFindNext() { + //If we attempt to go to the next search, without have opened the find dialog, we open it + if (findDialog==NULL) { + slotFind(); + return; + } + + //If the KFind object has not been initialized, we call the right method for that + if (findManager==NULL) { + slotFirstFind(); + } + + + //Keep the Find Dialog opened + /* + if (findManager->options() != findDialog->options() || findManager->pattern()!=findDialog->pattern()) { + kdDebug() << "Reinitialize the search..." << endl; + slotFirstFind(); + } + */ + + + KFind::Result res = KFind::NoMatch; + while (res==KFind::NoMatch && currentItemFound!=NULL) { + + //Always need new data, because a line is only selected one time + //if (findManager->needData()) + findManager->setData(currentItemFound->exportToText()); + + //Let KFind inspect the text fragment, and display a dialog if a match is found + res=findManager->find(); + + //Always need new data, because a line is only selected one time + //if (res==KFind::NoMatch ) { + if (findDialog->options() & KFindDialog::FindBackwards) + currentItemFound=static_cast (currentItemFound->itemAbove()); + else + currentItemFound=static_cast (currentItemFound->itemBelow()); + //} + } + + + //End of the view + if (res==KFind::NoMatch) { + if (findManager->shouldRestart()) { + delete findManager; + findManager=NULL; + findDialog->setOptions(findDialog->options() & !KFindDialog::FromCursor); + slotFindNext(); + } + else { + findManager->closeFindNextDialog(); + } + } + +} + + +void FindManager::highlightSearch(const QString& /*text*/, int /*matchingIndex*/, int /*matchingLength*/) { + LogManager* currentManager=main->activeLogManager(); + KListView* list=currentManager->getView()->getLogList(); + + if (previousItemFound!=NULL) { + list->setSelected(previousItemFound, false); + } + + if (currentItemFound!=NULL) { + list->setSelected(currentItemFound, true); + list->ensureItemVisible(currentItemFound); + previousItemFound=currentItemFound; + } + +} + + +#include "findManager.moc" diff --git a/ksystemlog/src/findManager.h b/ksystemlog/src/findManager.h new file mode 100644 index 0000000..1156dec --- /dev/null +++ b/ksystemlog/src/findManager.h @@ -0,0 +1,81 @@ +// +// C++ Interface: findManager +// +// Description: +// +// +// Author: Nicolas Ternisien , (C) 2005 +// +// Copyright: See COPYING file that comes with this distribution +// +// + +#ifndef FIND_MANAGER_H +#define FIND_MANAGER_H + +//Qt includes +#include + +//KDE includes +#include +#include +#include + +//Project includes +#include "logManager.h" +#include "globals.h" + +class KSystemLog; + +/** + * + * @short Find Manager + * @author Nicolas Ternisien + * @version 0.1 + */ +class FindManager : public QObject { + + Q_OBJECT + + public: + /** + * Default Constructor + */ + FindManager(KSystemLog* parent, const char* name); + + virtual ~FindManager(); + + public slots: + void slotFind(); + void slotFindNext(); + void slotFirstFind(); + + void highlightSearch(const QString& text, int matchingIndex, int matchingLength); + + private: + + KSystemLog* main; + + /** + * A pointer to the Find dialog + */ + KFindDialog* findDialog; + + /** + * The manager of the current search + */ + KFind* findManager; + + /** + * Previous object found + */ + LogListItem* previousItemFound; + + /** + * Current object found + */ + LogListItem* currentItemFound; +}; + +#endif + diff --git a/ksystemlog/src/generalOptions.cpp b/ksystemlog/src/generalOptions.cpp new file mode 100644 index 0000000..69cc09d --- /dev/null +++ b/ksystemlog/src/generalOptions.cpp @@ -0,0 +1,143 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "ksystemlogConfig.h" +#include "generalOptions.h" + +GeneralOptions::GeneralOptions(QWidget *parent) : + QWidget(parent) + { + + QVBoxLayout *layout = new QVBoxLayout(this); + layout->setSpacing(10); + + //Maximum Lines + QVGroupBox* logLinesBox=new QVGroupBox(i18n("Log Lines List"), this); + new QLabel(i18n("Maximum lines displayed:"), logLinesBox); + maxLines=new QSpinBox(10, 30000, 10, logLinesBox); + connect(maxLines, SIGNAL(valueChanged(int)), this, SLOT(onOptionsChanged())); + + QToolTip::add(maxLines, i18n("Choose here the maximum number of log lines displayed in the main view.")); + QWhatsThis::add(maxLines, i18n("You can choose here the maximum number of log lines displayed in the main view.")); + + deleteDuplicatedLines=new QCheckBox(i18n("Delete duplicated log lines (may be slow)"), logLinesBox); + connect(deleteDuplicatedLines, SIGNAL(clicked()), this, SLOT(onOptionsChanged())); + + QToolTip::add(deleteDuplicatedLines, i18n("Select this option if you want to delete duplicated log lines (may be slow).")); + QWhatsThis::add(deleteDuplicatedLines, i18n("You can select this option if you want to delete duplicated log lines. This option can slow the reading.")); + + + + //Maximum Characters per line + QVGroupBox* maxCharBox=new QVGroupBox(i18n("Maximum Characters to Read per Line"), this); + new QLabel(i18n("Number of characters:"), maxCharBox); + maxCharacters=new QSpinBox(10, 30000, 10, maxCharBox); + connect(maxCharacters, SIGNAL(valueChanged(int)), this, SLOT(onOptionsChanged())); + + QToolTip::add(maxCharacters, i18n("Choose here the maximum number of characters to read from each log line.")); + QWhatsThis::add(maxCharacters, i18n("You can choose here the maximum number of characters to read from each log line.")); + + + QVGroupBox* options= new QVGroupBox( i18n( "Options" ), this ); + + deleteProcessId=new QCheckBox(i18n("Delete process identifier from process name"), options); + connect(deleteProcessId, SIGNAL(clicked()), this, SLOT(onOptionsChanged())); + + QToolTip::add(deleteProcessId, i18n("Delete process identifier from process name.")); + QWhatsThis::add(deleteProcessId, i18n("You can select this option if you want to delete the process identifier from process name. For example, you will sometimes see in the Process column something like cron[3433]. If this option is activated, the annoying bold part will be erased.")); + + colorizeLogLines=new QCheckBox(i18n("Colorize log lines"), options); + connect(colorizeLogLines, SIGNAL(clicked()), this, SLOT(onOptionsChanged())); + + QToolTip::add(colorizeLogLines, i18n("This option allows the colorization of log lines, depending on their log level.")); + QWhatsThis::add(colorizeLogLines, i18n("This option allows the colorization of log lines, depending on their log level. For example, an error will be in red, a warning in orange... This will help you to better see problems.")); + + QSpacerItem* spacer=new QSpacerItem(0, 0, QSizePolicy::Preferred, QSizePolicy::Expanding); + + layout->addWidget(logLinesBox); + layout->addWidget(maxCharBox); + layout->addWidget(options); + + layout->addItem(spacer); + + readConfig(); +} + + +void GeneralOptions::readConfig() { + int value; + + value=KSystemLogConfig::maxLines(); + maxLines->setValue(value); + + value=KSystemLogConfig::maxReadCharacters(); + maxCharacters->setValue(value); + + bool option=KSystemLogConfig::deleteDuplicatedLines(); + deleteDuplicatedLines->setChecked(option); + + option=KSystemLogConfig::deleteProcessIdentifier(); + deleteProcessId->setChecked(option); + + option=KSystemLogConfig::colorizeLogLines(); + colorizeLogLines->setChecked(option); + +} + +void GeneralOptions::saveConfig() { + kdDebug() << "Save config from General preferences" << endl; + + KSystemLogConfig::setMaxLines(maxLines->value()); + KSystemLogConfig::setMaxReadCharacters(maxCharacters->value()); + KSystemLogConfig::setDeleteDuplicatedLines(deleteDuplicatedLines->isChecked()); + KSystemLogConfig::setDeleteProcessIdentifier(deleteProcessId->isChecked()); + KSystemLogConfig::setColorizeLogLines(colorizeLogLines->isChecked()); + +} + +bool GeneralOptions::isValid() { + return(maxLines->value()>0 && maxCharacters->value()>0); +} + + +void GeneralOptions::onOptionsChanged() { + emit optionsChanged(true); +} + + + +#include "generalOptions.moc" diff --git a/ksystemlog/src/generalOptions.h b/ksystemlog/src/generalOptions.h new file mode 100644 index 0000000..3b6a86f --- /dev/null +++ b/ksystemlog/src/generalOptions.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _GENERAL_OPTIONS_H_ +#define _GENERAL_OPTIONS_H_ + +#include +#include +#include +#include + +#include +#include + +#include "globals.h" + + +class GeneralOptions : public QWidget { + Q_OBJECT + public: + GeneralOptions(QWidget *parent = 0); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + signals: + void optionsChanged(bool valid); + + private slots: + void onOptionsChanged(); + + private: + QSpinBox* maxLines; + QSpinBox* maxCharacters; + QCheckBox* deleteDuplicatedLines; + + QCheckBox* deleteProcessId; + QCheckBox* colorizeLogLines; +}; + +#endif // _GENERAL_PREFERENCES_H_ diff --git a/ksystemlog/src/globals.cpp b/ksystemlog/src/globals.cpp new file mode 100644 index 0000000..4b70175 --- /dev/null +++ b/ksystemlog/src/globals.cpp @@ -0,0 +1,148 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "globals.h" + +#include + +#include "logLevel.h" +#include "logMode.h" + +//Existing Log levels. The id value corresponds to the index in the vector +LogLevels Globals::logLevels; + +LogLevel* Globals::noneLogLevel=NULL; +LogLevel* Globals::debugLogLevel=NULL; +LogLevel* Globals::informationLogLevel=NULL; +LogLevel* Globals::noticeLogLevel=NULL; +LogLevel* Globals::warningLogLevel=NULL; +LogLevel* Globals::errorLogLevel=NULL; +LogLevel* Globals::criticalLogLevel=NULL; +LogLevel* Globals::alertLogLevel=NULL; +LogLevel* Globals::emergencyLogLevel=NULL; + +void Globals::setupLogLevels() { + Globals::noneLogLevel=new LogLevel(NONE_LOG_LEVEL_ID, i18n("none"), NONE_LOG_LEVEL_ICON, QColor(208, 210, 220)); + Globals::logLevels.append(Globals::noneLogLevel); + + Globals::debugLogLevel=new LogLevel(DEBUG_LOG_LEVEL_ID, i18n("debug"), DEBUG_LOG_LEVEL_ICON, QColor(156, 157, 165)); + Globals::logLevels.append(debugLogLevel); + + Globals::informationLogLevel=new LogLevel(INFORMATION_LOG_LEVEL_ID, i18n("information"), INFORMATION_LOG_LEVEL_ICON, QColor(36, 49, 103) /*QColor(0, 0, 0)*/); + Globals::logLevels.append(Globals::informationLogLevel); + + Globals::noticeLogLevel=new LogLevel(NOTICE_LOG_LEVEL_ID, i18n("notice"), NOTICE_LOG_LEVEL_ICON, QColor(36, 138, 22)); + Globals::logLevels.append(Globals::noticeLogLevel); + + Globals::warningLogLevel=new LogLevel(WARNING_LOG_LEVEL_ID, i18n("warning"), WARNING_LOG_LEVEL_ICON, QColor(238, 144, 21)); + Globals::logLevels.append(Globals::warningLogLevel); + + Globals::errorLogLevel=new LogLevel(ERROR_LOG_LEVEL_ID, i18n("error"), ERROR_LOG_LEVEL_ICON, QColor(173, 28, 28)); + Globals::logLevels.append(Globals::errorLogLevel); + + Globals::criticalLogLevel=new LogLevel(CRITICAL_LOG_LEVEL_ID, i18n("critical"), CRITICAL_LOG_LEVEL_ICON, QColor(214, 26, 26)); + Globals::logLevels.append(criticalLogLevel); + + Globals::alertLogLevel=new LogLevel(ALERT_LOG_LEVEL_ID, i18n("alert"), ALERT_LOG_LEVEL_ICON, QColor(214, 0, 0)); + Globals::logLevels.append(alertLogLevel); + + Globals::emergencyLogLevel=new LogLevel(EMERGENCY_LOG_LEVEL_ID, i18n("emergency"), EMERGENCY_LOG_LEVEL_ICON, QColor(255, 0, 0)); + Globals::logLevels.append(emergencyLogLevel); + +} + +LogModes Globals::logModes; + +LogMode* Globals::noMode=NULL; +LogMode* Globals::openingMode=NULL; +LogMode* Globals::systemMode=NULL; +LogMode* Globals::kernelMode=NULL; +LogMode* Globals::xorgMode=NULL; +LogMode* Globals::bootMode=NULL; +LogMode* Globals::authenticationMode=NULL; +LogMode* Globals::cronMode=NULL; +LogMode* Globals::daemonMode=NULL; + +LogMode* Globals::acpidMode=NULL; +LogMode* Globals::cupsMode=NULL; +LogMode* Globals::cupsAccessMode=NULL; + +LogMode* Globals::apacheMode=NULL; +LogMode* Globals::apacheAccessMode=NULL; + +LogMode* Globals::postfixMode=NULL; + +LogMode* Globals::sambaMode=NULL; + +void Globals::setupLogModes() { + int i=0; + + Globals::noMode=new LogMode(i++, i18n("No Log"), NO_MODE_ICON); + Globals::logModes.append(noMode); + + Globals::openingMode=new LogMode(i++, i18n("File Log"), OPENING_MODE_ICON); + Globals::logModes.append(openingMode); + + Globals::systemMode=new LogMode(i++, i18n("System Log"), SYSTEM_MODE_ICON); + Globals::logModes.append(systemMode); + + Globals::kernelMode=new LogMode(i++, i18n("Kernel Log"), KERNEL_MODE_ICON); + Globals::logModes.append(kernelMode); + + Globals::xorgMode=new LogMode(i++, i18n("X.org Log"), XORG_MODE_ICON); + Globals::logModes.append(xorgMode); + + Globals::sambaMode=new LogMode(i++, i18n("Samba Log"), SAMBA_MODE_ICON); + Globals::logModes.append(sambaMode); + + Globals::bootMode=new LogMode(i++, i18n("Boot Log"), BOOT_MODE_ICON); + Globals::logModes.append(bootMode); + + Globals::authenticationMode=new LogMode(i++, i18n("Authentication Log"), AUTHENTICATION_MODE_ICON); + Globals::logModes.append(authenticationMode); + + Globals::cronMode=new LogMode(i++, i18n("Cron Log"), CRON_MODE_ICON); + Globals::logModes.append(cronMode); + + Globals::daemonMode=new LogMode(i++, i18n("Daemon Log"), DAEMON_MODE_ICON); + Globals::logModes.append(daemonMode); + + Globals::acpidMode=new LogMode(i++, i18n("ACPI Log"), ACPID_MODE_ICON); + Globals::logModes.append(acpidMode); + + Globals::cupsMode=new LogMode(i++, i18n("CUPS Log"), CUPS_MODE_ICON); + Globals::logModes.append(cupsMode); + + Globals::cupsAccessMode=new LogMode(i++, i18n("CUPS Access Log"), CUPS_ACCESS_MODE_ICON); + Globals::logModes.append(cupsAccessMode); + + Globals::apacheMode=new LogMode(i++, i18n("Apache Log"), APACHE_MODE_ICON); + Globals::logModes.append(apacheMode); + + Globals::apacheAccessMode=new LogMode(i++, i18n("Apache Access Log"), APACHE_ACCESS_MODE_ICON); + Globals::logModes.append(apacheAccessMode); + + Globals::postfixMode=new LogMode(i++, i18n("Postfix Log"), POSTFIX_MODE_ICON); + Globals::logModes.append(postfixMode); + + Globals::sambaMode=new LogMode(i++, i18n("Samba Log"), SAMBA_MODE_ICON); + Globals::logModes.append(sambaMode); + +} diff --git a/ksystemlog/src/globals.h b/ksystemlog/src/globals.h new file mode 100644 index 0000000..2887f10 --- /dev/null +++ b/ksystemlog/src/globals.h @@ -0,0 +1,184 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _GLOBALS_H_ +#define _GLOBALS_H_ + +#include +#include + + +//Redefined here to compile correctly (crossed-header problem) +class LogLevel; +typedef QPtrList LogLevels; + + +//Redefined here to compile correctly (crossed-header problem) +class LogMode; +typedef QPtrList LogModes; + +#define DEFAULT_FOLDER "/var/log" + +/** + * Icon name of KSystemLog + */ +#define KSYSTEMLOG_ICON "ksystemlog" + + + +// String was "none" +#define NONE_LOG_LEVEL_ICON "help" + +#define DEBUG_LOG_LEVEL_ICON "attach" +#define INFORMATION_LOG_LEVEL_ICON "messagebox_info" +#define NOTICE_LOG_LEVEL_ICON "endturn" +#define WARNING_LOG_LEVEL_ICON "messagebox_warning" +#define ERROR_LOG_LEVEL_ICON "messagebox_critical" +#define CRITICAL_LOG_LEVEL_ICON "core" +#define ALERT_LOG_LEVEL_ICON "kalarm" +#define EMERGENCY_LOG_LEVEL_ICON "exit" + +enum logLevelIds { + NONE_LOG_LEVEL_ID=0, + DEBUG_LOG_LEVEL_ID, + INFORMATION_LOG_LEVEL_ID, + NOTICE_LOG_LEVEL_ID, + WARNING_LOG_LEVEL_ID, + ERROR_LOG_LEVEL_ID, + CRITICAL_LOG_LEVEL_ID, + ALERT_LOG_LEVEL_ID, + EMERGENCY_LOG_LEVEL_ID, +}; + +enum groupByType { + NO_GROUP_BY=0, + GROUP_BY_LOG_LEVEL, + GROUP_BY_DAY, + GROUP_BY_HOUR, + GROUP_BY_LOG_FILE, + GROUP_BY_COLUMN +}; + +//This variable only counts GROUP_BY methods != than GROUP_BY_COLUMN +#define DEFAULT_GROUP_BY_COUNT 5 + +#define NO_GROUP_BY_ICON "cancel" +#define GROUP_BY_LOG_LEVEL_ICON INFORMATION_LOG_LEVEL_ICON +#define GROUP_BY_DAY_ICON "today" +#define GROUP_BY_HOUR_ICON "clock" +#define GROUP_BY_LOG_FILE_ICON "file" + +#define GROUP_BY_COLUMN_ICON "view_text" + + +//Icon of the Group By action +#define GROUP_BY_ICON "view_tree" + + +/** + * Icon names of different existing modes + */ +#define NO_MODE_ICON "ksystemlog" + +#define OPENING_MODE_ICON "file" + +#define SYSTEM_MODE_ICON "hwinfo" +#define KERNEL_MODE_ICON "openterm" +#define XORG_MODE_ICON "x" +#define BOOT_MODE_ICON "system" +#define AUTHENTICATION_MODE_ICON "kuser" +#define DAEMON_MODE_ICON "misc" +#define CRON_MODE_ICON "history" + + +#define SAMBA_MODE_ICON "samba" +#define PROFTP_MODE_ICON "ftp" + +#define ACPID_MODE_ICON "connect_no" + +#define CUPS_MODE_ICON "fileprint" +#define CUPS_ACCESS_MODE_ICON "history" + +#define APACHE_MODE_ICON "network" +#define APACHE_ACCESS_MODE_ICON "history" + +#define POSTFIX_MODE_ICON "email" + +#define SAMBA_MODE_ICON "samba" + +class Globals { + public: + static void setupLogModes(); + + static void setupLogLevels(); + + /** + * Existing Log modes. The id value corresponds to the index in the vector + */ + static LogModes logModes; + + /** + * These value are only pointers to item of the previous vector, + * they are provided for convenience + */ + static LogMode* noMode; + static LogMode* openingMode; + static LogMode* systemMode; + static LogMode* kernelMode; + static LogMode* xorgMode; + static LogMode* bootMode; + static LogMode* authenticationMode; + static LogMode* cronMode; + static LogMode* daemonMode; + + static LogMode* acpidMode; + static LogMode* cupsMode; + static LogMode* cupsAccessMode; + + static LogMode* apacheMode; + static LogMode* apacheAccessMode; + + static LogMode* postfixMode; + + static LogMode* sambaMode; + + /** + * Existing Log levels. The id value corresponds to the index in the vector + */ + static LogLevels logLevels; + + /** + * These value are only pointers to item of the previous vector, + * they are provided for convenience + */ + static LogLevel* noneLogLevel; + static LogLevel* debugLogLevel; + static LogLevel* informationLogLevel; + static LogLevel* noticeLogLevel; + static LogLevel* warningLogLevel; + static LogLevel* errorLogLevel; + static LogLevel* criticalLogLevel; + static LogLevel* alertLogLevel; + static LogLevel* emergencyLogLevel; + +}; + + +#endif diff --git a/ksystemlog/src/hi128-app-ksystemlog.png b/ksystemlog/src/hi128-app-ksystemlog.png new file mode 100644 index 0000000..14672f1 Binary files /dev/null and b/ksystemlog/src/hi128-app-ksystemlog.png differ diff --git a/ksystemlog/src/hi16-app-ksystemlog.png b/ksystemlog/src/hi16-app-ksystemlog.png new file mode 100644 index 0000000..028f369 Binary files /dev/null and b/ksystemlog/src/hi16-app-ksystemlog.png differ diff --git a/ksystemlog/src/hi22-app-ksystemlog.png b/ksystemlog/src/hi22-app-ksystemlog.png new file mode 100644 index 0000000..c273f2c Binary files /dev/null and b/ksystemlog/src/hi22-app-ksystemlog.png differ diff --git a/ksystemlog/src/hi32-app-ksystemlog.png b/ksystemlog/src/hi32-app-ksystemlog.png new file mode 100644 index 0000000..a90941f Binary files /dev/null and b/ksystemlog/src/hi32-app-ksystemlog.png differ diff --git a/ksystemlog/src/hi48-app-ksystemlog.png b/ksystemlog/src/hi48-app-ksystemlog.png new file mode 100644 index 0000000..6360114 Binary files /dev/null and b/ksystemlog/src/hi48-app-ksystemlog.png differ diff --git a/ksystemlog/src/hi64-app-ksystemlog.png b/ksystemlog/src/hi64-app-ksystemlog.png new file mode 100644 index 0000000..4c5ae9a Binary files /dev/null and b/ksystemlog/src/hi64-app-ksystemlog.png differ diff --git a/ksystemlog/src/hisc-app-ksystemlog.svgz b/ksystemlog/src/hisc-app-ksystemlog.svgz new file mode 100644 index 0000000..08088bc Binary files /dev/null and b/ksystemlog/src/hisc-app-ksystemlog.svgz differ diff --git a/ksystemlog/src/itemFactory.cpp b/ksystemlog/src/itemFactory.cpp new file mode 100644 index 0000000..0933936 --- /dev/null +++ b/ksystemlog/src/itemFactory.cpp @@ -0,0 +1,494 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//KDE includes +#include +#include +#include + +//KSystemLog includes +#include "logLine.h" +#include "childLogLine.h" +#include "parentLogLine.h" + +#include "logListItem.h" + +#include "logMode.h" + + +#include "itemFactory.h" + +LogListItem* ItemFactory::createLogListItem(QListView* view, LogLine* line) { + + //If it is a parent Log Line + if (line->isParentLogLine()==true) + return(createParentItem(view, (ParentLogLine*)line)); + + //If it's a child Log Line + if (line->isChildLogLine()==true) + return(createChildItem(view, (ChildLogLine*)line)); + + /* + //If it's a Samba mode item + if (line->getType()==Globals::sambaMode->id) { + kdDebug() << "Samba... Di Janero!!" << endl; + LogListItem* item=createBasicItem(view, line); + item->setMultiLinesEnabled(true); + } + */ + + //It's a normal Log Line + return(createBasicItem(view, line)); + +} + + +LogListItem* ItemFactory::createParentItem(QListView* view, ParentLogLine* line) { + //kdDebug() << "Creating a parent item : " << line->getLogLevel()->name << endl; + + LogListItem* item=new LogListItem(view, line); + + //item->setExpandable(true); + + //Group by Log Level + if (line->getGroupBy()==GROUP_BY_LOG_LEVEL) { + item->setText(0, line->getLogLevel()->name); + item->setPixmap(0, line->getLogLevel()->pixmap); + + if (line->getLogLevel()==Globals::informationLogLevel) { + item->setOpen(true); + view->ensureItemVisible(item); + } + else { + item->setOpen(false); + } + + } + //Group by Day + else if (line->getGroupBy()==GROUP_BY_DAY) { + //TODO Move these tests to a dedicated static method (to be able to reuse it) + QDate today=QDate::currentDate(); + QDate yesterday=today.addDays(-1); + + QDate date=line->getTime().date(); + + if (date==today) { + item->setText(0, i18n("Today")); + item->setOpen(true); + view->ensureItemVisible(item); + } + else if (date==yesterday) { + item->setText(0, i18n("Yesterday")); + item->setOpen(false); + } + else { + item->setText(0, date.toString()); + item->setOpen(false); + } + + item->setPixmap(0, SmallIcon(GROUP_BY_DAY_ICON)); + } + //Group by Hour + else if (line->getGroupBy()==GROUP_BY_HOUR) { + QString string(i18n("%1, %2h").arg(line->getTime().date().toString(), line->getTime().time().toString("h"))); + + item->setText(0, string); + item->setPixmap(0, SmallIcon(GROUP_BY_HOUR_ICON)); + + QDate today=QDate::currentDate(); + QTime time=QTime::currentTime(); + if (line->getTime().date()==today && line->getTime().time().hour()==time.hour()) { + kdDebug() << "Date equals, hour equals" << line->getTime().date().toString() << " and " << line->getTime().time().toString() << endl; + item->setOpen(true); + view->ensureItemVisible(item); + } + else { + item->setOpen(false); + } + + } + //Group by Day + else if (line->getGroupBy()==GROUP_BY_LOG_FILE) { + item->setText(0, line->getOriginalFile()); + item->setPixmap(0, SmallIcon(GROUP_BY_LOG_FILE_ICON)); + } + //Group by a specific column + else { + int index=ParentLogLine::getGroupedColumnIndex(line->getColumns(), line->getGroupByColumn()); + + QStringList& list=line->getItemList(); + + if (index<0 || index>=(int)list.size()) + item->setText(0, i18n("none")); + else + item->setText(0, list[index]); + + item->setPixmap(0, SmallIcon(GROUP_BY_COLUMN_ICON)); + } + + return(item); +} + +LogListItem* ItemFactory::createChildItem(QListView* /*view*/, ChildLogLine* line) { + + LogListItem* parent=line->getParent()->getLogListItem(); + + if (parent==NULL) + kdDebug() << "Parent log list item NULL !!!" << endl; + + //kdDebug() << "The log level of the parent is " << parent->getLogLine()->getLogLevel()->name << endl; + + LogListItem* item=new LogListItem(parent, line); + + initItem(item); + + return(item); +} + +LogListItem* ItemFactory::createBasicItem(QListView* view, LogLine* line) { + LogListItem* item=new LogListItem(view, line); + + initItem(item); + + return(item); +} + +void ItemFactory::initItem(LogListItem* item) { + LogLine* line=item->getLogLine(); + + //If it's a Xorg Log Line + if (line->getType() == Globals::xorgMode->id) { + initXorgItem(item); + return; + } + + //Default Item + initDefaultItem(item); + +} + +void ItemFactory::initDefaultItem(LogListItem* item) { + LogLine* line=item->getLogLine(); + + item->setText(0, line->getTime().toString(Qt::LocalDate)); + + int i=1; + QStringList& labels=line->getItemList(); + QStringList::iterator it; + for(it=labels.begin(); it!=labels.end(); ++it) { + item->setText(i, *it); + i++; + } + + item->setPixmap(0, line->getLogLevel()->pixmap); +} + + +void ItemFactory::initXorgItem(LogListItem* item) { + LogLine* line=item->getLogLine(); + + item->setText(0, ""); + + int i=1; + QStringList& labels=line->getItemList(); + QStringList::iterator it; + for(it=labels.begin(); it!=labels.end(); ++it) { + item->setText(i, *it); + i++; + } + + item->setPixmap(0, line->getLogLevel()->pixmap); + +} + + + +QString ItemFactory::createFormattedText(LogLine* line) { + + //Special case if this is a ParentLogLine (Group By feature) + if (line->isParentLogLine()) + return(createParentFormattedText(line)); + + + if (line->getType() == Globals::cronMode->id) + return(createCronFormattedText(line)); + + if (line->getType() == Globals::xorgMode->id) + return(createXorgFormattedText(line)); + + if (line->getType() == Globals::acpidMode->id) + return(createAcpidFormattedText(line)); + + if (line->getType() == Globals::cupsMode->id) + return(createCupsFormattedText(line)); + + if (line->getType() == Globals::cupsAccessMode->id) + return(createCupsAccessFormattedText(line)); + + if (line->getType() == Globals::apacheMode->id) + return(createApacheFormattedText(line)); + + if (line->getType() == Globals::apacheAccessMode->id) + return(createApacheAccessFormattedText(line)); + + if (line->getType() == Globals::sambaMode->id) + return(createSambaFormattedText(line)); + + //Returns the default formating + return(createDefaultFormattedText(line)); + +} + +QString ItemFactory::createToolTipText(LogLine* line) { + if (line->getType() == Globals::xorgMode->id) + return(createXorgToolTipText(line)); + else + return(createDefaultToolTipText(line)); + +} + +QString ItemFactory::createParentFormattedText(LogLine* line) { + QString result; + + ParentLogLine* parent=(ParentLogLine*) line; + + //All Group By cases are showed here + if (parent->getGroupBy()==GROUP_BY_LOG_LEVEL) { + result.append(i18n("
Group: %1
").arg(line->getLogLevel()->name)); + } + else if (parent->getGroupBy()==GROUP_BY_DAY) { + result.append(i18n("
Group: %1
").arg(line->getTime().date().toString())); + } + else if (parent->getGroupBy()==GROUP_BY_HOUR) { + QString string(i18n("%1, %2 hour").arg(line->getTime().date().toString(), line->getTime().time().toString("h"))); + result.append(i18n("
Group: %1
").arg(string)); + } + else if (parent->getGroupBy()==GROUP_BY_LOG_FILE) { + result.append(i18n("
Group: %1
").arg(line->getOriginalFile())); + } + else { + QStringList& list=line->getItemList(); + int index=ParentLogLine::getGroupedColumnIndex(parent->getColumns(), parent->getGroupByColumn()); + if (index<0 || index>=(int) list.size()) + result.append(i18n("
Group: none
")); + else + result.append(i18n("
Group: %1
").arg(list[index])); + } + + return(result); +} + + +QString ItemFactory::createCronFormattedText(LogLine* line) { + QString result; + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Hostname:"), items[0])); + result.append(labelMessageFormat(i18n("Process:"), items[1])); + result.append(labelMessageFormat(i18n("User:"), items[2])); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Original file:"), line->getOriginalFile())); + + result.append("
"); + + return(result); +} + +QString ItemFactory::createDefaultFormattedText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Hostname:"), items[0])); + result.append(labelMessageFormat(i18n("Process:"), items[1])); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Original file:"), line->getOriginalFile())); + + result.append("
"); + + return(result); +} + +QString ItemFactory::createAcpidFormattedText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Type:"), items[0])); + + result.append("
"); + + return(result); +} + +QString ItemFactory::createCupsFormattedText(LogLine* line) { + QString result; + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + + result.append("
"); + + return(result); +} + +QString ItemFactory::createCupsAccessFormattedText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Hostname:"), items[0])); + result.append(labelMessageFormat(i18n("Identification:"), items[1])); + result.append(labelMessageFormat(i18n("Username:"), items[2])); + result.append(labelMessageFormat(i18n("HTTP Response:"), items[3])); + result.append(labelMessageFormat(i18n("Bytes Sent:"), items[4])); + + result.append("
"); + + return(result); +} + + +QString ItemFactory::createApacheFormattedText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Client:"), items[0])); + + result.append("
"); + + return(result); +} + +QString ItemFactory::createApacheAccessFormattedText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Hostname:"), items[0])); + result.append(labelMessageFormat(i18n("Identification:"), items[1])); + result.append(labelMessageFormat(i18n("Username:"), items[2])); + result.append(labelMessageFormat(i18n("HTTP Response:"), items[3])); + result.append(labelMessageFormat(i18n("Bytes Sent:"), items[4])); + result.append(labelMessageFormat(i18n("Agent Identity:"), items[5])); + result.append(labelMessageFormat(i18n("HTTP Request:"), items[6])); + + result.append("
"); + + return(result); +} + + +QString ItemFactory::createSambaFormattedText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Source File:"), items[0])); + result.append(labelMessageFormat(i18n("Function:"), items[1])); + result.append(labelMessageFormat(i18n("Line:"), items[2])); + + result.append("
"); + + return(result); +} + + +QString ItemFactory::createXorgFormattedText(LogLine* line) { + //It uses the same formating than the Tooltip + return(createXorgToolTipText(line)); +} + +QString ItemFactory::createDefaultToolTipText(LogLine* line) { + QString result; + + result.append(""); + + result.append(labelMessageFormat(i18n("Date:"), line->getTime().toString(Qt::LocalDate))); + result.append(labelMessageFormat(i18n("Level:"), line->getLogLevel()->name)); + result.append(labelMessageFormat(i18n("Original file:"), line->getOriginalFile())); + + result.append("
"); + + return(result); +} + +QString ItemFactory::createXorgToolTipText(LogLine* line) { + QString result; + + QStringList& items=line->getItemList(); + + result.append(""); + + if (items[0].isEmpty()) + result.append(labelMessageFormat(i18n("Type:"), i18n("none"))); + else + result.append(labelMessageFormat(i18n("Type:"), items[0])); + + result.append(labelMessageFormat(i18n("Original file:"), line->getOriginalFile())); + + result.append("
"); + + return(result); +} + + + + +QString ItemFactory::labelMessageFormat(QString label, QString value) { + return ("" + label + "" + messageFormat(value) + ""); +} + +QString ItemFactory::messageFormat(QString& message) { + QString transformation(message); + transformation.replace(QRegExp("&"), "&"); + transformation.replace(QRegExp("<"), "<"); + transformation.replace(QRegExp(">"), ">"); + return(transformation); +} diff --git a/ksystemlog/src/itemFactory.h b/ksystemlog/src/itemFactory.h new file mode 100644 index 0000000..09cdf50 --- /dev/null +++ b/ksystemlog/src/itemFactory.h @@ -0,0 +1,87 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _ITEM_FACTORY_H_ +#define _ITEM_FACTORY_H_ + +#include +#include + +class LogLine; +class ParentLogLine; +class ChildLogLine; +class LogListItem; + +/** + * @author Nicolas Ternisien + */ +class ItemFactory { + + public: + static LogListItem* createLogListItem(QListView* view, LogLine* line); + + static QString createFormattedText(LogLine* line); + static QString createToolTipText(LogLine* line); + + //Global useful methods + static QString messageFormat(QString& message); + static QString labelMessageFormat(QString label, QString value); + + private: + static LogListItem* createItem(QListView* view, LogLine* line); + + static LogListItem* createParentItem(QListView* view, ParentLogLine* line); + + static LogListItem* createChildItem(QListView* view, ChildLogLine* line); + + static LogListItem* createBasicItem(QListView* view, LogLine* line); + + static void initXorgItem(LogListItem* item); + static void initDefaultItem(LogListItem* item); + + static void initItem(LogListItem* item); + + + + + + + static QString createXorgFormattedText(LogLine* line); + static QString createCronFormattedText(LogLine* line); + static QString createAcpidFormattedText(LogLine* line); + static QString createCupsFormattedText(LogLine* line); + static QString createCupsAccessFormattedText(LogLine* line); + + static QString createParentFormattedText(LogLine* line); + + static QString createDefaultFormattedText(LogLine* line); + + static QString createApacheFormattedText(LogLine* line); + static QString createApacheAccessFormattedText(LogLine* line); + static QString createSambaFormattedText(LogLine* line); + + static QString createXorgToolTipText(LogLine* line); + + static QString createDefaultToolTipText(LogLine* line); + + +}; + +#endif diff --git a/ksystemlog/src/kernel/Makefile.am b/ksystemlog/src/kernel/Makefile.am new file mode 100644 index 0000000..7ee39f5 --- /dev/null +++ b/ksystemlog/src/kernel/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_kernel.la +libksystemlog_kernel_la_LDFLAGS = $(all_libraries) +libksystemlog_kernel_la_SOURCES = kernelOptions.cpp +noinst_HEADERS = kernelOptions.h diff --git a/ksystemlog/src/kernel/kernelOptions.cpp b/ksystemlog/src/kernel/kernelOptions.cpp new file mode 100644 index 0000000..61780c8 --- /dev/null +++ b/ksystemlog/src/kernel/kernelOptions.cpp @@ -0,0 +1,101 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +//Project includes +#include "kernelOptions.h" +#include "ksystemlogConfig.h" + +KernelOptions::KernelOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display Kernel logs. This list also determines the order in which the files are read.

"); + fileList=new SpecificFileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +KernelOptions::~KernelOptions() { + +} + +bool KernelOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void KernelOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void KernelOptions::saveConfig() { + kdDebug() << "Saving config from Kernel Options..." << endl; + + QStringList stringList; + QValueList valueList; + + fileList->saveConfig(stringList, valueList); + + KSystemLogConfig::setKernelPaths(stringList); + KSystemLogConfig::setKernelLevels(valueList); +} + +void KernelOptions::readConfig() { + QStringList stringList=KSystemLogConfig::kernelPaths(); + QValueList valueList=KSystemLogConfig::kernelLevels(); + + fileList->readConfig(stringList, valueList); +} + + +#include "kernelOptions.moc" diff --git a/ksystemlog/src/kernel/kernelOptions.h b/ksystemlog/src/kernel/kernelOptions.h new file mode 100644 index 0000000..b0f7ea6 --- /dev/null +++ b/ksystemlog/src/kernel/kernelOptions.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _KERNEL_OPTIONS_H_ +#define _KERNEL_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "specificFileList.h" +#include "logLevel.h" + + +class KernelOptions : public QWidget { + Q_OBJECT + public: + KernelOptions(QWidget *parent = 0); + ~KernelOptions(); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + + SpecificFileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/ksystemlog.cpp b/ksystemlog/src/ksystemlog.cpp new file mode 100644 index 0000000..6090748 --- /dev/null +++ b/ksystemlog/src/ksystemlog.cpp @@ -0,0 +1,1480 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +//Qt includes +#include + +#include +#include +#include +#include +#include + +#include + + +//KDE includes +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include + +#include + +#include + +//For compatibility with old versions of KDE +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +//Project includes +#include "ksystemlog.h" + +#include "ksystemlogConfig.h" + +#include "options.h" + +#include "loggerDialog.h" + +#include "logListItem.h" +#include "logLevel.h" +#include "logFile.h" + +#include "readerFactory.h" + +KSystemLog::KSystemLog() : + KMainWindow(0, "ksystemlog"), + printer(NULL), + detailDialog(NULL), + loadingDialog(NULL), + tabs(NULL) + { + + //Accept Drag and Drop + setAcceptDrops(true); + + //Initialize the Status Bar + setupStatusBar(); + + //Initialize the find manager + findManager=new FindManager(this, "find_manager"); + + //Setup existing log levels + Globals::setupLogLevels(); + + //Setup existing log modes + Globals::setupLogModes(); + + //Setup the Actions + setupActions(); + + //Create the GUI from XML configuration + createGUI(); + + //Setup the main tab bar + setupTabBar(); + + //TabBar widget becomes the central place of the KMainWindow + setCentralWidget(tabs); + + //Setup the Progress Bar Dialog + setupProgressDialog(); + + //Apply the saved mainwindow settings, if any, and ask the mainwindow + //to automatically save settings if changed: window size, toolbar + //position, icon size, etc. + setAutoSaveSettings(); + + //TODO Try to find an improvement of this _big_ hack + //Set its default size, the first time KSystemLog is loaded + if (!initialGeometrySet()) + resize(600,450); + + //Show before reading the config because users can think that KSystemLog + //have not been launched if it takes too long time to start. + show(); + + // Apply the create the main window and ask the mainwindow to + // automatically save settings if changed: window size, toolbar + // position, icon size, etc. Also to add actions for the statusbar + // toolbar, and keybindings if necessary. + setupGUI(); + + //Read the configuration and display each tab saved + readConfig(); + +} + +void KSystemLog::setupTabBar() { + tabs=new KTabWidget(this, "tabs"); + + connect(tabs, SIGNAL(currentChanged(QWidget*)), this, SLOT(currentTabChanged(QWidget*))); + + QPushButton* tabNewTabButton=new QPushButton(SmallIcon("tab_new"), "", tabs); + connect(tabNewTabButton, SIGNAL(clicked()), this, SLOT(newTab())); + + QToolTip::add(tabNewTabButton, i18n("Create a new tab")); + QWhatsThis::add(tabNewTabButton, i18n("Creates a new tab which can display another log.")); + + QPushButton* tabCloseTabButton=new QPushButton(SmallIcon("tab_remove"), "", tabs); + connect(tabCloseTabButton, SIGNAL(clicked()), this, SLOT(closeTab())); + + QToolTip::add(tabCloseTabButton, i18n("Close the current tab")); + QWhatsThis::add(tabCloseTabButton, i18n("Closes the current tab.")); + + tabs->setCornerWidget(tabNewTabButton, Qt::TopLeft); + tabs->setCornerWidget(tabCloseTabButton, Qt::TopRight); + +} + +KSystemLog::~KSystemLog() { + //Save config here until a better solution is found + saveConfig(); + + if (detailDialog!=NULL) + delete detailDialog; + + if (loadingDialog!=NULL) + delete loadingDialog; + + if (slotLogAction!=NULL) + delete slotLogAction; + +} + + + +LogManager* KSystemLog::activeLogManager() { + if (tabs==NULL) { + kdDebug() << "Call to tabs widget which is not initialized" << endl; + return(NULL); + } + + View* currentView=static_cast (tabs->currentPage()); + + QPtrListIterator it(logManagers); + + LogManager* manager=it.current(); + while(manager!=NULL) { + + if (manager->getView()==currentView) { + return(manager); + } + + ++it; + manager=it.current(); + } + + + //Normally it's an impossible case (I hope... ;-) + kdDebug() << "No active log manager found" << endl; + return(NULL); +} + + +void KSystemLog::currentTabChanged(QWidget* /*widget*/) { + kdDebug() << "Tab has changed" << endl; + + LogManager* currentManager=activeLogManager(); + + //If the tab changed, we suppose that the selection changes too + slotSelectionChanged(); + + //Update the status bar + updateStatusBar(); + + //Update the Group By menu + updateGroupBy(); + + //Management of Resume and Pause actions + if (currentManager->isParsingPaused()) { + pauseParsingAction->setEnabled(false); + resumeParsingAction->setEnabled(true); + } + else { + pauseParsingAction->setEnabled(true); + resumeParsingAction->setEnabled(false); + } + + + //Change the title of the window + changeCaption(currentManager->getLogMode()->name); + + //If the tab name has been change, regive it its old name + changeTab(currentManager->getView(), currentManager->getLogMode()->name); + + //Modify the menu button to help the user know what is the currently log mode + //setModeToAction(currentManager->getLogMode(), true); + KToggleAction* action=getCorrespondingLogAction(currentManager->getLogMode()); + if (action!=NULL) + action->setChecked(true); + + setCurrentLogManager(currentManager); + + + if (detailDialog!=NULL) { + detailDialog->setView(currentManager->getView()); + } + +} + + +void KSystemLog::setupStatusBar() { + statusBar()->insertItem("", STATUS_BAR_LINE_COUNT, 0, true); + statusBar()->insertItem("", STATUS_BAR_LAST_MODIFICATION, 0, true); + + //Displays the Status Bar + statusBar()->show(); +} + +void KSystemLog::setupActions() { + + KStdAction::open(this, SLOT(fileOpen()), actionCollection(), "file_open"); + actionCollection()->action("file_open")->setToolTip(i18n("Open a file in KSystemLog")); + actionCollection()->action("file_open")->setWhatsThis(i18n("Opens a file in KSystemLog and displays its content in the current tab.")); + + //TODO Not used for the moment + //KStdAction::print(this, SLOT(filePrint()), actionCollection()); + + saveAction=KStdAction::saveAs(this, NULL, actionCollection(), "file_save"); + //TODO Retrieve the system's shortcut of the save action (and not Save as...) + saveAction->setShortcut(CTRL+Key_S); + saveAction->setToolTip(i18n("Save the selection to a file")); + saveAction->setWhatsThis(i18n("Saves the selection to a file. This action is useful if you want to create an attachment or a backup of a particular log.")); + saveAction->setEnabled(false); + + KStdAction::quit(this, SLOT(quit()), actionCollection(), "file_quit"); + actionCollection()->action("file_quit")->setToolTip(i18n("Quit KSystemLog")); + actionCollection()->action("file_quit")->setWhatsThis(i18n("Quits KSystemLog.")); + + copyAction=KStdAction::copy(this, NULL, actionCollection(), "copy"); + copyAction->setToolTip(i18n("Copy the selection to the clipboard")); + copyAction->setWhatsThis(i18n("Copies the selection to the clipboard. This action is useful if you want to paste the selection in a chat or an email.")); + copyAction->setEnabled(false); + + expandAllAction=new KAction(i18n("Ex&pand All"), NULL, CTRL+Key_X, this, NULL, actionCollection(), "expand_all" ); + expandAllAction->setToolTip(i18n("Expand all categories")); + expandAllAction->setWhatsThis(i18n("This action opens all main categories. This is enabled only if an option has been selected in the Group By menu.")); + expandAllAction->setEnabled(false); + + collapseAllAction=new KAction(i18n("Col&lapse All"), NULL, CTRL+Key_L, this, NULL, actionCollection(), "collapse_all" ); + collapseAllAction->setToolTip(i18n("Collapse all categories")); + collapseAllAction->setWhatsThis(i18n("This action closes all main categories. This is enabled only if an option has been selected in the Group By menu.")); + collapseAllAction->setEnabled(false); + + sendMailAction=new KAction(i18n("&Email Selection..."), "mail_generic", CTRL+Key_M, this, NULL, actionCollection(), "send_mail" ); + sendMailAction->setToolTip(i18n("Send the selection by mail")); + sendMailAction->setWhatsThis(i18n("Sends the selection by mail. Simply select the important lines and click on this menu entry to send the selection to a friend or a mailing list.")); + sendMailAction->setEnabled(false); + + logMessageAction=new KAction(i18n("&Send Message..."), "filenew", CTRL+Key_L, this, SLOT(slotLogMessage()), actionCollection(), "log_message" ); + logMessageAction->setToolTip(i18n("Send a message to the log system")); + logMessageAction->setWhatsThis(i18n("This action will open a dialog which lets you send a message to the log system.")); + + KStdAction::selectAll(this, SLOT(slotSelectAll()), actionCollection(), "select_all"); + actionCollection()->action("select_all")->setToolTip(i18n("Select all lines of the current log")); + actionCollection()->action("select_all")->setWhatsThis(i18n("Selects all lines of the current log. This action is useful if you want, for example, to save all the content of the current log in a file.")); + + KStdAction::find(findManager, SLOT(slotFind()), actionCollection(), "find"); + KStdAction::findNext(findManager, SLOT(slotFindNext()), actionCollection(), "find_next"); + + //TODO Find a solution to display at the right place this action (see Akregator interface) + filterBarAction=new KToggleAction(i18n("Show &Filter Bar"), QString::null, 0, this, SLOT(slotToggleFilterBar()), actionCollection(), "toggle_filter_bar"); +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + filterBarAction->setEnabled(true); +#else + filterBarAction->setEnabled(false); +#endif + + KStdAction::preferences(this, SLOT(slotOptions()), actionCollection()); + + newTabAction=new KAction(i18n("&New Tab"), "tab_new", CTRL+Key_T, this, SLOT(newTab()), actionCollection(), "new_tab" ); + newTabAction->setToolTip(i18n("Create a new tab")); + newTabAction->setWhatsThis(i18n("Creates a new tab which can display another log.")); + + closeTabAction=new KAction(i18n("&Close Tab"), "tab_remove", CTRL+Key_W, this, SLOT(closeTab()), actionCollection(), "close_tab" ); + closeTabAction->setToolTip(i18n("Close the current tab")); + closeTabAction->setWhatsThis(i18n("Closes the current tab.")); + + duplicateTabAction=new KAction(i18n("&Duplicate Tab"), "tab_duplicate", SHIFT+CTRL+Key_N, this, SLOT(duplicateTab()), actionCollection(), "duplicate_tab" ); + duplicateTabAction->setToolTip(i18n("Duplicate the current tab")); + duplicateTabAction->setWhatsThis(i18n("Duplicates the current tab.")); + + moveTabLeftAction=new KAction(i18n("Move Tab &Left"), "1leftarrow", SHIFT+CTRL+Key_Left, this, SLOT(moveTabLeft()), actionCollection(), "move_tab_left" ); + moveTabLeftAction->setToolTip(i18n("Move the current tab to the left")); + moveTabLeftAction->setWhatsThis(i18n("Moves the current tab to the left.")); + + moveTabRightAction=new KAction(i18n("Move Tab &Right"), "1rightarrow", SHIFT+CTRL+Key_Right, this, SLOT(moveTabRight()), actionCollection(), "move_tab_right" ); + moveTabRightAction->setToolTip(i18n("Move the current tab to the right")); + moveTabRightAction->setWhatsThis(i18n("Moves the current tab to the right.")); + + + reloadAction=new KAction(i18n("&Reload"), "reload", Key_F5, this, SLOT(reloadCurrent()), actionCollection(), "reload" ); + reloadAction->setToolTip(i18n("Reload the current log")); + reloadAction->setWhatsThis(i18n("Reloads the current log, if you want to be sure that the view is correctly updated.")); + + resumeParsingAction=new KAction(i18n("Resu&me Parsing"), "player_play", CTRL+Key_M, this, SLOT(resumeParsing()), actionCollection(), "resume_parsing"); + resumeParsingAction->setToolTip(i18n("Resume the watching of the current log")); + resumeParsingAction->setWhatsThis(i18n("Resumes the watching of the current log. This action is only available when the user has already paused the reading.")); + resumeParsingAction->setEnabled(true); + + pauseParsingAction=new KAction(i18n("S&top Parsing"), "player_stop", CTRL+Key_P, this, SLOT(pauseParsing()), actionCollection(), "pause_parsing"); + pauseParsingAction->setToolTip(i18n("Pause the watching of the current log")); + pauseParsingAction->setWhatsThis(i18n("Pauses the watching of the current log. This action is particularly useful when the system is writing too many lines to log files, causing KSystemLog to reload too frequently.")); + + detailAction=new KAction(i18n("&Details"), "viewmag", ALT+Key_Return, this, SLOT(slotDetails()), actionCollection(), "details"); + detailAction->setToolTip(i18n("Display details on the currently selected line")); + detailAction->setWhatsThis(i18n("Displays a dialog box which contains details on the currently selected line. You are able to navigate through the logs from this dialog box with the Previous / Next buttons.")); + detailAction->setEnabled(false); + + tooltipEnabledAction=new KToggleAction(i18n("&Enable Detailed Tooltips"), 0, actionCollection(), "enable_tooltip"); + tooltipEnabledAction->setToolTip(i18n("Disable/Enable the tooltips on the current view")); + tooltipEnabledAction->setWhatsThis(i18n("Disables/Enables the tooltips displayed when the cursor hovers a log line.")); + + + connect(tooltipEnabledAction, SIGNAL(toggled(bool)), this, SLOT(slotTooltipEnabled(bool))); + + newLinesDisplayedAction=new KToggleAction(i18n("&Display New Lines"), 0, actionCollection(), "display_new_line"); + newLinesDisplayedAction->setToolTip(i18n("Display or not new lines if the log changes")); + newLinesDisplayedAction->setWhatsThis(i18n("Displays or not the new lines if the log changes. This option is useful when you want to see an old log lines and that KSystemLog often refreshes the current view.")); + + connect(newLinesDisplayedAction, SIGNAL(toggled(bool)), this, SLOT(slotNewLinesDisplayed(bool))); + + setupGroupBy(); + + setupLogActions(); + + +} + +void KSystemLog::setupLogActions() { + + //Define a macro allowing the connection of the signal from log action to the slotLogAction object + #if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) + #define CONNECTED_SLOT(action) connect(action, SIGNAL(activated(KAction::ActivationReason, Qt::ButtonState)), slotLogAction, SLOT(slotLogAction(KAction::ActivationReason, Qt::ButtonState))); + #else + #define CONNECTED_SLOT(action) connect(action, SIGNAL(activated()), slotLogAction, SLOT(slotLogAction())); + #endif + + + //Construct the slotLogAction object + slotLogAction=new SlotLogAction(this); + + QString exclusiveGroup="LogActions"; + + //System Log Action + KToggleAction* systemAction=new KToggleAction(i18n("S&ystem Log"), SYSTEM_MODE_ICON, 0, NULL, NULL, actionCollection(), "system_log" ); + systemAction->setToolTip(i18n("Display the system log.")); + systemAction->setWhatsThis(i18n("Displays the system log in the current tab. This log is generally used by non-specialized processes (like \"sudo\" or \"fsck\" commands)")); + systemAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[systemAction]=Globals::systemMode; + CONNECTED_SLOT(systemAction) + + //Kernel Log Action + KToggleAction* kernelAction=new KToggleAction(i18n("&Kernel Log"), KERNEL_MODE_ICON, 0, NULL, NULL, actionCollection(), "kernel_log" ); + kernelAction->setToolTip(i18n("Display the kernel log.")); + kernelAction->setWhatsThis(i18n("Displays the kernel log in the current tab. This log is only useful for users who want to know why the Kernel does not detect their hardware or what is the cause of the last kernel panic/oops.")); + kernelAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[kernelAction]=Globals::kernelMode; + CONNECTED_SLOT(kernelAction) + + //Boot Log Action + KToggleAction* bootAction=new KToggleAction(i18n("&Boot Log"), BOOT_MODE_ICON, 0, NULL, NULL, actionCollection(), "boot_log" ); + bootAction->setToolTip(i18n("Display the boot log.")); + bootAction->setWhatsThis(i18n("Displays the boot log in the current tab. This log is useful if you want to verify if all startup services have been correctly started.")); + bootAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[bootAction]=Globals::bootMode; + CONNECTED_SLOT(bootAction) + + //Authentication Log Action + KToggleAction* authenticationAction=new KToggleAction(i18n("A&uthentication Log"), AUTHENTICATION_MODE_ICON, 0, NULL, NULL, actionCollection(), "authentication_log" ); + authenticationAction->setToolTip(i18n("Display the authentication log.")); + authenticationAction->setWhatsThis(i18n("Displays the authentication log in the current tab. This log displays all log in made by each user of the system, and can help you to know if someone tried to crack your system.")); + authenticationAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[authenticationAction]=Globals::authenticationMode; + CONNECTED_SLOT(authenticationAction) + + //Daemon Log Action + KToggleAction* daemonAction=new KToggleAction(i18n("&Daemons Log"), DAEMON_MODE_ICON, 0, NULL, NULL, actionCollection(), "daemon_log" ); + daemonAction->setToolTip(i18n("Display the daemons log.")); + daemonAction->setWhatsThis(i18n("Displays the daemons log in the current tab. The daemons are all processes launched in the background of the system. See this log if you want to know what it occurs in the background of your system.")); + daemonAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[daemonAction]=Globals::daemonMode; + CONNECTED_SLOT(daemonAction) + + //Cron Log Action + KToggleAction* cronAction=new KToggleAction(i18n("&Planned Tasks Log"), CRON_MODE_ICON, 0, NULL, NULL, actionCollection(), "cron_log" ); + cronAction->setToolTip(i18n("Display the planned tasks log (or Cron log).")); + cronAction->setWhatsThis(i18n("Displays the planned tasks log in the current tab. Cron process is a program in charged of launching planned tasks on your system, like security checks, or auto-restarting of some services. Use this menu to see the last-launched processes.")); + cronAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[cronAction]=Globals::cronMode; + CONNECTED_SLOT(cronAction) + + //Xorg Log Action + KToggleAction* xorgAction=new KToggleAction(i18n("&X.org Log"), XORG_MODE_ICON, 0, NULL, NULL, actionCollection(), "xorg_log" ); + xorgAction->setToolTip(i18n("Display the X.org log.")); + xorgAction->setWhatsThis(i18n("Displays the X.org log in the current tab. X.org is the service which displays on screen your desktop and manage your graphical hardware. See this log if you want to know why you do not have 3D accelerations or why your input device is not recognized.")); + xorgAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[xorgAction]=Globals::xorgMode; + CONNECTED_SLOT(xorgAction) + + //ACPId Log Action + KToggleAction* acpidAction=new KToggleAction(i18n("&ACPI Log"), ACPID_MODE_ICON, 0, NULL, NULL, actionCollection(), "acpid_log" ); + acpidAction->setToolTip(i18n("Display the ACPI log.")); + acpidAction->setWhatsThis(i18n("Displays the ACPI log in the current tab. ACPI is used to manage the hardware components of your computer, like notebook batteries, reset buttons...")); + acpidAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[acpidAction]=Globals::acpidMode; + CONNECTED_SLOT(acpidAction) + + //Cups Log Action + KToggleAction* cupsAction=new KToggleAction(i18n("&Cups Log"), CUPS_MODE_ICON, 0, NULL, NULL, actionCollection(), "cups_log" ); + cupsAction->setToolTip(i18n("Display the Cups log.")); + cupsAction->setWhatsThis(i18n("Displays the CUPS log in the current tab. CUPS is the program which manage printing on your computer.")); + cupsAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[cupsAction]=Globals::cupsMode; + CONNECTED_SLOT(cupsAction) + + //Cups Access Log Action + KToggleAction* cupsAccessAction=new KToggleAction(i18n("&Cups Web Log"), CUPS_ACCESS_MODE_ICON, 0, NULL, NULL, actionCollection(), "cups_access_log" ); + cupsAccessAction->setToolTip(i18n("Display the CUPS Web Server Access log.")); + cupsAccessAction->setWhatsThis(i18n("Displays the CUPS Web Server Access log in the current tab. CUPS is the program which manage printing on your computer. This log saves all requests performed to the CUPS embedded web server (default: http://localhost:631).")); + cupsAccessAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[cupsAccessAction]=Globals::cupsAccessMode; + CONNECTED_SLOT(cupsAccessAction) + + + //Apache Log Action + KToggleAction* apacheAction=new KToggleAction(i18n("&Apache log"), APACHE_MODE_ICON, 0, NULL, NULL, actionCollection(), "apache_log" ); + apacheAction->setToolTip(i18n("Display the Apache log.")); + apacheAction->setWhatsThis(i18n("Displays the Apache log in the current tab. Apache is the main used Web server in the world.")); + apacheAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[apacheAction]=Globals::apacheMode; + CONNECTED_SLOT(apacheAction) + + //Apache Access Log Action + KToggleAction* apacheAccessAction=new KToggleAction(i18n("&Apache Web log"), APACHE_ACCESS_MODE_ICON, 0, NULL, NULL, actionCollection(), "apache_access_log" ); + apacheAccessAction->setToolTip(i18n("Display the Apache Access log.")); + apacheAccessAction->setWhatsThis(i18n("Displays the Apache Access log in the current tab. CUPS is the program which manage printing on your computer. This log saves all requests performed by the Apache web server.")); + apacheAccessAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[apacheAccessAction]=Globals::apacheAccessMode; + CONNECTED_SLOT(apacheAccessAction) + + //Postfix Log Action + KToggleAction* postfixAction=new KToggleAction(i18n("&Postfix Log"), POSTFIX_MODE_ICON, 0, NULL, NULL, actionCollection(), "postfix_log" ); + postfixAction->setToolTip(i18n("Display the Postfix log.")); + postfixAction->setWhatsThis(i18n("Displays the Postfix log in the current tab. Postfix is the most known and used mail server in the Linux world.")); + postfixAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[postfixAction]=Globals::postfixMode; + CONNECTED_SLOT(postfixAction) + + //Samba Log Action + KToggleAction* sambaAction=new KToggleAction(i18n("&Samba Log"), SAMBA_MODE_ICON, 0, NULL, NULL, actionCollection(), "samba_log" ); + sambaAction->setToolTip(i18n("Display the Samba log.")); + sambaAction->setWhatsThis(i18n("Displays the Samba log in the current tab. Samba is the file sharing server which interacts with Microsoft Windows network.")); + sambaAction->setExclusiveGroup(exclusiveGroup); + mapActionLogModes[sambaAction]=Globals::sambaMode; + CONNECTED_SLOT(sambaAction) + +} + + +void KSystemLog::reloadCurrent() { + LogManager* manager=activeLogManager(); + + if (manager!=NULL) { + manager->reload(); + } + +} + + +void KSystemLog::reloadAll() { + QPtrListIterator it(logManagers); + + //Inform the Loading Dialog on how many Log Managers we have to load + loadingDialog->setTabCount(logManagers.count()); + + int index=1; + + LogMode* mode; + + LogManager* current=it.current(); + while(current!=NULL) { + + //Inform the Loading Dialog that there is a new loading + loadingDialog->setCurrentTab(index); + + //TODO Experimental Code... The manager is now using the Log mode passed in parameter + mode=current->getLogMode(); + + //The no log mode does not have to be reloaded + if (mode==Globals::noMode) { + ++it; + current=it.current(); + index++; + continue; + } + + + if (mode!=Globals::openingMode) + current->initialize(mode); + + current->reload(); + + ++it; + current=it.current(); + index++; + } + + //Reposition the count total to its default value + loadingDialog->setTabCount(0); + +} + +void KSystemLog::slotSelectionChanged() { + //kdDebug() << "KSystemLog selectionChanged()" << endl; + + LogListItem* item=activeLogManager()->getView()->getFirstSelectedItem(); + + bool selection; + + //No item selected + if (item==NULL) { + selection=false; + } + else { + selection=true; + } + + copyAction->setEnabled(selection); + saveAction->setEnabled(selection); + detailAction->setEnabled(selection); + sendMailAction->setEnabled(selection); + + if (detailDialog!=NULL) { + detailDialog->selectionChanged(); + } +} + +void KSystemLog::moveTabLeft() { + LogManager* currentManager=activeLogManager(); + + int position=tabs->indexOf(currentManager->getView()); + + if (position<=0) + return; + + logManagers.remove(position); + + logManagers.insert(position-1, currentManager); + + tabs->moveTab(position, position-1); + +} + +void KSystemLog::moveTabRight() { + LogManager* currentManager=activeLogManager(); + + int position=tabs->indexOf(currentManager->getView()); + + if (position>=tabs->count()-1) + return; + + logManagers.remove(position); + + logManagers.insert(position+1, currentManager); + + tabs->moveTab(position, position+1); + +} + + +LogManager* KSystemLog::duplicateTab() { + LogManager* currentManager=activeLogManager(); + + LogManager* newManager=newTab(); + + LogMode* mode=currentManager->getLogMode(); + if (mode==Globals::openingMode) { + //We retrieve the path of the URL of the first file of the file list of the current manager ;-) + ReaderFactory::lastOpenedURL=currentManager->getLogFiles().first()->url; + + this->load(mode, newManager); + } + else { + this->load(mode, newManager); + } + + //Returns the newly created LogManager + return(newManager); +} + + +LogManager* KSystemLog::newTab() { + LogManager* manager=new LogManager(this, loadingDialog); + + //Signals from LogManager to Main Class + connect(manager, SIGNAL(changeTitle(View*, const QString&)), this, SLOT(changeTab(View*, const QString& ))); + connect(manager, SIGNAL(changeTitle(View*, const QIconSet&, const QString&)), this, SLOT(changeTab(View*, const QIconSet&, const QString&))); + connect(manager, SIGNAL(changeCaption(const QString&)), this, SLOT(setCaption(const QString&))); + connect(manager, SIGNAL(changeStatusbar(const QString&)), this, SLOT(changeStatusbar(const QString&))); + connect(manager, SIGNAL(logUpdated(int)), this, SLOT(logUpdated(int))); + connect(manager, SIGNAL(reloaded()), this, SLOT(logManagerReloaded())); + connect(manager, SIGNAL(GUIUpdated()), this, SLOT(updateGUI())); + connect(manager, SIGNAL(detailsCalled()), this, SLOT(slotDetails())); + connect(manager, SIGNAL(selectionChanged()), this, SLOT(slotSelectionChanged())); + + //Signals from Main Actions to LogManager + connect(expandAllAction, SIGNAL(activated()), manager, SLOT(slotExpandAll())); + connect(collapseAllAction, SIGNAL(activated()), manager, SLOT(slotCollapseAll())); + connect(saveAction, SIGNAL(activated()), manager, SLOT(slotFileSave())); + connect(copyAction, SIGNAL(activated()), manager, SLOT(slotCopyToClipboard())); + connect(sendMailAction, SIGNAL(activated()), manager, SLOT(slotSendMail())); + + logManagers.append(manager); + + tabs->insertTab(manager->getView(), SmallIcon(NO_MODE_ICON), i18n("No Log")); + +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) + if (tabs->count()>1) { + tabs->setTabBarHidden(false); + } + else { + tabs->setTabBarHidden(true); + } +#endif + + tabs->setCurrentPage(tabs->count()-1); + + //Correctly initialize the Status Bar + updateStatusBar(); + + //Returns the newly created LogManager + return(manager); +} + +void KSystemLog::changeTab(View* view, const QString& label) { + tabs->changeTab(view, label); +} + +void KSystemLog::changeTab(View* view, const QIconSet& icon, const QString& label) { + tabs->changeTab(view, icon, label); +} + +int KSystemLog::getIndex(LogManager* manager) { + + QPtrListIterator it(logManagers); + + LogManager* temp=it.current(); + int pos=0; + while(temp!=NULL) { + + if (temp==manager) { + return(pos); + } + + ++pos; + ++it; + temp=it.current(); + } + + //Should never happen + kdDebug() << "Log manager not found in the list" << endl; + return(-1); +} + + +void KSystemLog::setCurrentLogManager(LogManager* currentManager) { + currentManager->setCurrent(true); + + QPtrListIterator it(logManagers); + + LogManager* manager=it.current(); + while(manager!=NULL) { + if (manager!=currentManager) { + manager->setCurrent(false); + } + + ++it; + manager=it.current(); + } + + +} + +void KSystemLog::closeTab() { + if (tabs->count()==1) + return; + + LogManager* currentManager=activeLogManager(); + + tabs->removePage(currentManager->getView()); + + logManagers.remove(currentManager); + + this->setCurrentLogManager(logManagers.last()); + + //TODO Delete the current Manager correctly ! (this crash KSystemLog) + //TODO Do correctly the disconnection of signal (disconnect(... ...)) before deleting the object + //currentManager + //delete currentManager; + + + /* + //TODO Strange result : (mail this to KDE Developer) + if (tabs->count()==2) { + tabs->removePage(currentView); + + View* currentView=activeView(); + tabs->removePage(currentView); + } + else { + tabs->removePage(currentView); + } + */ + +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) + if (tabs->count()==1) { + tabs->setTabBarHidden(true); + } +#endif + +} + + +void KSystemLog::quit() { + saveConfig(); + + kapp->quit(); +} + +void KSystemLog::slotToggleFilterBar() { + + //Update the configuration + KSystemLogConfig::setToggleFilterBar(filterBarAction->isChecked()); + + //And call an updating method on each Log Manager + QPtrListIterator it(logManagers); + + LogManager* current=it.current(); + while (current!=NULL) { + + current->toggleFilterBar(); + + ++it; + current=it.current(); + } + + +} + +void KSystemLog::slotDetails() { + LogListItem* item=activeLogManager()->getView()->getFirstSelectedItem(); + + //If no item are selected, we don't open the dialog + if (item==NULL) + return; + + //If the dialog has not been created, we create it + if (detailDialog==NULL) { + detailDialog=new DetailDialog(activeLogManager()->getView(), this, "detail_dialog"); + connect(activeLogManager()->getView()->getLogList(), SIGNAL(selectionChanged()), detailDialog, SLOT(selectionChanged())); + //connect(activeLogManager()->getView()->getLogList(), SIGNAL(triggerUpdate()), detailDialog, SLOT(selectionChanged())); + } + + detailDialog->show(); + +} + +void KSystemLog::slotSelectAll() { + activeLogManager()->getView()->getLogList()->selectAll(true); +} + +void KSystemLog::slotTooltipEnabled(bool enabled) { + KSystemLogConfig::setTooltipEnabled(enabled); + + QPtrListIterator it(logManagers); + while(it.current()!=NULL) { + (it.current())->setTooltipEnabled(enabled); + ++it; + } + +} + +void KSystemLog::slotNewLinesDisplayed(bool displayed) { + KSystemLogConfig::setNewLinesDisplayed(displayed); + + QPtrListIterator it(logManagers); + while(it.current()!=NULL) { + (it.current())->setNewLinesDisplayed(displayed); + ++it; + } + + +} + + +void KSystemLog::logUpdated(int /*lines*/) { + kdDebug() << "KSystemLog logUpdated()" << endl; + + updateStatusBar(); +} + +void KSystemLog::updateStatusBar() { + LogManager* currentManager=activeLogManager(); + + QString lineCount=i18n("1 log line.", "%n log lines.", currentManager->getView()->getItemCount()); + + statusBar()->changeItem(lineCount, STATUS_BAR_LINE_COUNT); + + QString time=i18n("Last updated: %1.").arg(currentManager->getLastUpdate().toString(Qt::LocalDate)); + + statusBar()->changeItem(time, STATUS_BAR_LAST_MODIFICATION); + + +} + + +void KSystemLog::pauseParsing() { + activeLogManager()->setParsingPaused(true); + + //Desactivate the pause action, and activate the resume one + resumeParsingAction->setEnabled(true); + pauseParsingAction->setEnabled(false); +} + +void KSystemLog::resumeParsing() { + activeLogManager()->setParsingPaused(false); + + //Desactivate the resume action, and activate the pause one + resumeParsingAction->setEnabled(false); + pauseParsingAction->setEnabled(true); +} + +//If no actions are selected, than all are deselected +void KSystemLog::deactiveLogActions() { + QValueList actions=mapActionLogModes.keys(); + + KToggleAction* action; + QValueList::iterator it; + for (it=actions.begin(); it!=actions.end(); ++it) { + action=*it; + + action->setChecked(false); + } + +} + +KToggleAction* KSystemLog::getCorrespondingLogAction(LogMode* mode) { + //Special case for no and opening mode + //TODO Maybe use a list for "special" log mode, and pre-test the parameter with it + if (mode==Globals::noMode || mode==Globals::openingMode) + return(NULL); + + QValueList keys=mapActionLogModes.keys(); + + QValueList::iterator it; + + KToggleAction* key; + + + for (it=keys.begin(); it!=keys.end(); ++it) { + key=*it; + + if (mapActionLogModes[key]==mode) + return(key); + } + + kdDebug() << "Strange : The corresponding log action does not exist" << endl; + return(NULL); +} + + +KToggleAction* KSystemLog::getLogAction(const char* name) { + return( static_cast (actionCollection()->action(name)) ); +} + +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) +void KSystemLog::logActionClicked(const QObject* sender, KAction::ActivationReason reason, Qt::ButtonState state) { +#else +void KSystemLog::logActionClicked(const QObject* sender) { +#endif + + KToggleAction* action=getLogAction(sender->name()); + + LogMode* mode=mapActionLogModes[action]; + + if (mode==NULL) { + kdDebug() << "Strange : The selected mode does not exist" << endl; + return; + } + + //TODO Be sure that the + is the right symbol to combine Qt Constants + //If the user uses the middle button OR left button + shift OR left button + control : = it opens the log in a new tab +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) + if (state==Qt::MidButton || (state==Qt::ControlButton+Qt::LeftButton) || (state==Qt::ShiftButton+Qt::LeftButton)) + newTab(); +#endif + + this->load(mode, activeLogManager()); + + //If don't know why it needs a false parameter (useful if user reclick on the same log mode than previous one) + action->setChecked(false); + + +} + +void KSystemLog::fileOpen() { + //Open a standard Filedialog + KURL openingFileName(KFileDialog::getOpenURL(QString::null, QString::null, this, i18n("Open Location"))); + kdDebug() << "Opening file : " << openingFileName.url() << endl; + + if (!openingFileName.isEmpty()) { + if (openingFileName.isValid()) { + //Deactive the old action mode + deactiveLogActions(); + + ReaderFactory::lastOpenedURL=openingFileName; + //Launch the actualizing + this->load(Globals::openingMode, activeLogManager()); + } + else { + QString message(i18n("Malformed URL. Unable to open this file.")); + KMessageBox::error(this, message, i18n("Unable to open this file."), KMessageBox::Notify); + } + } +} + +/** + * This slot is called whenever the File->Print menu is selected, + * the Print shortcut is pressed (usually CTRL+P) or the Print toolbar + * button is clicked + */ +void KSystemLog::filePrint() { + if (!printer) + printer=new KPrinter(); + + if (printer->setup(this)) { + // setup the printer. with Qt, you always "print" to a + // QPainter.. whether the output medium is a pixmap, a screen, + // or paper + QPainter p; + p.begin(printer); + + // we let our view do the actual printing + QPaintDeviceMetrics metrics(printer); + activeLogManager()->getView()->print(&p, metrics.height(), metrics.width()); + + // and send the result to the printer + p.end(); + } +} + + +void KSystemLog::slotOptions() { + kdDebug() << "Launching the option dialog box..." << endl; + + Options dialog(this, "config_dialog", false); + if (dialog.exec()) { + //Once the option dialog is close, we can make a simple reloading of each LogManager + reloadAll(); + } + +} + +void KSystemLog::slotLogMessage() { + kdDebug() << "Launching the Send message dialog box..." << endl; + + //TODO Create a pointer if this dialog begun non-modal + LoggerDialog dialog(this, "logger_dialog"); + dialog.exec(); + +} + + +void KSystemLog::changeStatusbar(const QString& text) { + //Display this text on the statusbar + statusBar()->message(text); +} + +void KSystemLog::changeCaption(const QString& text) { + //Display this text on the caption + setCaption(text); +} + +void KSystemLog::setupProgressDialog() { + //TODO Move this to the LoadingDialog constructor + loadingDialog=new LoadingDialog((QWidget*)this, "progress_dialog", true); + loadingDialog->setAllowCancel(false); + loadingDialog->setAutoClose(false); + loadingDialog->setMinimumDuration(500); + loadingDialog->progressBar()->setTotalSteps(100); + +} + + +void KSystemLog::readConfig() { + kdDebug() << "Reading KSystemLog configuration..." << endl; + + //Filter Bar is displayed depending on the config file + filterBarAction->setChecked(KSystemLogConfig::toggleFilterBar()); + + QValueList groupByTypes=KSystemLogConfig::groupBy(); + QValueList groupByColumns=KSystemLogConfig::groupByColumns(); + + QValueList::iterator itGroupBy=groupByTypes.begin(); + QValueList::iterator itGroupByColumn=groupByColumns.begin(); + + QValueList modes=KSystemLogConfig::logModes(); + QStringList fileList=KSystemLogConfig::openedURLs(); + + QValueList::iterator it; + QStringList::iterator itString=fileList.begin(); + + //Inform the Loading Dialog on how many Log Managers we have to load + loadingDialog->setTabCount(modes.count()); + loadingDialog->setFirstLoading(true); + + int index=1; + + int mode; + LogMode* logMode; + + for(it=modes.begin(); it!=modes.end(); ++it) { + mode=*it; + + logMode=Globals::logModes.at(mode); + //If the mode is not valid, we go to the next one + if (logMode==NULL) { + ++index; + ++itGroupByColumn; + ++itGroupBy; + continue; + } + + //The specific opening file special case + if (logMode==Globals::openingMode) { + //If this file is not valid, we go to the next mode + if (itString==fileList.end()) { + ++itString; + ++index; + ++itGroupByColumn; + ++itGroupBy; + continue; + } + + KURL file(*itString); + + //If this file is not valid, we go to the next mode + if (!file.isValid()) { + ++itString; + ++index; + ++itGroupByColumn; + ++itGroupBy; + continue; + } + + ReaderFactory::lastOpenedURL=file; + + ++itString; + } + + //Inform the Loading Dialog that there is a new loading + loadingDialog->setCurrentTab(index); + + //Create a new tab + LogManager* manager=newTab(); + + //If this file is not valid, we go to the next mode + if (logMode==Globals::noMode) { + ++index; + ++itGroupByColumn; + ++itGroupBy; + continue; + } + + //Test the value from config file + groupByType groupBy; + if (itGroupBy==groupByTypes.end()) + groupBy=NO_GROUP_BY; + else + groupBy=(groupByType) (*itGroupBy); + + //Test the value from config file + int groupByColumn; + if (itGroupByColumn==groupByColumns.end()) + groupByColumn=-1; + else + groupByColumn=*itGroupByColumn; + + //Retrieve the group by parameters from configuration, and set them to the new manager + manager->setGroupBy(groupBy, groupByColumn); + + //Open the matching mode to this tab + this->load(logMode, activeLogManager()); + + + ++index; + ++itGroupByColumn; + ++itGroupBy; + + } + + int selection=KSystemLogConfig::selectedTab(); + if (selection<0 || selection>=(int)logManagers.count()) + selection=0; + + kdDebug() << "Selection=" << selection << endl; + + tabs->setCurrentPage(selection); + + + //Initialize the displaying of new items from config file + bool value=KSystemLogConfig::newLinesDisplayed(); + newLinesDisplayedAction->setChecked(value); + slotNewLinesDisplayed(value); + + //Initialize the enabling of Tooltip from config file + value=KSystemLogConfig::tooltipEnabled(); + tooltipEnabledAction->setChecked(value); + slotTooltipEnabled(value); + + //Reposition the count total to its default value + loadingDialog->setTabCount(0); + loadingDialog->setFirstLoading(false); + +} + + +void KSystemLog::saveConfig() { + kdDebug() << "Last configuration saving..." << endl; + + QValueList intList; + QStringList stringList; + + QPtrListIterator it(logManagers); + + LogManager* manager=it.current(); + + while(manager!=NULL) { + //If it's an opening mode, then we save its open file + if (manager->getLogMode()==Globals::openingMode) { + //We retrieve the path of the URL of the first file of the file list of the current manager ;-) + QString file(manager->getLogFiles().first()->url.path()); + + stringList.push_back(file); + } + + intList.push_back(manager->getLogMode()->id); + + ++it; + manager=it.current(); + } + + //Save the log modes + KSystemLogConfig::setLogModes(intList); + + //Save the file list (even if it is empty) + KSystemLogConfig::setOpenedURLs(stringList); + + /** + * Save the group by type and the column + */ + QValueList groupByTypes; + QValueList groupByColumns; + + it=logManagers; + manager=it.current(); + while(manager!=NULL) { + groupByTypes.push_back(manager->getGroupBy()); + groupByColumns.push_back(manager->getGroupByColumn()); + + ++it; + manager=it.current(); + } + + //Save the group by types + KSystemLogConfig::setGroupBy(groupByTypes); + + //Save the sort columns + KSystemLogConfig::setGroupByColumns(groupByColumns); + + //Save the last selected tab + KSystemLogConfig::setSelectedTab(tabs->currentPageIndex()); + + it=logManagers; + manager=it.current(); + while(manager!=NULL) { + manager->saveConfig(); + + ++it; + manager=it.current(); + } + + //Write the config to the file + KSystemLogConfig::writeConfig(); +} + +void KSystemLog::logManagerReloaded() { + //Update the detail dialog (because for the first reading, the logUpdated() signal is not sent) + if (detailDialog!=NULL) { + detailDialog->selectionChanged(); + } + + //Update Group By, because the currentTabChanged() slot is not called the first time we load a reader + updateGroupBy(); + + updateStatusBar(); + + + kdDebug() << "Log List reloaded..." << endl; +} + +void KSystemLog::load(LogMode* logMode, LogManager* manager) { + loadingDialog->setFirstLoading(true); + + if (manager==NULL || logMode==NULL) { + kdDebug() << "Error while reloading a manager" << endl; + return; + } + + //The manager is now using the Log mode passed in parameter + manager->initialize(logMode); + + //Launch the reading + manager->reload(); + + loadingDialog->setFirstLoading(false); + +} + + +/** + * the 'config' object points to the session managed + * config file. anything you write here will be available + * later when this app is restored + */ +void KSystemLog::saveProperties(KConfig* /*config*/) { + kdDebug() << "saveProperties method." << endl; +} + +/** + * the 'config' object points to the session managed + * config file. this function is automatically called whenever + * the app is being restored. read in here whatever you wrote + * in 'saveProperties' + */ +void KSystemLog::readProperties(KConfig* /*config*/) { + kdDebug() << "readProperties method." << endl; +} + +void KSystemLog::dragEnterEvent(QDragEnterEvent *event) { + //Accept URI drops only + event->accept(KURLDrag::canDecode(event)); +} + +void KSystemLog::setupGroupBy() { + groupBy=new KActionMenu(i18n("Group By"), SmallIcon(GROUP_BY_ICON), this, "group_by"); + actionCollection()->insert(groupBy); + + KPopupMenu* menu=groupBy->popupMenu(); + + menu->insertItem(SmallIcon(NO_GROUP_BY_ICON), i18n("None"), NO_GROUP_BY); + + menu->insertSeparator(); + + menu->insertItem(SmallIcon(GROUP_BY_LOG_LEVEL_ICON), i18n("Log Level"), GROUP_BY_LOG_LEVEL); + + menu->insertItem(SmallIcon(GROUP_BY_DAY_ICON), i18n("Day"), GROUP_BY_DAY); + + menu->insertItem(SmallIcon(GROUP_BY_HOUR_ICON), i18n("Hour"), GROUP_BY_HOUR); + + menu->insertItem(SmallIcon(GROUP_BY_LOG_FILE_ICON), i18n("Log File"), GROUP_BY_LOG_FILE); + + menu->insertSeparator(); + + connect(menu, SIGNAL(activated(int)), this, SLOT(groupByChanged(int))); + +} + +void KSystemLog::groupByChanged(int group) { + KPopupMenu* menu=groupBy->popupMenu(); + + for(int i=0; i<(int) menu->count(); ++i) { + menu->setItemChecked(menu->idAt(i), false); + } + + menu->setItemChecked(group, true); + + LogManager* manager=activeLogManager(); + if (manager==NULL) + return; + + int column=group-DEFAULT_GROUP_BY_COUNT; + + //If column<0, it means that we use a standard group by + if (column<0) { + kdDebug() << "Using a normal Group By : " << (groupByType)group << endl; + manager->setGroupBy((groupByType)group); + } + //Else we use a specifical column + else { + kdDebug() << "Using a column Group By : column=" << column << endl; + manager->setGroupBy(GROUP_BY_COLUMN, column); + } + + reloadCurrent(); + +} + +void KSystemLog::updateGroupBy() { + + kdDebug() << "Updating group by..." << endl; + + KPopupMenu* menu=groupBy->popupMenu(); + + //First : removing old KAction + //The deleting begins at default groupby count + 2 separator (in the menu) + int deleting=DEFAULT_GROUP_BY_COUNT+2; + int end=menu->count(); + for (int i=deleting; iremoveItemAt(deleting); + } + + + LogManager* manager=activeLogManager(); + + if (manager==NULL) { + return; + } + else { + //Management of Expand and Collapse actions + if (manager->getGroupBy()!=NO_GROUP_BY) { + expandAllAction->setEnabled(true); + collapseAllAction->setEnabled(true); + } + else { + expandAllAction->setEnabled(false); + collapseAllAction->setEnabled(false); + } + + LogViewColumns* columns=manager->getColumns(); + if (columns==NULL) + return; + + int id=DEFAULT_GROUP_BY_COUNT; + LogViewColumns::Iterator it; + LogViewColumn* column; + for(it=columns->begin(); it!=columns->end(); it++) { + column=*it; + + if (column->isGrouped) { + menu->insertItem(column->columnName, id); + } + + ++id; + } + + } + + //Get the selected GroupBy from (new) current LogManager and select it in the popup menu + + //First Deselect all items + for(int i=0; i<(int) menu->count(); ++i) { + menu->setItemChecked(menu->idAt(i), false); + } + + + //Then get the active manager and its group by value + int selection=manager->getGroupBy(); + + //If no selection, the first item is checked + if (selection==0) { + menu->setItemChecked(NO_GROUP_BY, true); + } + //If it's one of the predefined selection, we select the right item + else if (selection!=GROUP_BY_COLUMN) { + menu->setItemChecked(selection, true); + } + //Else, we select the corresponding column + else { + selection=selection + manager->getGroupByColumn(); + menu->setItemChecked(selection, true); + } + + + //Manage the disabling of default GroupBy choice + LogViewColumns* columns=manager->getColumns(); + menu->setItemEnabled(GROUP_BY_LOG_LEVEL, columns->isGroupByLogLevel()); + menu->setItemEnabled(GROUP_BY_DAY, columns->isGroupByDay()); + menu->setItemEnabled(GROUP_BY_HOUR, columns->isGroupByHour()); + menu->setItemEnabled(GROUP_BY_LOG_FILE, columns->isGroupByLogFile()); + +} + +/** + * This is a very simplistic implementation of a drop event. we + * will only accept a dropped URL. the Qt dnd code can do *much* + * much more, so please read the docs there + */ +void KSystemLog::dropEvent(QDropEvent *event) { + KURL::List urls; + + //See if we can decode a URI + if (KURLDrag::decode(event, urls) && !urls.isEmpty()) { + //Several URI have been found + ReaderFactory::lastOpenedURL=urls.first(); + + this->load(Globals::openingMode, activeLogManager()); + } +} + +void KSystemLog::updateGUI() { + kapp->processEvents(); +} + + +#include "ksystemlog.moc" diff --git a/ksystemlog/src/ksystemlog.desktop b/ksystemlog/src/ksystemlog.desktop new file mode 100644 index 0000000..5117f82 --- /dev/null +++ b/ksystemlog/src/ksystemlog.desktop @@ -0,0 +1,28 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=KSystemLog +Name[sv]=Ksystemlogg +Name[tr]=KSistemGünlüğü +Exec=kdesu ksystemlog %i %m -caption "%c" +Icon=ksystemlog +Type=Application +DocPath=ksystemlog/ksystemlog.html +Comment=System log viewer tool +Comment[da]=Værktøj til at vise systemlog +Comment[el]=Εργαλείο προβολής καταγραφής συστήματος +Comment[et]=Süsteemse logi vaatamise tööriist +Comment[fr]=Outil de visualisation des journaux système +Comment[it]=Strumento di visualizzazione registro di sistema (log) +Comment[pa]=ਸਿਸਟਮ ਲਾਗ ਦਰਸ਼ਕ ਸੰਦ +Comment[pt]=Ferramenta de visualização dos registos do sistema +Comment[sv]=Visningsverktyg för systemlogg +Comment[tr]=Sistem günlük görüntüleyicisi aracı +Terminal=0 +GenericName=System Logs Viewer +GenericName[da]=System logfremviser +GenericName[et]=Süsteemse logi näitaja +GenericName[it]=Visualizzatore registri di sistema +GenericName[pt]=Visualizador de Registos do Sistema +GenericName[sv]=Systemloggvisning +GenericName[tr]=Sistem Günlükleri Görüntüleyicisi +Categories=Qt;KDE;Application;System; diff --git a/ksystemlog/src/ksystemlog.h b/ksystemlog/src/ksystemlog.h new file mode 100644 index 0000000..15ea171 --- /dev/null +++ b/ksystemlog/src/ksystemlog.h @@ -0,0 +1,294 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#ifndef KSYSTEM_LOG_H +#define KSYSTEM_LOG_H + +#ifdef HAVE_CONFIG_H +#include +#endif + + +//Qt includes +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +//For compatibility with old versions of KDE +#include + +//Project includes +#include "detailDialog.h" + +#include "logLevel.h" +#include "logManager.h" +#include "loadingDialog.h" + +#include "findManager.h" + +#include "globals.h" + +//Include the right header for the management of Log Action clicking, depending of the version of KDE +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,4,0)) + #include "slotLogAction.h" +#else + #include "slotLogActionCompatibility.h" +#endif + +#define STATUS_BAR_LINE_COUNT 1 +#define STATUS_BAR_LAST_MODIFICATION 2 + +class LogFile; +typedef QValueList LogFiles; + + +class KPrinter; +class KToggleAction; +class KURL; + +/** + * This class serves as the main window for ksystemlog. It handles the + * menus, toolbars, and status bars. + * + * @short Main window class + * @author Nicolas Ternisien + * @version 0.1 + */ +class KSystemLog : public KMainWindow { + + Q_OBJECT + public: + /** + * Default Constructor + */ + KSystemLog(); + + /** + * Default Destructor + */ + virtual ~KSystemLog(); + + + groupByType getGroupBy(int& column); + + int getIndex(LogManager* manager); + + /** + * Specialized methods about LogManagers + * TODO Maybe move them to a dedicated LogManagers class + * (which can subclass QValueList) + */ + LogManager* activeLogManager(); + + void setCurrentLogManager(LogManager* view); + + +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) + //Actual KDE method + void logActionClicked(const QObject* sender, KAction::ActivationReason reason, Qt::ButtonState state); +#else + //Method for old versions of KDE + void logActionClicked(const QObject* sender); +#endif + + void load(LogMode* logMode, LogManager* manager); + + + protected: + /** + * Overridden virtuals for Qt drag'n drop (XDND) + */ + virtual void dragEnterEvent(QDragEnterEvent *event); + virtual void dropEvent(QDropEvent *event); + + + protected: + /** + * This function is called when it is time for the app to save its + * properties for session management purposes. + */ + void saveProperties(KConfig *); + + /** + * This function is called when this app is restored. The KConfig + * object points to the session management config file that was saved + * with @ref saveProperties + */ + void readProperties(KConfig *); + + void setupLogLevels(); + + private slots: + void fileOpen(); + void filePrint(); + + void slotOptions(); + + + public slots: + void changeStatusbar(const QString& text); + void changeCaption(const QString& text); + + void changeTab(View* view, const QString& label); + void changeTab(View* view, const QIconSet& icon, const QString& label); + + void updateStatusBar(); + + void updateGUI(); + + void logUpdated(int lines); + + void slotSelectAll(); + + void slotToggleFilterBar(); + + void slotLogMessage(); + + + void reloadCurrent(); + void reloadAll(); + + + LogManager* newTab(); + LogManager* duplicateTab(); + + void closeTab(); + + void moveTabLeft(); + void moveTabRight(); + + void logManagerReloaded(); + + void currentTabChanged(QWidget* view); + + void slotTooltipEnabled(bool enabled); + void slotNewLinesDisplayed(bool displayed); + + void slotSelectionChanged(); //replace void logListSelectionChanged(); + + + void slotDetails(); + + void groupByChanged(int group); + + void pauseParsing(); + void resumeParsing(); + + void quit(); + + + private: + //Object managing the signals come from the selection of a Log Mode + SlotLogAction* slotLogAction; + + /** + * Get the Log Action called name from actionCollection() + */ + KToggleAction* getLogAction(const char* name); + KToggleAction* getCorrespondingLogAction(LogMode* mode); + + void setupStatusBar(); + + void setupTabBar(); + + void setupProgressDialog(); + + void setupGroupBy(); + + void setupActions(); + void setupLogActions(); + + void readConfig(); + void saveConfig(); + + void deactiveLogActions(); + + void updateGroupBy(); + + LogManagers logManagers; + + + KPrinter* printer; + + KAction* newTabAction; + KAction* closeTabAction; + KAction* duplicateTabAction; + + KAction* moveTabLeftAction; + KAction* moveTabRightAction; + + KAction* saveAction; + KAction* copyAction; + + KAction* sendMailAction; + KAction* logMessageAction; + + KToggleAction* filterBarAction; + + KAction* reloadAction; + + KAction* expandAllAction; + KAction* collapseAllAction; + + KAction* resumeParsingAction; + KAction* pauseParsingAction; + KAction* detailAction; + + KToggleAction* tooltipEnabledAction; + KToggleAction* newLinesDisplayedAction; + + /** + * The Group By Action Menu + */ + KActionMenu* groupBy; + + /** + * A pointer to the Detail dialog + */ + DetailDialog* detailDialog; + + /** + * Loading Dialog + */ + LoadingDialog* loadingDialog; + + /** + * Find Manager + */ + FindManager* findManager; + + /** + * The tab widget managing different views + */ + KTabWidget* tabs; + + QMap mapActionLogModes; + +}; + + +#endif //KSYSTEM_LOG_H diff --git a/ksystemlog/src/ksystemlog.lsm b/ksystemlog/src/ksystemlog.lsm new file mode 100644 index 0000000..a9bdfe6 --- /dev/null +++ b/ksystemlog/src/ksystemlog.lsm @@ -0,0 +1,16 @@ +Begin3 +Title: KSystemLog -- System Log Viewer Tool +Version: 0.1.1 +Entered-date: +Description: System Log Viewer Tool for KDE +Keywords: KDE Qt System Log +Author: Nicolas Ternisien +Maintained-by: Nicolas Ternisien +Home-page: http://www.kde-apps.org/content/show.php?content=23761 +Alternate-site: +Primary-site: http://annivernet.free.fr/images/divers/ksystemlog/ + 0.1.1 ksystemlog-0.1.1.tar.gz + 0.1.1 ksystemlog-0.1.1.lsm +Platform: Linux. Needs KDE +Copying-policy: GPL +End diff --git a/ksystemlog/src/ksystemlogiface.h b/ksystemlog/src/ksystemlogiface.h new file mode 100644 index 0000000..3adfed4 --- /dev/null +++ b/ksystemlog/src/ksystemlogiface.h @@ -0,0 +1,37 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#ifndef _KSYSTEMLOGIFACE_H_ +#define _KSYSTEMLOGIFACE_H_ + +#include + +class KSystemLogInterface : virtual public DCOPObject { + + K_DCOP + public: + + k_dcop: + virtual void openURL(QString url) = 0; + +}; + +#endif // _KSYSTEMLOGIFACE_H_ diff --git a/ksystemlog/src/ksystemlogui.rc b/ksystemlog/src/ksystemlogui.rc new file mode 100644 index 0000000..7ac2e05 --- /dev/null +++ b/ksystemlog/src/ksystemlogui.rc @@ -0,0 +1,96 @@ + + + + + + + &File + + + + + + &Edit + + + + + + + + + + + + + + + + + &Logs + + + + + + + + + + + &CUPS + + + + + + &Apache + + + + + + + + + &Settings + + + + + &Window + + + + + + + + + + + + + Main Logs Toolbar + + + + + + + + + + + Main Toolbar + + + + + + + + + + + diff --git a/ksystemlog/src/loadingDialog.cpp b/ksystemlog/src/loadingDialog.cpp new file mode 100644 index 0000000..60877e3 --- /dev/null +++ b/ksystemlog/src/loadingDialog.cpp @@ -0,0 +1,145 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include "loadingDialog.h" + +LoadingDialog::LoadingDialog(QWidget* parent, const char* name, bool modal) : + KProgressDialog(parent, name, i18n("Loading Progress"), "", modal), + tabCount(0), + currentTab(0), + + fileCount(0), + currentFile(0), + + firstLoading(false) + { + + + //TODO Try to find a better solution (if it exists!) + resize(380, 110); + +} + + +LoadingDialog::~LoadingDialog() { + + +} + + +bool LoadingDialog::isFirstLoading() { + return(firstLoading); +} + +void LoadingDialog::setFirstLoading(bool first) { + firstLoading=first; +} + + +int LoadingDialog::getTabCount() { + return(tabCount); +} + +void LoadingDialog::setTabCount(int count) { + this->tabCount=count; + + if (tabCount==0) + hide(); + else + show(); +} + +int LoadingDialog::getFileCount() { + return(fileCount); +} + +void LoadingDialog::setFileCount(int count) { + this->fileCount=count; +} + +int LoadingDialog::getCurrentFile() { + return(currentFile); +} + + +void LoadingDialog::setCurrentFile(int current) { + this->currentFile=current; +} + +int LoadingDialog::getCurrentTab() { + return(currentTab); +} + + +void LoadingDialog::setCurrentTab(int current) { + this->currentTab=current; +} + +void LoadingDialog::hide() { + + //Only hide the Loading Dialog if there is only one Log Manager to load + if (tabCount<=1) { + KProgressDialog::hide(); + } +} + +void LoadingDialog::setLoadingLog(const QString& text) { + //Several files to load + if (fileCount>1 && currentFile>=1) { + //Several tabs to load + if (tabCount>1 && currentTab>=1) { + if (firstLoading) + setLabel(i18n("Loading %1 [%2/%3 file] (%4/%5)...").arg(text).arg(currentFile).arg(fileCount).arg(currentTab).arg(tabCount)); + else + setLabel(i18n("Reloading %1 [%2/%3 file] (%4/%5)...").arg(text).arg(currentFile).arg(fileCount).arg(currentTab).arg(tabCount)); + } + //Only one tab to load + else { + if (firstLoading) + setLabel(i18n("Loading %1 [%2/%3 file]...").arg(text).arg(currentFile).arg(fileCount)); + else + setLabel(i18n("Reloading %1 [%2/%3 file]...").arg(text).arg(currentFile).arg(fileCount)); + } + + } + //Only one file + else { + //Several tabs to load + if (tabCount>1 && currentTab>=1) { + if (firstLoading) + setLabel(i18n("Loading %1 (%2/%3)...").arg(text).arg(currentTab).arg(tabCount)); + else + setLabel(i18n("Reloading %1 (%2/%3)...").arg(text).arg(currentTab).arg(tabCount)); + } + //Only one tab to load + else { + if (firstLoading) + setLabel(i18n("Loading %1...").arg(text)); + else + setLabel(i18n("Reloading %1...").arg(text)); + } + } + +} + + +#include "loadingDialog.moc" diff --git a/ksystemlog/src/loadingDialog.h b/ksystemlog/src/loadingDialog.h new file mode 100644 index 0000000..76e3eab --- /dev/null +++ b/ksystemlog/src/loadingDialog.h @@ -0,0 +1,88 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _LOADING_DIALOG_H_ +#define _LOADING_DIALOG_H_ + +#include +#include +#include + +#include +#include + +#include "view.h" +#include "logListItem.h" + +/** + * To use this class, simply call set the Loading Log, and update with setProcess + * To manage group of Logs, use setCount() and setCurrent() methods + * + * TODO Make the processEvents() method here (move from KSystemLog class + * (and also remove signal/slot dedicated for this operation)) + * + * TODO Try to have the Cancel button functional (for the moment, it only hide the Loading Dialog) + */ +class LoadingDialog : public KProgressDialog { + + Q_OBJECT + + public: + LoadingDialog(QWidget* parent=0, const char* name=0, bool modal=false); + + ~LoadingDialog(); + + void setLoadingLog(const QString& text); + + //Methods managing the position in the tab loading + int getTabCount(); + void setTabCount(int count); + + int getCurrentTab(); + void setCurrentTab(int current); + + //Methods managing the position in the files loading of each log + int getFileCount(); + void setFileCount(int count); + + int getCurrentFile(); + void setCurrentFile(int current); + + virtual void hide(); + + + bool isFirstLoading(); + void setFirstLoading(bool first); + + private: + //Attributes managing the position in the tab loading + int tabCount; + int currentTab; + + //Attributes managing the position in the files loading of each log + int fileCount; + int currentFile; + + bool firstLoading; + + +}; + +#endif // _LOADING_DIALOG_H_ diff --git a/ksystemlog/src/logFile.cpp b/ksystemlog/src/logFile.cpp new file mode 100644 index 0000000..77d7dcf --- /dev/null +++ b/ksystemlog/src/logFile.cpp @@ -0,0 +1,32 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "logFile.h" + +LogFile::LogFile(KURL& u, LogLevel* lvl) : + url(u), + lastFileSize(0), + level(lvl) { + +} + +LogFile::~LogFile() { + +} diff --git a/ksystemlog/src/logFile.h b/ksystemlog/src/logFile.h new file mode 100644 index 0000000..2127d05 --- /dev/null +++ b/ksystemlog/src/logFile.h @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _LOG_FILE_H_ +#define _LOG_FILE_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "globals.h" + +#include "logLevel.h" + + +//class KSystemLog; + +class LogFile; + +typedef QValueList LogFiles; + +/** + * @author Nicolas Ternisien + */ +class LogFile { + + public: + + LogFile(KURL& url, LogLevel* level); + + //If a day we are able to avoid cross reference between KSystemLog and LogFile class + //Then this constructor (with a default level value) would be better than the previous + //one. + /*LogFile(KURL& url, LogLevel* level=KSystemLog::informationLogLevel);*/ + + virtual ~LogFile(); + + KURL url; + + long lastFileSize; + + LogLevel* level; + +}; + +//#include "ksystemlog.h" + +#endif // _LOG_FILE_H_ diff --git a/ksystemlog/src/logLevel.cpp b/ksystemlog/src/logLevel.cpp new file mode 100644 index 0000000..cf8f98c --- /dev/null +++ b/ksystemlog/src/logLevel.cpp @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include "logLevel.h" + + +LogLevel::LogLevel(int id, QString& nm, QString& ic, QColor& col) : + id(id), + name(nm), + icon(ic), + color(col), + pixmap(SmallIcon(ic)) { + +} + +LogLevel::LogLevel(int id, QString name, const char* ic, QColor col) : + id(id), + name(name), + icon(ic), + color(col), + pixmap(SmallIcon(ic)) { + +} + + +LogLevel::~LogLevel() { + +} + +/* +QString& LogLevel::getName() { + return(name); +} +*/ + diff --git a/ksystemlog/src/logLevel.h b/ksystemlog/src/logLevel.h new file mode 100644 index 0000000..5f15e36 --- /dev/null +++ b/ksystemlog/src/logLevel.h @@ -0,0 +1,67 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _LOG_LEVEL_H_ +#define _LOG_LEVEL_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "globals.h" + + +class LogLevel; + +typedef QPtrList LogLevels; + + + +/** + * @author Nicolas Ternisien + */ +class LogLevel { + + public: + LogLevel(int id, QString& name, QString& icon, QColor& color); + LogLevel(int id, QString name, const char* icon, QColor color); + + + + virtual ~LogLevel(); + + int id; + QString name; + + QString icon; + + QColor color; + + QPixmap pixmap; +}; + + +#endif diff --git a/ksystemlog/src/logLine.cpp b/ksystemlog/src/logLine.cpp new file mode 100644 index 0000000..effefc5 --- /dev/null +++ b/ksystemlog/src/logLine.cpp @@ -0,0 +1,175 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//KDE includes +#include + +//Project includes +#include "itemFactory.h" + +#include "logLine.h" + + +LogLine::LogLine(QDate& date, QTime& time, QStringList& list, QString& file, LogLevel* level, int type) : + time(date, time), + itemList(list), + originalFile(file), + logLevel(level), + type(type), + recent(false), + item(NULL) { + +} + +LogLine::~LogLine() { + if (item!=NULL) + delete item; +} + +int LogLine::getType() { + return(type); +} + +void LogLine::setType(int t) { + type=t; +} + +bool LogLine::itemExists() { + if (item==NULL) + return(false); + else + return(true); +} + +void LogLine::setRecent(bool recent) { + this->recent=recent; + if (item!=NULL) { + //TODO This is certainly the main problem of the unknown crash bug ! + //item->repaint(); + } +} + +bool LogLine::isRecent() { + return(recent); +} + +LogListItem* LogLine::getLogListItem() { + return(item); +} + +LogListItem* LogLine::insertItem(QListView* view) { + if (item==NULL) { + item=ItemFactory::createLogListItem(view, this); + } + + return(item); +} + +bool LogLine::equals(LogLine& other) { + if (getType() != other.getType()) + return(false); + + if (getTime() != other.getTime()) + return(false); + + if (getLogLevel() != other.getLogLevel()) + return(false); + + /* + if (getOriginalFile() != other.getOriginalFile()) + return(false); + */ + + if (getItemList() != other.getItemList()) + return(false); + + return(true); +} + +void LogLine::removeItem(QListView* view) { + if (item==NULL) + return; + + view->takeItem(item); + +} + +LogLevel* LogLine::getLogLevel() { + return(logLevel); +} + +void LogLine::setLogLevel(LogLevel* level) { + logLevel=level; +} + +QDateTime& LogLine::getTime() { + return(time); +} + +QStringList& LogLine::getItemList() { + return(itemList); +} + +QString& LogLine::getOriginalFile() { + return(originalFile); +} + +bool LogLine::isOlderThan(LogLine& other) { + return(time<=other.getTime()); +} + +bool LogLine::isNewerThan(LogLine& other) { + return(time>=other.getTime()); +} + +bool LogLine::isOlderThan(QDateTime& other) { + return(time<=other); +} + +bool LogLine::isNewerThan(QDateTime& other) { + return(time>=other); +} + + +bool LogLine::isSameTime(LogLine& other) { + return(time==other.getTime()); +} + +bool LogLine::operator<(LogLine& other) { + return(isOlderThan(other)); +} + +bool LogLine::operator>(LogLine& other) { + return(isNewerThan(other)); +} + +void LogLine::ensureItemVisible(QListView* view) { + if (item!=NULL) + view->ensureItemVisible(item); +} + +bool LogLine::isParentLogLine() { + return(false); +} + +bool LogLine::isChildLogLine() { + return(false); +} + diff --git a/ksystemlog/src/logLine.h b/ksystemlog/src/logLine.h new file mode 100644 index 0000000..bea6646 --- /dev/null +++ b/ksystemlog/src/logLine.h @@ -0,0 +1,111 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _LOG_LINE_H_ +#define _LOG_LINE_H_ + +#include +#include +#include +#include + +#include + +#include "globals.h" + +#include "logListItem.h" +#include "logLevel.h" + +class LogListItem; + +class ParentLogLine; +class ChildLogLine; + + +/** + * @author Nicolas Ternisien + */ +class LogLine { + + public: + LogLine(QDate& date, QTime& time, QStringList& list, QString& originalFile, LogLevel* level, int tpe); + + virtual ~LogLine(); + + bool isOlderThan(LogLine& other); + bool isNewerThan(LogLine& other); + + bool isOlderThan(QDateTime& other); + bool isNewerThan(QDateTime& other); + + bool equals(LogLine& other); + + bool isSameTime(LogLine& other); + + bool operator<(LogLine& other); + bool operator>(LogLine& other); + //bool operator==(LogLine& other); + + LogLevel* getLogLevel(); + void setLogLevel(LogLevel* level); + + QDateTime& getTime(); + QStringList& getItemList(); + QString& getOriginalFile(); + + int getType(); + void setType(int t); + + void setRecent(bool recent); + bool isRecent(); + + + bool itemExists(); + + //Use this function carefully (don't delete the returned object for example) + LogListItem* getLogListItem(); + + virtual LogListItem* insertItem(QListView* view); + void removeItem(QListView* view); + + void ensureItemVisible(QListView* view); + + virtual bool isParentLogLine(); + virtual bool isChildLogLine(); + + protected: + + QDateTime time; + + QStringList itemList; + + QString originalFile; + + LogLevel* logLevel; + + int type; + + bool recent; + + LogListItem* item; + + +}; + +#endif diff --git a/ksystemlog/src/logLineFilter.cpp b/ksystemlog/src/logLineFilter.cpp new file mode 100644 index 0000000..3a7c243 --- /dev/null +++ b/ksystemlog/src/logLineFilter.cpp @@ -0,0 +1,80 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//For compatibility with old versions of KDE +#include + +//The filter is activated only if KDE version >= 3.3 +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + +#include + +#include + +#include "logLineFilter.h" + +LogLineFilter::LogLineFilter(QWidget* parent, KListView* listView, const char* name) : + KListViewSearchLine(parent, listView, name) { + + drawFilterMessage = true; + + repaint(); +} + + +void LogLineFilter::drawContents(QPainter *p) { + KListViewSearchLine::drawContents( p ); + + if ( drawFilterMessage == true && !hasFocus() ) { + QPen tmp = p->pen(); + p->setPen( palette().color( QPalette::Disabled, QColorGroup::Text ) ); + QRect cr = contentsRect(); + + //p->drawPixmap( 3, 3, SmallIcon("filter") ); + + // Add two pixel margin on the left side + cr.rLeft() += 3; + p->drawText( cr, AlignAuto | AlignVCenter, i18n("Filter here...") ); + p->setPen( tmp ); + } +} + + +void LogLineFilter::focusInEvent( QFocusEvent *ev ) +{ + if ( drawFilterMessage == true ) { + drawFilterMessage = false; + repaint(); + } + KListViewSearchLine::focusInEvent( ev ); +} + + +void LogLineFilter::focusOutEvent( QFocusEvent *ev ) +{ + if ( text().isEmpty() ) { + drawFilterMessage = true; + repaint(); + } + KListViewSearchLine::focusOutEvent( ev ); +} + + +#endif diff --git a/ksystemlog/src/logLineFilter.h b/ksystemlog/src/logLineFilter.h new file mode 100644 index 0000000..248e723 --- /dev/null +++ b/ksystemlog/src/logLineFilter.h @@ -0,0 +1,58 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef LOG_LINE_FILTER_H +#define LOG_LINE_FILTER_H + +//For compatibility with old versions of KDE +#include + +//The filter is activated only if KDE version >= 3.3 +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + +#include + +/** + This class provides a KLineEdit which contains a greyed-out hinting + text as long as the user didn't enter any text + Code taken from Daniel Molkentin (Amarok project) + + @short LineEdit with customizable "Click here" text + @author Nicolas Ternisien +*/ +class LogLineFilter : public KListViewSearchLine +{ + public: + LogLineFilter(QWidget* parent=NULL, KListView* listView=NULL, const char* name=NULL); + + protected: + virtual void drawContents( QPainter *p ); + virtual void focusInEvent( QFocusEvent *ev ); + virtual void focusOutEvent( QFocusEvent *ev ); + + private: + bool drawFilterMessage; + +}; + +#endif + +#endif //LOG_LINE_FILTER_H + diff --git a/ksystemlog/src/logLineList.cpp b/ksystemlog/src/logLineList.cpp new file mode 100644 index 0000000..9ac3c78 --- /dev/null +++ b/ksystemlog/src/logLineList.cpp @@ -0,0 +1,271 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "logLineList.h" +#include "logLine.h" + +#include "view.h" + + +LogLineList::LogLineList() : + oldestLogLine(NULL), + firstAdd(true) + { + +} + +LogLineList::~LogLineList() { + +} + +LogLine* LogLineList::getOldestLine() { + return(oldestLogLine); +} + +void LogLineList::removeOldestLine() { + LogLine* line=this->getOldestLine(); + + if (line!=NULL) { + this->remove(line); + } + +} + +bool LogLineList::isNewer(LogLine* line) { + LogLine* olderLine=this->getOldestLine(); + + if (olderLine==NULL) + return(true); + + return(line->isNewerThan(*olderLine)); + +} + +bool LogLineList::isEmpty() { + return(list.isEmpty()); +} + + +LogLine* LogLineList::lastLineInserted() { + //Can also returns NULL + return(list.last()); +} + +int LogLineList::getNewLineCount() { + return(addedList.count()); +} + +void LogLineList::insert(LogLine* line) { + if (!isNewer(line) || list.count()==0) { + oldestLogLine=line; + } + + addedList.append(line); + list.append(line); +} + +bool LogLineList::lineAlreadyExists(LogLine* line) { + QPtrListIterator it(list); + + LogLine* other=it.current(); + while (other!=NULL) { + if (other->equals(*line)) + return(true); + + ++it; + other=it.current(); + } + + return(false); +} + + +bool LogLineList::remove(LogLine* removedLine) { + QPtrListIterator it(list); + + LogLine* line=it.current(); + while (line!=NULL) { + + if (this->equals(removedLine, line)) { + removedList.append(line); + + addedList.remove(line); + list.remove(line); + + //Now find the new oldest line + updateOldestLine(); + + return(true); + } + + ++it; + line=it.current(); + + } + + return(false); +} + +bool LogLineList::equals(LogLine* l1, LogLine* l2) { + return(l1->equals(*l2)); +} + + +int LogLineList::getItemCount() { + return(list.count()); +} + +void LogLineList::clear() { + QPtrListIterator it(list); + + LogLine* line=it.current(); + while (line!=NULL) { + removedList.append(line); + + ++it; + line=it.current(); + } + + list.clear(); + + oldestLogLine=NULL; +} + + +LogLine* LogLineList::synchronize(View* view) { + synchronizeRemovedLines(view); + + if (firstAdd==false && !addedList.isEmpty()) { + synchronizeRecentLines(); + } + + LogLine* line=NULL; + + line=synchronizeAddedLines(view); + + kdDebug() << "Returning the added line..." << endl; + + return(line); + +} + +void LogLineList::synchronizeRemovedLines(View* view) { + QPtrListIterator it(removedList); + + LogLine* line=it.current(); + + kdDebug() << "Removing old items from list..." << endl; + + //We removed the old items + while(line!=NULL) { + if (line->itemExists()) + line->removeItem(view->getLogList()); + + //TODO Delete the line object + + ++it; + line=it.current(); + } + + removedList.clear(); + +} + +LogLine* LogLineList::synchronizeAddedLines(View* view) { + + kdDebug() << "Adding new items to the list..." << endl; + + //We add the new items + QPtrListIterator it(addedList); + + LogLine* line=it.current(); + + while (line!=NULL) { + line->insertItem(view->getLogList()); + + ++it; + line=it.current(); + } + + kdDebug() << "Returning latest item..." << endl; + + //Get the last line of addedList list (can be NULL) + line=addedList.last(); + + addedList.clear(); + + //Returns line, even if line is NULL (must be tested by the caller class) + return(line); +} + +void LogLineList::synchronizeRecentLines() { + kdDebug() << "Recent items become normal..." << endl; + + //The older lines are no longer recent + QPtrListIterator it(recentList); + LogLine* line=it.current(); + + while (line!=NULL) { + //kdDebug() << "before setRecent... " << endl; + //kdDebug() << "before setRecent original... : " << line->getOriginalFile() << endl; + line->setRecent(false); + //kdDebug() << "after setRecent..." << endl; + + ++it; + line=it.current(); + } + recentList.clear(); + + kdDebug() << "New items become recent..." << endl; + + //The new lines added becomes recent + it=addedList; + line=it.current(); + while (line!=NULL) { + line->setRecent(true); + recentList.append(line); + + ++it; + line=it.current(); + } +} + +void LogLineList::setFirstReadPerformed(bool add) { + firstAdd=!add; +} + +void LogLineList::updateOldestLine() { + + QPtrListIterator it(list); + if (it.current()==NULL) + oldestLogLine=NULL; + + oldestLogLine=it.current(); + + LogLine* line=it.current(); + while (line!=NULL) { + if (line->isOlderThan(*oldestLogLine)) + oldestLogLine=line; + + ++it; + line=it.current(); + } + +} diff --git a/ksystemlog/src/logLineList.h b/ksystemlog/src/logLineList.h new file mode 100644 index 0000000..6d9c953 --- /dev/null +++ b/ksystemlog/src/logLineList.h @@ -0,0 +1,113 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _LOG_LINE_LIST_H_ +#define _LOG_LINE_LIST_H_ + +#include +#include +#include + +#include + +#include "globals.h" +#include "qlistview.h" +#include "logLine.h" + +class View; + +/** + * @author Nicolas Ternisien + */ +class LogLineList { + + public: + LogLineList(); + + virtual ~LogLineList(); + + /** + * Synchronize the view with this buffer and returns the last added item + */ + virtual LogLine* synchronize(View* view); + + + + LogLine* getOldestLine(); + + int getItemCount(); + + void clear(); + + bool isEmpty(); + + void removeOldestLine(); + + virtual bool remove(LogLine* line); + virtual void insert(LogLine* line); + + //Can also returns NULL + LogLine* lastLineInserted(); + + bool equals(LogLine* l1, LogLine* l2); + + bool lineAlreadyExists(LogLine* line); + + bool isNewer(LogLine* line); + + int getNewLineCount(); + + void setFirstReadPerformed(bool add); + + protected: + /** + * Synchronize the old recent lines, then the new ones + */ + virtual void synchronizeRecentLines(); + + /** + * Synchronize the lines to delete + */ + virtual void synchronizeRemovedLines(View* view); + + /** + * Synchronize new lines and returns the last one + */ + virtual LogLine* synchronizeAddedLines(View* view); + + + + void updateOldestLine(); + + QPtrList list; + + QPtrList addedList; + + QPtrList removedList; + + QPtrList recentList; + + LogLine* oldestLogLine; + + bool firstAdd; + +}; + +#endif diff --git a/ksystemlog/src/logLineTree.cpp b/ksystemlog/src/logLineTree.cpp new file mode 100644 index 0000000..8e71de6 --- /dev/null +++ b/ksystemlog/src/logLineTree.cpp @@ -0,0 +1,213 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "logLineTree.h" + +#include "parentLogLine.h" +#include "childLogLine.h" +#include "logLine.h" + +#include "view.h" + + +LogLineTree::LogLineTree(LogViewColumns* cols, groupByType type, int column) : + LogLineList() + { + + columns=cols; + groupBy=type; + groupByColumn=column; + +} + +LogLineTree::~LogLineTree() { + +} + + +void LogLineTree::synchronizeRemovedLines(View* view) { + QPtrListIterator it(removedList); + + LogLine* line=it.current(); + + kdDebug() << "Removing old items from tree..." << endl; + + //We removed the old items + while(line!=NULL) { + if (line->itemExists()) { + line->removeItem(view->getLogList()); + } + + //TODO Delete the line object + + ++it; + line=it.current(); + } + + removedList.clear(); + +} + +LogLine* LogLineTree::synchronizeAddedLines(View* view) { + + /** + * This old code had to do the same thing than the above code, but + * it was buggy for a strange reason. + * This code wasn't able to find Parent Log Lines in the addedList object + */ + /* + //We first add the new parent items + QPtrListIterator it(addedList); + + LogLine* line=it.current(); + + kdDebug() << "Inserting " << parents.count() << " parent log item" << endl; + + int i=0; + while (line!=NULL) { + if (line->isParentLogLine()==true) { + ParentLogLine* parent=(ParentLogLine*) (line); + parent->insertItem(view->getLogList()); + + addedList.remove(it.current()); + ++i; + } + + ++it; + + line=it.current(); + } + + kdDebug() << "Insertion of " << i << " parent log items" << endl; + */ + + kdDebug() << "Adding parent items to the tree..." << endl; + + //We first add the new parent items + QPtrListIterator it(parents); + + LogLine* line=it.current(); + + while (line!=NULL) { + //Even if the parent has already been added, it will automatically be added once time + line->insertItem(view->getLogList()); + + addedList.remove(it.current()); + + ++it; + line=it.current(); + } + + + //Returns line, even if line is NULL (must be tested by the caller class) + return(LogLineList::synchronizeAddedLines(view)); +} + +bool LogLineTree::remove(LogLine* line) { + /** + * Parent log line actions : + * - Only remove this line is it does not have any children left + */ + if (line->isParentLogLine()==true) { + ParentLogLine* parent=(ParentLogLine*) line; + + if (parent->hasChildren()==false) { + parents.remove(parent); + return(LogLineList::remove(line)); + } + + } + /** + * Child log line actions : + * - First remove the dependency from the parent + * - Remove parent if it does not have child left + * - Finally remove child + */ + else if (line->isChildLogLine()==true) { + ChildLogLine* child=(ChildLogLine*) line; + ParentLogLine* parent=child->getParent(); + parent->removeChild(child); + + //Remove parent if it does not have longer children + if (parent->hasChildren()==false) { + parents.remove(parent); + LogLineList::remove(parent); + } + + //Remove the children + return(LogLineList::remove(line)); + + } + + //Default case, with normal log lines + return(LogLineList::remove(line)); + +} + +void LogLineTree::insert(LogLine* line) { + + QPtrListIterator it(parents); + ParentLogLine* parent=it.current(); + + bool insertion=false; + + while (parent!=NULL) { + insertion=parent->isChild(line); + if (insertion==true) { + + QDate date=line->getTime().date(); + QTime time=line->getTime().time(); + + ChildLogLine* newChild=new ChildLogLine(date, time, line->getItemList(), line->getOriginalFile(), line->getLogLevel(), line->getType()); + + parent->addChild(newChild); + newChild->setParent(parent); + + //Insert this child by the classical way + LogLineList::insert(newChild); + + delete line; + + return; + } + + ++it; + parent=it.current(); + } + + QDate date=line->getTime().date(); + QTime time=line->getTime().time(); + + ParentLogLine* newParent=new ParentLogLine(date, time, line->getItemList(), line->getOriginalFile(), line->getLogLevel(), line->getType(), this->groupBy, this->groupByColumn, this->columns); + //Insert this parent by the classical way + LogLineList::insert(newParent); + + parents.append(newParent); + + ChildLogLine* newChild=new ChildLogLine(date, time, line->getItemList(), line->getOriginalFile(), line->getLogLevel(), line->getType()); + newParent->addChild(newChild); + newChild->setParent(newParent); + //Insert this child by the classical way + LogLineList::insert(newChild); + + delete line; + + +} diff --git a/ksystemlog/src/logLineTree.h b/ksystemlog/src/logLineTree.h new file mode 100644 index 0000000..2888304 --- /dev/null +++ b/ksystemlog/src/logLineTree.h @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _LOG_LINE_TREE_H_ +#define _LOG_LINE_TREE_H_ + +#include +#include +#include + +#include + +#include "logLineList.h" + +#include "logViewColumn.h" + +#include "parentLogLine.h" + +//Try to find a impossible type +#define PARENT_LOG_LINE_TYPE 7777 + +/** + * @author Nicolas Ternisien + */ +class LogLineTree : public LogLineList { + public: + LogLineTree(LogViewColumns* cols, groupByType type, int column=-1); + + virtual ~LogLineTree(); + + virtual bool remove(LogLine* line); + virtual void insert(LogLine* line); + + protected: + QPtrList parents; + + groupByType groupBy; + int groupByColumn; + + LogViewColumns* columns; + + /** + * Synchronize the lines to delete + */ + virtual void synchronizeRemovedLines(View* view); + + /** + * Synchronize new lines and returns the last one + */ + virtual LogLine* synchronizeAddedLines(View* view); + +}; + +#endif diff --git a/ksystemlog/src/logListItem.cpp b/ksystemlog/src/logListItem.cpp new file mode 100644 index 0000000..4b2e808 --- /dev/null +++ b/ksystemlog/src/logListItem.cpp @@ -0,0 +1,387 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include + +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +//For compatibility with old versions of KDE +#include + +//Project includes +#include "itemFactory.h" +#include "parentLogLine.h" +#include "logMode.h" +#include "ksystemlogConfig.h" + + +#include "logListItem.h" + + +LogListItem::LogListItem(QListView* list, LogLine* l) : + KListViewItem(list), + line(l) + { + +} + +LogListItem::LogListItem(QListViewItem* parent, LogLine* l) : + KListViewItem(parent), + line(l) + { + +} + + +LogListItem::~LogListItem() { + +} + +QString LogListItem::getFormattedText() { + return(ItemFactory::createFormattedText(line)); +} + +QString LogListItem::getToolTipText() { + return(ItemFactory::createToolTipText(line)); +} + +LogLine* LogListItem::getLogLine() { + return(line); +} + +int LogListItem::compare(QListViewItem* it, int col, bool ascending) const { + + if (col==0) { + + LogListItem* item=dynamic_cast (it); + if (item!=NULL) { + + if (line->getTime() < item->getTime()) + return(-1); + else if (line->getTime() == item->getTime()) + return(0); + else + return(1); + } + + return(1); + } + else { + return(QListViewItem::compare(it, col, ascending)); + } +} + +QDateTime& LogListItem::getTime() { + return(line->getTime()); +} + + +QString LogListItem::exportToText() { + int columnCount=listView()->columns(); + + QString exporting; + + if (columnCount==0) + return(exporting); + + int i=0; + while(i0) { + exporting.append('\t'); + } + + exporting.append(this->text(i)); + + i++; + } + + return(exporting); +} + +/** + * Method inspired from a paintCell method of Amarok. + * Many thanks for the team (and the GPL, of course!) + * TODO Retest this method + */ + +void LogListItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align) { + /* For debugging + KListViewItem::paintCell( p, cg, column, width, align ); + return; + */ + + //Get the KListView item + KListView* lv = (KListView *) listView(); + if (lv==NULL) { + kdDebug() << "LogListItem::paintCell() : KListView null" << endl; + KListViewItem::paintCell( p, cg, column, width, align ); + return; + } + + //flicker-free drawing + static QPixmap buffer; + buffer.resize(width, height()); + + //If there is a problem, let KListViewItem class draw this item + if( buffer.isNull() ) { + kdDebug() << "LogListItem::paintCell() : QPixmap null" << endl; + KListViewItem::paintCell(p, cg, column, width, align); + return; + } + + //kdDebug() << "LogListItem::paintCell() : Painting the cell" << endl; + + //Initialize our drawing object + QPainter pBuf( &buffer, true ); + + + //Use or not an alternate background +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,4,0) + if (line->isParentLogLine()==true && column==0) + pBuf.fillRect( buffer.rect(), isSelected() ? cg.highlight() : cg.highlight() ); + else + pBuf.fillRect( buffer.rect(), isSelected() ? cg.highlight() : backgroundColor(column) ); +#else + pBuf.fillRect( buffer.rect(), isSelected() ? cg.highlight() : backgroundColor() ); +#endif + + + //Change the pen color + pBuf.setPen(cg.button()); + + //Draw a line at the right + pBuf.drawLine(width-1, 0, width-1, height()); + + //Gets the current font and font metric + QFont font(p->font()); + QFontMetrics fm(p->fontMetrics()); + + + if (line->isParentLogLine()==true && column==0) { + //Draw 3 gray lines around the parent item + pBuf.setPen(cg.button()); + pBuf.drawLine(0, 0, width, 0); + pBuf.drawLine(0, height()-1, width, height()-1); + //if (column==0) { + pBuf.drawLine(width-1, 0, width-1, height()-1); + pBuf.drawLine(0, 0, 0, height()-1); + //} + } + + + + //Draw the item name in bold if it is a recent one + if (line->isRecent()==true && column==lv->columns()-1) + font.setBold(true); + //Draw in italic and bold if it's a parent item + else if (line->isParentLogLine()==true && column==0) { + font.setItalic(true); + font.setBold(true); + } + //Normal drawing + else + font.setBold(false); + + + pBuf.setFont(font); + QFontMetrics fmName(font); + + //Draw the pixmap m_loadingPix + if (pixmap(column)) { + pBuf.drawPixmap( (lv->treeStepSize() - pixmap(column)->width())/2, + (height() - pixmap(column)->height())/2, + *pixmap(column) ); + } + + int text_x; + if (column==0) + text_x=lv->treeStepSize() + 3; + else + text_x=1; + + + //If this is the first column and also a parent log line + if (line->isParentLogLine()==true && column==0) { + if (KSystemLogConfig::colorizeLogLines() && ((ParentLogLine*)line)->getGroupBy()==GROUP_BY_LOG_LEVEL) + pBuf.setPen( isSelected() ? cg.text() : line->getLogLevel()->color); + else + pBuf.setPen( isSelected() ? cg.text() : cg.highlightedText()); + } + //If this is the last column and the colorizeLogLines options is enabled + else if (KSystemLogConfig::colorizeLogLines() && column==lv->columns()-1) { + pBuf.setPen( isSelected() ? cg.highlightedText() : line->getLogLevel()->color ); + } + //Normal line + else { + pBuf.setPen( isSelected() ? cg.highlightedText() : cg.text() ); + } + + QString name = text(column); + if( fmName.width(name) + text_x + lv->itemMargin()*2 > width ) { + int ellWidth = fmName.width( "..." ); + QString text = QString::fromLatin1(""); + int i = 0; + int len = name.length(); + while ( i < len && fmName.width( text + name[ i ] ) + ellWidth < width - text_x - lv->itemMargin()*2 ) { + text += name[ i ]; + i++; + } + name = text + "..."; + } + + int textHeight = fm.lineSpacing() + lv->itemMargin() + 1; + + pBuf.drawText( text_x, 0, width, textHeight, AlignVCenter, name ); + + //End the draw + pBuf.end(); + p->drawPixmap( 0, 0, buffer ); + +} + + +/* Amarok source code +bool detailedView = PlaylistBrowser::instance()->viewMode() == PlaylistBrowser::DetailedView; + +//flicker-free drawing +static QPixmap buffer; +buffer.resize( width, height() ); + +if( buffer.isNull() ) { + KListViewItem::paintCell( p, cg, column, width, align ); + return; +} + +QPainter pBuf( &buffer, true ); +// use alternate background +pBuf.fillRect( buffer.rect(), isSelected() ? cg.highlight() : backgroundColor() ); + +if( detailedView ) { + // draw a line at the top + pBuf.setPen( cg.text() ); + pBuf.drawLine( 0, 0, width, 0 ); +} + +KListView *lv = (KListView *)listView(); + +QRect rect( ((lv->treeStepSize()-9) / 2) + 1, (height()-9) / 2, 9, 9 ); + +if( m_loading && m_loadingPix ) { + pBuf.drawPixmap( (lv->treeStepSize() - m_loadingPix->width())/2, + (height() - m_loadingPix->height())/2, + *m_loadingPix ); +} +else if( m_trackCount ) { + //draw +/- symbol to expande/collapse the playlist + + pBuf.setPen( cg.mid() ); + pBuf.drawRect( rect ); + //fill the rect with base color if the item has alternate color and viceversa + QColor color = backgroundColor() == lv->alternateBackground() ? cg.base() : lv->alternateBackground(); + pBuf.fillRect( rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2, color ); + // +/- drawing + pBuf.setPen( cg.text() ); + pBuf.drawLine( rect.x()+2, rect.y()+4, rect.x()+6, rect.y()+4 ); + if( !isOpen() ) + pBuf.drawLine( rect.x()+4, rect.y()+2, rect.x()+4, rect.y()+6 ); +} + +QFont font( p->font() ); +QFontMetrics fm( p->fontMetrics() ); + +// Use underlined font for "Current Playlist" +if ( m_url.protocol() == "cur" ) + font.setUnderline( true ); + +// Use italic font for "Cool-Streams" +if ( text( 0 ) == "Cool-Streams" ) + font.setItalic( true ); + +int text_x = lv->treeStepSize() + 3; +int textHeight = detailedView ? fm.lineSpacing() + lv->itemMargin() + 1 : height(); +pBuf.setPen( isSelected() ? cg.highlightedText() : cg.text() ); + +//if the playlist has been modified a save icon is shown +if( m_modified && m_savePix ) { + pBuf.drawPixmap( text_x, (textHeight - m_savePix->height())/2, *m_savePix ); + text_x += m_savePix->width()+4; +} else if( pixmap(0) ) { + int y = (textHeight - pixmap(0)->height())/2; + if( detailedView ) y++; + pBuf.drawPixmap( text_x, y, *pixmap(0) ); + text_x += pixmap(0)->width()+4; +} + +// draw the playlist name in bold +font.setBold( PlaylistBrowser::instance()->viewMode() == PlaylistBrowser::DetailedView ); +pBuf.setFont( font ); +QFontMetrics fmName( font ); + +QString name = text(0); +if( fmName.width( name ) + text_x + lv->itemMargin()*2 > width ) { + int ellWidth = fmName.width( "..." ); + QString text = QString::fromLatin1(""); + int i = 0; + int len = name.length(); + while ( i < len && fmName.width( text + name[ i ] ) + ellWidth < width - text_x - lv->itemMargin()*2 ) { + text += name[ i ]; + i++; + } + name = text + "..."; + } + + pBuf.drawText( text_x, 0, width, textHeight, AlignVCenter, name ); + + if( detailedView ) { + QString info; + + text_x = lv->treeStepSize() + 3; + font.setBold( false ); + pBuf.setFont( font ); + + if ( m_url.protocol() != "cur" ) + { + if( m_loading ) + info = i18n( "Loading..." ); + else + { //playlist loaded + // draw the number of tracks and the total length of the playlist + info += i18n("1 Track", "%n Tracks", m_trackCount); + if( m_length ) + info += QString(" - [%2]").arg( MetaBundle::prettyTime( m_length ) ); + } + + pBuf.drawText( text_x, textHeight, width, fm.lineSpacing(), AlignVCenter, info); + } + } + + pBuf.end(); + p->drawPixmap( 0, 0, buffer ); + */ diff --git a/ksystemlog/src/logListItem.h b/ksystemlog/src/logListItem.h new file mode 100644 index 0000000..2095954 --- /dev/null +++ b/ksystemlog/src/logListItem.h @@ -0,0 +1,75 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef LOG_LIST_ITEM_H +#define LOG_LIST_ITEM_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "globals.h" + +#include "logLine.h" + + +class LogLine; +class LogMode; +class XorgLogLine; + + + +/** + * @author Nicolas Ternisien + */ +class LogListItem : public KListViewItem { + + public: + LogListItem(QListView* list, LogLine* l); + + LogListItem(QListViewItem* parent, LogLine* l); + + ~LogListItem(); + + QDateTime& getTime(); + + virtual int compare(QListViewItem * i, int col, bool ascending) const; + + QString getFormattedText(); + QString getToolTipText(); + + LogLine* getLogLine(); + + virtual void paintCell(QPainter* p, const QColorGroup &cg, int column, int width, int align); + + QString exportToText(); + + protected: + LogLine* line; + +}; + +#endif //LOG_LIST_ITEM_H diff --git a/ksystemlog/src/logManager.cpp b/ksystemlog/src/logManager.cpp new file mode 100644 index 0000000..f68092c --- /dev/null +++ b/ksystemlog/src/logManager.cpp @@ -0,0 +1,600 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include + +//KDE includes +#include +#include +#include +#include + +#include +#include + +#include +#include + +//Project includes +#include "logManager.h" + +#include "reader.h" +#include "view.h" + +#include "ksystemlog.h" +#include "readerFactory.h" + +#include "loadingDialog.h" + +LogManager::LogManager(KSystemLog* m, LoadingDialog* progress) : + main(m), + loadingDialog(progress), + reader(NULL), + view(NULL), + + groupBy(NO_GROUP_BY), + groupByColumn(-1), + columns(NULL), + + sortOrder(Qt::Ascending), + sortColumn(0), + + tooltipEnabled(true), + newLinesDisplayed(true), + parsingPaused(false), + + logFiles(), + + current(false), + newLinesSinceLastSelection(0), + lastUpdate(QTime::currentTime()), + + logMode(Globals::noMode) { + + //TODO Create the view from a factory for example + view=new View(main); + + view->setLogManager(this); + connect(view, SIGNAL(changeStatusbar(const QString&)), this, SLOT(slotChangeStatusbar(const QString&))); + connect(view, SIGNAL(changeCaption(const QString&)), this, SLOT(slotChangeCaption(const QString&))); + + connect(view->getLogList(), SIGNAL(doubleClicked(QListViewItem *, const QPoint&, int)), this, SLOT(slotDetails(QListViewItem *, const QPoint&, int))); + connect(view->getLogList(), SIGNAL(selectionChanged()), this, SLOT(slotSelectionChanged())); + connect(view->getLogList(), SIGNAL(rightButtonPressed(QListViewItem*, const QPoint&, int)), this, SLOT(slotOpenContextualMenu(QListViewItem*, const QPoint&, int))); + +} + +LogManager::~LogManager() { + //TODO Delete all used object (view and reader) + delete view; + + delete reader; +} + +View* LogManager::getView() { + return(view); +} + +void LogManager::saveConfig() { + view->saveConfig(); +} + +void LogManager::slotSelectionChanged() { + emit selectionChanged(); +} + +Reader* LogManager::getReader() { + return(reader); +} + +int LogManager::getIndex() { + return(main->getIndex(this)); +} + +void LogManager::initView() { + if (columns!=NULL) + delete columns; + + //Construct columns list + columns=new LogViewColumns(); + + //Initialize columns list from Reader class + reader->initColumns(columns); + + //If groupBy feature is activated, we must draw the tree lines in the view + if (groupBy!=NO_GROUP_BY) + view->getLogList()->setRootIsDecorated(true); + else + view->getLogList()->setRootIsDecorated(false); + + + view->setColumns(columns); +} + +void LogManager::reload() { + + loadingDialog->show(); + loadingDialog->progressBar()->setProgress(0); + loadingDialog->setLoadingLog(logMode->name); + + emit changeStatusbar(i18n("Loading log...")); + + kdDebug() << "Reloading " << logMode->name << "..." << endl; + + //Change part of the main interface + emit changeTitle(view, logMode->pixmap, logMode->name); + emit changeCaption(logMode->name); + + //Empty the current list, to better fill it + clearView(); + + //Init the Log View + initView(); + + //Read the log files + reader->readLog(); + + emit changeStatusbar(i18n("Log successfully loaded.")); + + //Emit this signal only when the Log List has been totally reloaded + emit reloaded(); + + loadingDialog->progressBar()->setProgress(100); + + loadingDialog->hide(); + +} + +void LogManager::openingProgress(int percent) { + loadingDialog->progressBar()->setProgress(percent); + + //Move this signal to Loading Dialog class + emit GUIUpdated(); + //((KSystemLog*)( view->parent()))->kapp->processEvents(); +} + + +void LogManager::toggleFilterBar() { + view->toggleFilterBar(); +} + +void LogManager::slotDetails(QListViewItem *, const QPoint &, int) { + emit detailsCalled(); +} + +void LogManager::slotChangeCaption(const QString& message) { + emit changeCaption(message); +} + +void LogManager::slotChangeStatusbar(const QString& message) { + emit changeStatusbar(message); +} + +LogViewColumns* LogManager::getColumns() { + return(columns); +} + + + +void LogManager::clearView() { + view->clearLogList(); +} + +void LogManager::setLogFiles(LogFiles* files) { + //We first clear the previous list + //TODO Also delete pointers in this list before empty it + logFiles.clear(); + + LogFiles::Iterator it; + for(it=files->begin(); it!=files->end(); ++it) { + logFiles.append(*it); + } + + //The list is (normally) no longer used after that. + delete files; +} + + +LogFiles& LogManager::getLogFiles() { + return(logFiles); +} + +LogMode* LogManager::getLogMode() { + return(logMode); +} + +QTime& LogManager::getLastUpdate() { + return(lastUpdate); +} + + +void LogManager::slotLogUpdated(int lineCount) { + kdDebug() << "Log is updated (from LogManager) : " << lineCount << " current=" << isCurrent() << endl; + + if (lineCount==0) + return; + + newLinesSinceLastSelection+=lineCount; + + lastUpdate=QTime::currentTime(); + + //Emit this signal even if the current LogManager is selected + emit logUpdated(newLinesSinceLastSelection); + + //If the user is in this log manager, he does have to see that some new log lines have appeared + if (isCurrent()==false) { + QString title(i18n("%1 (%2)").arg(logMode->name).arg(newLinesSinceLastSelection)); + + //This signal is emitted only if the selected tab is not this one + emit changeTitle(view, title); + } + +} + +void LogManager::slotExpandAll() { + //If this LogManager is the currently displayed one + if (isCurrent()) { + QListViewItem* item=view->getLogList()->firstChild(); + while (item!=NULL) { + item->setOpen(true); + + item=item->nextSibling(); + } + } + +} + +void LogManager::slotCollapseAll() { + //If this LogManager is the currently displayed one + if (isCurrent()) { + QListViewItem* item=view->getLogList()->firstChild(); + while (item!=NULL) { + item->setOpen(false); + + item=item->nextSibling(); + } + } +} + +void LogManager::slotFileSave() { + //If this LogManager is the currently displayed one + if (isCurrent()) { + QListViewItemIterator it(view->getLogList(), QListViewItemIterator::Selected); + + //No item selected + if (it.current()==NULL) { + emit changeStatusbar(i18n("No items selected. Please select items to be able to save them.")); + return; + } + + + QString filename = KFileDialog::getSaveFileName(QString::null, QString::null, main); + if (!filename.isEmpty()) { + + QIODevice* ioDev = KFilterDev::deviceForFile( filename ); + if (ioDev->open(IO_WriteOnly)) { + QTextStream stream(ioDev); + + int nbCopied=0; + + QListViewItem* qtItem=it.current(); + while (qtItem!=NULL) { + LogListItem* item=static_cast (qtItem); + + //Copy the item content to the stream + stream << item->exportToText(); + + //Retrieve the next item + it++; + qtItem=it.current(); + nbCopied++; + + } + + ioDev->close(); + + emit changeStatusbar(i18n("1 log line saved to '%1'.", "%n log lines saved to '%1'.", nbCopied).arg(filename)); + } + else { + QString message(i18n("Unable to save file '%1': Permission Denied.").arg(filename)); + KMessageBox::error(main, message, i18n("Unable to save file."), KMessageBox::Notify); + } + + delete ioDev; + } + } +} + +void LogManager::reinitialize() { + //Reinitialize groupBy + groupBy=NO_GROUP_BY; + groupByColumn=-1; + + //TODO Reinitialize sorting, order, column order... +} + +void LogManager::initialize(LogMode* mode) { + //If this LogManager has already been initialized + //with another LogMode, then it needs to be reinitialized + if (this->logMode!=Globals::noMode) + reinitialize(); + + //Use now the new mode + this->logMode=mode; + + //Find the reader instance used for this new mode + reader=ReaderFactory::createReader(mode); + connect(reader, SIGNAL(statusbarChanged(const QString&)), this, SLOT(slotChangeStatusbar(const QString&))); + connect(reader, SIGNAL(logUpdated(int)), this, SLOT(slotLogUpdated(int))); + connect(reader, SIGNAL(openingProgressed(int)), this, SLOT(openingProgress(int))); + + connect(reader, SIGNAL(readingBegin()), this, SLOT(readingBegun())); + connect(reader, SIGNAL(readingFile(int)), this, SLOT(readingFile(int))); + connect(reader, SIGNAL(readingEnd()), this, SLOT(readingEnded())); + + + //Inform this reader that this LogManager is now its parent + reader->setLogManager(this); + + //Find the log files used for this kind of mode, and set them to our log manager + setLogFiles(ReaderFactory::createLogFiles(mode)); + +} + +void LogManager::readingBegun() { + //Inform the Loading Dialog on how many Files we have to load + loadingDialog->setFileCount(logFiles.count()); +} + +void LogManager::readingFile(int currentFile) { + //Inform the Loading Dialog that there is a new file loading + loadingDialog->setCurrentFile(currentFile); + + //Update the Progress Dialog label + loadingDialog->show(); + loadingDialog->progressBar()->setProgress(0); + loadingDialog->setLoadingLog(logMode->name); + +} + +void LogManager::readingEnded() { + //Reposition the count total to its default value + loadingDialog->setFileCount(0); +} + + +void LogManager::setParsingPaused(bool paused) { + parsingPaused=paused; + + //If we resume the parsing, then we reparse the files to know if new lines has append + if (parsingPaused==false) { + if (reader!=NULL) { + reader->relaunchLogChanged(); + } + } + +} + +bool LogManager::isParsingPaused() { + return(parsingPaused); +} + + +void LogManager::setTooltipEnabled(bool enabled) { + tooltipEnabled=enabled; +} + +bool LogManager::isTooltipEnabled() { + return(tooltipEnabled); +} + +void LogManager::setCurrent(bool cur) { + current=cur; + + //Reinitialize the new line count + newLinesSinceLastSelection=0; + +} + +bool LogManager::isCurrent() { + return(current); +} + + +void LogManager::setNewLinesDisplayed(bool displayed) { + newLinesDisplayed=displayed; +} + +bool LogManager::isNewLinesDisplayed() { + return(newLinesDisplayed); +} + +void LogManager::setGroupBy(groupByType group, int column) { + this->groupBy=group; + this->groupByColumn=column; +} + +groupByType LogManager::getGroupBy() { + return(groupBy); +} + +int LogManager::getGroupByColumn() { + return(groupByColumn); +} + + +void LogManager::slotSendMail() { + //If this LogManager is the currently displayed one + if (isCurrent()) { + + QString body(i18n("Here are my logs:\n")); + + body+=i18n("---------------------------------------\n"); + + QListViewItemIterator it(view->getLogList(), QListViewItemIterator::Selected); + + int i=0; + + QListViewItem* qtItem=it.current(); + while (qtItem!=NULL) { + LogListItem* item=static_cast (qtItem); + + body+= item->exportToText(); + body+='\n'; + + ++it; + qtItem=it.current(); + ++i; + } + body+=i18n("---------------------------------------\n"); + + //Too much lines selected + if (i>1000) { + KMessageBox::sorry(main, i18n("You have selected too many lines. Please only select important log lines."), i18n("Too Many Lines Selected")); + return; + } + + /* Parameters list of this method + const QString & to, + const QString & cc, + const QString & bcc, + const QString & subject, + const QString & body, + const QString & messageFile, + const QStringList & attachURLs, + const QCString & startup_id + */ + kapp->invokeMailer("", "", "", i18n("Log Lines of my problem"), body, "", QStringList(), kapp->startupId()); + + } +} + +void LogManager::slotCopyToClipboard() { + //If this LogManager is the currently displayed one + if (isCurrent()) { + kdDebug() << "Copy to the clipboard" << endl; + + QListView* listView=view->getLogList(); + + QListViewItemIterator it(listView, QListViewItemIterator::Selected); + + int nbCopied=0; + + LogListItem* item=static_cast (it.current()); + + QString text; + + while (item!=NULL) { + + //Copy the item content to the text string + text.append(item->exportToText()); + text.append('\n'); + + //Retrieve the next value + it++; + item=static_cast (it.current()); + nbCopied++; + + } + + //Copy text value only if it is not empty + if (nbCopied==0) { + emit changeStatusbar(i18n("No items selected. Nothing copied to clipboard.")); + } + else { + //Copy both to clipboard and X11-selection + QApplication::clipboard()->setText(text, QClipboard::Clipboard); + QApplication::clipboard()->setText(text, QClipboard::Selection); + + emit changeStatusbar(i18n("1 log line copied to clipboard.", "%n log lines copied to clipboard.", nbCopied)); + } + } + +} + + +void LogManager::synchronize(LogLineList* buffer) { + kdDebug() << "Synchronizing the buffer..." << endl; + + //Here to find a fucking bug + if (buffer==NULL) + kdDebug() << "ERROR! Buffer NULL" << endl; + else + kdDebug() << "Buffer not NULL" << endl; + + //Here to find a fucking bug + if (view==NULL) + kdDebug() << "ERROR! View NULL" << endl; + else + kdDebug() << "View not NULL" << endl; + + //Synchronize the buffer returned by the reader and get the last added line + LogLine* line=buffer->synchronize(view); + + //Here to find a fucking bug + if (line==NULL) + kdDebug() << "ERROR! Line NULL" << endl; + else + kdDebug() << "Line not NULL" << endl; + + //Here to find a fucking bug + if (view->getLogList()==NULL) + kdDebug() << "ERROR! KListView NULL" << endl; + else + kdDebug() << "KListView not NULL" << endl; + + if (isNewLinesDisplayed()==true) { + if (line!=NULL) { + line->ensureItemVisible(view->getLogList()); + } + } + + kdDebug() << "Buffer synchronized." << endl; + + +} + +//TODO Change the method name +void LogManager::slotOpenContextualMenu(QListViewItem* /*item*/, const QPoint& pos, int /*other*/) { + QPopupMenu menu(main); + + main->actionCollection()->action("reload")->plug(&menu); + main->actionCollection()->action("select_all")->plug(&menu); + + menu.insertSeparator(); + + main->actionCollection()->action("copy")->plug(&menu); + main->actionCollection()->action("file_save")->plug(&menu); + + menu.insertSeparator(); + + main->actionCollection()->action("enable_tooltip")->plug(&menu); + main->actionCollection()->action("display_new_line")->plug(&menu); + main->actionCollection()->action("group_by")->plug(&menu); + + menu.insertSeparator(); + + main->actionCollection()->action("details")->plug(&menu); + + menu.exec(pos); +} + +#include "logManager.moc" diff --git a/ksystemlog/src/logManager.h b/ksystemlog/src/logManager.h new file mode 100644 index 0000000..5a7004f --- /dev/null +++ b/ksystemlog/src/logManager.h @@ -0,0 +1,201 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef LOG_MANAGER_H +#define LOG_MANAGER_H + +//Qt includes +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +//KDE includes +#include + +//Project includes +#include "globals.h" + +#include "logLineList.h" +#include "logMode.h" +#include "logFile.h" +#include "logViewColumns.h" + +class Reader; +class View; +class KSystemLog; +class LoadingDialog; + +class LogManager; + +typedef QPtrList LogManagers; + +/** + * @author Nicolas Ternisien + * TODO !!!!!!!!!!!!! Separate OpeningFileName from LogManager !!!!!!!!!!!! + */ +class LogManager : public QObject { + Q_OBJECT + + public: + + LogManager(KSystemLog* main, LoadingDialog* progress); + + virtual ~LogManager(); + + View* getView(); + + Reader* getReader(); + + groupByType getGroupBy(); + int getGroupByColumn(); + + QTime& getLastUpdate(); + + LogMode* getLogMode(); + void initialize(LogMode* mode); + + void setParsingPaused(bool paused); + bool isParsingPaused(); + + void setTooltipEnabled(bool enabled); + bool isTooltipEnabled(); + + void setNewLinesDisplayed(bool displayed); + bool isNewLinesDisplayed(); + + void clearView(); + + int getIndex(); + + void setGroupBy(groupByType group, int column=-1); + + void setCurrent(bool cur); + bool isCurrent(); + + LogViewColumns* getColumns(); + + void reload(); + + void setLogFiles(LogFiles* files); + LogFiles& getLogFiles(); + + void synchronize(LogLineList* buffer); + + + void toggleFilterBar(); + + void saveConfig(); + + protected: + void reinitialize(); + + void initView(); + + public slots: + void slotExpandAll(); + void slotCollapseAll(); + + void slotCopyToClipboard(); + void slotFileSave(); + + void slotSendMail(); + + + protected slots: + + //TODO Change the method name + void slotOpenContextualMenu(QListViewItem *item, const QPoint& pos, int value); + + //Redirect the openingProgressed signal from Reader to connected object + void openingProgress(int percent); + + void slotLogUpdated(int lineCount); + + void slotSelectionChanged(); + + + void slotChangeCaption(const QString& message); + void slotChangeStatusbar(const QString& message); + + void slotDetails(QListViewItem *, const QPoint &, int); + + void readingBegun(); + void readingFile(int currentFile); + void readingEnded(); + + signals: + void changeTitle(View* view, const QString& label); + void changeTitle(View* view, const QIconSet& icon, const QString& label); + + void changeCaption(const QString& caption); + void changeStatusbar(const QString& message); + + void detailsCalled(); + + void GUIUpdated(); + + void selectionChanged(); + + void reloaded(); + void logUpdated(int); + + protected: + KSystemLog* main; + + QTime lastUpdate; + + LogMode* logMode; + + + bool sortOrder; + + int sortColumn; + + bool newLinesDisplayed; + bool parsingPaused; + bool tooltipEnabled; + + LogFiles logFiles; + + bool current; + + int newLinesSinceLastSelection; + + + LoadingDialog* loadingDialog; + + Reader* reader; + View* view; + + groupByType groupBy; + int groupByColumn; + + LogViewColumns* columns; + +}; + +#endif //LOG_MANAGER_H diff --git a/ksystemlog/src/logMode.cpp b/ksystemlog/src/logMode.cpp new file mode 100644 index 0000000..0e56a13 --- /dev/null +++ b/ksystemlog/src/logMode.cpp @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include "logMode.h" + + +LogMode::LogMode(int id, QString& nm, QString& ic) : + id(id), + name(nm), + icon(ic), + pixmap(SmallIcon(ic)) { + +} + +LogMode::LogMode(int id, QString name, const char* ic) : + id(id), + name(name), + icon(ic), + pixmap(SmallIcon(ic)) { + +} + + +LogMode::~LogMode() { + +} diff --git a/ksystemlog/src/logMode.h b/ksystemlog/src/logMode.h new file mode 100644 index 0000000..061c8e8 --- /dev/null +++ b/ksystemlog/src/logMode.h @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef LOG_MODE_H +#define LOG_MODE_H + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "globals.h" + + +class LogMode; + +typedef QPtrList LogModes; + + + +/** + * @author Nicolas Ternisien + */ +class LogMode { + + public: + LogMode(int id, QString& name, QString& icon); + LogMode(int id, QString name, const char* icon); + + + virtual ~LogMode(); + + int id; + + QString name; + + QString icon; + + QPixmap pixmap; +}; + + +#endif //LOG_MODE_H diff --git a/ksystemlog/src/logViewColumn.cpp b/ksystemlog/src/logViewColumn.cpp new file mode 100644 index 0000000..41a3f7a --- /dev/null +++ b/ksystemlog/src/logViewColumn.cpp @@ -0,0 +1,41 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include "logViewColumn.h" + + +LogViewColumn::LogViewColumn(QString& name, bool filtred, bool grouped) : + columnName(name), + isFiltred(filtred), + isGrouped(grouped) { +} + +LogViewColumn::LogViewColumn(QString name, bool filtred, bool grouped) : + columnName(name), + isFiltred(filtred), + isGrouped(grouped) { + +} + +LogViewColumn::~LogViewColumn() { + +} diff --git a/ksystemlog/src/logViewColumn.h b/ksystemlog/src/logViewColumn.h new file mode 100644 index 0000000..b874275 --- /dev/null +++ b/ksystemlog/src/logViewColumn.h @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef LOG_VIEW_COLUMN_H +#define LOG_VIEW_COLUMN_H + +#include +#include +#include +#include +#include +#include + +#include + +#include "globals.h" + +/** + * @author Nicolas Ternisien + */ +class LogViewColumn { + + public: + LogViewColumn(QString& name, bool filtred=true, bool grouped=true); + LogViewColumn(QString name, bool filtred=true, bool grouped=true); + + virtual ~LogViewColumn(); + + QString columnName; + + bool isFiltred; + bool isGrouped; + +}; + + +#endif //LOG_VIEW_COLUMN_H diff --git a/ksystemlog/src/logViewColumns.cpp b/ksystemlog/src/logViewColumns.cpp new file mode 100644 index 0000000..7defb48 --- /dev/null +++ b/ksystemlog/src/logViewColumns.cpp @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "logViewColumns.h" + +LogViewColumns::LogViewColumns() : + QValueVector(), + groupByLogLevel(true), + groupByDay(true), + groupByHour(true), + groupByLogFile(true) { + + +} + +void LogViewColumns::setGroupByLogLevel(bool value) { + groupByLogLevel=value; +} + +void LogViewColumns::setGroupByDay(bool value) { + groupByDay=value; +} + +void LogViewColumns::setGroupByHour(bool value) { + groupByHour=value; +} + +void LogViewColumns::setGroupByLogFile(bool value) { + groupByLogFile=value; +} + + +bool LogViewColumns::isGroupByLogLevel() { + return(groupByLogLevel); +} + +bool LogViewColumns::isGroupByDay() { + return(groupByDay); +} + +bool LogViewColumns::isGroupByHour() { + return(groupByHour); +} + +bool LogViewColumns::isGroupByLogFile() { + return(groupByLogFile); +} + diff --git a/ksystemlog/src/logViewColumns.h b/ksystemlog/src/logViewColumns.h new file mode 100644 index 0000000..c76b7ce --- /dev/null +++ b/ksystemlog/src/logViewColumns.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _LOG_VIEW_COLUMNS_H_ +#define _LOG_VIEW_COLUMNS_H_ + +#include +#include +#include +#include +#include +#include + +#include + +#include "globals.h" +#include "logViewColumn.h" + +/** + * @author Nicolas Ternisien + */ +class LogViewColumns : public QValueVector { + + public: + LogViewColumns(); + + bool isGroupByLogLevel(); + bool isGroupByDay(); + bool isGroupByHour(); + bool isGroupByLogFile(); + + void setGroupByLogLevel(bool value); + void setGroupByDay(bool value); + void setGroupByHour(bool value); + void setGroupByLogFile(bool value); + + private: + + bool groupByLogLevel; + bool groupByDay; + bool groupByHour; + bool groupByLogFile; + +}; + + +#endif diff --git a/ksystemlog/src/loggerDialog.cpp b/ksystemlog/src/loggerDialog.cpp new file mode 100644 index 0000000..1e41caf --- /dev/null +++ b/ksystemlog/src/loggerDialog.cpp @@ -0,0 +1,246 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "logLevel.h" +#include "globals.h" + +#include "loggerDialog.h" + +LoggerDialog::LoggerDialog(QWidget *parent, const char *name) : + LoggerDialogBase(parent, name) { + + connect(buttonOK, SIGNAL(clicked()), this, SLOT(sendMessage())); + + connect(tagActivation, SIGNAL(toggled(bool)), this, SLOT(tagActivationChanged(bool))); + connect(fileActivation, SIGNAL(toggled(bool)), this, SLOT(fileActivationChanged(bool))); + connect(messageActivation, SIGNAL(toggled(bool)), this, SLOT(messageActivationChanged(bool))); + + + connect(file, SIGNAL(textChanged(const QString&)), this, SLOT(textChanged(const QString&))); + connect(message, SIGNAL(textChanged(const QString&)), this, SLOT(textChanged(const QString&))); + connect(tag, SIGNAL(textChanged(const QString&)), this, SLOT(textChanged(const QString&))); + + buildMaps(); + + //Fill the priority ComboBox + QValueList prioKeys(priorities.keys()); + + QValueList::Iterator itPriority; + for (itPriority=prioKeys.begin(); itPriority!=prioKeys.end(); ++itPriority) { + priority->insertItem(priorityIcons[*itPriority], *itPriority); + } + + + //Select the right priority + for (int i=0; icount(); ++i) { + if (priority->text(i)==Globals::noticeLogLevel->name) { + priority->setCurrentItem(i); + break; + } + } + + //Fill the priority ComboBox + QValueList keys(facilities.keys()); + + QValueList::Iterator itFacility; + for (itFacility=keys.begin(); itFacility!=keys.end(); ++itFacility) { + facility->insertItem(*itFacility); + } + + //Select the right facility + for (int i=0; icount(); ++i) { + if (facility->text(i)==i18n("User")) { + facility->setCurrentItem(i); + break; + } + } + +} + +void LoggerDialog::buildMaps() { + + //Fill the facility map + facilities[i18n("Authentication")]="auth"; + facilities[i18n("Private Authentication")]="authpriv"; + facilities[i18n("Cron")]="cron"; + facilities[i18n("Daemon")]="daemon"; + facilities[i18n("FTP")]="ftp"; + facilities[i18n("Kernel")]="kern"; + facilities[i18n("LPR")]="lpr"; + facilities[i18n("Mail")]="mail"; + facilities[i18n("News")]="news"; + facilities[i18n("Syslog")]="syslog"; + facilities[i18n("User")]="user"; + facilities[i18n("UUCP")]="uucp"; + + facilities[i18n("Local 0")]="local0"; + facilities[i18n("Local 1")]="local1"; + facilities[i18n("Local 2")]="local2"; + facilities[i18n("Local 3")]="local3"; + facilities[i18n("Local 4")]="local4"; + facilities[i18n("Local 5")]="local5"; + facilities[i18n("Local 6")]="local6"; + facilities[i18n("Local 7")]="local7"; + + //Fill the priority map + priorities[Globals::debugLogLevel->name]="debug"; + priorities[Globals::informationLogLevel->name]="info"; + priorities[Globals::noticeLogLevel->name]="notice"; + priorities[Globals::warningLogLevel->name]="warning"; + priorities[Globals::errorLogLevel->name]="err"; + priorities[Globals::criticalLogLevel->name]="crit"; + priorities[Globals::alertLogLevel->name]="alert"; + priorities[Globals::emergencyLogLevel->name]="emerg"; + + //Fill the priority icon map + priorityIcons[Globals::debugLogLevel->name]=Globals::debugLogLevel->pixmap; + priorityIcons[Globals::informationLogLevel->name]=Globals::informationLogLevel->pixmap; + priorityIcons[Globals::noticeLogLevel->name]=Globals::noticeLogLevel->pixmap; + priorityIcons[Globals::warningLogLevel->name]=Globals::warningLogLevel->pixmap; + priorityIcons[Globals::errorLogLevel->name]=Globals::errorLogLevel->pixmap; + priorityIcons[Globals::criticalLogLevel->name]=Globals::criticalLogLevel->pixmap; + priorityIcons[Globals::alertLogLevel->name]=Globals::alertLogLevel->pixmap; + priorityIcons[Globals::emergencyLogLevel->name]=Globals::emergencyLogLevel->pixmap; + +} + +void LoggerDialog::textChanged(const QString& /*text*/) { + if (fileActivation->isChecked() && file->url().isEmpty()) { + buttonOK->setEnabled(false); + return; + } + + if (tagActivation->isChecked() && tag->text().isEmpty()) { + buttonOK->setEnabled(false); + return; + } + + if (messageActivation->isChecked() && message->text().isEmpty()) { + buttonOK->setEnabled(false); + return; + } + + buttonOK->setEnabled(true); + +} + +void LoggerDialog::tagActivationChanged(bool activation) { + tag->setEnabled(activation); + + textChanged(""); +} + +void LoggerDialog::fileActivationChanged(bool activation) { + file->setEnabled(activation); + + textChanged(""); +} + +void LoggerDialog::messageActivationChanged(bool activation) { + message->setEnabled(activation); + + textChanged(""); +} + + +void LoggerDialog::sendMessage() { + + KProcess process; + + //process.setUseShell(true); + process << "logger"; + + if (useProcessIdentifier->isChecked()) { + process << "-i"; + } + + if (tagActivation->isChecked()) { + process << "-t"; + + process << tag->text(); + } + + QString prioritySelected=priority->currentText(); + + if (prioritySelected!=Globals::noneLogLevel->name) { + process << "-p"; + + QString p(facilities[facility->currentText()]); + p+="."; + p+=priorities[priority->currentText()]; + + process << p; + } + + //If we read the content of a file + if (fileActivation->isChecked()) { + process << "-f"; + + process << file->url(); + } + //Else, the user types the content of its message + else { + //Remove bad "\n" characters + QString msg=message->text().replace("\n", " "); + + process << msg; + } + + bool launch=process.start( KProcess::Block, KProcess::Stdout ); + + //If the launching of the command failed + if (launch==false) { + KMessageBox::error(this, i18n("Unable to find the 'logger' command on your system. Please type 'logger' in Konsole to be sure that this command does not exist."), i18n("Command not found"), KMessageBox::Error); + return; + } + + if (process.normalExit()==false) { + KMessageBox::error(this, i18n("The 'logger' command has not been properly exited."), i18n("Execution problem"), KMessageBox::Error); + return; + } + + int returnCode=process.exitStatus(); + //No such file or directory + if (returnCode==1) { + KMessageBox::error(this, i18n("This file does not exist. Please choose a right file."), i18n("File not valid"), KMessageBox::Error); + return; + } + + //Hide the Logger Dialog + hide(); +} + + +#include "loggerDialog.moc" diff --git a/ksystemlog/src/loggerDialog.h b/ksystemlog/src/loggerDialog.h new file mode 100644 index 0000000..503de62 --- /dev/null +++ b/ksystemlog/src/loggerDialog.h @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef LOGGER_DIALOG_H +#define LOGGER_DIALOG_H + + +#include +#include + + +#include "loggerDialogBase.h" + +class LoggerDialog: public LoggerDialogBase { + Q_OBJECT + public: + LoggerDialog(QWidget *parent = 0, const char *name = 0); + + protected slots: + void sendMessage(); + + void textChanged(const QString&); + + void tagActivationChanged(bool activation); + void fileActivationChanged(bool activation); + void messageActivationChanged(bool activation); + + protected: + void buildMaps(); + + QMap facilities; + + QMap priorities; + QMap priorityIcons; + +}; + +#endif diff --git a/ksystemlog/src/loggerDialogBase.ui b/ksystemlog/src/loggerDialogBase.ui new file mode 100644 index 0000000..50d7ab1 --- /dev/null +++ b/ksystemlog/src/loggerDialogBase.ui @@ -0,0 +1,453 @@ + +LoggerDialogBase +Dialog that allows the user to send a message with the logger command +Nicolas Ternisien + + + loggerDialogBase + + + + 0 + 0 + 475 + 362 + + + + + 300 + 300 + + + + Log Message + + + true + + + false + + + + unnamed + + + + buttonGroup1 + + + + 7 + 5 + 0 + 0 + + + + Message + + + false + + + false + + + + unnamed + + + + message + + + 2 + + + + + messageActivation + + + &Message: + + + true + + + + + file + + + false + + + + 5 + 5 + 1 + 0 + + + + + + fileActivation + + + &File Content: + + + + + + + groupBox1 + + + Properties + + + + unnamed + + + + layout9_2 + + + + unnamed + + + + textLabel2_2 + + + + 1 + 0 + 0 + 0 + + + + &Facility: + + + facility + + + + + spacer3_2_2 + + + Horizontal + + + Expanding + + + + 84 + 24 + + + + + + facility + + + + 5 + 0 + 1 + 0 + + + + + + + + layout9 + + + + unnamed + + + + textLabel2 + + + + 1 + 0 + 0 + 0 + + + + &Priority: + + + priority + + + + + spacer3_2 + + + Horizontal + + + Expanding + + + + 84 + 24 + + + + + + priority + + + + 5 + 0 + 1 + 0 + + + + + + + + + + options + + + + 7 + 0 + 0 + 0 + + + + Options + + + + unnamed + + + + layout11 + + + + unnamed + + + + tagActivation + + + TabFocus + + + &Tag: + + + + + spacer3_2_2_2 + + + Horizontal + + + Minimum + + + + 100 + 24 + + + + + + tag + + + false + + + + 7 + 0 + 5 + 0 + + + + false + + + + + + + useProcessIdentifier + + + Log Process &Identifier + + + true + + + + + + + spacer7 + + + Vertical + + + Expanding + + + + 31 + 41 + + + + + + layout6 + + + + unnamed + + + + loggerManual + + + + 7 + 0 + 0 + 0 + + + + <qt><a href="man:/logger">Logger Manual</a></qt> + + + + + Horizontal Spacing2 + + + Horizontal + + + Expanding + + + + 155 + 26 + + + + + + buttonOK + + + false + + + &OK + + + + + + true + + + true + + + + + buttonCancel + + + &Cancel + + + + + + true + + + + + + + + + buttonCancel + clicked() + loggerDialogBase + accept() + + + tagActivation + pressed() + tag + <No) + + + + useProcessIdentifier + buttonOK + buttonCancel + loggerManual + + + + klineedit.h + kurlrequester.h + klineedit.h + kpushbutton.h + kcombobox.h + kcombobox.h + klineedit.h + kactivelabel.h + + diff --git a/ksystemlog/src/main.cpp b/ksystemlog/src/main.cpp new file mode 100644 index 0000000..0562304 --- /dev/null +++ b/ksystemlog/src/main.cpp @@ -0,0 +1,90 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#include "ksystemlog.h" + +#include +#include +#include +#include +#include + +static const char description[]=I18N_NOOP("System Logs Viewer Tool for KDE"); + +static const char version[]="0.3.2"; + +static KCmdLineOptions options[] = { + { "+[URL]", I18N_NOOP( "Document to open" ), 0 }, + KCmdLineLastOption +}; + + +int main(int argc, char **argv) { + KAboutData about( "ksystemlog", + I18N_NOOP("KSystemlog"), + version, + description, + KAboutData::License_GPL, + "(C) 2005, Nicolas Ternisien", + 0, + 0, + "nicolas.ternisien@gmail.com" + ); + + about.addAuthor("Nicolas Ternisien", 0, "nicolas.ternisien@gmail.com" ); + + about.addCredit("Patrick Decker", I18N_NOOP("Ideas, Code improvements" ), "patrick@decker.org" ); + //about.addCredit(I18N_NOOP("French trains between Paris and Rouen"), I18N_NOOP("Often late, so I have time to improve KSystemLog ;-)" ), "info@sncf.fr" ); + + KCmdLineArgs::init(argc, argv, &about); + KCmdLineArgs::addCmdLineOptions(options); + KApplication app; + + //Register ourselves as a DCOP client + app.dcopClient()->registerAs(app.name(), false); + + //See if we are starting with session management + if (app.isRestored()) { + RESTORE(KSystemLog); + } + else { + //No session... Just start up normally + KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); + if (args->count() == 0) { + KSystemLog *widget = new KSystemLog(); + widget->show(); + } + else { + int i = 0; + for (; i < args->count(); i++) { + KSystemLog *widget = new KSystemLog(); + widget->show(); + + //Useless + //widget->load(args->url(i)); + + } + } + args->clear(); + } + + return(app.exec()); +} diff --git a/ksystemlog/src/options.cpp b/ksystemlog/src/options.cpp new file mode 100644 index 0000000..a99ff49 --- /dev/null +++ b/ksystemlog/src/options.cpp @@ -0,0 +1,425 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#include +#include + + +#include +#include +#include +#include +#include +#include + +#include "ksystemlogConfig.h" + +#include "options.h" + + +Options::Options(QWidget* parent, const char *name, bool modal) : + KDialogBase(IconList, i18n("Configuration"), Ok|Apply|Cancel, Ok, parent, name, modal, true) + { + + this->setMinimumSize(480, 500); + + setupGeneralOptions(); + + setupSystemOptions(); + setupBootAuthenticationOptions(); + setupKernelOptions(); + setupCronOptions(); + setupDaemonOptions(); + + setupXorgOptions(); + setupAcpidOptions(); + setupCupsOptions(); + + setupApacheOptions(); + setupPostfixOptions(); + + disableApplyButton(); + + connect(this, SIGNAL(applyClicked()), this, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), this, SLOT(saveConfig())); + + + //Really update size of this Configuration Dialog Box + this->adjustSize(); +} + +Options::~Options() { + //TODO Delete option frames +} + + +void Options::disableApplyButton() { + this->enableButtonApply(false); +} + +void Options::saveConfig() { + kdDebug() << "Saving config from Main Config Dialog..." << endl; + + KSystemLogConfig::writeConfig(); + + kdDebug() << "Configuration synchronized" << endl; + + disableApplyButton(); +} + +void Options::setupGeneralOptions() { + QFrame* frame=addPage(i18n("General"), i18n("General"), DesktopIcon(KSYSTEMLOG_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container = new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + generalOptions = new GeneralOptions(container->viewport()); + container->addChild(generalOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(generalOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), generalOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), generalOptions, SLOT(saveConfig())); + +} + + +void Options::setupBootAuthenticationOptions() { + QFrame* frame=addPage(i18n("Boot / Authentication"), i18n("Boot & Authentication Logs"), DesktopIcon(BOOT_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container = new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + bootAuthenticationOptions = new BootAuthenticationOptions(container->viewport()); + container->addChild(bootAuthenticationOptions, 0, 0); + + connect(bootAuthenticationOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), bootAuthenticationOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), bootAuthenticationOptions, SLOT(saveConfig())); + +} + + +void Options::setupSystemOptions() { + QFrame* frame=addPage(i18n("System Log"), i18n("System Log"), DesktopIcon(SYSTEM_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + + + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + systemOptions=new SystemOptions(container->viewport()); + container->addChild(systemOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(systemOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), systemOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), systemOptions, SLOT(saveConfig())); +} + +void Options::setupKernelOptions() { + QFrame* frame=addPage(i18n("Kernel Log"), i18n("Kernel Log"), DesktopIcon(KERNEL_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + kernelOptions=new KernelOptions(container->viewport()); + container->addChild(kernelOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(kernelOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), kernelOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), kernelOptions, SLOT(saveConfig())); +} + +void Options::setupCronOptions() { + QFrame* frame=addPage(i18n("Cron Log"), i18n("Cron Log"), DesktopIcon(CRON_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + cronOptions=new CronOptions(container->viewport()); + container->addChild(cronOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(cronOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), cronOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), cronOptions, SLOT(saveConfig())); +} + +void Options::setupDaemonOptions() { + QFrame* frame=addPage(i18n("Daemons Log"), i18n("Daemons Log"), DesktopIcon(DAEMON_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + daemonOptions=new DaemonOptions(container->viewport()); + container->addChild(daemonOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(daemonOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), daemonOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), daemonOptions, SLOT(saveConfig())); +} + +void Options::setupXorgOptions() { + QFrame* frame=addPage(i18n("X.org Log"), i18n("X.org Log"), DesktopIcon(XORG_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + xorgOptions=new XorgOptions(container->viewport()); + container->addChild(xorgOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(xorgOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), xorgOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), xorgOptions, SLOT(saveConfig())); + +} + + +void Options::setupAcpidOptions() { + QFrame* frame=addPage(i18n("ACPI Log"), i18n("ACPI Daemon Log"), DesktopIcon(ACPID_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + acpidOptions=new AcpidOptions(container->viewport()); + container->addChild(acpidOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(acpidOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), acpidOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), acpidOptions, SLOT(saveConfig())); + +} + + +void Options::setupCupsOptions() { + QFrame* frame=addPage(i18n("CUPS Log"), i18n("CUPS & CUPS Web Server Log"), DesktopIcon(CUPS_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + cupsOptions=new CupsOptions(container->viewport()); + container->addChild(cupsOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(cupsOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), cupsOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), cupsOptions, SLOT(saveConfig())); + +} + +void Options::setupApacheOptions() { + QFrame* frame=addPage(i18n("Apache Log"), i18n("Apache and Web Access Logs"), DesktopIcon(APACHE_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + apacheOptions=new ApacheOptions(container->viewport()); + container->addChild(apacheOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(apacheOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), apacheOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), apacheOptions, SLOT(saveConfig())); + +} + + +void Options::setupPostfixOptions() { + QFrame* frame=addPage(i18n("Postfix Log"), i18n("Postfix Log"), DesktopIcon(POSTFIX_MODE_ICON)); + + QGridLayout* frameLayout=new QGridLayout(frame); + frameLayout->setSpacing(0); + frameLayout->setMargin(0); + frameLayout->setAutoAdd(true); + + QScrollView* container=new QScrollView(frame); + container->setResizePolicy(QScrollView::AutoOneFit); + container->setFrameShadow(QScrollView::Plain); + container->setFrameShape(QScrollView::MenuBarPanel); + container->setLineWidth(0); + container->setMidLineWidth(0); + + postfixOptions=new PostfixOptions(container->viewport()); + container->addChild(postfixOptions, 0, 0); + + //Done by the setAutoAdd method + //frameLayout->addWidget(container, 0, 0, 0); + + connect(postfixOptions, SIGNAL(optionsChanged(bool)), this, SLOT(optionsChanged(bool))); + + connect(this, SIGNAL(applyClicked()), postfixOptions, SLOT(saveConfig())); + connect(this, SIGNAL(okClicked()), postfixOptions, SLOT(saveConfig())); +} + + +void Options::optionsChanged(bool valid) { + if (valid==false) { + this->enableButtonApply(false); + this->enableButtonOK(false); + } + else { + //If all tab options are valid, then, we reactivate the Apply and OK buttons + if (generalOptions->isValid() && + systemOptions->isValid() && + cronOptions->isValid() && + daemonOptions->isValid() && + kernelOptions->isValid() && + xorgOptions->isValid() && + acpidOptions->isValid() && + cupsOptions->isValid() && + bootAuthenticationOptions->isValid()) { + + this->enableButtonApply(true); + this->enableButtonOK(true); + + } + else { + this->enableButtonApply(true); + this->enableButtonOK(true); + } + } +} + +#include "options.moc" + diff --git a/ksystemlog/src/options.h b/ksystemlog/src/options.h new file mode 100644 index 0000000..4a82ae0 --- /dev/null +++ b/ksystemlog/src/options.h @@ -0,0 +1,101 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#ifndef OPTIONS_H +#define OPTIONS_H + +#include +#include + +#include +#include + + +#include "globals.h" + +#include "generalOptions.h" + +#include "systemOptions.h" +#include "kernelOptions.h" +#include "cronOptions.h" +#include "daemonOptions.h" + +#include "xorgOptions.h" + +#include "bootAuthenticationOptions.h" +#include "acpidOptions.h" +#include "cupsOptions.h" + +#include "apacheOptions.h" +#include "postfixOptions.h" + +class Options: public KDialogBase { + Q_OBJECT + + public: + Options(QWidget *parent, const char *name, bool modal); + + ~Options(); + public slots: + void saveConfig(); + + void optionsChanged(bool valid); + + void disableApplyButton(); + + private: + GeneralOptions* generalOptions; + SystemOptions* systemOptions; + KernelOptions* kernelOptions; + CronOptions* cronOptions; + DaemonOptions* daemonOptions; + + XorgOptions* xorgOptions; + + BootAuthenticationOptions* bootAuthenticationOptions; + + AcpidOptions* acpidOptions; + CupsOptions* cupsOptions; + + ApacheOptions* apacheOptions; + PostfixOptions* postfixOptions; + + void setupGeneralOptions(); + void setupSystemOptions(); + void setupKernelOptions(); + void setupCronOptions(); + void setupDaemonOptions(); + + void setupXorgOptions(); + + void setupBootAuthenticationOptions(); + + void setupAcpidOptions(); + void setupCupsOptions(); + + void setupApacheOptions(); + + void setupPostfixOptions(); + + +}; + +#endif //OPTIONS_H diff --git a/ksystemlog/src/parentLogLine.cpp b/ksystemlog/src/parentLogLine.cpp new file mode 100644 index 0000000..571110b --- /dev/null +++ b/ksystemlog/src/parentLogLine.cpp @@ -0,0 +1,162 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include "parentLogLine.h" + +ParentLogLine::ParentLogLine( + QDate& date, QTime& time, QStringList& list, QString& file, LogLevel* level, int type, + groupByType group, int column, LogViewColumns* cols) : + + LogLine(date, time, list, file, level, type), + groupBy(group), + groupByColumn(column), + columns(cols) { + + +} + +ParentLogLine::~ParentLogLine() { + +} + +groupByType ParentLogLine::getGroupBy() { + return(groupBy); +} + +int ParentLogLine::getGroupByColumn() { + return(groupByColumn); +} + +LogViewColumns* ParentLogLine::getColumns() { + return(columns); +} + +void ParentLogLine::addChild(LogLine* child) { + children.append(child); +} + +bool ParentLogLine::isParentLogLine() { + return(true); +} + +bool ParentLogLine::isChild(LogLine* child) { + //Group by Log Level + if (groupBy==GROUP_BY_LOG_LEVEL) { + if (this->getLogLevel()==child->getLogLevel()) + return(true); + else + return(false); + } + //Group by Day + else if (groupBy==GROUP_BY_DAY) { + if (getTime().date()==child->getTime().date()) + return(true); + else + return(false); + } + //Group by Hour + else if (groupBy==GROUP_BY_HOUR) { + QTime parentTime=getTime().time(); + QTime childTime=child->getTime().time(); + + if (getTime().date()==child->getTime().date() && parentTime.hour()==childTime.hour()) + return(true); + else + return(false); + + } + //Group by Log File + else if (groupBy==GROUP_BY_LOG_FILE) { + if (getOriginalFile()==child->getOriginalFile()) + return(true); + else + return(false); + } + //Group by specific column + else { + + int index=ParentLogLine::getGroupedColumnIndex(columns, getGroupByColumn()); + + QStringList& list=getItemList(); + if (index<0 || index>=(int)list.size()) + return(false); + else { + if (list[index]==child->getItemList()[index]) + return(true); + else + return(false); + } + + } + + +} + +int ParentLogLine::getGroupedColumnIndex(LogViewColumns* columns, int column) { + LogViewColumns::Iterator it = columns->begin(); + + //If there is an error in the parameter + if (column==-1) { + kdDebug() << "Bad Grouped Index " << endl; + return(-1); + } + + int i=0; + int found=0; + bool ok=false; + + LogViewColumn* logColumn; + while(it!=columns->end()) { + logColumn=*it; + if (logColumn->isFiltred==true) { + + if (found==column) { + ok=true; + break; + } + + found++; + } + + i++; + it++; + } + + if (ok==false) { + kdDebug() << "Grouped Column Index Not found" << endl; + return(-1); + } + else { + //We substract 1 because of the Date column (always here!) + return(i-1); + } + +} + +void ParentLogLine::removeChild(LogLine* child) { + children.remove(child); +} + +bool ParentLogLine::hasChildren() { + return(children.count()!=0); +} + diff --git a/ksystemlog/src/parentLogLine.h b/ksystemlog/src/parentLogLine.h new file mode 100644 index 0000000..18cef3f --- /dev/null +++ b/ksystemlog/src/parentLogLine.h @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _PARENT_LOG_LINE_H_ +#define _PARENT_LOG_LINE_H_ + +//Qt includes +#include + +//KDE includes +#include + +#include "globals.h" + +#include "logLine.h" +#include "logViewColumn.h" +#include "logViewColumns.h" + + +/** + * @author Nicolas Ternisien + */ +class ParentLogLine : public LogLine { + + public: + ParentLogLine( + QDate& date, QTime& time, QStringList& list, QString& originalFile, LogLevel* level, int tpe, + groupByType group, int column, LogViewColumns* cols + ); + + virtual ~ParentLogLine(); + + void addChild(LogLine* child); + void removeChild(LogLine* child); + + bool isChild(LogLine* child); + bool hasChildren(); + + groupByType getGroupBy(); + int getGroupByColumn(); + LogViewColumns* getColumns(); + + virtual bool isParentLogLine(); + + static int getGroupedColumnIndex(LogViewColumns* columns, int column); + + protected: + QPtrList children; + + groupByType groupBy; + int groupByColumn; + LogViewColumns* columns; +}; + +#endif diff --git a/ksystemlog/src/parsingHelper.cpp b/ksystemlog/src/parsingHelper.cpp new file mode 100644 index 0000000..3a44e05 --- /dev/null +++ b/ksystemlog/src/parsingHelper.cpp @@ -0,0 +1,168 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include "parsingHelper.h" + +QMap ParsingHelper::mapMonths; + +QMap ParsingHelper::mapHTTPResponse; + +QDateTime ParsingHelper::parseDateTimeFromHTTP(QString& logLine) { + + //Format example : [22/May/2005:01:50:34 +0200] + + QString day=logLine.mid(1,2); + QString month=logLine.mid(4,3); + QString year=logLine.mid(8,4); + + QDate date(year.toInt(), ParsingHelper::parseMonthNumber(month), day.toInt()); + + QString hour=logLine.mid(13,2); + QString min=logLine.mid(16,2); + QString sec=logLine.mid(19,2); + + QTime time(hour.toInt(), min.toInt(), sec.toInt()); + + //QString zone=logLine.mid(22,5); + + return(QDateTime(date, time)); +} + + +/** + * Improve speed of this method with a static Map in the class + */ +int ParsingHelper::parseMonthNumber(QString& string) { + //If this is the first time we call this method, we instanciate the map + if (ParsingHelper::mapMonths.isEmpty()) { + ParsingHelper::mapMonths["Jan"]=1; + ParsingHelper::mapMonths["Feb"]=2; + ParsingHelper::mapMonths["Mar"]=3; + ParsingHelper::mapMonths["Apr"]=4; + ParsingHelper::mapMonths["May"]=5; + ParsingHelper::mapMonths["Jun"]=6; + ParsingHelper::mapMonths["Jul"]=7; + ParsingHelper::mapMonths["Aug"]=8; + ParsingHelper::mapMonths["Sep"]=9; + ParsingHelper::mapMonths["Oct"]=10; + ParsingHelper::mapMonths["Nov"]=11; + ParsingHelper::mapMonths["Dec"]=12; + } + + QMap::Iterator it; + + //Search the month name in the map + it=ParsingHelper::mapMonths.find(string); + + if (it!=ParsingHelper::mapMonths.end()) + return(*it); + else + return(1); + +} + +QString ParsingHelper::parseSize(const QString& stringSize) { + long size=stringSize.toLong(); + + if (size<1024) + return(i18n("Size format", "%1 B").arg(size)); + else if (size<1024*1024) { + double newSize=size / 1024.; + QString strNewSize; + strNewSize.sprintf("%0.2f", newSize); + return(i18n("Size format", "%1 KB").arg(strNewSize)); + } + else { + double newSize=size / (1024.*1024.); + QString strNewSize; + strNewSize.sprintf("%0.2f", newSize); + return(i18n("Size format", "%1 MB").arg(strNewSize)); + } +} + +QString ParsingHelper::parseHTTPResponse(const QString& response) { + if (ParsingHelper::mapHTTPResponse.isEmpty()) { + //1xx Responses + mapHTTPResponse["100"]="Continue"; + mapHTTPResponse["101"]="Switching Protocols"; + + //2xx Responses + mapHTTPResponse["200"]="OK"; + mapHTTPResponse["201"]="Created"; + mapHTTPResponse["202"]="Accepted"; + mapHTTPResponse["203"]="Non-Authoritative Information"; + mapHTTPResponse["204"]="No Content"; + mapHTTPResponse["205"]="Reset Content"; + mapHTTPResponse["206"]="Partial Content"; + + //3xx Responses + mapHTTPResponse["300"]="OK"; + mapHTTPResponse["301"]="Moved Permanently"; + mapHTTPResponse["302"]="Found"; + mapHTTPResponse["303"]="See Other"; + mapHTTPResponse["304"]="Not Modified"; + mapHTTPResponse["305"]="Use Proxy"; + mapHTTPResponse["306"]="(Unused)"; + mapHTTPResponse["307"]="Temporary Redirect"; + + //4xx Responses + mapHTTPResponse["400"]="Bad Request"; + mapHTTPResponse["401"]="Unauthorized"; + mapHTTPResponse["402"]="Payment Required"; + mapHTTPResponse["403"]="Forbidden"; + mapHTTPResponse["404"]="Not Found"; + mapHTTPResponse["405"]="Method Not Allowed"; + mapHTTPResponse["406"]="Not Acceptable"; + mapHTTPResponse["407"]="Proxy Authentication Required"; + mapHTTPResponse["408"]="Request Timeout"; + mapHTTPResponse["409"]="Conflict"; + mapHTTPResponse["410"]="Gone"; + mapHTTPResponse["411"]="Length Required"; + mapHTTPResponse["412"]="Precondition Failed"; + mapHTTPResponse["413"]="Request Entity Too Large"; + mapHTTPResponse["414"]="Request-URI Too Long"; + mapHTTPResponse["415"]="Unsupported Media Type"; + mapHTTPResponse["416"]="Requested Range Not Satisfiable"; + mapHTTPResponse["417"]="Expectation Failed"; + + //5xx Responses + mapHTTPResponse["500"]="Internal Server Error"; + mapHTTPResponse["501"]="Not Implemented"; + mapHTTPResponse["502"]="Bad Gateway"; + mapHTTPResponse["503"]="Service Unavailable"; + mapHTTPResponse["504"]="Gateway Timeout"; + mapHTTPResponse["505"]="HTTP Version Not Supported"; + } + + //Search the response string in the map + QMap::Iterator it=ParsingHelper::mapHTTPResponse.find(response); + if (it!=ParsingHelper::mapHTTPResponse.end()) + return(QString("%1 %2").arg(response).arg(*it)); + else + return(response); + +} + +QString ParsingHelper::parseAgent(const QString& agent) { + return(agent); +} + diff --git a/ksystemlog/src/parsingHelper.h b/ksystemlog/src/parsingHelper.h new file mode 100644 index 0000000..9c25f4b --- /dev/null +++ b/ksystemlog/src/parsingHelper.h @@ -0,0 +1,79 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _PARSING_HELPER_H_ +#define _PARSING_HELPER_H_ + +#include +#include +#include +#include +#include + +#include +#include + + +#include "globals.h" + +#include "logListItem.h" +#include "logLine.h" +#include "logManager.h" + +#include "logFile.h" +#include "logViewColumn.h" +#include "logViewColumns.h" + +/** + * @author Nicolas Ternisien + */ +class ParsingHelper { + + + public: + /** + * Returns the months number represented by the 3 first letters in the QString parameter + */ + static int parseMonthNumber(QString& month); + + static QDateTime parseDateTimeFromHTTP(QString& logLine); + + static QString parseSize(const QString& size); + + static QString parseHTTPResponse(const QString& response); + + static QString parseAgent(const QString& agent); + + + + private: + + /** + * Map used by the static parseMonthNumber() method + */ + static QMap mapMonths; + + /** + * Map used by the static parseMonthNumber() method + */ + static QMap mapHTTPResponse; +}; + +#endif diff --git a/ksystemlog/src/postfix/Makefile.am b/ksystemlog/src/postfix/Makefile.am new file mode 100644 index 0000000..b608b89 --- /dev/null +++ b/ksystemlog/src/postfix/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_postfix.la +libksystemlog_postfix_la_LDFLAGS = $(all_libraries) +libksystemlog_postfix_la_SOURCES = postfixOptions.cpp +noinst_HEADERS = postfixOptions.h diff --git a/ksystemlog/src/postfix/postfixOptions.cpp b/ksystemlog/src/postfix/postfixOptions.cpp new file mode 100644 index 0000000..a2a0f00 --- /dev/null +++ b/ksystemlog/src/postfix/postfixOptions.cpp @@ -0,0 +1,100 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +//Project includes +#include "postfixOptions.h" +#include "ksystemlogConfig.h" + +PostfixOptions::PostfixOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display Postfix Logs. This list also determine the order in which the files are read.

"); + fileList=new SpecificFileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +PostfixOptions::~PostfixOptions() { + +} + +bool PostfixOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void PostfixOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void PostfixOptions::saveConfig() { + kdDebug() << "Saving config from Daemon Options..." << endl; + + QStringList stringList; + QValueList valueList; + + fileList->saveConfig(stringList, valueList); + + KSystemLogConfig::setPostfixPaths(stringList); + KSystemLogConfig::setPostfixLevels(valueList); +} + +void PostfixOptions::readConfig() { + QStringList stringList=KSystemLogConfig::postfixPaths(); + QValueList valueList=KSystemLogConfig::postfixLevels(); + + fileList->readConfig(stringList, valueList); +} + +#include "postfixOptions.moc" diff --git a/ksystemlog/src/postfix/postfixOptions.h b/ksystemlog/src/postfix/postfixOptions.h new file mode 100644 index 0000000..e8006c0 --- /dev/null +++ b/ksystemlog/src/postfix/postfixOptions.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _POSTFIX_OPTIONS_H_ +#define _POSTFIX_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "specificFileList.h" +#include "logLevel.h" + +class PostfixOptions : public QWidget { + Q_OBJECT + public: + PostfixOptions(QWidget *parent = 0); + ~PostfixOptions(); + + bool isValid(); + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + SpecificFileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/reader.cpp b/ksystemlog/src/reader.cpp new file mode 100644 index 0000000..37cbc97 --- /dev/null +++ b/ksystemlog/src/reader.cpp @@ -0,0 +1,159 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "reader.h" + +#include "view.h" + +#include + +#include +#include +#include +#include + +Reader::Reader(QObject *parent, const char *name) : + QObject(parent, name), + logManager(NULL) + { + + watch=new KDirWatch(); + kdDebug() << watch->internalMethod() << endl; + connect(watch, SIGNAL(dirty(const QString&)), this, SLOT(logChanged(const QString&))); +} + +Reader::~Reader() { + /** + * Remove the watching on the monitored files + */ + LogFiles& files=logManager->getLogFiles(); + LogFiles::iterator it; + + for(it=files.begin(); it!=files.end(); ++it) { + LogFile* file=*it; + + kdDebug() << "Remove the monitoring on file : " << file->url.path() << endl; + watch->removeFile(file->url.path()); + } + + //Delete the watching object + delete watch; +} + + +void Reader::setLogManager(LogManager* manager) { + logManager=manager; +} + +void Reader::watchLogFiles() { + LogFiles& files=logManager->getLogFiles(); + LogFiles::iterator it; + + for(it=files.begin(); it!=files.end(); ++it) { + LogFile* file=*it; + + watchLogFile(file); + } + +} + +void Reader::watchLogFile(LogFile* file) { + kdDebug() << "Monitoring file : " << file->url.path() << endl; + watch->addFile(file->url.path()); +} + +void Reader::logChanged(LogFile* file) { + kdDebug() << "Reader: " << file->url.path() << " has changed !" << endl; +} + +void Reader::relaunchLogChanged() { + kdDebug() << "Relaunch log changed" << endl; + + LogFiles& files=logManager->getLogFiles(); + LogFiles::iterator it; + + for(it=files.begin(); it!=files.end(); ++it) { + LogFile* file=*it; + + logChanged(file); + } + +} + + +void Reader::logChanged(const QString& name) { + if (!logManager->isParsingPaused()) { + LogFiles& files=logManager->getLogFiles(); + LogFiles::iterator it; + + for(it=files.begin(); it!=files.end(); ++it) { + LogFile* file=*it; + + if (file->url.path() == name) { + logChanged(file); + } + } + } +} + + +void Reader::closeFile(QFile* file) { + file->close(); + delete file; +} + +QFile* Reader::openFile(QString name) { + QString message; + + KURL testURL(name); + + if (testURL.isValid()==false) { + message=i18n("This file is not valid. Please adjust it in the settings of KSystemLog."); + KMessageBox::error(logManager->getView(), message, i18n("The File Does Not Exist"), KMessageBox::Notify); + emit statusbarChanged(message); + return(NULL); + } + + QString path=testURL.path(); + + QFile* file=new QFile(path); + + //If the file does not exist + if(! file->exists()) { + message=i18n("The file '%1' does not exist.").arg(name); + KMessageBox::error(logManager->getView(), message, i18n("The File Does Not Exist"), KMessageBox::Notify); + emit statusbarChanged(message); + return(NULL); + } + + //If we can open the file + if( !file->open( IO_ReadOnly ) ) { + //It could not be opened + message=i18n("You do not have sufficient permissions to read '%1'.").arg(name); + KMessageBox::error(logManager->getView(), message, i18n("Insufficient Permissions"), KMessageBox::Notify); + emit statusbarChanged(message); + return(NULL); + } + + return(file); + +} + +#include "reader.moc" diff --git a/ksystemlog/src/reader.h b/ksystemlog/src/reader.h new file mode 100644 index 0000000..5b41438 --- /dev/null +++ b/ksystemlog/src/reader.h @@ -0,0 +1,96 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _READER_H_ +#define _READER_H_ + +#include +#include +#include +#include +#include + +#include +#include + + +#include "globals.h" + +#include "logListItem.h" +#include "logLine.h" +#include "logManager.h" + +#include "logFile.h" +#include "logViewColumn.h" +#include "logViewColumns.h" + +class View; + +/** + * @author Nicolas Ternisien + */ +class Reader : public QObject { + + Q_OBJECT + + public: + Reader(QObject* parent=NULL, const char* name=NULL); + + ~Reader(); + + virtual void readLog()=0; + virtual void initColumns(LogViewColumns* columns)=0; + + virtual void logChanged(LogFile* logFile); + + void setLogManager(LogManager* manager); + + void watchLogFile(LogFile* file); + void watchLogFiles(); + + void relaunchLogChanged(); + + + protected: + QFile* openFile(QString name); + void closeFile(QFile* file); + + public slots: + void logChanged(const QString&); + + signals: + void statusbarChanged(const QString& message); + void logUpdated(int lineTotal); + + void openingProgressed(int percent); + + void readingBegin(); + void readingFile(int currentFile); + void readingEnd(); + + protected: + + LogManager* logManager; + + KDirWatch* watch; + +}; + +#endif diff --git a/ksystemlog/src/readerFactory.cpp b/ksystemlog/src/readerFactory.cpp new file mode 100644 index 0000000..8811f4c --- /dev/null +++ b/ksystemlog/src/readerFactory.cpp @@ -0,0 +1,489 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + + +#include "ksystemlogConfig.h" +#include "systemReader.h" +#include "xorgReader.h" +#include "cronReader.h" +#include "acpidReader.h" + +#include "cupsReader.h" +#include "cupsAccessReader.h" + +#include "apacheReader.h" +#include "apacheAccessReader.h" + +#include "sambaReader.h" + +#include "readerFactory.h" + +KURL ReaderFactory::lastOpenedURL; + +Reader* ReaderFactory::createReader(LogMode* logMode) { + + /** + * Using System Mode in the current view + */ + if (logMode==Globals::systemMode) { + Reader* reader=new SystemReader(NULL, "system_reader"); + return(reader); + } + + /** + * Using Boot Mode in the current view + */ + else if (logMode==Globals::bootMode) { + Reader* reader=new SystemReader(NULL, "boot_reader"); + return(reader); + } + + /** + * Using Authentication Mode in the current view + */ + else if (logMode==Globals::authenticationMode) { + Reader* reader=new SystemReader(NULL, "authentication_reader"); + return(reader); + } + + /** + * Using Kernel Mode in the current view + */ + else if (logMode==Globals::kernelMode) { + Reader* reader=new SystemReader(NULL, "kernel_reader"); + return(reader); + } + + /** + * Using Daemon Mode in the current view + */ + else if (logMode==Globals::daemonMode) { + Reader* reader=new SystemReader(NULL, "daemon_reader"); + return(reader); + } + + /** + * Using Cron Mode in the current view + */ + else if (logMode==Globals::cronMode) { + Reader* reader=new CronReader(NULL, "cron_reader"); + return(reader); + } + + /** + * Using Cron Mode in the current view + */ + else if (logMode==Globals::xorgMode) { + Reader* reader=new XorgReader(NULL, "xorg_reader"); + return(reader); + } + + + /** + * Using ACPID Mode in the current view + */ + else if (logMode==Globals::acpidMode) { + Reader* reader=new AcpidReader(NULL, "acpid_reader"); + return(reader); + } + + /** + * Using Cups Mode in the current view + */ + else if (logMode==Globals::cupsMode) { + Reader* reader=new CupsReader(NULL, "cups_reader"); + return(reader); + } + + /** + * Using Cups Access Mode in the current view + */ + else if (logMode==Globals::cupsAccessMode) { + Reader* reader=new CupsAccessReader(NULL, "cups_access_reader"); + return(reader); + } + + /** + * Using Apache Mode in the current view + */ + else if (logMode==Globals::apacheMode) { + Reader* reader=new ApacheReader(NULL, "apache_reader"); + return(reader); + } + + /** + * Using Apache Access Mode in the current view + */ + else if (logMode==Globals::apacheAccessMode) { + Reader* reader=new ApacheAccessReader(NULL, "apache_access_reader"); + return(reader); + } + + /** + * Using Postfix Mode in the current view + */ + else if (logMode==Globals::postfixMode) { + Reader* reader=new SystemReader(NULL, "postfix_reader"); + return(reader); + } + + /** + * Using Samba Mode in the current view + */ + else if (logMode==Globals::sambaMode) { + Reader* reader=new SambaReader(NULL, "samba_reader"); + return(reader); + } + + /** + * Using Opening Mode in the current view + */ + else if (logMode==Globals::openingMode) { + //TODO For the moment, SystemReader is always used to parse file. + // Implement a test case for each Reader to know who is the better to read the file + Reader* reader=new SystemReader(NULL, "opening_reader"); + return(reader); + } + else { + kdDebug() << "Error : LogMode not found : returns NULL Reader" << endl; + return(NULL); + } +} + +LogFiles* ReaderFactory::createLogFiles(LogMode* logMode) { + + /** + * Using System Mode in the current view + */ + if (logMode==Globals::systemMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getSystemLogFiles(); + return(list); + } + + /** + * Using Boot Mode in the current view + */ + else if (logMode==Globals::bootMode) { + //Give the log file list to the reader + LogFile* file=ReaderFactory::getBootLogFile(); + LogFiles* list=new LogFiles(); + list->append(file); + return(list); + } + + /** + * Using Authentication Mode in the current view + */ + else if (logMode==Globals::authenticationMode) { + //Give the log file list to the reader + LogFile* file=ReaderFactory::getAuthenticationLogFile(); + + LogFiles* list=new LogFiles(); + list->append(file); + return(list); + } + + /** + * Using Kernel Mode in the current view + */ + else if (logMode==Globals::kernelMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getKernelLogFiles(); + return(list); + } + + /** + * Using Daemon Mode in the current view + */ + else if (logMode==Globals::daemonMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getDaemonLogFiles(); + return(list); + } + + /** + * Using Cron Mode in the current view + */ + else if (logMode==Globals::cronMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getCronLogFiles(); + return(list); + } + + /** + * Using Cron Mode in the current view + */ + else if (logMode==Globals::xorgMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getXorgLogFiles(); + return(list); + } + + + /** + * Using ACPID Mode in the current view + */ + else if (logMode==Globals::acpidMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getAcpidLogFiles(); + return(list); + + } + + /** + * Using Cups Mode in the current view + */ + else if (logMode==Globals::cupsMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getCupsLogFiles(); + return(list); + } + + /** + * Using Cups Access Mode in the current view + */ + else if (logMode==Globals::cupsAccessMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getCupsAccessLogFiles(); + return(list); + + } + + /** + * Using Apache Mode in the current view + */ + else if (logMode==Globals::apacheMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getApacheLogFiles(); + return(list); + } + + /** + * Using Apache Access Mode in the current view + */ + else if (logMode==Globals::apacheAccessMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getApacheAccessLogFiles(); + return(list); + + } + + /** + * Using Postfix Mode in the current view + */ + else if (logMode==Globals::postfixMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getPostfixLogFiles(); + return(list); + } + + /** + * Using Samba Mode in the current view + */ + else if (logMode==Globals::sambaMode) { + //Give the log file list to the reader + LogFiles* list=ReaderFactory::getSambaLogFiles(); + return(list); + } + + /** + * Using Opening Mode in the current view + */ + else if (logMode==Globals::openingMode) { + //Give the file to open to the reader + + //A little hack... ;-) (what an oriented-object solution !) + LogFile* logFile=new LogFile(lastOpenedURL, Globals::informationLogLevel); + + LogFiles* list=new LogFiles(); + list->append(logFile); + return(list); + } + else { + kdDebug() << "Error : LogFiles not found : returns NULL Reader" << endl; + return(NULL); + } +} + + + + + +LogFile* ReaderFactory::getGenericLogFile(QString& file) { + + LogLevel* level=Globals::informationLogLevel; + + KURL url(file); + if (!url.isValid()) { + kdDebug() << i18n("URL '%1' is not valid, skipping this URL.").arg(url.path()) << endl; + return(NULL); + } + + LogFile* logFile=new LogFile(url, level); + return(logFile); +} + +LogFiles* ReaderFactory::getGenericLogFiles(QStringList& stringList, QValueList& valueList) { + + LogFiles* logFiles=new LogFiles(); + + if (stringList.size() != valueList.size()) { + kdDebug() << i18n("The two arrays size are different, skipping the reading of log files.") << endl; + return(logFiles); + } + + LogFile* logFile; + + LogLevel* level; + + QStringList::Iterator itString=stringList.begin(); + QValueList::Iterator itInt=valueList.begin(); + + while(itString!=stringList.end()) { + if (*itInt>=0 && *itInt<(int) Globals::logLevels.count()) + level=Globals::logLevels.at(*itInt); + else + level=Globals::informationLogLevel; + + KURL url(*itString); + if (!url.isValid()) { + kdDebug() << i18n("URL '%1' is not valid, skipping this URL.").arg(url.path()) << endl; + continue; + itString++; + itInt++; + } + + logFile=new LogFile(url, level); + logFiles->push_back(logFile); + + + itString++; + itInt++; + } + + return(logFiles); +} + +LogFiles* ReaderFactory::getNoModeLogFiles(QStringList& stringList) { + + LogFiles* logFiles=new LogFiles(); + + LogFile* logFile; + + //Default level used for No Mode logs + LogLevel* level=Globals::noneLogLevel; + + QStringList::Iterator it; + for(it=stringList.begin(); it!=stringList.end(); it++) { + + KURL url(*it); + if (!url.isValid()) { + kdDebug() << i18n("URL '%1' is not valid, skipping this URL.").arg(url.path()) << endl; + continue; + } + + logFile=new LogFile(url, level); + logFiles->push_back(logFile); + + } + + return(logFiles); +} + +LogFile* ReaderFactory::getBootLogFile() { + QString file=KSystemLogConfig::bootPath(); + return(getGenericLogFile(file)); +} + +LogFile* ReaderFactory::getAuthenticationLogFile() { + QString file=KSystemLogConfig::authenticationPath(); + return(getGenericLogFile(file)); +} + +LogFiles* ReaderFactory::getSystemLogFiles() { + QStringList files=KSystemLogConfig::systemPaths(); + QValueList levels=KSystemLogConfig::systemLevels(); + return(ReaderFactory::getGenericLogFiles(files, levels)); +} + +LogFiles* ReaderFactory::getAcpidLogFiles() { + QStringList files=KSystemLogConfig::acpidPaths(); + + return(getNoModeLogFiles(files)); +} + +LogFiles* ReaderFactory::getKernelLogFiles() { + QStringList files=KSystemLogConfig::kernelPaths(); + QValueList levels=KSystemLogConfig::kernelLevels(); + return(ReaderFactory::getGenericLogFiles(files, levels)); +} + +LogFiles* ReaderFactory::getDaemonLogFiles() { + QStringList files=KSystemLogConfig::daemonPaths(); + QValueList levels=KSystemLogConfig::daemonLevels(); + return(ReaderFactory::getGenericLogFiles(files, levels)); +} + +LogFiles* ReaderFactory::getCronLogFiles() { + QStringList files=KSystemLogConfig::cronPaths(); + QValueList levels=KSystemLogConfig::cronLevels(); + return(ReaderFactory::getGenericLogFiles(files, levels)); +} + + +LogFiles* ReaderFactory::getXorgLogFiles() { + QStringList stringList=KSystemLogConfig::xorgPaths(); + return(getNoModeLogFiles(stringList)); +} + +LogFiles* ReaderFactory::getCupsLogFiles() { + QStringList stringList=KSystemLogConfig::cupsPaths(); + return(getNoModeLogFiles(stringList)); +} + +LogFiles* ReaderFactory::getCupsAccessLogFiles() { + QStringList stringList=KSystemLogConfig::cupsAccessPaths(); + return(getNoModeLogFiles(stringList)); +} + +LogFiles* ReaderFactory::getApacheLogFiles() { + QStringList stringList=KSystemLogConfig::apachePaths(); + return(getNoModeLogFiles(stringList)); +} + +LogFiles* ReaderFactory::getApacheAccessLogFiles() { + QStringList stringList=KSystemLogConfig::apacheAccessPaths(); + return(getNoModeLogFiles(stringList)); +} + +LogFiles* ReaderFactory::getPostfixLogFiles() { + QStringList files=KSystemLogConfig::postfixPaths(); + QValueList levels=KSystemLogConfig::postfixLevels(); + return(ReaderFactory::getGenericLogFiles(files, levels)); +} + +LogFiles* ReaderFactory::getSambaLogFiles() { + QStringList stringList=KSystemLogConfig::sambaPaths(); + return(getNoModeLogFiles(stringList)); +} + diff --git a/ksystemlog/src/readerFactory.h b/ksystemlog/src/readerFactory.h new file mode 100644 index 0000000..fc06b2c --- /dev/null +++ b/ksystemlog/src/readerFactory.h @@ -0,0 +1,127 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _READER_FACTORY_H_ +#define _READER_FACTORY_H_ + +#include + +#include "globals.h" +#include "reader.h" +#include "logMode.h" +#include "logFile.h" + +#include "logLevel.h" + +#include + +/** + * @author Nicolas Ternisien + */ +class ReaderFactory { + + public: + static Reader* createReader(LogMode* logMode); + + static LogFiles* createLogFiles(LogMode* logMode); + + //TODO Change this *BIG* hack to a well oriented object form + static KURL lastOpenedURL; + + private: + static LogFiles* getNoModeLogFiles(QStringList& stringList); + + static LogFiles* getGenericLogFiles(QStringList& stringList, QValueList& valueList); + static LogFile* getGenericLogFile(QString& file); + + + /** + * Get System log files from configuration + */ + static LogFiles* getSystemLogFiles(); + + /** + * Get X.org path from configuration + */ + static LogFiles* getXorgLogFiles(); + + /** + * Get Kernel log files from configuration + */ + static LogFiles* getKernelLogFiles(); + + /** + * Get Daemon log files from configuration + */ + static LogFiles* getDaemonLogFiles(); + + /** + * Get Cron log files from configuration + */ + static LogFiles* getCronLogFiles(); + + /** + * Get ACPID log files from configuration + */ + static LogFiles* getAcpidLogFiles(); + + /** + * Get Cups log files from configuration + */ + static LogFiles* getCupsLogFiles(); + + /** + * Get Cups Access log files from configuration + */ + static LogFiles* getCupsAccessLogFiles(); + + /** + * Get Apache log files from configuration + */ + static LogFiles* getApacheLogFiles(); + + /** + * Get Apache Access log files from configuration + */ + static LogFiles* getApacheAccessLogFiles(); + + /** + * Get Postfix log files from configuration + */ + static LogFiles* getPostfixLogFiles(); + + /** + * Get Bool log file from configuration + */ + static LogFile* getBootLogFile(); + + /** + * Get Authentication log file from configuration + */ + static LogFile* getAuthenticationLogFile(); + + /** + * Get Samba path from configuration + */ + static LogFiles* getSambaLogFiles(); + +}; + + +#endif diff --git a/ksystemlog/src/samba/Makefile.am b/ksystemlog/src/samba/Makefile.am new file mode 100644 index 0000000..28725d0 --- /dev/null +++ b/ksystemlog/src/samba/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_samba.la +libksystemlog_samba_la_LDFLAGS = $(all_libraries) +libksystemlog_samba_la_SOURCES = sambaOptions.cpp sambaReader.cpp +noinst_HEADERS = sambaReader.h sambaOptions.h diff --git a/ksystemlog/src/samba/sambaOptions.cpp b/ksystemlog/src/samba/sambaOptions.cpp new file mode 100644 index 0000000..5e56fda --- /dev/null +++ b/ksystemlog/src/samba/sambaOptions.cpp @@ -0,0 +1,104 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "sambaOptions.h" +#include "ksystemlogConfig.h" + +SambaOptions::SambaOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display Samba log. This list also determines the order in which the files are read.

"); + fileList=new FileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +SambaOptions::~SambaOptions() { + +} + +bool SambaOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void SambaOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void SambaOptions::saveConfig() { + kdDebug() << "Save config from SambaOptions" << endl; + + QStringList list; + + int count=fileList->count(); + + for (int i=0; igetText(i)); + } + + KSystemLogConfig::setSambaPaths(list); +} + +void SambaOptions::readConfig() { + QStringList files(KSystemLogConfig::sambaPaths()); + + QStringList::iterator it; + for(it=files.begin(); it!=files.end(); ++it) { + fileList->insertItem(*it); + } + +} + +#include "sambaOptions.moc" diff --git a/ksystemlog/src/samba/sambaOptions.h b/ksystemlog/src/samba/sambaOptions.h new file mode 100644 index 0000000..e32d797 --- /dev/null +++ b/ksystemlog/src/samba/sambaOptions.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _SAMBA_OPTIONS_H_ +#define _SAMBA_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + + +#include "globals.h" +#include "fileList.h" +#include "logLevel.h" + + +class SambaOptions : public QWidget { + Q_OBJECT + public: + SambaOptions(QWidget *parent = 0); + ~SambaOptions(); + + bool isValid(); + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + FileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/samba/sambaReader.cpp b/ksystemlog/src/samba/sambaReader.cpp new file mode 100644 index 0000000..9b2323d --- /dev/null +++ b/ksystemlog/src/samba/sambaReader.cpp @@ -0,0 +1,169 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include + +#include "parsingHelper.h" +#include "sambaReader.h" + +SambaReader::SambaReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { + +} + + +SambaReader::~SambaReader() { + +} + + +void SambaReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Source File"), true, true)); + columns->append(new LogViewColumn(i18n("Function"), true, true)); + columns->append(new LogViewColumn(i18n("Line"), true, true)); + columns->append(new LogViewColumn(i18n("Message"), true, false)); + +} + +LogLine* SambaReader::parseMessage(QString& logLine, LogFile* logFile) { + + /* + * Log line examples : + * [2005/06/27 21:06:01, 0] nmbd/nmbd.c:main(668) + * Netbios nameserver version 3.0.14a started. + * Copyright Andrew Tridgell and the Samba Team 1994-2004 + * [2005/06/27 21:11:46, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396) + * ***** + * Samba name server STEAKHACHE is now a local master browser for workgroup MAISON on subnet 192.168.1.33 + * + * ***** + * [2005/06/28 06:41:03, 0] nmbd/nmbd.c:terminate(56) + * Got SIGTERM: going down... + * [2005/06/28 18:08:11, 0] nmbd/nmbd.c:main(668) + * Netbios nameserver version 3.0.14a started. + * Copyright Andrew Tridgell and the Samba Team 1994-2004 + */ + + //The Date + int dateBegin=logLine.find("["); + int dateEnd=logLine.find("]"); + + QString strDate=logLine.mid(dateBegin+1, dateEnd-dateBegin-1); + + QString year=strDate.mid(0, 4); + QString month=strDate.mid(5, 2); + QString day=strDate.mid(8, 2); + + QString hour=strDate.mid(11, 2); + QString min=strDate.mid(14, 2); + QString sec=strDate.mid(17, 2); + + QDate date=QDate(year.toInt(), month.toInt(), day.toInt()); + QTime time=QTime(hour.toInt(), min.toInt(), sec.toInt()); + + logLine=logLine.remove(0, dateEnd+2); + + + //The source file + int doubleDot; + doubleDot=logLine.find(":"); + QString file=logLine.left(doubleDot); + logLine=logLine.remove(0, doubleDot+1); + + //The function + int bracket=logLine.find("("); + QString function=logLine.left(bracket); + logLine=logLine.remove(0, bracket+1); + + //The line number + bracket=logLine.find(")"); + QString lineNumber=logLine.left(bracket); + + //Remove the first return character and the two useless space of the first message line + logLine=logLine.remove(0, bracket+4); + + //Message + //Remove the last \n + logLine=logLine.left(logLine.length()-1); + //Remove return characters and 2 first spaces at each lines + QString message=logLine.replace("\n ", " / "); + + //QString message=logLine.replace("\n", " / "); + + QStringList list; + list.push_back(file); + list.push_back(function); + list.push_back(lineNumber); + list.push_back(message); + + QString filePath=logFile->url.path(); + + LogLine* line=new LogLine(date, time, list, filePath, Globals::informationLogLevel, Globals::sambaMode->id); + + return(line); +} + +QStringList* SambaReader::getRawBuffer(QFile* file) { + kdDebug() << "Retrieving the raw buffer..." << endl; + + QString line; + + QString buffer; + QString tmpBuffer; + QStringList* rawBuffer=new QStringList(); + + int res; + + //Insert the content of the file in a string list + while(!file->atEnd()) { + + //Read the first MaxCharactersRead characters + res=file->readLine(buffer, tmpMaxCharacters); + + //Ignore the rest of the line + while(res==tmpMaxCharacters) + file->readLine(tmpBuffer, tmpMaxCharacters); + + if (buffer[0]=='[') { + + //If it is not the first time we add a line + if (!line.isNull()) { + //Push the new buffer to the list + rawBuffer->push_back(line); + } + + line=buffer; + } + else { + //line+='\n'; + line+=buffer; + } + } + + kdDebug() << "Raw buffer retrieved." << endl; + + return(rawBuffer); +} + + +#include "sambaReader.moc" diff --git a/ksystemlog/src/samba/sambaReader.h b/ksystemlog/src/samba/sambaReader.h new file mode 100644 index 0000000..cef6f99 --- /dev/null +++ b/ksystemlog/src/samba/sambaReader.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _SAMBA_READER_H_ +#define _SAMBA_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class SambaReader : public DefaultReader { + Q_OBJECT + + public: + SambaReader(QObject *parent = 0, const char *name = 0); + + virtual ~SambaReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + + virtual QStringList* getRawBuffer(QFile* file); + +}; + +#endif diff --git a/ksystemlog/src/slotLogAction.cpp b/ksystemlog/src/slotLogAction.cpp new file mode 100644 index 0000000..a4d72b8 --- /dev/null +++ b/ksystemlog/src/slotLogAction.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +//For compatibility with old versions of KDE +#include + +#include "ksystemlog.h" + +//Include the right header, depending of the version of KDE +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,4,0)) + #include "slotLogAction.h" +#else + #include "slotLogActionCompatibility.h" +#endif + +SlotLogAction::SlotLogAction(KSystemLog* p) : + parent(p) { + +} + +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,4,0)) +void SlotLogAction::slotLogAction(KAction::ActivationReason reason, Qt::ButtonState state) { + const QObject* sender=QObject::sender(); + + //We can call the correct method from KSystemLog, which manage the two parameters + parent->logActionClicked(sender, reason, state); +} +#else +void SlotLogAction::slotLogAction() { + const QObject* sender=QObject::sender(); + + //In the other case, We can only call the method from KSystemLog, which keeps compatibility + parent->logActionClicked(sender); +} +#endif + +//Include the right MOC file, depending of the version of KDE +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,4,0)) + #include "slotLogAction.moc" +#else + #include "slotLogActionCompatibility.moc" +#endif diff --git a/ksystemlog/src/slotLogAction.h b/ksystemlog/src/slotLogAction.h new file mode 100644 index 0000000..f9dc736 --- /dev/null +++ b/ksystemlog/src/slotLogAction.h @@ -0,0 +1,48 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#ifndef _SLOT_LOG_ACTION_H_ +#define _SLOT_LOG_ACTION_H_ + +#include + +class KSystemLog; + + +class SlotLogAction : public QObject { + + Q_OBJECT + + public: + SlotLogAction(KSystemLog* parent); + + public slots: + + /** + * This header contains the normal version of the main slot + */ + void slotLogAction(KAction::ActivationReason reason, Qt::ButtonState state); + + private: + KSystemLog* parent; +}; + +#endif diff --git a/ksystemlog/src/slotLogActionCompatibility.h b/ksystemlog/src/slotLogActionCompatibility.h new file mode 100644 index 0000000..cd28e62 --- /dev/null +++ b/ksystemlog/src/slotLogActionCompatibility.h @@ -0,0 +1,48 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _SLOT_LOG_ACTION_H_ +#define _SLOT_LOG_ACTION_H_ + +#include + +class KSystemLog; + + +class SlotLogAction : public QObject { + + Q_OBJECT + + public: + SlotLogAction(KSystemLog* parent); + + public slots: + + /** + * This header contains a special version of the main slot : + * without parameters to keep compatibility with old KDE versions + */ + void slotLogAction(); + + private: + KSystemLog* parent; +}; + +#endif diff --git a/ksystemlog/src/specificFileList.cpp b/ksystemlog/src/specificFileList.cpp new file mode 100644 index 0000000..ef3047d --- /dev/null +++ b/ksystemlog/src/specificFileList.cpp @@ -0,0 +1,211 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#include +#include +#include +#include +#include +#include + +// KDE includes +#include +#include +#include +#include +#include +#include +#include + +#include "globals.h" + +#include "specificFileList.h" + + +SpecificFileList::SpecificFileList(QWidget* parent, QString description) : + FileList(parent, description) + { + + + changeItem=new QPushButton(SmallIconSet("colorize"), i18n("&Change Status..."), buttons); + connect(changeItem, SIGNAL(clicked()), this, SLOT(changeItemType())); + QToolTip::add(changeItem, i18n("Change the level of the current file(s)")); + QWhatsThis::add(changeItem, i18n("Changes the level of the current file(s). See KSystemLog documentation for more information about each log level.")); + + fileListMenu->insertSeparator(); + fileListMenu->insertItem(SmallIcon("colorize"), i18n("&Change Status"), this, SLOT(changeItemType())); + + + changeItem->setEnabled(false); + +} + +SpecificFileList::~SpecificFileList() { + +} + +void SpecificFileList::insertItem(QString& item) { + this->insertItem(Globals::informationLogLevel, item); +} + +void SpecificFileList::insertItem(LogLevel* level, QString& item) { + fileList->insertItem(level->pixmap, item); + levels[fileList->item(fileList->count()-1)]=level->id; +} + +void SpecificFileList::removeItem(int id) { + levels.erase(fileList->item(id)); + fileList->removeItem(id); +} + +void SpecificFileList::addItem() { + //Open a standard Filedialog + KURL::List urlList; + urlList=KFileDialog::getOpenURLs(DEFAULT_FOLDER, "*|" + i18n("All Files (*)") + "\n*.log|" + i18n("Log Files (*.log)"), this, i18n("Choose Log File")); + + KURL url; + KURL::List::iterator it; + + for(it=urlList.begin(); it!=urlList.end(); ++it) { + url=*it; + if (isValidFile(url)) { + QString path=url.path(); + this->insertItem(Globals::informationLogLevel, path); + } + } + + emit fileListChanged(fileList->count()); +} + +bool SpecificFileList::updateButtons() { + bool value=FileList::updateButtons(); + + //If nothing is selected, disabled special buttons + changeItem->setEnabled(value); + + return(value); +} + +void SpecificFileList::changeItemType() { + kdDebug() << "Change Item type" << endl; + + KDialogBase dialog(this, "select_type", true, i18n("Selecting File Type"), KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok); + + QVBox topContents(&dialog); + topContents.setSpacing(8); + topContents.setMinimumSize(QSize(100, 230)); + + QLabel text(i18n("Please select the type of this file:"), &topContents); + KListBox choiceList(&topContents, "type_list"); + + QToolTip::add(choiceList.viewport(), i18n("List of existing log levels")); + QWhatsThis::add(choiceList.viewport(), i18n("This is the list of all existing log levels. Please select one of them to be used for the selected files of the list.")); + + //TODO Move this code to a specific class + //connect(&choiceList, SIGNAL(doubleClicked(QListBoxItem*)), &dialog, SLOT(okClicked())); + + QPtrListIterator itLevel(Globals::logLevels); + LogLevel* level=itLevel.current(); + + while (level!=NULL) { + choiceList.insertItem(level->pixmap, level->name); + + ++itLevel; + level=itLevel.current(); + } + + text.setBuddy(&choiceList); + + dialog.setMainWidget(&topContents); + dialog.enableButtonSeparator(false); + + int choice=dialog.exec(); + + if (choice==QDialog::Accepted) { + + int count=fileList->count(); + + int selected=-1; + if (choiceList.selectedItem()!=NULL) + selected=choiceList.index(choiceList.selectedItem()); + + if (selected!=-1) { + for (int i=0; iisSelected(i)) { + levels.erase(fileList->item(i)); + fileList->changeItem(*(choiceList.pixmap(selected)), fileList->text(i), i); + levels[fileList->item(i)]=selected; + } + } + emit fileListChanged(fileList->numRows()); + } + + } +} + + +LogLevel* SpecificFileList::getLevel(int i) { + return(Globals::logLevels.at(levels[fileList->item(i)])); + +} + +void SpecificFileList::saveConfig(QStringList& filePathList, QValueList& logLevelList) { + int count=fileList->count(); + + for (int i=0; igetLevel(i)->id); + filePathList.push_back(this->getText(i)); + } + +} + +void SpecificFileList::readConfig(QStringList& stringList, QValueList& valueList) { + + //A little security test + if (stringList.size() != valueList.size()) { + kdDebug() << i18n("The two arrays size are different, skipping the reading of generic paths.") << endl; + return; + } + + LogLevel* level; + + QStringList::Iterator itString=stringList.begin(); + QValueList::Iterator itInt=valueList.begin(); + + while(itString!=stringList.end()) { + if (*itInt>=0 && *itInt<(int) Globals::logLevels.count()) + level=Globals::logLevels.at(*itInt); + else + level=Globals::informationLogLevel; + + //TODO Is it VERY useful to test if *itString is a real URL or not ? + //if (!KURL(*itString).isValid()) + + + this->insertItem(level, *itString); + + itString++; + itInt++; + } +} + + +#include "specificFileList.moc" diff --git a/ksystemlog/src/specificFileList.h b/ksystemlog/src/specificFileList.h new file mode 100644 index 0000000..7f761dc --- /dev/null +++ b/ksystemlog/src/specificFileList.h @@ -0,0 +1,66 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _SPECIFIC_FILE_LIST_H_ +#define _SPECIFIC_FILE_LIST_H_ + +#include +#include + +#include "globals.h" + +#include "fileList.h" + + +class SpecificFileList : public FileList { + + Q_OBJECT + + public: + SpecificFileList(QWidget *parent, QString description); + ~SpecificFileList(); + + virtual void insertItem(QString& item); + void insertItem(LogLevel* level, QString& item); + virtual void removeItem(int id); + + LogLevel* getLevel(int i); + + void saveConfig(QStringList& filePaths, QValueList& fileLevels); + void readConfig(QStringList& filePaths, QValueList& fileLevels); + + + protected: + virtual bool updateButtons(); + + virtual void addItem(); + + private slots: + void changeItemType(); + + private: + QPushButton* changeItem; + + QMap levels; + + +}; + +#endif //_SPECIFIC_FILE_LIST_H_ diff --git a/ksystemlog/src/system/Makefile.am b/ksystemlog/src/system/Makefile.am new file mode 100644 index 0000000..bd7cf60 --- /dev/null +++ b/ksystemlog/src/system/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_system.la +libksystemlog_system_la_LDFLAGS = $(all_libraries) +libksystemlog_system_la_SOURCES = systemOptions.cpp systemReader.cpp +noinst_HEADERS = systemOptions.h systemReader.h diff --git a/ksystemlog/src/system/systemOptions.cpp b/ksystemlog/src/system/systemOptions.cpp new file mode 100644 index 0000000..7d63856 --- /dev/null +++ b/ksystemlog/src/system/systemOptions.cpp @@ -0,0 +1,102 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "systemOptions.h" +#include "ksystemlogConfig.h" + +SystemOptions::SystemOptions(QWidget *parent) : + QWidget(parent) + { + + QVBoxLayout* layout = new QVBoxLayout(this); + //layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display System logs. This list also determines the order in which the files are read.

"); + fileList=new SpecificFileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + layout->addWidget(fileList); + + readConfig(); + + +} + +SystemOptions::~SystemOptions() { + +} + +bool SystemOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void SystemOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void SystemOptions::saveConfig() { + kdDebug() << "Saving config from System Options..." << endl; + + QStringList stringList; + QValueList valueList; + + fileList->saveConfig(stringList, valueList); + + KSystemLogConfig::setSystemPaths(stringList); + KSystemLogConfig::setSystemLevels(valueList); +} + +void SystemOptions::readConfig() { + QStringList stringList=KSystemLogConfig::systemPaths(); + QValueList valueList=KSystemLogConfig::systemLevels(); + + fileList->readConfig(stringList, valueList); +} + + +#include "systemOptions.moc" diff --git a/ksystemlog/src/system/systemOptions.h b/ksystemlog/src/system/systemOptions.h new file mode 100644 index 0000000..5a29c0c --- /dev/null +++ b/ksystemlog/src/system/systemOptions.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _SYSTEM_OPTIONS_H_ +#define _SYSTEM_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "specificFileList.h" + +#include "logLevel.h" + + +class SystemOptions : public QWidget { + Q_OBJECT + public: + SystemOptions(QWidget *parent = 0); + ~SystemOptions(); + + bool isValid(); + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + SpecificFileList* fileList; + +}; + +#endif diff --git a/ksystemlog/src/system/systemReader.cpp b/ksystemlog/src/system/systemReader.cpp new file mode 100644 index 0000000..65b44be --- /dev/null +++ b/ksystemlog/src/system/systemReader.cpp @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "systemReader.h" + +#include +#include + +SystemReader::SystemReader(QObject *parent, const char *name) : + DefaultReader(parent, name) + { +} + + +SystemReader::~SystemReader() { + +} + + +void SystemReader::initColumns(LogViewColumns* columns) { + columns->append(new LogViewColumn(i18n("Date"), true, false)); + columns->append(new LogViewColumn(i18n("Host Name"), true, true)); + columns->append(new LogViewColumn(i18n("Process"), true, true)); + columns->append(new LogViewColumn(i18n("Message"), true, false)); + +} + +LogLine* SystemReader::parseMessage(QString& logLine, LogFile* logFile) { + //For the moment this method is correct + return(DefaultReader::parseMessage(logLine, logFile)); +} + + +#include "systemReader.moc" diff --git a/ksystemlog/src/system/systemReader.h b/ksystemlog/src/system/systemReader.h new file mode 100644 index 0000000..6449c25 --- /dev/null +++ b/ksystemlog/src/system/systemReader.h @@ -0,0 +1,53 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _SYSTEM_READER_H_ +#define _SYSTEM_READER_H_ + +#include +#include +#include +#include + +#include "view.h" +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class SystemReader : public DefaultReader { + Q_OBJECT + + public: + SystemReader(QObject *parent = 0, const char *name = 0); + + virtual ~SystemReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + + virtual LogLine* parseMessage(QString& logLine, LogFile* logFile); + +}; + +#endif diff --git a/ksystemlog/src/view.cpp b/ksystemlog/src/view.cpp new file mode 100644 index 0000000..af3adc2 --- /dev/null +++ b/ksystemlog/src/view.cpp @@ -0,0 +1,456 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +//KDE includes +#include + +#include +#include +#include +#include +#include +#include +#include +//For compatibility with old versions of KDE +#include + +//Project includes +#include "view.h" + +#include "logListItem.h" +#include "logLine.h" +#include "viewToolTip.h" + +#include "ksystemlogConfig.h" +#include "ksystemlog.h" + + +View::View(QWidget *parent) : + DCOPObject("KSystemLogInterface"), + QWidget(parent), + logManager(NULL), + table(NULL), + columns(NULL), + firstLoad(true) + { + + // setup our layout manager to automatically add our widgets + QVBoxLayout* topLayout = new QVBoxLayout(this); + topLayout->setAutoAdd(true); + + +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + filterBar=new QHBox(this); + filterBar->setSpacing(5); + filterBar->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ) ); + + + clearSearch=new KToolBarButton( QApplication::reverseLayout() ? "clear_left" : "locationbar_erase", 0, filterBar); + clearSearch->setText(i18n("Clear the filter")); + + QWhatsThis::add(clearSearch, i18n("This button clears the filter in one click.")); + QToolTip::add(clearSearch, i18n("Clear the filter")); + + + QLabel* label=new QLabel(i18n("Filter:"), filterBar); + + search=new LogLineFilter(filterBar, (KListView*)NULL); + label->setBuddy(search); + + QWhatsThis::add(search, i18n("Allows you to select only list items that match the content of this text.")); + QToolTip::add(search, i18n("Type your item filter here")); + + label=new QLabel(i18n("Column:"), filterBar); + + this->initSearchFilter(filterBar); + + label->setBuddy(searchFilter); + + toggleFilterBar(); +#endif + + + this->initLogList(); + + +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + //We initialize the table after, after the initialization of the table + search->setListView(table); + + //Connect the pressed signal of the clear button to the clear slot of "clear" + connect(clearSearch, SIGNAL(pressed()), search, SLOT(clear())); +#endif + +} + + +View::~View() { +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,3,0)) + delete clearSearch; + + delete search; + + delete searchFilter; + + delete filterBar; +#endif + + kdDebug() << "Destroying View" << endl; +} + +void View::saveConfig() { + kdDebug() << "Saving View Layout..." << endl; + + KSystemLogConfig* configXT=KSystemLogConfig::self(); + KConfig* config=configXT->config(); + QString group="List"; + group.append(logManager->getIndex()); + + table->saveLayout(config, group); + +} + +void View::setLogManager(LogManager* manager) { + logManager=manager; +} + +//TODO Deprecate this method as soon as possible +void View::openURL(QString url) { + kdDebug() << "DCOP Interface : " << url << endl; +} + +bool View::isTooltipEnabled() { + return(logManager->isTooltipEnabled()); +} + +void View::toggleFilterBar() { +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + //The newly created bar is only displayed if the config file allow it + if (KSystemLogConfig::toggleFilterBar()==true) + filterBar->show(); + else + filterBar->hide(); +#endif +} + + + +/** + * Delete the "count" first items + */ +void View::deleteOldItems(int count) { + QListViewItem* item; + for(int i=0; ilastItem(); + table->takeItem(item); + } +} + +int View::getItemCount() { + + int count=0; + + if (logManager->getGroupBy()==NO_GROUP_BY) { + count=table->childCount(); + } + else { + QPtrList lst; + QListViewItemIterator it(table); + while (it.current()!=NULL) { + count+=it.current()->childCount(); + ++it; + } + } + + return(count); +} + + + +void View::setColumns(LogViewColumns* list) { + kdDebug() << "Change columns" << endl; + + columns=list; + + updateList(); + + //TODO Maybe with the deleting of the config group, this boolean is useless + if (firstLoad==true) { + KSystemLogConfig* configXT=KSystemLogConfig::self(); + QString group="List"; + group.append(logManager->getIndex()); + + //We first restore the layout from the config + table->restoreLayout(configXT->config(), group); + + //Then we delete it from config, to avoid reloading problem + configXT->config()->deleteGroup(group); + + firstLoad=false; + } + + updateSearchFilter(); + +} + +void View::setFirstItemVisible() { + table->ensureItemVisible(table->firstChild()); +} + +void View::setLastItemVisible() { + table->ensureItemVisible(table->lastItem()); +} + +void View::setFirstItemSelected() { + table->setCurrentItem(table->firstChild()); + table->setSelected(table->firstChild(), true); + table->ensureItemVisible(table->firstChild()); +} + +void View::setLastItemSelected() { + table->setCurrentItem(table->lastItem()); + table->setSelected(table->lastItem(), true); + table->ensureItemVisible(table->lastItem()); +} + +void View::updateSearchFilter() { +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + //We first delete all items + int count=searchFilter->count() - 1; + while (count>=0) { + searchFilter->removeItem(count); + count--; + } + + //Then we insert the default items + searchFilter->insertItem(i18n("All")); + + LogViewColumns::Iterator it = columns->begin(); + + LogViewColumn* column; + while(it!=columns->end()) { + column=*it; + if (column->isFiltred==true) + searchFilter->insertItem(column->columnName); + it++; + } + + searchFilter->setCurrentItem(0); +#endif +} + + +void View::updateList() { + + //First, delete all current columns + int count=table->columns() - 1; + while (count>=0) { + table->removeColumn(count); + count--; + } + + + LogViewColumns::Iterator it = columns->begin(); + + LogViewColumn* column; + //Add all columns of the columns list object + while(it!=columns->end()) { + column=*it; + table->addColumn(column->columnName, -1); + it++; + } + + //Adjust them to the size of the current maximum item + int i=0; + while (icolumns()) { + table->adjustColumn(i); + i++; + } + + //TODO Try to reduce size of first column with a +} + +void View::initLogList() { + + table=new KListView(this, "log_list"); + + QWhatsThis::add(table, i18n("

This is the main view of KSystemLog. It displays the last lines of the selected log. Please see the documentation to discovers the meaning of each icons and existing log.

Log lines in bold are the last added to the list.

")); + + table->addColumn("Message"); + + table->setSorting(0, true); + + //table->setRootIsDecorated(true); + table->setShowSortIndicator(true); + table->setAllColumnsShowFocus(true); + + //This method is not implemented for the moment by KListView class + table->setAutoOpen(false); + + //This is buggy but it's not my fault (I hope :-) + table->setFullWidth(true); + + //TODO Find a color from QColorGroup + QColor* alternate=new QColor(246,246,255); + table->setAlternateBackground(*alternate); + + table->setSelectionModeExt(KListView::Extended); + + toolTip=new ViewToolTip(this->getLogList()->viewport(), this); + +} + + +LogListItem* View::getFirstSelectedItem() { + QListViewItemIterator it(table, QListViewItemIterator::Selected); + + //Returns the first selected item or NULL is there is no item selected + return(static_cast (it.current())); +} + +LogListItem* View::getLastSelectedItem() { + QListViewItemIterator it(table, QListViewItemIterator::Selected); + + QListViewItem* item=NULL; + while (it.current()) { + item=it.current(); + + it++; + } + + //Returns the last selected item or NULL is there is no item selected + return(static_cast (item)); +} + + +void View::setSortEnabled(bool enabled) { + if (enabled==true) + table->setSorting(table->columns()+1); + else + table->setSorting(-1); +} + +void View::initSearchFilter(QWidget* filterBox) { +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + searchFilter=new QComboBox(filterBox); + + QWhatsThis::add(searchFilter, i18n("Allows you to apply the item filter only on the specified column here. \"All\" column means no specific filter.")); + QToolTip::add(searchFilter, i18n("Choose the filtered column here")); + + searchFilter->insertItem(i18n("All")); + + //TODO 0 is not a very good value... Improve that. and of course, try to find a better solution + searchFilter->setMinimumSize(70, 0); + + connect(searchFilter, SIGNAL(activated(int)), search, SLOT(setFocus())); + connect(searchFilter, SIGNAL(activated(int)), this, SLOT(changeColumnFilter(int))); + connect(searchFilter, SIGNAL(activated(int)), search, SLOT(updateSearch())); +#endif + +} + + +void View::addElement(QStringList* entries, QPixmap* icon) { + QStringList::Iterator it = entries->begin(); + + KListViewItem* item=new KListViewItem(table, *(it++), *(it++), *(it++), *(it++), *(it++)); + if (icon!=NULL) + item->setPixmap(0, *icon); + +} + +void View::addElementAtEnd(QStringList* entries, QPixmap* icon) { + QStringList::Iterator it = entries->begin(); + + KListViewItem* item=new KListViewItem(table, table->lastItem(), *(it++), *(it++), *(it++), *(it++), *(it++)); + if (icon!=NULL) + item->setPixmap(0, *icon); +} + +KListView* View::getLogList() { + return(table); +} + + +void View::changeColumnFilter(int column) { +#if defined(KDE_MAKE_VERSION) && KDE_VERSION >= KDE_MAKE_VERSION(3,3,0) + QValueList filterColumns; + + //The user select all columns + if (column==0) { + search->setSearchColumns(filterColumns); + } + else { + QString columnName=searchFilter->currentText(); + + LogViewColumns::Iterator it; + LogViewColumn* column; + int position=0; + for(it=columns->begin(); it!=columns->end(); it++) { + column=*it; + if (column->columnName==columnName) + break; + + position++; + } + + filterColumns.append(position); + + search->setSearchColumns(filterColumns); + } + + //search->updateSearch(); +#endif +} + + + +void View::print(QPainter* /*p*/, int /*height*/, int /*width*/) { + //Print log files here +} + +void View::slotOnURL(const QString& url) { + emit changeStatusbar(url); +} + +void View::slotSetTitle(const QString& title) { + emit changeCaption(title); +} + +void View::clearLogList( ) { + table->clear(); +} + + + +#include "view.moc" diff --git a/ksystemlog/src/view.h b/ksystemlog/src/view.h new file mode 100644 index 0000000..35ab8c9 --- /dev/null +++ b/ksystemlog/src/view.h @@ -0,0 +1,189 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#ifndef VIEW_H +#define VIEW_H + +//Qt includes +#include +#include + +//KDE includes +#include +#include +#include + +//For compatibility with old versions of KDE +#include + +//The filter is activated only if KDE version >= 3.3 +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,3,0)) +#include "logLineFilter.h" +#endif + +#include + +#include +#include + +#include "globals.h" +#include "logListItem.h" +#include "logManager.h" + +#include "logViewColumn.h" +#include "logViewColumns.h" + +class ViewToolTip; + +/** + * This is the main view class for KSystemLog. + * This class is encapsulated in a LogManager, with a Reader (in a standard LogManager) + * + * + * @short Main view + * @author Nicolas Ternisien + * @version 0.1 + */ +class View : public QWidget, public KSystemLogInterface { + + Q_OBJECT + + public: + /** + * Default constructor + */ + View(QWidget *parent); + + /** + * Destructor + */ + virtual ~View(); + + void clearLogList(); + + void addElement(QStringList* entries, QPixmap* icon=NULL); + void addElementAtEnd(QStringList* entries, QPixmap* icon=NULL); + + void setColumns(LogViewColumns* list); + + void setFirstItemSelected(); + void setLastItemSelected(); + + void setLastItemVisible(); + void setFirstItemVisible(); + + void toggleFilterBar(); + + LogListItem* getFirstSelectedItem(); + LogListItem* getLastSelectedItem(); + + int getItemCount(); + + void setSortEnabled(bool enabled); + + void setLogManager(LogManager* manager); + + bool isTooltipEnabled(); + + KListView* getLogList(); + + void saveConfig(); + + /** + * Delete the "count" first items + */ + void deleteOldItems(int count); + + /** + * Print this view to any medium -- paper or not + */ + void print(QPainter *, int height, int width); + + /** + * Method from DCOP Interface + */ + virtual void openURL(QString url); + + private: + + void initLogList(); + + void initSearchFilter(QWidget* filterBox); + + signals: + /** + * Use this signal to change the content of the statusbar + */ + void changeStatusbar(const QString& text); + + /** + * Use this signal to change the content of the caption + */ + void changeCaption(const QString& text); + + private slots: + void slotOnURL(const QString& url); + void slotSetTitle(const QString& title); + + void changeColumnFilter(int column); + + void updateList(); + void updateSearchFilter(); + + + + private: + + LogViewColumns* columns; + + ViewToolTip* toolTip; + + bool firstLoad; + + + LogManager* logManager; + + /** + * Central table + */ + KListView* table; + +#if defined(KDE_MAKE_VERSION) && (KDE_VERSION >= KDE_MAKE_VERSION(3,3,0)) + QHBox* filterBar; + + KToolBarButton* clearSearch; + + /** + * Search line (inherits from KListViewSearchLine) + */ + LogLineFilter* search; + + /** + * Filter of the column list + */ + QComboBox* searchFilter; +#endif + + +}; + +#endif // VIEW_H + diff --git a/ksystemlog/src/viewToolTip.cpp b/ksystemlog/src/viewToolTip.cpp new file mode 100644 index 0000000..bf95825 --- /dev/null +++ b/ksystemlog/src/viewToolTip.cpp @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include + +#include + +#include "logListItem.h" + +#include "viewToolTip.h" +#include "view.h" + + +ViewToolTip::ViewToolTip(QWidget *parent, View *view) : + QToolTip(parent), + view(view) { + +} + +ViewToolTip::~ViewToolTip() { + clear(); +} + + +void ViewToolTip::maybeTip(const QPoint& p) { + //ViewToolTip::setWakeUpDelay(1000); + + if (!view->isTooltipEnabled() ) + return; + + QListViewItem *qtItem = view->getLogList()->itemAt(p); + if (qtItem && qtItem->childCount() == 0) { + LogListItem* item = static_cast (qtItem); + + QString s=item->getToolTipText(); + + QRect r= view->getLogList()->itemRect(item); + //kdDebug() << "Left=" << r.left() << " Right=" << r.right() << " Top=" << r.top() << " Bottom=" << r.bottom() << endl; + + tip(r, s); + } +} diff --git a/ksystemlog/src/viewToolTip.h b/ksystemlog/src/viewToolTip.h new file mode 100644 index 0000000..0aec00e --- /dev/null +++ b/ksystemlog/src/viewToolTip.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _VIEW_TOOL_TIP_H_ +#define _VIEW_TOOL_TIP_H_ + +//#include + +class QToolTip; +class View; + +//Code taken from KLogTool project + +class ViewToolTip : public QToolTip { + public: + ViewToolTip(QWidget *parent, View* view); + + virtual ~ViewToolTip(); + + protected: + void maybeTip( const QPoint& ); + + private: + View *view; +}; + +#endif //_VIEW_TOOL_TIP_H_ diff --git a/ksystemlog/src/xorg/Makefile.am b/ksystemlog/src/xorg/Makefile.am new file mode 100644 index 0000000..c6aff89 --- /dev/null +++ b/ksystemlog/src/xorg/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = -I$(top_srcdir)/ksystemlog/src -I$(top_builddir)/ksystemlog/src/config $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libksystemlog_xorg.la +libksystemlog_xorg_la_LDFLAGS = $(all_libraries) +libksystemlog_xorg_la_SOURCES = xorgOptions.cpp xorgReader.cpp +noinst_HEADERS = xorgOptions.h xorgReader.h diff --git a/ksystemlog/src/xorg/xorgOptions.cpp b/ksystemlog/src/xorg/xorgOptions.cpp new file mode 100644 index 0000000..8f4a67c --- /dev/null +++ b/ksystemlog/src/xorg/xorgOptions.cpp @@ -0,0 +1,104 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +//Qt includes +#include +#include +#include +#include +#include +#include +#include + +//KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Project includes +#include "xorgOptions.h" +#include "ksystemlogConfig.h" + +XorgOptions::XorgOptions(QWidget *parent) : + QWidget(parent) + { + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setAutoAdd(true); + + QString description= i18n("

These files will be analyzed to display X.org log. This list also determines the order in which the files are read.

"); + fileList=new FileList(this, description); + + connect(fileList, SIGNAL(fileListChanged(int)), this, SLOT(slotFileListChanged(int))); + + readConfig(); + + +} + +XorgOptions::~XorgOptions() { + +} + +bool XorgOptions::isValid() { + if (fileList->count()>0) + return(true); + else + return(false); +} + +void XorgOptions::slotFileListChanged(int itemLeft) { + if (itemLeft==0) + emit optionsChanged(false); + else + emit optionsChanged(true); +} + +void XorgOptions::saveConfig() { + kdDebug() << "Save config from XorgOptions" << endl; + + QStringList list; + + int count=fileList->count(); + + for (int i=0; igetText(i)); + } + + KSystemLogConfig::setXorgPaths(list); +} + +void XorgOptions::readConfig() { + QStringList files(KSystemLogConfig::xorgPaths()); + + QStringList::iterator it; + for(it=files.begin(); it!=files.end(); ++it) { + fileList->insertItem(*it); + } + +} + +#include "xorgOptions.moc" diff --git a/ksystemlog/src/xorg/xorgOptions.h b/ksystemlog/src/xorg/xorgOptions.h new file mode 100644 index 0000000..a63aa8c --- /dev/null +++ b/ksystemlog/src/xorg/xorgOptions.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _XORG_OPTIONS_H_ +#define _XORG_OPTIONS_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "globals.h" +#include "fileList.h" + + +class XorgOptions : public QWidget { + + Q_OBJECT + + public: + XorgOptions(QWidget *parent = 0); + ~XorgOptions(); + + bool isValid(); + + public slots: + void saveConfig(); + void readConfig(); + + void slotFileListChanged(int itemLeft); + + signals: + void optionsChanged(bool valid); + + private: + + + FileList* fileList; +}; + +#endif diff --git a/ksystemlog/src/xorg/xorgReader.cpp b/ksystemlog/src/xorg/xorgReader.cpp new file mode 100644 index 0000000..66d80e1 --- /dev/null +++ b/ksystemlog/src/xorg/xorgReader.cpp @@ -0,0 +1,119 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + + +#include + +#include +#include + +#include "xorgReader.h" + +#define CONFIG_FILE_LOG_LEVEL_ICON "configure" +#define DEFAULT_SETTING_LOG_LEVEL_ICON "configure_toolbars" +#define COMMAND_LINE_LOG_LEVEL_ICON "konsole" +#define PROBED_LOG_LEVEL_ICON "wizard" +#define NOT_IMPLEMENTED_LOG_LEVEL_ICON "filenew" + +XorgReader::XorgReader(QObject *parent, const char *name) : + DefaultReader(parent, name), + newLineTime(), + newLineDate(QDate::currentDate()), + lineCount(1) + { + + initializeTypeName(); +} + + +XorgReader::~XorgReader() { + +} + + +void XorgReader::initColumns(LogViewColumns* columns) { + lineCount=1; + + columns->append(new LogViewColumn(i18n("Line"), false, false)); + columns->append(new LogViewColumn(i18n("Type"), false, false)); + columns->append(new LogViewColumn(i18n("Message"), false, false)); + + columns->setGroupByDay(false); + columns->setGroupByHour(false); + +} + +LogLine* XorgReader::parseMessage(QString& string, LogFile* originalFile) { + QString type; + + type=string.left(4); + + LogLevel* logLineType=this->getTypeName(type); + + //If the type is not empty, the log message has a type, so we can delete it + if (logLineType!=NULL) { + string=string.remove(0, 5); + } + else { + logLineType=Globals::informationLogLevel; + } + + QStringList list; + //list.append(i18n("# %1").arg(lineCount)); + list.append(logLineType->name); + list.append(string); + + lineCount++; + + //Substracts 1 millisec to the line time, to allow sorting + newLineTime=newLineTime.addMSecs(-1); + + QString filePath=originalFile->url.path(); + LogLine* logLine=new LogLine(newLineDate, newLineTime, list, filePath, logLineType, Globals::xorgMode->id); + + return(logLine); +} + +void XorgReader::initializeTypeName() { + xorgLevels["(--)"]=new LogLevel(20, i18n("probed"), PROBED_LOG_LEVEL_ICON, QColor(240, 220, 3)); + xorgLevels["(**)"]=new LogLevel(21, i18n("from config file"), CONFIG_FILE_LOG_LEVEL_ICON, QColor(161, 133, 240)); + xorgLevels["(==)"]=new LogLevel(22, i18n("default setting"), DEFAULT_SETTING_LOG_LEVEL_ICON, QColor(169, 189, 165)); + xorgLevels["(++)"]=new LogLevel(23, i18n("from command Line"), COMMAND_LINE_LOG_LEVEL_ICON, QColor(179, 181, 214)); + xorgLevels["(!!)"]=Globals::noticeLogLevel; + xorgLevels["(II)"]=Globals::informationLogLevel; + xorgLevels["(WW)"]=Globals::warningLogLevel; + xorgLevels["(EE)"]=Globals::errorLogLevel; + xorgLevels["(NI)"]=new LogLevel(24, i18n("not implemented"), NOT_IMPLEMENTED_LOG_LEVEL_ICON, QColor(136, 146, 240)); + xorgLevels["(\?\?)"]=Globals::noneLogLevel; + +} + +LogLevel* XorgReader::getTypeName(const QString type) { + QMap::iterator it; + + it=xorgLevels.find(type); + if (it!=xorgLevels.end()) + return(*it); + else + return(NULL); + +} + +#include "xorgReader.moc" diff --git a/ksystemlog/src/xorg/xorgReader.h b/ksystemlog/src/xorg/xorgReader.h new file mode 100644 index 0000000..df6dbd9 --- /dev/null +++ b/ksystemlog/src/xorg/xorgReader.h @@ -0,0 +1,66 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef _XORG_READER_H_ +#define _XORG_READER_H_ + + +#include +#include +#include +#include +#include + +#include + + +#include "globals.h" + +#include "defaultReader.h" + + +/** + * @author Nicolas Ternisien + */ +class XorgReader : public DefaultReader { + Q_OBJECT + + public: + XorgReader(QObject *parent = 0, const char *name = 0); + + virtual ~XorgReader(); + + virtual void initColumns(LogViewColumns* columns); + + protected: + virtual LogLine* parseMessage(QString& buffer, LogFile* originalFile); + + QMap xorgLevels; + + void initializeTypeName(); + + LogLevel* getTypeName(const QString type); + + QTime newLineTime; + QDate newLineDate; + + int lineCount; +}; + +#endif diff --git a/ksystemlog/subdirs b/ksystemlog/subdirs new file mode 100644 index 0000000..0e67810 --- /dev/null +++ b/ksystemlog/subdirs @@ -0,0 +1,3 @@ +doc +po +src diff --git a/ksystemlog/templates/cpp b/ksystemlog/templates/cpp new file mode 100644 index 0000000..74469da --- /dev/null +++ b/ksystemlog/templates/cpp @@ -0,0 +1,19 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ diff --git a/ksystemlog/templates/h b/ksystemlog/templates/h new file mode 100644 index 0000000..74469da --- /dev/null +++ b/ksystemlog/templates/h @@ -0,0 +1,19 @@ +/*************************************************************************** + * Copyright (C) 2005 by Nicolas Ternisien * + * nicolas.ternisien@gmail.com * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ diff --git a/stamp-h.in b/stamp-h.in new file mode 100644 index 0000000..e69de29 diff --git a/subdirs b/subdirs new file mode 100644 index 0000000..ac54d14 --- /dev/null +++ b/subdirs @@ -0,0 +1 @@ +ksystemlog